mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 03:04:25 +01:00
2.2" M3 config added
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#ifndef _BOARDHEADER_H_
|
||||
#define _BOARDHEADER_H_
|
||||
|
||||
#include "../../../../tag_types.h"
|
||||
#include "HAL_Newton_M3.h"
|
||||
|
||||
// eeprom map
|
||||
#define EEPROM_SETTINGS_AREA_START (0x01000UL)
|
||||
#define EEPROM_SETTINGS_AREA_LEN (0x03000UL)
|
||||
#define EEPROM_UPDATE_AREA_START (0x04000UL)
|
||||
#define EEPROM_UPDATE_AREA_LEN (0x10000UL)
|
||||
#define EEPROM_IMG_START (0x14000UL)
|
||||
#define EEPROM_IMG_EACH (0x04000UL) // 160*296 / 8 * 2 = 0x2E40
|
||||
|
||||
// Mac fixed part
|
||||
// 7E22CC67B298 (B29)
|
||||
#define MAC_ID_0 0xB2
|
||||
#define MAC_ID_1 0x90
|
||||
|
||||
// AP mode definitions
|
||||
#define HAS_EEPROM 1
|
||||
#define HAS_SCREEN 1
|
||||
#define AP_EMULATE_TAG 1
|
||||
|
||||
// hw types
|
||||
#define HW_TYPE SOLUM_M3_BWR_22
|
||||
|
||||
#include "../include/ssd1619.h"
|
||||
|
||||
#define SCREEN_WIDTH 160
|
||||
#define SCREEN_HEIGHT 296
|
||||
#define SCREEN_XOFFSET 8
|
||||
#define SCREEN_YOFFSET 0
|
||||
|
||||
#endif
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#define SCREEN_WIDTH 168
|
||||
#define SCREEN_HEIGHT 384
|
||||
|
||||
#define SCREEN_XOFFSET 0
|
||||
#define SCREEN_YOFFSET 0
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,5 +29,7 @@
|
||||
|
||||
#define SCREEN_WIDTH 800
|
||||
#define SCREEN_HEIGHT 480
|
||||
#define SCREEN_XOFFSET 0
|
||||
#define SCREEN_YOFFSET 0
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#ifdef BUILD_NEWTON_M3_22_BWR
|
||||
#include "../hal/Newton_M3_nRF52811/Newton_M3_nRF52811_22_BWR.h"
|
||||
#include "../hal/Newton_M3_nRF52811/HAL_Newton_M3.h"
|
||||
#endif
|
||||
#ifdef BUILD_NEWTON_M3_29_BWR
|
||||
#include "../hal/Newton_M3_nRF52811/Newton_M3_nRF52811_29_BWR.h"
|
||||
#include "../hal/Newton_M3_nRF52811/HAL_Newton_M3.h"
|
||||
|
||||
@@ -11,6 +11,13 @@ lib_deps =
|
||||
stevemarple/SoftWire @ ^2.0.9
|
||||
stevemarple/AsyncDelay @ ^1.1.2
|
||||
|
||||
[env:Newton_M3_22_BWR]
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-D BUILD_NEWTON_M3_22_BWR
|
||||
build_src_filter =
|
||||
+<*>-<uc8179.cpp>+<../hal/Newton_M3_nRF52811/*>
|
||||
|
||||
[env:Newton_M3_29_BWR]
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
|
||||
@@ -437,7 +437,7 @@ void clearWindow(bool color) {
|
||||
}
|
||||
}
|
||||
void clearScreen() {
|
||||
setWindowX(0, SCREEN_WIDTH);
|
||||
setWindowX(SCREEN_XOFFSET, SCREEN_WIDTH + SCREEN_XOFFSET);
|
||||
setWindowY(0, SCREEN_HEIGHT);
|
||||
setPosXY(0, 0);
|
||||
shortCommand1(CMD_DATA_ENTRY_MODE, 3); // was 3
|
||||
@@ -489,6 +489,8 @@ void epdWaitRdy() {
|
||||
epdBusyWaitFalling(120000);
|
||||
}
|
||||
void drawLineHorizontal(bool color, uint16_t x1, uint16_t x2, uint16_t y) {
|
||||
x1 = x1 + SCREEN_XOFFSET;
|
||||
x2 = x2 + SCREEN_XOFFSET;
|
||||
setWindowX(x1, x2);
|
||||
setWindowY(y, y + 1);
|
||||
if (color) {
|
||||
@@ -499,6 +501,7 @@ void drawLineHorizontal(bool color, uint16_t x1, uint16_t x2, uint16_t y) {
|
||||
epdBusyWaitFalling(100);
|
||||
}
|
||||
void drawLineVertical(bool color, uint16_t x, uint16_t y1, uint16_t y2) {
|
||||
x = x + SCREEN_XOFFSET;
|
||||
setWindowY(y1, y2);
|
||||
setWindowX(x, x + 8);
|
||||
shortCommand1(CMD_DATA_ENTRY_MODE, 3);
|
||||
@@ -517,7 +520,7 @@ void drawLineVertical(bool color, uint16_t x, uint16_t y1, uint16_t y2) {
|
||||
}
|
||||
void beginFullscreenImage() {
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
setWindowX(0, SCREEN_WIDTH);
|
||||
setWindowX(SCREEN_XOFFSET, SCREEN_WIDTH + SCREEN_XOFFSET);
|
||||
setWindowY(0, SCREEN_HEIGHT);
|
||||
shortCommand1(CMD_DATA_ENTRY_MODE, 3);
|
||||
setPosXY(0, 0);
|
||||
@@ -534,6 +537,7 @@ void endWriteFramebuffer() {
|
||||
commandEnd();
|
||||
}
|
||||
void loadRawBitmap(uint8_t *bmp, uint16_t x, uint16_t y, bool color) {
|
||||
x = x + SCREEN_XOFFSET;
|
||||
uint16_t xsize = bmp[0] / 8;
|
||||
if (bmp[0] % 8)
|
||||
xsize++;
|
||||
@@ -689,6 +693,7 @@ void writeCharEPD(uint8_t c) {
|
||||
|
||||
// Print text to the EPD. Origin is top-left
|
||||
void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool color) {
|
||||
x = x + SCREEN_XOFFSET;
|
||||
directionY = direction;
|
||||
epdCharSize = 1 + fontsize;
|
||||
if (directionY) {
|
||||
@@ -724,7 +729,7 @@ void epdPrintBegin(uint16_t x, uint16_t y, bool direction, bool fontsize, bool c
|
||||
}
|
||||
setPosXY(x, y);
|
||||
fontCurXpos = x;
|
||||
setWindowX(x, SCREEN_WIDTH);
|
||||
setWindowX(x + SCREEN_XOFFSET, SCREEN_WIDTH + SCREEN_XOFFSET);
|
||||
shortCommand1(CMD_DATA_ENTRY_MODE, 7);
|
||||
memset(rbuffer, 0, 32);
|
||||
}
|
||||
|
||||
@@ -91,6 +91,12 @@ void afterFlashScreenSaver() {
|
||||
epdPrintEnd();
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 160) // High-res 2.2"
|
||||
epdPrintBegin(0, 295, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("OpenEPaperLink");
|
||||
epdPrintEnd();
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
epdPrintBegin(0, 295, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("OpenEPaperLink");
|
||||
@@ -144,6 +150,43 @@ void showSplashScreen() {
|
||||
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 160) // 2.2" High res
|
||||
|
||||
epdPrintBegin(0, 295, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("Starting");
|
||||
epdPrintEnd();
|
||||
|
||||
epdPrintBegin(64, 295, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
addCapabilities();
|
||||
epdPrintEnd();
|
||||
|
||||
epdPrintBegin(80, 295, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("zbs29v033 %d.%d.%d%s", fwVersion / 100, (fwVersion % 100) / 10, (fwVersion % 10), fwVersionSuffix);
|
||||
epdPrintEnd();
|
||||
|
||||
epdPrintBegin(105, 270, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED);
|
||||
epdpr("MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]);
|
||||
epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]);
|
||||
epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]);
|
||||
epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]);
|
||||
epdPrintEnd();
|
||||
|
||||
uint8_t buffer[17];
|
||||
sprintf((char *)buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]);
|
||||
sprintf((char *)buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]);
|
||||
sprintf((char *)buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]);
|
||||
sprintf((char *)buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]);
|
||||
printBarcode(buffer, 120, 284);
|
||||
|
||||
loadRawBitmap((uint8_t *)oepli, 0, 12, EPD_COLOR_BLACK);
|
||||
loadRawBitmap((uint8_t *)cloud, 0, 0, EPD_COLOR_RED);
|
||||
// lutTest();
|
||||
// drawLineVertical(EPD_COLOR_RED, 64, 10, 286);
|
||||
// drawLineVertical(EPD_COLOR_BLACK, 65, 10, 286);
|
||||
|
||||
// timerDelay(TIMER_TICKS_PER_SECOND * 4);
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
|
||||
epdPrintBegin(0, 383, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
@@ -291,6 +334,9 @@ void showApplyUpdate() {
|
||||
#if (SCREEN_WIDTH == 152)
|
||||
epdPrintBegin(12, 60, EPD_DIRECTION_X, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
#if (SCREEN_WIDTH == 160)
|
||||
epdPrintBegin(48, 220, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
#if (SCREEN_WIDTH == 168)
|
||||
epdPrintBegin(48, 220, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
@@ -316,6 +362,16 @@ void showScanningWindow() {
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
selectLUT(EPD_LUT_FAST_NO_REDS);
|
||||
clearScreen();
|
||||
#if (SCREEN_WIDTH == 160) // 2.2" High res
|
||||
epdPrintBegin(2, 275, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("Scanning for APs");
|
||||
epdPrintEnd();
|
||||
// epdPrintBegin(40, 262, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_RED);
|
||||
// epdpr("Channel - Quality");
|
||||
// epdPrintEnd();
|
||||
loadRawBitmap((uint8_t *)receive, 36, 24, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
epdPrintBegin(2, 374, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("Scanning for APs");
|
||||
@@ -369,6 +425,10 @@ void showScanningWindow() {
|
||||
void addScanResult(uint8_t channel, uint8_t lqi) {
|
||||
if (channel == 11)
|
||||
resultcounter = 0;
|
||||
#if (SCREEN_WIDTH == 160) // 2.2" High res
|
||||
epdPrintBegin(56 + ((resultcounter % 4) * 16), 282 - (47 * (resultcounter / 4)), EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
epdPrintBegin(56 + ((resultcounter % 4) * 16), 282 - (47 * (resultcounter / 4)), EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
@@ -393,6 +453,39 @@ void showAPFound() {
|
||||
clearScreen();
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
selectLUT(1);
|
||||
#if (SCREEN_WIDTH == 160)
|
||||
epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("Waiting for data...");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(48, 278, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("Found the following AP:");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(64, 293, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("AP MAC: %02X:%02X", APmac[7], APmac[6]);
|
||||
epdpr(":%02X:%02X", APmac[5], APmac[4]);
|
||||
epdpr(":%02X:%02X", APmac[3], APmac[2]);
|
||||
epdpr(":%02X:%02X", APmac[1], APmac[0]);
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(80, 293, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("Ch: %d RSSI: %d LQI: %d", currentChannel, mLastRSSI, mLastLqi);
|
||||
epdPrintEnd();
|
||||
|
||||
epdPrintBegin(103, 258, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("Tag MAC: %02X:%02X", mSelfMac[7], mSelfMac[6]);
|
||||
epdpr(":%02X:%02X", mSelfMac[5], mSelfMac[4]);
|
||||
epdpr(":%02X:%02X", mSelfMac[3], mSelfMac[2]);
|
||||
epdpr(":%02X:%02X", mSelfMac[1], mSelfMac[0]);
|
||||
epdPrintEnd();
|
||||
|
||||
uint8_t buffer[17];
|
||||
sprintf((char *)buffer, "%02X%02X", mSelfMac[7], mSelfMac[6]);
|
||||
sprintf((char *)buffer + 4, "%02X%02X", mSelfMac[5], mSelfMac[4]);
|
||||
sprintf((char *)buffer + 8, "%02X%02X", mSelfMac[3], mSelfMac[2]);
|
||||
sprintf((char *)buffer + 12, "%02X%02X", mSelfMac[1], mSelfMac[0]);
|
||||
printBarcode(buffer, 120, 253);
|
||||
loadRawBitmap((uint8_t *)receive, 36, 14, EPD_COLOR_BLACK);
|
||||
#endif
|
||||
|
||||
#if (SCREEN_WIDTH == 168)
|
||||
epdPrintBegin(0, 374, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("Waiting for data...");
|
||||
@@ -563,6 +656,19 @@ void showNoAP() {
|
||||
selectLUT(EPD_LUT_NO_REPEATS);
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
clearScreen();
|
||||
#if (SCREEN_WIDTH == 160) // 2,2" High res
|
||||
epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("No AP found :(");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(48, 285, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("We'll try again in a");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(64, 285, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("little while...");
|
||||
epdPrintEnd();
|
||||
loadRawBitmap((uint8_t *)receive, 36, 24, EPD_COLOR_BLACK);
|
||||
loadRawBitmap((uint8_t *)failed, 42, 26, EPD_COLOR_RED);
|
||||
#endif
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2,9"
|
||||
epdPrintBegin(0, 374, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("No AP found :(");
|
||||
@@ -651,6 +757,15 @@ void showNoEEPROM() {
|
||||
selectLUT(EPD_LUT_NO_REPEATS);
|
||||
clearScreen();
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
#if (SCREEN_WIDTH == 160) // 2.2" High-res
|
||||
epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("EEPROM FAILED :(");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(64, 285, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("Sleeping forever :'(");
|
||||
epdPrintEnd();
|
||||
loadRawBitmap((uint8_t *)failed, 42, 26, EPD_COLOR_RED);
|
||||
#endif
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
epdPrintBegin(0, 374, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("EEPROM FAILED :(");
|
||||
@@ -707,6 +822,15 @@ void showNoMAC() {
|
||||
selectLUT(EPD_LUT_NO_REPEATS);
|
||||
clearScreen();
|
||||
setColorMode(EPD_MODE_NORMAL, EPD_MODE_INVERT);
|
||||
#if (SCREEN_WIDTH == 160) // 2.2" High res
|
||||
epdPrintBegin(0, 285, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("NO MAC SET :(");
|
||||
epdPrintEnd();
|
||||
epdPrintBegin(64, 285, EPD_DIRECTION_Y, EPD_SIZE_SINGLE, EPD_COLOR_BLACK);
|
||||
epdpr("Sleeping forever :'(");
|
||||
epdPrintEnd();
|
||||
loadRawBitmap((uint8_t *)failed, 42, 26, EPD_COLOR_RED);
|
||||
#endif
|
||||
#if (SCREEN_WIDTH == 168) // High-res 2.9"
|
||||
epdPrintBegin(0, 374, EPD_DIRECTION_Y, EPD_SIZE_DOUBLE, EPD_COLOR_BLACK);
|
||||
epdpr("NO MAC SET :(");
|
||||
|
||||
@@ -53,7 +53,7 @@ void dump(uint8_t *a, uint16_t l) {
|
||||
}
|
||||
|
||||
|
||||
int8_t powerPinsExt[] = FLASHER_EXT_POWER;
|
||||
int8_t powerPinsExt[] = {16,17,18,21};
|
||||
|
||||
uint8_t pinsExt[] = {FLASHER_EXT_CLK, FLASHER_EXT_MISO, FLASHER_EXT_MOSI, FLASHER_EXT_RESET, FLASHER_EXT_RXD, FLASHER_EXT_SS, FLASHER_EXT_TEST, FLASHER_EXT_TXD};
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "flasher.h"
|
||||
#include "leds.h"
|
||||
#include "settings.h"
|
||||
#include "udp.h"
|
||||
#include "usbflasher.h"
|
||||
#include "powermgt.h"
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ struct flasherCommand {
|
||||
uint8_t* data = nullptr;
|
||||
};
|
||||
|
||||
int8_t powerPins2[] = FLASHER_EXT_POWER;
|
||||
int8_t powerPins2[] = {16,17,18,21};
|
||||
|
||||
bool autoFlash(flasher* f) {
|
||||
f->getFirmwareMD5();
|
||||
|
||||
Reference in New Issue
Block a user