diff --git a/3D-printed cases and programming jigs/Flasher Jig 1.54 base.stl b/3D-printed cases and programming jigs/Flasher Jig 1.54 base.stl new file mode 100644 index 00000000..d8dce347 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 1.54 base.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 1.54 latch.stl b/3D-printed cases and programming jigs/Flasher Jig 1.54 latch.stl new file mode 100644 index 00000000..3b5a2d9a Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 1.54 latch.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 1.54.skp b/3D-printed cases and programming jigs/Flasher Jig 1.54.skp new file mode 100644 index 00000000..e30d40cb Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 1.54.skp differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 2.9 base.stl b/3D-printed cases and programming jigs/Flasher Jig 2.9 base.stl new file mode 100644 index 00000000..88cec4f4 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 2.9 base.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 2.9 latch.stl b/3D-printed cases and programming jigs/Flasher Jig 2.9 latch.stl new file mode 100644 index 00000000..827f1736 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 2.9 latch.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 2.9.skp b/3D-printed cases and programming jigs/Flasher Jig 2.9.skp new file mode 100644 index 00000000..420647b6 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 2.9.skp differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 4.2 base.stl b/3D-printed cases and programming jigs/Flasher Jig 4.2 base.stl new file mode 100644 index 00000000..ee7369b4 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 4.2 base.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 4.2 latch.stl b/3D-printed cases and programming jigs/Flasher Jig 4.2 latch.stl new file mode 100644 index 00000000..f0b57ef6 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 4.2 latch.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig 4.2.skp b/3D-printed cases and programming jigs/Flasher Jig 4.2.skp new file mode 100644 index 00000000..13d76638 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig 4.2.skp differ diff --git a/3D-printed cases and programming jigs/Flasher Jig Segmented base.stl b/3D-printed cases and programming jigs/Flasher Jig Segmented base.stl new file mode 100644 index 00000000..e8f46389 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig Segmented base.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig Segmented clamp.stl b/3D-printed cases and programming jigs/Flasher Jig Segmented clamp.stl new file mode 100644 index 00000000..e902055b Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig Segmented clamp.stl differ diff --git a/3D-printed cases and programming jigs/Flasher Jig Segmented.skp b/3D-printed cases and programming jigs/Flasher Jig Segmented.skp new file mode 100644 index 00000000..8e5151a0 Binary files /dev/null and b/3D-printed cases and programming jigs/Flasher Jig Segmented.skp differ diff --git a/3D-printed cases and programming jigs/OpenEPaperLink AP Case base.stl b/3D-printed cases and programming jigs/OpenEPaperLink AP Case base.stl new file mode 100644 index 00000000..eb5c8f94 Binary files /dev/null and b/3D-printed cases and programming jigs/OpenEPaperLink AP Case base.stl differ diff --git a/3D-printed cases and programming jigs/OpenEPaperLink AP Case cover.stl b/3D-printed cases and programming jigs/OpenEPaperLink AP Case cover.stl new file mode 100644 index 00000000..500fa1e2 Binary files /dev/null and b/3D-printed cases and programming jigs/OpenEPaperLink AP Case cover.stl differ diff --git a/3D-printed cases and programming jigs/OpenEPaperLink AP Case dual EPD cover.stl b/3D-printed cases and programming jigs/OpenEPaperLink AP Case dual EPD cover.stl new file mode 100644 index 00000000..ed1cc0b7 Binary files /dev/null and b/3D-printed cases and programming jigs/OpenEPaperLink AP Case dual EPD cover.stl differ diff --git a/3D-printed cases and programming jigs/OpenEPaperLink AP Case segmented disp holder.stl b/3D-printed cases and programming jigs/OpenEPaperLink AP Case segmented disp holder.stl new file mode 100644 index 00000000..6b9f7a87 Binary files /dev/null and b/3D-printed cases and programming jigs/OpenEPaperLink AP Case segmented disp holder.stl differ diff --git a/3D-printed cases and programming jigs/OpenEPaperLink AP Case.skp b/3D-printed cases and programming jigs/OpenEPaperLink AP Case.skp new file mode 100644 index 00000000..fe502ad5 Binary files /dev/null and b/3D-printed cases and programming jigs/OpenEPaperLink AP Case.skp differ diff --git a/esp32_fw/.clang-format b/ESP32_AP-Flasher/.clang-format similarity index 100% rename from esp32_fw/.clang-format rename to ESP32_AP-Flasher/.clang-format diff --git a/esp32_fw/.gitignore b/ESP32_AP-Flasher/.gitignore similarity index 100% rename from esp32_fw/.gitignore rename to ESP32_AP-Flasher/.gitignore diff --git a/esp32_fw/.vscode/extensions.json b/ESP32_AP-Flasher/.vscode/extensions.json similarity index 100% rename from esp32_fw/.vscode/extensions.json rename to ESP32_AP-Flasher/.vscode/extensions.json diff --git a/esp32_fw/.vscode/settings.json b/ESP32_AP-Flasher/.vscode/settings.json similarity index 100% rename from esp32_fw/.vscode/settings.json rename to ESP32_AP-Flasher/.vscode/settings.json diff --git a/ESP32_AP-Flasher/CMakeLists.txt b/ESP32_AP-Flasher/CMakeLists.txt new file mode 100644 index 00000000..be4981fa --- /dev/null +++ b/ESP32_AP-Flasher/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16.0) +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(esp32_fw) diff --git a/esp32_fw/data/alignment.bmp b/ESP32_AP-Flasher/data/alignment.bmp similarity index 100% rename from esp32_fw/data/alignment.bmp rename to ESP32_AP-Flasher/data/alignment.bmp diff --git a/esp32_fw/data/fonts/GillSC16.vlw b/ESP32_AP-Flasher/data/fonts/GillSC16.vlw similarity index 100% rename from esp32_fw/data/fonts/GillSC16.vlw rename to ESP32_AP-Flasher/data/fonts/GillSC16.vlw diff --git a/esp32_fw/data/fonts/GillSC20.vlw b/ESP32_AP-Flasher/data/fonts/GillSC20.vlw similarity index 100% rename from esp32_fw/data/fonts/GillSC20.vlw rename to ESP32_AP-Flasher/data/fonts/GillSC20.vlw diff --git a/esp32_fw/data/fonts/bahnschrift20.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw similarity index 100% rename from esp32_fw/data/fonts/bahnschrift20.vlw rename to ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw diff --git a/esp32_fw/data/fonts/bahnschrift30.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw similarity index 100% rename from esp32_fw/data/fonts/bahnschrift30.vlw rename to ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw diff --git a/esp32_fw/data/fonts/bahnschrift70.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw similarity index 100% rename from esp32_fw/data/fonts/bahnschrift70.vlw rename to ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw diff --git a/esp32_fw/data/fonts/bahnschrift80.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift80.vlw similarity index 100% rename from esp32_fw/data/fonts/bahnschrift80.vlw rename to ESP32_AP-Flasher/data/fonts/bahnschrift80.vlw diff --git a/esp32_fw/data/fonts/calibrib30.vlw b/ESP32_AP-Flasher/data/fonts/calibrib30.vlw similarity index 100% rename from esp32_fw/data/fonts/calibrib30.vlw rename to ESP32_AP-Flasher/data/fonts/calibrib30.vlw diff --git a/esp32_fw/data/fonts/calibrib35.vlw b/ESP32_AP-Flasher/data/fonts/calibrib35.vlw similarity index 100% rename from esp32_fw/data/fonts/calibrib35.vlw rename to ESP32_AP-Flasher/data/fonts/calibrib35.vlw diff --git a/esp32_fw/data/fonts/calibrib40.vlw b/ESP32_AP-Flasher/data/fonts/calibrib40.vlw similarity index 100% rename from esp32_fw/data/fonts/calibrib40.vlw rename to ESP32_AP-Flasher/data/fonts/calibrib40.vlw diff --git a/esp32_fw/data/fonts/calibrib50.vlw b/ESP32_AP-Flasher/data/fonts/calibrib50.vlw similarity index 100% rename from esp32_fw/data/fonts/calibrib50.vlw rename to ESP32_AP-Flasher/data/fonts/calibrib50.vlw diff --git a/esp32_fw/data/fonts/calibrib62.vlw b/ESP32_AP-Flasher/data/fonts/calibrib62.vlw similarity index 100% rename from esp32_fw/data/fonts/calibrib62.vlw rename to ESP32_AP-Flasher/data/fonts/calibrib62.vlw diff --git a/esp32_fw/data/fonts/numbers1-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers1-1.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers1-1.vlw rename to ESP32_AP-Flasher/data/fonts/numbers1-1.vlw diff --git a/esp32_fw/data/fonts/numbers1-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers1-2.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers1-2.vlw rename to ESP32_AP-Flasher/data/fonts/numbers1-2.vlw diff --git a/esp32_fw/data/fonts/numbers2-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers2-1.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers2-1.vlw rename to ESP32_AP-Flasher/data/fonts/numbers2-1.vlw diff --git a/esp32_fw/data/fonts/numbers2-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers2-2.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers2-2.vlw rename to ESP32_AP-Flasher/data/fonts/numbers2-2.vlw diff --git a/esp32_fw/data/fonts/numbers3-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers3-1.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers3-1.vlw rename to ESP32_AP-Flasher/data/fonts/numbers3-1.vlw diff --git a/esp32_fw/data/fonts/numbers3-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers3-2.vlw similarity index 100% rename from esp32_fw/data/fonts/numbers3-2.vlw rename to ESP32_AP-Flasher/data/fonts/numbers3-2.vlw diff --git a/esp32_fw/data/fonts/tw20.vlw b/ESP32_AP-Flasher/data/fonts/tw20.vlw similarity index 100% rename from esp32_fw/data/fonts/tw20.vlw rename to ESP32_AP-Flasher/data/fonts/tw20.vlw diff --git a/esp32_fw/data/fonts/twbold20.vlw b/ESP32_AP-Flasher/data/fonts/twbold20.vlw similarity index 100% rename from esp32_fw/data/fonts/twbold20.vlw rename to ESP32_AP-Flasher/data/fonts/twbold20.vlw diff --git a/esp32_fw/data/fonts/weathericons30.vlw b/ESP32_AP-Flasher/data/fonts/weathericons30.vlw similarity index 100% rename from esp32_fw/data/fonts/weathericons30.vlw rename to ESP32_AP-Flasher/data/fonts/weathericons30.vlw diff --git a/esp32_fw/data/fonts/weathericons70.vlw b/ESP32_AP-Flasher/data/fonts/weathericons70.vlw similarity index 100% rename from esp32_fw/data/fonts/weathericons70.vlw rename to ESP32_AP-Flasher/data/fonts/weathericons70.vlw diff --git a/esp32_fw/data/fonts/weathericons78.vlw b/ESP32_AP-Flasher/data/fonts/weathericons78.vlw similarity index 100% rename from esp32_fw/data/fonts/weathericons78.vlw rename to ESP32_AP-Flasher/data/fonts/weathericons78.vlw diff --git a/esp32_fw/data/kat-bw29.jpg b/ESP32_AP-Flasher/data/kat-bw29.jpg similarity index 100% rename from esp32_fw/data/kat-bw29.jpg rename to ESP32_AP-Flasher/data/kat-bw29.jpg diff --git a/esp32_fw/data/test154.bmp b/ESP32_AP-Flasher/data/test154.bmp similarity index 100% rename from esp32_fw/data/test154.bmp rename to ESP32_AP-Flasher/data/test154.bmp diff --git a/esp32_fw/data/test29.bmp b/ESP32_AP-Flasher/data/test29.bmp similarity index 100% rename from esp32_fw/data/test29.bmp rename to ESP32_AP-Flasher/data/test29.bmp diff --git a/esp32_fw/data/test42.bmp b/ESP32_AP-Flasher/data/test42.bmp similarity index 100% rename from esp32_fw/data/test42.bmp rename to ESP32_AP-Flasher/data/test42.bmp diff --git a/esp32_fw/data/www/edit.html b/ESP32_AP-Flasher/data/www/edit.html similarity index 100% rename from esp32_fw/data/www/edit.html rename to ESP32_AP-Flasher/data/www/edit.html diff --git a/esp32_fw/data/www/index.html b/ESP32_AP-Flasher/data/www/index.html similarity index 100% rename from esp32_fw/data/www/index.html rename to ESP32_AP-Flasher/data/www/index.html diff --git a/esp32_fw/data/www/main.css b/ESP32_AP-Flasher/data/www/main.css similarity index 100% rename from esp32_fw/data/www/main.css rename to ESP32_AP-Flasher/data/www/main.css diff --git a/esp32_fw/data/www/main.js b/ESP32_AP-Flasher/data/www/main.js similarity index 100% rename from esp32_fw/data/www/main.js rename to ESP32_AP-Flasher/data/www/main.js diff --git a/esp32_fw/data/www/upload-test.html b/ESP32_AP-Flasher/data/www/upload-test.html similarity index 100% rename from esp32_fw/data/www/upload-test.html rename to ESP32_AP-Flasher/data/www/upload-test.html diff --git a/ESP32_AP-Flasher/dependencies.lock b/ESP32_AP-Flasher/dependencies.lock new file mode 100644 index 00000000..356f9c13 --- /dev/null +++ b/ESP32_AP-Flasher/dependencies.lock @@ -0,0 +1,9 @@ +dependencies: + idf: + component_hash: null + source: + type: idf + version: 4.4.4 +manifest_hash: dcf4d39b94252de130019eadceb989d72b0dbc26b552cfdcbb50f6da531d2b92 +target: esp32s3 +version: 1.0.0 diff --git a/esp32_fw/include/commstructs.h b/ESP32_AP-Flasher/include/commstructs.h similarity index 100% rename from esp32_fw/include/commstructs.h rename to ESP32_AP-Flasher/include/commstructs.h diff --git a/esp32_fw/include/contentmanager.h b/ESP32_AP-Flasher/include/contentmanager.h similarity index 100% rename from esp32_fw/include/contentmanager.h rename to ESP32_AP-Flasher/include/contentmanager.h diff --git a/esp32_fw/include/flasher.h b/ESP32_AP-Flasher/include/flasher.h similarity index 100% rename from esp32_fw/include/flasher.h rename to ESP32_AP-Flasher/include/flasher.h diff --git a/ESP32_AP-Flasher/include/leds.h b/ESP32_AP-Flasher/include/leds.h new file mode 100644 index 00000000..79153be8 --- /dev/null +++ b/ESP32_AP-Flasher/include/leds.h @@ -0,0 +1,5 @@ +#include +#include + +void ledTask(void* parameter); +void shortBlink(CRGB cname); \ No newline at end of file diff --git a/esp32_fw/include/makeimage.h b/ESP32_AP-Flasher/include/makeimage.h similarity index 100% rename from esp32_fw/include/makeimage.h rename to ESP32_AP-Flasher/include/makeimage.h diff --git a/esp32_fw/include/newproto.h b/ESP32_AP-Flasher/include/newproto.h similarity index 100% rename from esp32_fw/include/newproto.h rename to ESP32_AP-Flasher/include/newproto.h diff --git a/esp32_fw/include/pendingdata.h b/ESP32_AP-Flasher/include/pendingdata.h similarity index 100% rename from esp32_fw/include/pendingdata.h rename to ESP32_AP-Flasher/include/pendingdata.h diff --git a/ESP32_AP-Flasher/include/powermgt.h b/ESP32_AP-Flasher/include/powermgt.h new file mode 100644 index 00000000..43932dcd --- /dev/null +++ b/ESP32_AP-Flasher/include/powermgt.h @@ -0,0 +1,5 @@ +#include + + +void doLeds(); +void rampTagPower(uint8_t pin, bool up); diff --git a/esp32_fw/include/serial.h b/ESP32_AP-Flasher/include/serial.h similarity index 100% rename from esp32_fw/include/serial.h rename to ESP32_AP-Flasher/include/serial.h diff --git a/ESP32_AP-Flasher/include/settings.h b/ESP32_AP-Flasher/include/settings.h new file mode 100644 index 00000000..df957b57 --- /dev/null +++ b/ESP32_AP-Flasher/include/settings.h @@ -0,0 +1,66 @@ +#include + +// how long the we should keep the transfer metadata +#define PENDING_TIMEOUT 24 * 3600 +// this determines how long images will be cached; +#define PENDING_DATA_TIMEOUT 60 +// maximum time (in minutes) that a tag is put to sleep if no update is expected. +#define MIN_RESPONSE_TIME 10 + +// flasher options +#define CUSTOM_MAC_HDR 0x0000 + +#if (PINOUT == OPENEPAPERLINK_PCB) +#define FLASHER_AP_SS 4 +#define FLASHER_AP_CLK 5 +#define FLASHER_AP_MOSI 7 +#define FLASHER_AP_MISO 6 +#define FLASHER_AP_RESET 15 +#define FLASHER_AP_POWER 0 +#define FLASHER_AP_TXD 16 +#define FLASHER_AP_RXD 18 +#define FLASHER_AP_TEST 17 + +#define FLASHER_EXT_SS 40 +#define FLASHER_EXT_CLK 41 +#define FLASHER_EXT_MOSI 2 +#define FLASHER_EXT_MISO 42 +#define FLASHER_EXT_RESET 1 +#define FLASHER_EXT_POWER 8 +#define FLASHER_EXT_TXD 38 +#define FLASHER_EXT_RXD 39 +#define FLASHER_EXT_TEST 47 + +#define FLASHER_ALT_SS 3 +#define FLASHER_ALT_CLK 46 +#define FLASHER_ALT_MOSI 10 +#define FLASHER_ALT_MISO 9 +#define FLASHER_ALT_RESET 11 +#define FLASHER_ALT_TXD 12 +#define FLASHER_ALT_RXD 14 +#define FLASHER_ALT_TEST 13 + +#define FLASHER_LED 21 +#define FLASHER_RGB_LED 48 +#endif + +#if (PINOUT == SIMPLE_AP) +/* Lolin32 lite connections to AP tag*/ +#define RXD1 16 +#define TXD1 17 + +#define FLASHER_AP_SS 5 +#define FLASHER_AP_CLK 18 +#define FLASHER_AP_MOSI 23 +#define FLASHER_AP_MISO 19 +#define FLASHER_AP_RESET 2 +#define FLASHER_AP_POWER 13 +#define FLASHER_AP_POWER2 15 +#define FLASHER_AP_TXD 17 +#define FLASHER_AP_RXD 16 +#define FLASHER_AP_TEST -1 + +#define FLASHER_LED 22 +#endif + +#define MAX_WRITE_ATTEMPTS 5 diff --git a/esp32_fw/include/tag_db.h b/ESP32_AP-Flasher/include/tag_db.h similarity index 100% rename from esp32_fw/include/tag_db.h rename to ESP32_AP-Flasher/include/tag_db.h diff --git a/ESP32_AP-Flasher/include/usbflasher.h b/ESP32_AP-Flasher/include/usbflasher.h new file mode 100644 index 00000000..037b5cf3 --- /dev/null +++ b/ESP32_AP-Flasher/include/usbflasher.h @@ -0,0 +1,4 @@ +#include + + +void usbFlasherTask(void* parameter); \ No newline at end of file diff --git a/esp32_fw/include/web.h b/ESP32_AP-Flasher/include/web.h similarity index 100% rename from esp32_fw/include/web.h rename to ESP32_AP-Flasher/include/web.h diff --git a/esp32_fw/include/zbs_interface.h b/ESP32_AP-Flasher/include/zbs_interface.h similarity index 75% rename from esp32_fw/include/zbs_interface.h rename to ESP32_AP-Flasher/include/zbs_interface.h index edaea3ce..fd18463a 100644 --- a/esp32_fw/include/zbs_interface.h +++ b/ESP32_AP-Flasher/include/zbs_interface.h @@ -1,15 +1,16 @@ #pragma once -#include #include +#include +#include /* Autor: Aaron Christophel ATCnetz.de */ #include -void simplePowerOn(); - -class ZBS_interface { - public: - uint8_t begin(); +class ZBS_interface +{ +public: + uint8_t begin(uint8_t SS, uint8_t CLK, uint8_t MOSI, uint8_t MISO, uint8_t RESET, uint8_t POWER = -1, uint32_t spi_speed = 8000000); + void setSpeed(uint32_t speed); void set_power(uint8_t state); void enable_debug(); void reset(); @@ -27,8 +28,11 @@ class ZBS_interface { uint8_t select_flash(uint8_t page); void erase_flash(); void erase_infoblock(); + ~ZBS_interface(); - private: +private: + SPIClass *spi = NULL; + SPISettings spiSettings; uint8_t _SS_PIN = -1; uint8_t _CLK_PIN = -1; uint8_t _MOSI_PIN = -1; @@ -36,8 +40,11 @@ class ZBS_interface { uint8_t _RESET_PIN = -1; uint8_t _POWER_PIN = -1; int ZBS_spi_delay = 1; + uint8_t spi_ready = 0; + uint32_t after_byte_delay = 10; - typedef enum { + typedef enum + { ZBS_CMD_W_RAM = 0x02, ZBS_CMD_R_RAM = 0x03, ZBS_CMD_W_FLASH = 0x08, @@ -48,10 +55,9 @@ class ZBS_interface { ZBS_CMD_ERASE_INFOBLOCK = 0x48, } ZBS_CMD_LIST; - typedef enum { + typedef enum + { ZBS_ON = 1, ZBS_OFF = 0, } ZBS_POWER_STATE; -}; - -extern ZBS_interface zbs; \ No newline at end of file +}; \ No newline at end of file diff --git a/esp32_fw/lib/README b/ESP32_AP-Flasher/lib/README similarity index 100% rename from esp32_fw/lib/README rename to ESP32_AP-Flasher/lib/README diff --git a/ESP32_AP-Flasher/platformio.ini b/ESP32_AP-Flasher/platformio.ini new file mode 100644 index 00000000..8f61e5eb --- /dev/null +++ b/ESP32_AP-Flasher/platformio.ini @@ -0,0 +1,81 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +; ---------------------------------------------------------------------------------------- +; !!! this configuration expects the 16MB Flash / 8MB Ram version of the ESP32-S3-DevkitC1 +; ---------------------------------------------------------------------------------------- + +[env:OpenEPaperLink-AP-Flasher] +platform = https://github.com/platformio/platform-espressif32.git +board = esp32-s3-devkitc-1 +framework = arduino +board_build.partitions = default_16MB.csv +platform_packages = +monitor_filters = esp32_exception_decoder +monitor_speed = 115200 +board_build.f_cpu = 240000000L +board_build.filesystem = littlefs +lib_deps = + https://github.com/me-no-dev/ESPAsyncWebServer + https://github.com/tzapu/WiFiManager.git#feature_asyncwebserver + bblanchon/ArduinoJson + bodmer/TFT_eSPI + https://github.com/Bodmer/TJpg_Decoder.git + https://github.com/garretlab/shoddyxml2 + https://github.com/Bodmer/U8g2_for_TFT_eSPI + https://github.com/ricmoo/qrcode + fastled/FastLED +upload_port = COM17 +monitor_port = COM17 +build_unflags = + -D ARDUINO_USB_MODE=1 +build_flags = + -D OPENEPAPERLINK_PCB=1 + -D ARDUINO_USB_MODE=0 + -D CONFIG_ESP32S3_SPIRAM_SUPPORT=1 + -D BOARD_HAS_PSRAM + -D CONFIG_SPIRAM_USE_MALLOC=y + -D PINOUT=OPENEPAPERLINK_PCB + -D HAS_USB=1 + + +board_build.flash_mode=qio +board_build.arduino.memory_type = qio_opi +board_build.psram_type=qspi_opi + +board_upload.maximum_size = 16777216 +board_upload.maximum_ram_size = 327680 +board_upload.flash_size = 16MB + +[env:Simple_AP] +platform = espressif32 +board = esp32dev +framework = arduino +board_build.partitions = no_ota.csv +platform_packages = +monitor_filters = esp32_exception_decoder +monitor_speed = 115200 +board_build.f_cpu = 240000000L +board_build.filesystem = littlefs +lib_deps = + https://github.com/me-no-dev/ESPAsyncWebServer + https://github.com/tzapu/WiFiManager.git#feature_asyncwebserver + bblanchon/ArduinoJson + bodmer/TFT_eSPI + https://github.com/Bodmer/TJpg_Decoder.git + https://github.com/garretlab/shoddyxml2 + https://github.com/Bodmer/U8g2_for_TFT_eSPI + https://github.com/ricmoo/qrcode +upload_port = COM12 +monitor_port = COM12 + +build_flags = + -D SIMPLE_AP=2 + -D PINOUT=SIMPLE_AP \ No newline at end of file diff --git a/ESP32_AP-Flasher/readtest.bin2 b/ESP32_AP-Flasher/readtest.bin2 new file mode 100644 index 00000000..7a2e5540 Binary files /dev/null and b/ESP32_AP-Flasher/readtest.bin2 differ diff --git a/ESP32_AP-Flasher/sdkconfig.openepaperlink-flasher-ap b/ESP32_AP-Flasher/sdkconfig.openepaperlink-flasher-ap new file mode 100644 index 00000000..9d4982a9 --- /dev/null +++ b/ESP32_AP-Flasher/sdkconfig.openepaperlink-flasher-ap @@ -0,0 +1,1450 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET="esp32s3" +CONFIG_IDF_TARGET_ESP32S3=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 + +# +# SDK tool configuration +# +CONFIG_SDK_TOOLPREFIX="xtensa-esp32s3-elf-" +# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set +# end of SDK tool configuration + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# end of Build type + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 +# end of Application manager + +# +# Bootloader config +# +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_SUPPORTS_RSA=y +CONFIG_SECURE_TARGET_HAS_SECURE_ROM_DL_MODE=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Boot ROM Behavior +# +CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y +# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set +# end of Boot ROM Behavior + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_OCT_FLASH is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +# CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set +CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y +# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set +CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Arduino Configuration +# +CONFIG_ARDUINO_VARIANT="esp32s3" +CONFIG_ENABLE_ARDUINO_DEPENDS=y +# CONFIG_AUTOSTART_ARDUINO is not set +# CONFIG_ARDUINO_RUN_CORE0 is not set +CONFIG_ARDUINO_RUN_CORE1=y +# CONFIG_ARDUINO_RUN_NO_AFFINITY is not set +CONFIG_ARDUINO_RUNNING_CORE=1 +CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 +# CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set +CONFIG_ARDUINO_EVENT_RUN_CORE1=y +# CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set +CONFIG_ARDUINO_EVENT_RUNNING_CORE=1 +# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0 is not set +# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE1 is not set +CONFIG_ARDUINO_SERIAL_EVENT_RUN_NO_AFFINITY=y +CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=-1 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 +# CONFIG_ARDUINO_UDP_RUN_CORE0 is not set +CONFIG_ARDUINO_UDP_RUN_CORE1=y +# CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY is not set +CONFIG_ARDUINO_UDP_RUNNING_CORE=1 +CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 +# CONFIG_ARDUINO_ISR_IRAM is not set +# CONFIG_DISABLE_HAL_LOCKS is not set + +# +# Debug Log Configuration +# +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE is not set +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1 +# CONFIG_ARDUHAL_LOG_COLORS is not set +# CONFIG_ARDUHAL_ESP_LOG is not set +# end of Debug Log Configuration + +CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y +# CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS is not set +CONFIG_ARDUHAL_PARTITION_SCHEME="default" +# CONFIG_ARDUINO_SELECTIVE_COMPILATION is not set +# end of Arduino Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# ESP-ASIO +# +# CONFIG_ASIO_SSL_SUPPORT is not set +# end of ESP-ASIO + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +# end of Bluetooth + +# +# CoAP Configuration +# +CONFIG_COAP_MBEDTLS_PSK=y +# CONFIG_COAP_MBEDTLS_PKI is not set +# CONFIG_COAP_MBEDTLS_DEBUG is not set +CONFIG_COAP_LOG_DEFAULT_LEVEL=0 +# end of CoAP Configuration + +# +# Driver configurations +# + +# +# ADC configuration +# +# CONFIG_ADC_FORCE_XPD_FSM is not set +CONFIG_ADC_DISABLE_DAC=y +# end of ADC configuration + +# +# MCPWM configuration +# +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# end of MCPWM configuration + +# +# SPI configuration +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of SPI configuration + +# +# TWAI configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# end of TWAI configuration + +# +# UART configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART configuration + +# +# GDMA Configuration +# +# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GDMA_ISR_IRAM_SAFE is not set +# end of GDMA Configuration +# end of Driver configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +CONFIG_EFUSE_MAX_BLK_LEN=256 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ESP32S3-Specific +# +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Cache config +# +CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y +# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y +CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_WRAP is not set +# CONFIG_ESP32S3_DATA_CACHE_16KB is not set +CONFIG_ESP32S3_DATA_CACHE_32KB=y +# CONFIG_ESP32S3_DATA_CACHE_64KB is not set +CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000 +# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set +CONFIG_ESP32S3_DATA_CACHE_8WAYS=y +CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y +# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32 +# CONFIG_ESP32S3_DATA_CACHE_WRAP is not set +# end of Cache config + +# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set +# CONFIG_ESP32S3_TRAX is not set +CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32S3_ULP_COPROC_ENABLED is not set +CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32S3_DEBUG_OCDAWARE=y +CONFIG_ESP32S3_BROWNOUT_DET=y +CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set +CONFIG_ESP32S3_BROWNOUT_DET_LVL=7 +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 +# CONFIG_ESP32S3_NO_BLOBS is not set +# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set +# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set +# end of ESP32S3-Specific + +# +# ADC-Calibration +# +# end of ADC-Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y +# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB=y +# end of RTC Clock Config +# end of Hardware Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# LCD and Touch Panel +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y +# end of ESP NETIF Adapter + +# +# PHY +# +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +CONFIG_ESP_PHY_ENABLE_USB=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y +CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y +# end of Power Management + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y +CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_USB_CDC is not set +# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set +CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y +# end of ESP System Settings + +# +# High resolution timer (esp_timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_FTM_ENABLE is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# end of FAT Filesystem support + +# +# Modbus configuration +# +CONFIG_FMB_COMM_MODE_TCP_EN=y +CONFIG_FMB_TCP_PORT_DEFAULT=502 +CONFIG_FMB_TCP_PORT_MAX_CONN=5 +CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 +CONFIG_FMB_COMM_MODE_RTU_EN=y +CONFIG_FMB_COMM_MODE_ASCII_EN=y +CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 +CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_FMB_QUEUE_LENGTH=20 +CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 +CONFIG_FMB_SERIAL_BUF_SIZE=256 +CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 +CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 +CONFIG_FMB_PORT_TASK_PRIO=10 +# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y +# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set +CONFIG_FMB_PORT_TASK_AFFINITY=0x0 +CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y +CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 +CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 +CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 +# CONFIG_FMB_TIMER_PORT_ENABLED is not set +# CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD is not set +# end of Modbus configuration + +# +# FreeRTOS +# +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y +CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y +# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set +CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set +# CONFIG_FREERTOS_ASSERT_DISABLE is not set +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +# CONFIG_FREERTOS_LEGACY_HOOKS is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# jsmn +# +# CONFIG_JSMN_PARENT_LINKS is not set +# CONFIG_JSMN_STRICT is not set +# end of jsmn + +# +# libsodium +# +# end of libsodium + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF=y +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_SACK_OUT is not set +# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +# end of SNTP + +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v2.28.x related +# +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# end of mbedTLS v2.28.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_AES_USE_INTERRUPT=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y +CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +CONFIG_MBEDTLS_RC4_DISABLED=y +# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set +# CONFIG_MBEDTLS_RC4_ENABLED is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MDNS_TASK_PRIORITY=1 +CONFIG_MDNS_TASK_STACK_SIZE=4096 +# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_MDNS_TASK_AFFINITY_CPU0=y +# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set +CONFIG_MDNS_TASK_AFFINITY=0x0 +CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 +# CONFIG_MDNS_STRICT_MODE is not set +CONFIG_MDNS_TIMER_PERIOD_MS=100 +# CONFIG_MDNS_NETWORKING_SOCKET is not set +CONFIG_MDNS_MULTIPLE_INSTANCE=y +# end of mDNS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# end of NVS + +# +# OpenSSL +# +# CONFIG_OPENSSL_DEBUG is not set +CONFIG_OPENSSL_ERROR_STACK=y +# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set +CONFIG_OPENSSL_ASSERT_EXIT=y +# end of OpenSSL + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +# CONFIG_SPI_FLASH_ROM_IMPL is not set +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# end of Websocket +# end of TCP Transport + +# +# TinyUSB Stack +# +# CONFIG_TINYUSB is not set +# end of TinyUSB Stack + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# USB-OTG +# +CONFIG_USB_OTG_SUPPORTED=y +CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256 +CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y +# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set +# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set +# end of USB-OTG + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# end of Supplicant +# end of Component config + +# +# Compatibility options +# +# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set +# end of Compatibility options + +# Deprecated options for backward compatibility +CONFIG_TOOLPREFIX="xtensa-esp32s3-elf-" +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +# CONFIG_MONITOR_BAUD_9600B is not set +# CONFIG_MONITOR_BAUD_57600B is not set +CONFIG_MONITOR_BAUD_115200B=y +# CONFIG_MONITOR_BAUD_230400B is not set +# CONFIG_MONITOR_BAUD_921600B is not set +# CONFIG_MONITOR_BAUD_2MB is not set +# CONFIG_MONITOR_BAUD_OTHER is not set +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_DISABLE_GCC8_WARNINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_ESP_SYSTEM_PD_FLASH=y +CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND=y +CONFIG_IPC_TASK_STACK_SIZE=1536 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set +CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32S2_PANIC_GDBSTUB is not set +CONFIG_ESP32S2_ALLOW_RTC_FAST_MEM_AS_HEAP=y +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 +CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y +CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +# CONFIG_MB_TIMER_PORT_ENABLED is not set +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_L2_TO_L3_COPY is not set +# CONFIG_USE_ONLY_LWIP_SELECT is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_USB_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options diff --git a/ESP32_AP-Flasher/src/CMakeLists.txt b/ESP32_AP-Flasher/src/CMakeLists.txt new file mode 100644 index 00000000..483bc0cf --- /dev/null +++ b/ESP32_AP-Flasher/src/CMakeLists.txt @@ -0,0 +1,6 @@ +# This file was automatically generated for projects +# without default 'CMakeLists.txt' file. + +FILE(GLOB_RECURSE app_sources ${CMAKE_SOURCE_DIR}/src/*.*) + +idf_component_register(SRCS ${app_sources}) diff --git a/esp32_fw/src/SPIFFSEditor.cpp b/ESP32_AP-Flasher/src/SPIFFSEditor.cpp similarity index 100% rename from esp32_fw/src/SPIFFSEditor.cpp rename to ESP32_AP-Flasher/src/SPIFFSEditor.cpp diff --git a/esp32_fw/src/contentmanager.cpp b/ESP32_AP-Flasher/src/contentmanager.cpp similarity index 100% rename from esp32_fw/src/contentmanager.cpp rename to ESP32_AP-Flasher/src/contentmanager.cpp diff --git a/esp32_fw/src/flasher.cpp b/ESP32_AP-Flasher/src/flasher.cpp similarity index 85% rename from esp32_fw/src/flasher.cpp rename to ESP32_AP-Flasher/src/flasher.cpp index 76100955..7343ea28 100644 --- a/esp32_fw/src/flasher.cpp +++ b/ESP32_AP-Flasher/src/flasher.cpp @@ -27,6 +27,9 @@ typedef enum { uint8_t *infoblock = nullptr; uint8_t *flashbuffer = nullptr; +static class ZBS_interface* zbs; + + // look for the latest version of the firmware file... It's supposed to be something like zigbeebase0003.bin String lookupFirmwareFile(uint16_t &version) { String filename; @@ -58,9 +61,9 @@ uint16_t getDeviceType() { uint8_t type29[8] = {0x7d, 0x22, 0xff, 0x02, 0xa4, 0x58, 0xf0, 0x90}; uint8_t type154[8] = {0xa1, 0x23, 0x22, 0x02, 0xa4, 0xc3, 0xe4, 0xf0}; uint8_t buffer[8] = {0}; - zbs.select_flash(0); + zbs->select_flash(0); for (uint8_t c = 0; c < 8; c++) { - buffer[c] = zbs.read_flash(0x08 + c); + buffer[c] = zbs->read_flash(0x08 + c); } if (memcmp(buffer, type29, 8) == 0) { return 0x3B10; @@ -73,10 +76,10 @@ uint16_t getDeviceType() { // extract original mac from firmware and make it 2 bytes longer based on info in settings.h uint64_t getOriginalTagMac() { - zbs.select_flash(0); + zbs->select_flash(0); uint8_t mac[8] = {0}; for (uint8_t c = 0; c < 6; c++) { - mac[c + 2] = zbs.read_flash(0xFC06 + c); + mac[c + 2] = zbs->read_flash(0xFC06 + c); } mac[0] = (uint8_t)(CUSTOM_MAC_HDR >> 8); mac[1] = (uint8_t)CUSTOM_MAC_HDR; @@ -96,10 +99,10 @@ uint64_t getOriginalTagMac() { // extract custom firmware mac from Infoblock uint64_t getInfoBlockMac() { - zbs.select_flash(1); + zbs->select_flash(1); uint8_t mac[8] = {0}; for (uint8_t c = 0; c < 8; c++) { - mac[c] = zbs.read_flash(0x10 + c); + mac[c] = zbs->read_flash(0x10 + c); } return *((uint64_t *)(mac)); } @@ -110,9 +113,9 @@ void readInfoBlock() { // allocate room for infopage infoblock = (uint8_t *)calloc(1024, 1); } - zbs.select_flash(1); // select info page + zbs->select_flash(1); // select info page for (uint16_t c = 0; c < 1024; c++) { - infoblock[c] = zbs.read_flash(c); + infoblock[c] = zbs->read_flash(c); } } @@ -121,13 +124,13 @@ void writeInfoBlock() { if (infoblock == nullptr) { return; } - zbs.select_flash(1); - zbs.erase_infoblock(); - zbs.select_flash(1); // select info page + zbs->select_flash(1); + zbs->erase_infoblock(); + zbs->select_flash(1); // select info page for (uint16_t c = 0; c < 1024; c++) { for (uint8_t i = 0; i < MAX_WRITE_ATTEMPTS; i++) { - zbs.write_flash(c, infoblock[c]); - if (zbs.read_flash(c) == infoblock[c]) { + zbs->write_flash(c, infoblock[c]); + if (zbs->read_flash(c) == infoblock[c]) { break; } } @@ -139,15 +142,15 @@ void writeFlashBlock(uint16_t size) { if (flashbuffer == nullptr) { return; } - zbs.select_flash(0); - zbs.erase_flash(); - zbs.select_flash(0); + zbs->select_flash(0); + zbs->erase_flash(); + zbs->select_flash(0); Serial.printf("Starting flash, size=%d\n", size); uint8_t i = 0; for (uint16_t c = 0; c < size; c++) { for (i = 0; i < MAX_WRITE_ATTEMPTS; i++) { - zbs.write_flash(c, flashbuffer[c]); - if (zbs.read_flash(c) == flashbuffer[c]) { + zbs->write_flash(c, flashbuffer[c]); + if (zbs->read_flash(c) == flashbuffer[c]) { break; } } @@ -165,11 +168,11 @@ void writeFlashBlock(uint16_t size) { void performDeviceFlash() { uint8_t interfaceWorking = 0; Serial.printf("Power cycling to get everything up and running...\n"); - zbs.set_power(0); + zbs->set_power(0); vTaskDelay(500 / portTICK_PERIOD_MS); - zbs.set_power(1); + zbs->set_power(1); vTaskDelay(500 / portTICK_PERIOD_MS); - interfaceWorking = zbs.begin(); + //interfaceWorking = zbs.begin(); if (!interfaceWorking) { Serial.print("I wasn't able to connect to a ZBS tag, please check wiring and definitions in the settings.h file.\n"); return; @@ -182,11 +185,11 @@ void performDeviceFlash() { if (*((uint64_t *)(mac)) == 0xFFFFFFFFFFFFFFFF) { // mac not set in infopage, get it from the original firmware *((uint64_t *)(mac)) = getOriginalTagMac(); - zbs.select_flash(1); + zbs->select_flash(1); for (uint8_t c = 0; c < 8; c++) { infoblock[0x17 - c] = mac[c]; // write mac directly to infoblock without erasing; the bytes should all be 0xFF anyway - zbs.write_flash(0x17 - c, mac[c]); + zbs->write_flash(0x17 - c, mac[c]); } } @@ -219,6 +222,6 @@ void performDeviceFlash() { infoblock = nullptr; free(flashbuffer); flashbuffer = nullptr; - zbs.reset(); - zbs.set_power(1); + zbs->reset(); + zbs->set_power(1); } diff --git a/ESP32_AP-Flasher/src/leds.cpp b/ESP32_AP-Flasher/src/leds.cpp new file mode 100644 index 00000000..60aea77c --- /dev/null +++ b/ESP32_AP-Flasher/src/leds.cpp @@ -0,0 +1,270 @@ +#include +#include + +#include "settings.h" + +QueueHandle_t rgbLedQueue; +QueueHandle_t ledQueue; + +struct ledInstructionRGB { + CRGB ledColor; + uint16_t fadeTime; + uint16_t length; +}; + +struct ledInstruction { + uint16_t value; + uint16_t fadeTime; + uint16_t length; +}; + +const uint8_t PROGMEM gamma8[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, + 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, + 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, + 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, + 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, + 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, + 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, + 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, + 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, + 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, + 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, + 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255}; + +const uint16_t gamma12[256] = { + 0, 2, 4, 6, 8, 10, 12, 13, 15, 17, + 19, 21, 23, 25, 27, 29, 31, 33, 35, 36, + 38, 37, 39, 41, 43, 45, 47, 49, 52, 54, + 56, 59, 61, 64, 66, 69, 72, 74, 77, 80, + 83, 87, 90, 93, 96, 100, 103, 107, 111, 115, + 118, 122, 126, 131, 135, 139, 143, 148, 153, 157, + 162, 167, 172, 177, 182, 187, 193, 198, 204, 209, + 215, 221, 227, 233, 239, 246, 252, 259, 265, 272, + 279, 286, 293, 300, 307, 315, 322, 330, 338, 346, + 354, 362, 370, 379, 387, 396, 405, 414, 423, 432, + 442, 451, 461, 470, 480, 490, 500, 511, 521, 532, + 542, 553, 564, 575, 587, 598, 610, 622, 633, 645, + 658, 670, 683, 695, 708, 721, 734, 747, 761, 774, + 788, 802, 816, 830, 845, 859, 874, 889, 904, 919, + 935, 950, 966, 982, 998, 1015, 1031, 1048, 1065, 1082, + 1099, 1116, 1134, 1151, 1169, 1187, 1206, 1224, 1243, 1262, + 1281, 1300, 1319, 1339, 1359, 1379, 1399, 1419, 1440, 1461, + 1482, 1503, 1524, 1546, 1568, 1590, 1612, 1634, 1657, 1680, + 1703, 1726, 1749, 1773, 1797, 1821, 1845, 1870, 1895, 1920, + 1945, 1970, 1996, 2022, 2048, 2074, 2100, 2127, 2154, 2181, + 2209, 2236, 2264, 2292, 2321, 2349, 2378, 2407, 2436, 2466, + 2495, 2525, 2556, 2586, 2617, 2648, 2679, 2710, 2742, 2774, + 2806, 2838, 2871, 2904, 2937, 2970, 3004, 3038, 3072, 3107, + 3141, 3176, 3211, 3247, 3283, 3319, 3355, 3391, 3428, 3465, + 3502, 3540, 3578, 3616, 3654, 3693, 3732, 3771, 3810, 3850, + 3890, 3930, 3971, 4013, 4054, 4095}; + +CRGB leds[1]; + +void addToRGBQueue(struct ledInstructionRGB* rgb) { + BaseType_t queuestatus = xQueueSend(rgbLedQueue, &rgb, 0); + if (queuestatus == pdFALSE) { + delete rgb; + } +} + +void addToMonoQueue(struct ledInstruction* mono) { + BaseType_t queuestatus = xQueueSend(ledQueue, &mono, 0); + if (queuestatus == pdFALSE) { + delete mono; + } +} + +void addFadeColor(CRGB cname) { + struct ledInstructionRGB* rgb = new struct ledInstructionRGB; + rgb->ledColor = cname; + rgb->fadeTime = 750; + rgb->length = 0; + addToRGBQueue(rgb); +} + +void addFadeMono(uint8_t value) { + struct ledInstruction* mono = new struct ledInstruction; + mono->value = value; + mono->fadeTime = 750; + mono->length = 0; + addToMonoQueue(mono); +} + +void shortBlink(CRGB cname) { + struct ledInstructionRGB* rgb = new struct ledInstructionRGB; + rgb->ledColor = CRGB::Black; + rgb->fadeTime = 0; + rgb->length = 3; + addToRGBQueue(rgb); + rgb = new struct ledInstructionRGB; + rgb->ledColor = cname; + rgb->ledColor.maximizeBrightness(0x80); + rgb->fadeTime = 0; + rgb->length = 10; + addToRGBQueue(rgb); + rgb = new struct ledInstructionRGB; + rgb->ledColor = CRGB::Black; + rgb->fadeTime = 0; + rgb->length = 3; + addToRGBQueue(rgb); +} + +void showRGB() { + FastLED.show(); +} +void showMono(uint8_t brightness) { + ledcWrite(7, gamma12[brightness]); +} + +volatile uint16_t rgbIdlePeriod = 800; +volatile uint16_t monoIdlePeriod = 900; +volatile CRGB rgbIdleColor = CRGB::Green; +uint8_t monoValue = 0; + +void rgbIdleStep() { + static bool dirUp = true; + static uint16_t step = 0; + + if (dirUp) { + // up + step++; + if (step == rgbIdlePeriod) { + dirUp = false; + } + } else { + // down + step--; + if (step == 0) { + dirUp = true; + } + } + CRGB newvalue = blend(CRGB::Black, (const CRGB&)rgbIdleColor, gamma8[map(step, 0, rgbIdlePeriod, 0, 255)]); + if (newvalue != leds[0]) { + leds[0] = newvalue; + showRGB(); + } +} + +void monoIdleStep() { + static bool dirUp = true; + static uint16_t step = 0; + if (dirUp) { + // up + step++; + if (step == monoIdlePeriod) { + dirUp = false; + } + } else { + // down + step--; + if (step == 0) { + dirUp = true; + } + } + uint8_t newvalue = map(step, 0, monoIdlePeriod, 0, 255); + if (newvalue != monoValue) { + monoValue = newvalue; + showMono(newvalue); + } +} + +void ledTask(void* parameter) { + FastLED.addLeds(leds, 1); // GRB ordering is typical + leds[0] = CRGB::Blue; + showRGB(); + + rgbLedQueue = xQueueCreate(30, sizeof(struct ledInstructionRGB*)); + ledQueue = xQueueCreate(30, sizeof(struct ledInstruction*)); + + digitalWrite(FLASHER_LED, HIGH); + pinMode(FLASHER_LED, OUTPUT); + ledcSetup(7, 9500, 12); // 141251 okay // 101251 okay + ledcAttachPin(FLASHER_LED, 7); + + struct ledInstructionRGB* rgb = nullptr; + struct ledInstruction* monoled = nullptr; + + // open with a nice RGB crossfade + addFadeColor(CRGB::Red); + addFadeColor(CRGB::Green); + addFadeColor(CRGB::Blue); + addFadeColor(CRGB::Red); + addFadeColor(CRGB::Green); + addFadeColor(CRGB::Blue); + + addFadeMono(255); + addFadeMono(127); + addFadeMono(255); + addFadeMono(0); + + CRGB oldColor = CRGB::Black; + + uint8_t oldBrightness = 0; + + uint16_t rgbInstructionFadeTime = 0; + uint16_t monoInstructionFadeTime = 0; + + while (1) { + + // handle RGB led instructions + if (rgb == nullptr) { + // fetch a led instruction + BaseType_t q = xQueueReceive(rgbLedQueue, &rgb, 1); + if (q == pdTRUE) { + rgbInstructionFadeTime = rgb->fadeTime; + if (rgb->fadeTime <= 1) { + leds[0] = rgb->ledColor; + showRGB(); + } + } else { + // no commands, run idle led task + rgbIdleStep(); + } + } else { + // process instruction + if (rgb->fadeTime) { + rgb->fadeTime--; + leds[0] = blend(rgb->ledColor, oldColor, map(rgb->fadeTime, 0, rgbInstructionFadeTime, 0, 255)); + showRGB(); + } else if (rgb->length) { + rgb->length--; + } else { + oldColor = rgb->ledColor; + delete rgb; + rgb = nullptr; + } + } + + // handle flasher LED (single color) + if (monoled == nullptr) { + BaseType_t q = xQueueReceive(ledQueue, &monoled, 1); + if (q == pdTRUE) { + monoInstructionFadeTime = monoled->fadeTime; + if (monoled->fadeTime <= 1) { + showMono(gamma12[monoled->value]); + } + } else { + monoIdleStep(); + } + } else { + if (monoled->fadeTime) { + monoled->fadeTime--; + showMono(map(monoled->fadeTime, 0, monoInstructionFadeTime, monoled->value, oldBrightness)); + } else if (monoled->length) { + monoled->length--; + } else { + oldBrightness = monoled->value; + delete monoled; + monoled = nullptr; + } + } + + vTaskDelay(1 / portTICK_PERIOD_MS); + } +} \ No newline at end of file diff --git a/ESP32_AP-Flasher/src/main.cpp b/ESP32_AP-Flasher/src/main.cpp new file mode 100644 index 00000000..fc17bf10 --- /dev/null +++ b/ESP32_AP-Flasher/src/main.cpp @@ -0,0 +1,80 @@ +#include +#include +#include +#include + +#include "contentmanager.h" +#include "flasher.h" +#include "hal/wdt_hal.h" +#include "makeimage.h" +#include "pendingdata.h" +#include "serial.h" +#include "settings.h" +#include "tag_db.h" + +#if (HAS_USB == 1) +#include "usbflasher.h" +#endif + +#include "web.h" + +#include "leds.h" + +void timeTask(void* parameter) { + while (1) { + time_t now; + time(&now); + tm tm; + if (!getLocalTime(&tm)) { + Serial.println("Waiting for valid time from NTP-server"); + } else { + if (now % 10 == 0) wsSendSysteminfo(); + if (now % 30 == 3) Ping(); + if (now % 300 == 6) saveDB("/current/tagDB.json"); + + contentRunner(); + } + vTaskDelay(1000 / portTICK_PERIOD_MS); + } +} + +void setup() { + Serial.begin(115200); + Serial.print(">\n"); + + psramInit(); + + Serial.println("\n\n##################################"); + Serial.printf("Internal Total heap %d, internal Free Heap %d\n", ESP.getHeapSize(), ESP.getFreeHeap()); + Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + Serial.printf("ChipRevision %d, Cpu Freq %d, SDK Version %s\n", ESP.getChipRevision(), ESP.getCpuFreqMHz(), ESP.getSdkVersion()); + Serial.printf("Flash Size %d, Flash Speed %d\n", ESP.getFlashChipSize(), ESP.getFlashChipSpeed()); + Serial.println("##################################\n\n"); + + Serial.println(ESP.getFreeHeap()); + + Serial.printf("Total heap: %d", ESP.getHeapSize()); + Serial.printf("Free heap: %d", ESP.getFreeHeap()); + Serial.printf("Total PSRAM: %d", ESP.getPsramSize()); + Serial.printf("Free PSRAM: %d", ESP.getFreePsram()); + + #if (HAS_USB == 1) + xTaskCreate(usbFlasherTask, "flasher", 10000, NULL, configMAX_PRIORITIES - 10, NULL); + #endif + + configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "0.nl.pool.ntp.org", "europe.pool.ntp.org", "time.nist.gov"); + // https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv + + init_web(); + loadDB("/current/tagDB.json"); + + xTaskCreate(zbsRxTask, "zbsRX Process", 10000, NULL, 2, NULL); + xTaskCreate(garbageCollection, "pending-data cleanup", 5000, NULL, 1, NULL); + xTaskCreate(webSocketSendProcess, "ws", 5000, NULL, configMAX_PRIORITIES - 10, NULL); + xTaskCreate(timeTask, "timed tasks", 10000, NULL, 2, NULL); + xTaskCreate(ledTask, "handles leds", 5000, NULL, 10, NULL); +} + +void loop() { + vTaskDelay(30000 / portTICK_PERIOD_MS); +} \ No newline at end of file diff --git a/esp32_fw/src/makeimage.cpp b/ESP32_AP-Flasher/src/makeimage.cpp similarity index 100% rename from esp32_fw/src/makeimage.cpp rename to ESP32_AP-Flasher/src/makeimage.cpp diff --git a/esp32_fw/src/newproto.cpp b/ESP32_AP-Flasher/src/newproto.cpp similarity index 99% rename from esp32_fw/src/newproto.cpp rename to ESP32_AP-Flasher/src/newproto.cpp index 1932185f..7d4813e6 100644 --- a/esp32_fw/src/newproto.cpp +++ b/ESP32_AP-Flasher/src/newproto.cpp @@ -287,9 +287,6 @@ void processXferTimeout(struct espXferComplete* xfc) { } void processDataReq(struct espAvailDataReq* eadr) { - - digitalWrite(ONBOARD_LED, LOW); - char buffer[64]; uint8_t src[8]; *((uint64_t*)src) = swap64(*((uint64_t*)eadr->src)); @@ -338,8 +335,6 @@ void processDataReq(struct espAvailDataReq* eadr) { sprintf(buffer, " +#include "powermgt.h" +#include "settings.h" + +// On the OpenEPaperLink board, there is no in-rush current limiting. The tags that can be connected to the board can have significant capacity, which, +// when drained, will cause the 3v3 rail to sag enough to reset the ESP32. This is obviously not great. To prevent this from happening, we ramp up/down the +// voltage with PWM. Ramping down really is unnecessary, as the board has a resistor to dump the charge into. +void rampTagPower(uint8_t pin, bool up) { + if (up) { + ledcSetup(0, 152000, 8); // 141251 okay // 101251 okay + ledcWrite(0, 254); + vTaskDelay(10 / portTICK_PERIOD_MS); + ledcAttachPin(pin, 0); + pinMode(pin, OUTPUT); + for (uint8_t c = 254; c != 0xFF; c--) { + ledcWrite(0, c); + vTaskDelay(1 / portTICK_PERIOD_MS); + } + digitalWrite(pin, LOW); + ledcDetachPin(pin); + digitalWrite(pin, LOW); + } else { + pinMode(pin, OUTPUT); + digitalWrite(pin, HIGH); + } +} \ No newline at end of file diff --git a/esp32_fw/src/serial.cpp b/ESP32_AP-Flasher/src/serial.cpp similarity index 85% rename from esp32_fw/src/serial.cpp rename to ESP32_AP-Flasher/src/serial.cpp index 1ac82ee1..9698faf3 100644 --- a/esp32_fw/src/serial.cpp +++ b/ESP32_AP-Flasher/src/serial.cpp @@ -90,7 +90,6 @@ uint8_t pktindex = 0; char lastchar = 0; uint8_t charindex = 0; uint64_t waitingForVersion = 0; -uint8_t crashcounter = 0; uint16_t version; void ShortRXWaitLoop() { @@ -201,12 +200,25 @@ void SerialRXLoop() { break; case ZBS_RX_WAIT_VER: waitingForVersion = 0; - crashcounter = 0; cmdbuffer[charindex] = lastchar; charindex++; if (charindex == 4) { charindex = 0; version = (uint16_t)strtoul(cmdbuffer, NULL, 16); + /* + uint16_t fsversion; + lookupFirmwareFile(fsversion); + if ((fsversion) && (version != fsversion)) { + Serial.printf("ZBS/Zigbee FW version: %04X, version on SPIFFS: %04X\n", version, fsversion); + Serial.printf("Performing flash update in about 30 seconds"); + vTaskDelay(30000 / portTICK_PERIOD_MS); + performDeviceFlash(); + } else if (!fsversion) { + Serial.println("No ZBS/Zigbee FW binary found on SPIFFS, please upload a zigbeebase000X.bin - format binary to enable flashing"); + } else { + Serial.printf("ZBS/Zigbee FW version: %04X\n", version); + } + */ RXState = ZBS_RX_WAIT_HEADER; } break; @@ -217,14 +229,13 @@ void SerialRXLoop() { extern uint8_t* getDataForFile(File* file); void zbsRxTask(void* parameter) { - Serial1.begin(228571, SERIAL_8N1, RXD1, TXD1); + Serial1.begin(230400, SERIAL_8N1, RXD1, TXD1); simplePowerOn(); bool firstrun = true; Serial1.print("VER?"); waitingForVersion = esp_timer_get_time(); - while (1) { SerialRXLoop(); @@ -234,19 +245,14 @@ void zbsRxTask(void* parameter) { vTaskDelay(1 / portTICK_PERIOD_MS); if (waitingForVersion) { - if (esp_timer_get_time() - waitingForVersion > 5000*1000ULL) { + if (esp_timer_get_time() - waitingForVersion > 10000*1000ULL) { waitingForVersion = 0; - wsLog("AP doesn't respond... "+String(crashcounter + 1)); - if (++crashcounter >= 4) { - crashcounter = 0; - Serial.println("I wasn't able to connect to a ZBS tag, trying to reboot the tag."); - Serial.println("If this problem persists, please check wiring and definitions in the settings.h file, and presence of the right firmware"); - simplePowerOn(); - wsErr("The AP tag crashed. Restarting tag, regenerating all pending info."); - refreshAllPending(); - } else { - Ping(); - } + //performDeviceFlash(); + Serial.println("I wasn't able to connect to a ZBS tag, trying to reboot the tag."); + Serial.println("If this problem persists, please check wiring and definitions in the settings.h file, and presence of the right firmware"); + simplePowerOn(); + wsErr("The AP tag crashed. Restarting tag, regenerating all pending info."); + refreshAllPending(); } } diff --git a/esp32_fw/src/tag_db.cpp b/ESP32_AP-Flasher/src/tag_db.cpp similarity index 100% rename from esp32_fw/src/tag_db.cpp rename to ESP32_AP-Flasher/src/tag_db.cpp diff --git a/ESP32_AP-Flasher/src/usbflasher.cpp b/ESP32_AP-Flasher/src/usbflasher.cpp new file mode 100644 index 00000000..77829325 --- /dev/null +++ b/ESP32_AP-Flasher/src/usbflasher.cpp @@ -0,0 +1,347 @@ +#include + +#include "USB.h" +#include "powermgt.h" +#include "settings.h" +#include "zbs_interface.h" + +USBCDC USBSerial; + +QueueHandle_t flasherCmdQueue; + +#define FLASHER_WAIT_A 0 +#define FLASHER_WAIT_T 1 +#define FLASHER_WAIT_CMD 2 +#define FLASHER_WAIT_LEN 3 +#define FLASHER_WAIT_DATA 4 +#define FLASHER_WAIT_CRCH 5 +#define FLASHER_WAIT_CRCL 6 + +struct flasherCommand { + uint8_t command = 0; + uint8_t len = 0; + uint8_t* data = nullptr; +}; + +void sendFlasherAnswer(uint8_t answer_cmd, uint8_t* ans_buff, uint8_t len) { + uint8_t* answer_buffer = (uint8_t*)calloc(2 + 2 + len + 2, 1); + if (answer_buffer == nullptr) return; + uint32_t CRC_value = 0xAB34; + answer_buffer[0] = 'A'; + answer_buffer[1] = 'T'; + answer_buffer[2] = answer_cmd; + CRC_value += answer_cmd; + answer_buffer[3] = len; + CRC_value += len; + for (int i = 0; i < len; i++) { + answer_buffer[4 + i] = ans_buff[i]; + CRC_value += ans_buff[i]; + } + answer_buffer[2 + 2 + len] = CRC_value >> 8; + answer_buffer[2 + 2 + len + 1] = CRC_value; + USBSerial.write(answer_buffer, 2 + 2 + len + 2); + free(answer_buffer); +} + +void flasherUartHandler(uint8_t* data, uint8_t len) { + static struct flasherCommand* cmd; + static uint8_t flasherSerialState = FLASHER_WAIT_A; + static uint8_t flasherCmdDataIndex = 0; + static uint16_t flasherCRC = 0xAB34; + static uint32_t flasherLastCmd = 0; + + if ((flasherSerialState != FLASHER_WAIT_A) && (millis() - flasherLastCmd >= 225)) { + flasherSerialState = FLASHER_WAIT_A; + } + + while (len--) { + uint8_t usbbyte = *(data++); + switch (flasherSerialState) { + case FLASHER_WAIT_A: + if (usbbyte == 'A') { + flasherSerialState = FLASHER_WAIT_T; + flasherLastCmd = millis(); + } + break; + case FLASHER_WAIT_T: + if (usbbyte == 'T') { + flasherSerialState = FLASHER_WAIT_CMD; + cmd = new flasherCommand; + flasherCRC = 0xAB34; + flasherCmdDataIndex = 0; + } else { + flasherSerialState = FLASHER_WAIT_A; + } + break; + case FLASHER_WAIT_CMD: + cmd->command = usbbyte; + flasherCRC += usbbyte; + flasherSerialState = FLASHER_WAIT_LEN; + break; + case FLASHER_WAIT_LEN: + flasherCRC += usbbyte; + if (usbbyte) { + cmd->len = usbbyte; + cmd->data = (uint8_t*)calloc(usbbyte, 1); + flasherSerialState = FLASHER_WAIT_DATA; + } else { + flasherSerialState = FLASHER_WAIT_CRCH; + } + break; + case FLASHER_WAIT_DATA: + flasherCRC += usbbyte; + cmd->data[flasherCmdDataIndex++] = usbbyte; + if (flasherCmdDataIndex == cmd->len) { + flasherSerialState = FLASHER_WAIT_CRCH; + } + break; + case FLASHER_WAIT_CRCH: + flasherCRC -= ((uint16_t)usbbyte << 8); + flasherSerialState = FLASHER_WAIT_CRCL; + break; + case FLASHER_WAIT_CRCL: + flasherCRC -= ((uint16_t)usbbyte); + if (flasherCRC) { + Serial.printf("CRC failed for flasher command :( %04X\n", flasherCRC); + cmd = nullptr; + } else { + BaseType_t queuestatus = xQueueSend(flasherCmdQueue, &cmd, 0); + if (queuestatus == pdFALSE) { + if (cmd->data != nullptr) free(cmd->data); + delete cmd; + } + cmd = nullptr; + } + flasherSerialState = FLASHER_WAIT_A; + break; + } + } +} + +static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { + if (event_base == ARDUINO_USB_EVENTS) { + arduino_usb_event_data_t* data = (arduino_usb_event_data_t*)event_data; + switch (event_id) { + case ARDUINO_USB_STARTED_EVENT: + Serial.println("USB PLUGGED"); + break; + case ARDUINO_USB_STOPPED_EVENT: + Serial.println("USB UNPLUGGED"); + break; + case ARDUINO_USB_SUSPEND_EVENT: + Serial.printf("USB SUSPENDED: remote_wakeup_en: %u\n", data->suspend.remote_wakeup_en); + break; + case ARDUINO_USB_RESUME_EVENT: + Serial.println("USB RESUMED"); + break; + + default: + break; + } + } else if (event_base == ARDUINO_USB_CDC_EVENTS) { + arduino_usb_cdc_event_data_t* data = (arduino_usb_cdc_event_data_t*)event_data; + switch (event_id) { + case ARDUINO_USB_CDC_CONNECTED_EVENT: + Serial.println("CDC CONNECTED"); + break; + case ARDUINO_USB_CDC_DISCONNECTED_EVENT: + Serial.println("CDC DISCONNECTED"); + break; + case ARDUINO_USB_CDC_LINE_STATE_EVENT: + Serial.printf("CDC LINE STATE: dtr: %u, rts: %u\n", data->line_state.dtr, data->line_state.rts); + break; + case ARDUINO_USB_CDC_LINE_CODING_EVENT: + Serial.printf("CDC LINE CODING: bit_rate: %u, data_bits: %u, stop_bits: %u, parity: %u\n", data->line_coding.bit_rate, data->line_coding.data_bits, data->line_coding.stop_bits, data->line_coding.parity); + break; + case ARDUINO_USB_CDC_RX_EVENT: + // Serial.printf("CDC RX [%u]:", data->rx.len); + { + uint8_t buf[data->rx.len]; + size_t len = USBSerial.read(buf, data->rx.len); + flasherUartHandler(buf, len); + } + break; + case ARDUINO_USB_CDC_RX_OVERFLOW_EVENT: + Serial.printf("CDC RX Overflow of %d bytes", data->rx_overflow.dropped_bytes); + break; + + default: + break; + } + } +} + +typedef enum { + CMD_GET_VERSION = 1, + CMD_RESET_ESP = 2, + CMD_ZBS_BEGIN = 10, + CMD_RESET_ZBS = 11, + CMD_SELECT_PAGE = 12, + CMD_SET_POWER = 13, + CMD_READ_RAM = 20, + CMD_WRITE_RAM = 21, + CMD_READ_FLASH = 22, + CMD_WRITE_FLASH = 23, + CMD_READ_SFR = 24, + CMD_WRITE_SFR = 25, + CMD_ERASE_FLASH = 26, + CMD_ERASE_INFOBLOCK = 27, + CMD_SAVE_MAC_FROM_FW = 40, + CMD_PASS_THROUGH = 50, +} ZBS_UART_PROTO; +uint32_t FLASHER_VERSION = 0x0000002F; + +static class ZBS_interface* zbs = nullptr; + +void processFlasherCommand(struct flasherCommand* cmd) { + uint8_t* tempbuffer; + uint8_t temp_buff[16]; + uint32_t spi_speed = 0; + static uint32_t curspeed = 0; + + switch (cmd->command) { + case CMD_GET_VERSION: + temp_buff[0] = FLASHER_VERSION >> 24; + temp_buff[1] = FLASHER_VERSION >> 16; + temp_buff[2] = FLASHER_VERSION >> 8; + temp_buff[3] = FLASHER_VERSION; + sendFlasherAnswer(cmd->command, temp_buff, 4); + break; + case CMD_RESET_ESP: + sendFlasherAnswer(cmd->command, NULL, 0); + delay(100); + ESP.restart(); + break; + case CMD_ZBS_BEGIN: + if (zbs != nullptr) { + delete zbs; + } + zbs = new ZBS_interface; + if (cmd->data[0] & 1) { + spi_speed = 1000000; + } else { + spi_speed = 8000000; + } + curspeed = spi_speed; + if (cmd->data[0] & 2) { + temp_buff[0] = zbs->begin(FLASHER_AP_SS, FLASHER_AP_CLK, FLASHER_AP_MOSI, FLASHER_AP_MISO, FLASHER_AP_RESET, FLASHER_AP_POWER, spi_speed); + } else if (cmd->data[0] & 4) { + temp_buff[0] = zbs->begin(FLASHER_ALT_SS, FLASHER_ALT_CLK, FLASHER_ALT_MOSI, FLASHER_ALT_MISO, FLASHER_ALT_RESET, 255, spi_speed); + } else { + temp_buff[0] = zbs->begin(FLASHER_EXT_SS, FLASHER_EXT_CLK, FLASHER_EXT_MOSI, FLASHER_EXT_MISO, FLASHER_EXT_RESET, FLASHER_EXT_POWER, spi_speed); + } + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_RESET_ZBS: + zbs->reset(); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_SELECT_PAGE: + temp_buff[0] = zbs->select_flash(cmd->data[0] ? 1 : 0); + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_SET_POWER: + zbs->set_power(cmd->data[0] ? 1 : 0); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_READ_RAM: + temp_buff[0] = zbs->read_ram(cmd->data[0]); + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_WRITE_RAM: + zbs->write_ram(cmd->data[0], cmd->data[1]); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_READ_FLASH: + tempbuffer = (uint8_t*)calloc(cmd->data[0], 1); + // cmd_buff[0] = len + // cmd_buff[1] << 8 | cmd_buff[2] = position + Serial.printf("Loading %d bytes from %04X \n", cmd->data[0], (cmd->data[1] << 8 | cmd->data[2])); + for (int i = 0; i < cmd->data[0]; i++) { + tempbuffer[i] = zbs->read_flash((cmd->data[1] << 8 | cmd->data[2]) + i); + } + sendFlasherAnswer(cmd->command, tempbuffer, cmd->data[0]); + free(tempbuffer); + break; + case CMD_WRITE_FLASH: + // cmd_buff[0] = len + // cmd_buff[1] << 8 | cmd_buff[2] = position + // cmd_buff[3+i] = data + if (cmd->data[0] >= (0xff - 3)) { // Len too high, only 0xFF - header len possible + temp_buff[0] = 0xEE; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + } + Serial.printf("Writing %d bytes to %04X \n", cmd->data[0], (cmd->data[1] << 8 | cmd->data[2])); + for (int i = 0; i < cmd->data[0]; i++) { + if (cmd->data[3 + i] != 0xff) { + for (uint8_t attempts = 0; attempts < 10; attempts++) { + zbs->write_flash((cmd->data[1] << 8 | cmd->data[2]) + i, cmd->data[3 + i]); + if (zbs->read_flash((cmd->data[1] << 8 | cmd->data[2]) + i) == cmd->data[3 + i]) { + goto flash_pass; + } + curspeed -= 100000; + zbs->setSpeed(curspeed); + } + flash_fail: + temp_buff[0] = 0; + Serial.print("!"); + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + flash_pass: + continue; + } + } + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + Serial.print("#"); + break; + case CMD_READ_SFR: + temp_buff[0] = zbs->read_sfr(cmd->data[0]); + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_WRITE_SFR: + zbs->write_sfr(cmd->data[0], cmd->data[1]); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_ERASE_FLASH: + zbs->erase_flash(); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_ERASE_INFOBLOCK: + zbs->erase_infoblock(); + temp_buff[0] = 1; + sendFlasherAnswer(cmd->command, temp_buff, 1); + break; + case CMD_SAVE_MAC_FROM_FW: + case CMD_PASS_THROUGH: + break; + } +} + +void usbFlasherTask(void* parameter) { + flasherCmdQueue = xQueueCreate(10, sizeof(struct flasherCommand*)); +#if ARDUINO_USB_MODE +#warning Wrong USB mode is in use, check settings in platformio.ini +#endif + USB.onEvent(usbEventCallback); + USBSerial.onEvent(usbEventCallback); + USBSerial.begin(); + USB.begin(); + struct flasherCommand* cmd; + while (true) { + BaseType_t queuereceive = xQueueReceive(flasherCmdQueue, &cmd, portMAX_DELAY); + if (queuereceive == pdTRUE) { + processFlasherCommand(cmd); + if (cmd->data != nullptr) { + free(cmd->data); + } + delete cmd; + } + } +} \ No newline at end of file diff --git a/esp32_fw/src/web.cpp b/ESP32_AP-Flasher/src/web.cpp similarity index 99% rename from esp32_fw/src/web.cpp rename to ESP32_AP-Flasher/src/web.cpp index 496e2909..b3fc953a 100644 --- a/esp32_fw/src/web.cpp +++ b/ESP32_AP-Flasher/src/web.cpp @@ -16,6 +16,7 @@ #include "newproto.h" #include "settings.h" #include "tag_db.h" +#include "leds.h" extern uint8_t data_to_send[]; @@ -51,6 +52,7 @@ void webSocketSendProcess(void *parameter) { } void onEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { + shortBlink(CRGB::BlueViolet); switch (type) { case WS_EVT_CONNECT: // client connected diff --git a/esp32_fw/src/zbs_interface.cpp b/ESP32_AP-Flasher/src/zbs_interface.cpp similarity index 72% rename from esp32_fw/src/zbs_interface.cpp rename to ESP32_AP-Flasher/src/zbs_interface.cpp index 4996c8c9..cf2e1e64 100644 --- a/esp32_fw/src/zbs_interface.cpp +++ b/ESP32_AP-Flasher/src/zbs_interface.cpp @@ -1,55 +1,57 @@ /* Autor: Aaron Christophel ATCnetz.de */ - #include "zbs_interface.h" #include +#include #include #include -#include "settings.h" - -void simplePowerOn() { - pinMode(ZBS_SS, INPUT); - pinMode(ZBS_CLK, INPUT); - pinMode(ZBS_MoSi, INPUT); - pinMode(ZBS_MiSo, INPUT); - pinMode(ZBS_Reset, OUTPUT); - digitalWrite(ZBS_Reset, HIGH); - zbs.set_power(0); - delay(500); - zbs.set_power(1); -} - -uint8_t ZBS_interface::begin() { - _SS_PIN = ZBS_SS; - _CLK_PIN = ZBS_CLK; - _MOSI_PIN = ZBS_MoSi; - _MISO_PIN = ZBS_MiSo; - _RESET_PIN = ZBS_Reset; +#include "powermgt.h" +uint8_t ZBS_interface::begin(uint8_t SS, uint8_t CLK, uint8_t MOSI, uint8_t MISO, uint8_t RESET, uint8_t POWER, uint32_t spi_speed) { + _SS_PIN = SS; + _CLK_PIN = CLK; + _MOSI_PIN = MOSI; + _MISO_PIN = MISO; + _RESET_PIN = RESET; + _POWER_PIN = POWER; pinMode(_SS_PIN, OUTPUT); + pinMode(_RESET_PIN, OUTPUT); + digitalWrite(_SS_PIN, HIGH); + digitalWrite(_RESET_PIN, HIGH); + set_power(ZBS_ON); pinMode(_CLK_PIN, OUTPUT); pinMode(_MOSI_PIN, OUTPUT); pinMode(_MISO_PIN, INPUT); - pinMode(_RESET_PIN, OUTPUT); - digitalWrite(_SS_PIN, HIGH); digitalWrite(_CLK_PIN, LOW); digitalWrite(_MOSI_PIN, HIGH); - digitalWrite(_RESET_PIN, HIGH); - set_power(ZBS_ON); + if (!spi) spi = new SPIClass(HSPI); + + spiSettings = SPISettings(spi_speed, MSBFIRST, SPI_MODE0); + spi_ready = 0; + + if (spi_speed != 8000000) { + after_byte_delay = 10; + } else { + after_byte_delay = 10; + } enable_debug(); return check_connection(); } +void ZBS_interface::setSpeed(uint32_t speed) { + spiSettings = SPISettings(speed, MSBFIRST, SPI_MODE0); +} + +ZBS_interface::~ZBS_interface() { + delete spi; +} void ZBS_interface::set_power(uint8_t state) { - pinMode(ZBS_POWER1, INPUT); - pinMode(ZBS_POWER2, INPUT); - digitalWrite(ZBS_POWER1, state); - digitalWrite(ZBS_POWER2, state); - pinMode(ZBS_POWER1, OUTPUT); - pinMode(ZBS_POWER2, OUTPUT); + if (_POWER_PIN != 255) { + rampTagPower(_POWER_PIN, state); + } } void ZBS_interface::enable_debug() { @@ -81,6 +83,7 @@ void ZBS_interface::enable_debug() { } void ZBS_interface::reset() { + spi->end(); pinMode(_SS_PIN, INPUT); pinMode(_CLK_PIN, INPUT); pinMode(_MOSI_PIN, INPUT); @@ -96,18 +99,14 @@ void ZBS_interface::reset() { void ZBS_interface::send_byte(uint8_t data) { digitalWrite(_SS_PIN, LOW); delayMicroseconds(5); - for (int i = 0; i < 8; i++) { - if (data & 0x80) { - digitalWrite(_MOSI_PIN, HIGH); - } else { - digitalWrite(_MOSI_PIN, LOW); - } - delayMicroseconds(ZBS_spi_delay); - digitalWrite(_CLK_PIN, HIGH); - delayMicroseconds(ZBS_spi_delay); - digitalWrite(_CLK_PIN, LOW); - data <<= 1; + if (!spi_ready) { + spi_ready = 1; + spi->begin(_CLK_PIN, _MISO_PIN, _MOSI_PIN); } + spi->beginTransaction(spiSettings); + spi->transfer(data); + spi->endTransaction(); + delayMicroseconds(2); digitalWrite(_SS_PIN, HIGH); } @@ -116,16 +115,13 @@ uint8_t ZBS_interface::read_byte() { uint8_t data = 0x00; digitalWrite(_SS_PIN, LOW); delayMicroseconds(5); - for (int i = 0; i < 8; i++) { - data <<= 1; - if (digitalRead(_MISO_PIN)) { - data |= 1; - } - delayMicroseconds(ZBS_spi_delay); - digitalWrite(_CLK_PIN, HIGH); - delayMicroseconds(ZBS_spi_delay); - digitalWrite(_CLK_PIN, LOW); + if (!spi_ready) { + spi_ready = 1; + spi->begin(_CLK_PIN, _MISO_PIN, _MOSI_PIN); } + spi->beginTransaction(spiSettings); + data = spi->transfer(0xff); + spi->endTransaction(); delayMicroseconds(2); digitalWrite(_SS_PIN, HIGH); return data; @@ -135,7 +131,7 @@ void ZBS_interface::write_byte(uint8_t cmd, uint8_t addr, uint8_t data) { send_byte(cmd); send_byte(addr); send_byte(data); - delay(1); + delayMicroseconds(after_byte_delay); } uint8_t ZBS_interface::read_byte(uint8_t cmd, uint8_t addr) { @@ -143,7 +139,7 @@ uint8_t ZBS_interface::read_byte(uint8_t cmd, uint8_t addr) { send_byte(cmd); send_byte(addr); data = read_byte(); - delay(1); + delayMicroseconds(after_byte_delay); return data; } @@ -152,7 +148,7 @@ void ZBS_interface::write_flash(uint16_t addr, uint8_t data) { send_byte(addr >> 8); send_byte(addr); send_byte(data); - delay(1); + delayMicroseconds(after_byte_delay); } uint8_t ZBS_interface::read_flash(uint16_t addr) { @@ -161,7 +157,7 @@ uint8_t ZBS_interface::read_flash(uint16_t addr) { send_byte(addr >> 8); send_byte(addr); data = read_byte(); - delay(1); + delayMicroseconds(after_byte_delay); return data; } @@ -210,5 +206,3 @@ void ZBS_interface::erase_infoblock() { send_byte(0x00); delay(100); } - -ZBS_interface zbs; diff --git a/ESP32_AP-Flasher/test.bin2 b/ESP32_AP-Flasher/test.bin2 new file mode 100644 index 00000000..bb8b02a0 Binary files /dev/null and b/ESP32_AP-Flasher/test.bin2 differ diff --git a/esp32_fw/test/README b/ESP32_AP-Flasher/test/README similarity index 100% rename from esp32_fw/test/README rename to ESP32_AP-Flasher/test/README diff --git a/PCB-jig/README.md b/PCB/README.md similarity index 100% rename from PCB-jig/README.md rename to PCB/README.md diff --git a/PCB-jig/epapertagjig-cam.brd b/PCB/epapertagjig-cam.brd similarity index 100% rename from PCB-jig/epapertagjig-cam.brd rename to PCB/epapertagjig-cam.brd diff --git a/PCB-jig/epapertagjig.brd b/PCB/epapertagjig.brd similarity index 100% rename from PCB-jig/epapertagjig.brd rename to PCB/epapertagjig.brd diff --git a/PCB-jig/epapertagjig.sch b/PCB/epapertagjig.sch similarity index 100% rename from PCB-jig/epapertagjig.sch rename to PCB/epapertagjig.sch diff --git a/PCB-jig/epapertagjig.zip b/PCB/epapertagjig.zip similarity index 100% rename from PCB-jig/epapertagjig.zip rename to PCB/epapertagjig.zip diff --git a/PCB-jig/gerbv-board.png b/PCB/gerbv-board.png similarity index 100% rename from PCB-jig/gerbv-board.png rename to PCB/gerbv-board.png diff --git a/PCB-jig/gerbview/epapertagjig-cam.GBL b/PCB/gerbview/epapertagjig-cam.GBL similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GBL rename to PCB/gerbview/epapertagjig-cam.GBL diff --git a/PCB-jig/gerbview/epapertagjig-cam.GBO b/PCB/gerbview/epapertagjig-cam.GBO similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GBO rename to PCB/gerbview/epapertagjig-cam.GBO diff --git a/PCB-jig/gerbview/epapertagjig-cam.GBP b/PCB/gerbview/epapertagjig-cam.GBP similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GBP rename to PCB/gerbview/epapertagjig-cam.GBP diff --git a/PCB-jig/gerbview/epapertagjig-cam.GBS b/PCB/gerbview/epapertagjig-cam.GBS similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GBS rename to PCB/gerbview/epapertagjig-cam.GBS diff --git a/PCB-jig/gerbview/epapertagjig-cam.GML b/PCB/gerbview/epapertagjig-cam.GML similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GML rename to PCB/gerbview/epapertagjig-cam.GML diff --git a/PCB-jig/gerbview/epapertagjig-cam.GTL b/PCB/gerbview/epapertagjig-cam.GTL similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GTL rename to PCB/gerbview/epapertagjig-cam.GTL diff --git a/PCB-jig/gerbview/epapertagjig-cam.GTO b/PCB/gerbview/epapertagjig-cam.GTO similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GTO rename to PCB/gerbview/epapertagjig-cam.GTO diff --git a/PCB-jig/gerbview/epapertagjig-cam.GTP b/PCB/gerbview/epapertagjig-cam.GTP similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GTP rename to PCB/gerbview/epapertagjig-cam.GTP diff --git a/PCB-jig/gerbview/epapertagjig-cam.GTS b/PCB/gerbview/epapertagjig-cam.GTS similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.GTS rename to PCB/gerbview/epapertagjig-cam.GTS diff --git a/PCB-jig/gerbview/epapertagjig-cam.TXT b/PCB/gerbview/epapertagjig-cam.TXT similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.TXT rename to PCB/gerbview/epapertagjig-cam.TXT diff --git a/PCB-jig/gerbview/epapertagjig-cam.dri b/PCB/gerbview/epapertagjig-cam.dri similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.dri rename to PCB/gerbview/epapertagjig-cam.dri diff --git a/PCB-jig/gerbview/epapertagjig-cam.gpi b/PCB/gerbview/epapertagjig-cam.gpi similarity index 100% rename from PCB-jig/gerbview/epapertagjig-cam.gpi rename to PCB/gerbview/epapertagjig-cam.gpi diff --git a/PCB-jig/gerbview/gerbv.exe b/PCB/gerbview/gerbv.exe similarity index 100% rename from PCB-jig/gerbview/gerbv.exe rename to PCB/gerbview/gerbv.exe diff --git a/PCB-jig/pcb-photo.jpg b/PCB/pcb-photo.jpg similarity index 100% rename from PCB-jig/pcb-photo.jpg rename to PCB/pcb-photo.jpg diff --git a/esp32_fw/include/settings.h b/esp32_fw/include/settings.h deleted file mode 100644 index d1ab28cd..00000000 --- a/esp32_fw/include/settings.h +++ /dev/null @@ -1,44 +0,0 @@ -#include - -// how long the we should keep the transfer metadata -#define PENDING_TIMEOUT 24*3600 -// this determines how long images will be cached; -#define PENDING_DATA_TIMEOUT 60 -// maximum time (in minutes) that a tag is put to sleep if no update is expected. -#define MIN_RESPONSE_TIME 10 - -// flasher options -#define CUSTOM_MAC_HDR 0x0000 - -/* Lolin32 lite connections to AP tag -#define RXD1 16 -#define TXD1 17 - -#define ZBS_SS 5 -#define ZBS_CLK 18 -#define ZBS_MoSi 23 -#define ZBS_MiSo 19 -#define ZBS_Reset 2 -#define ZBS_POWER1 13 -#define ZBS_POWER2 15 - -#define ONBOARD_LED 22 -//*/ - -//* -#define RXD1 13 -#define TXD1 12 - -#define ZBS_SS 21 -#define ZBS_CLK 18 -#define ZBS_MoSi 22 -#define ZBS_MiSo 19 -#define ZBS_Reset 5 -#define ZBS_POWER1 15 -#define ZBS_POWER2 2 - -#define ONBOARD_LED 22 -//*/ - -#define MAX_WRITE_ATTEMPTS 5 - diff --git a/ap_fw/.gitignore b/zbs243_AP_FW/.gitignore similarity index 100% rename from ap_fw/.gitignore rename to zbs243_AP_FW/.gitignore diff --git a/ap_fw/LICENSE.txt b/zbs243_AP_FW/LICENSE.txt similarity index 100% rename from ap_fw/LICENSE.txt rename to zbs243_AP_FW/LICENSE.txt diff --git a/ap_fw/Makefile b/zbs243_AP_FW/Makefile similarity index 100% rename from ap_fw/Makefile rename to zbs243_AP_FW/Makefile diff --git a/ap_fw/adc.h b/zbs243_AP_FW/adc.h similarity index 100% rename from ap_fw/adc.h rename to zbs243_AP_FW/adc.h diff --git a/ap_fw/ap_fw.bin b/zbs243_AP_FW/ap_fw.bin similarity index 100% rename from ap_fw/ap_fw.bin rename to zbs243_AP_FW/ap_fw.bin diff --git a/ap_fw/asmUtil.h b/zbs243_AP_FW/asmUtil.h similarity index 100% rename from ap_fw/asmUtil.h rename to zbs243_AP_FW/asmUtil.h diff --git a/ap_fw/board/boardCommon.h b/zbs243_AP_FW/board/boardCommon.h similarity index 100% rename from ap_fw/board/boardCommon.h rename to zbs243_AP_FW/board/boardCommon.h diff --git a/ap_fw/board/boardZBS29common.c b/zbs243_AP_FW/board/boardZBS29common.c similarity index 100% rename from ap_fw/board/boardZBS29common.c rename to zbs243_AP_FW/board/boardZBS29common.c diff --git a/ap_fw/board/zbs29v033/board.c b/zbs243_AP_FW/board/zbs29v033/board.c similarity index 100% rename from ap_fw/board/zbs29v033/board.c rename to zbs243_AP_FW/board/zbs29v033/board.c diff --git a/ap_fw/board/zbs29v033/board.h b/zbs243_AP_FW/board/zbs29v033/board.h similarity index 100% rename from ap_fw/board/zbs29v033/board.h rename to zbs243_AP_FW/board/zbs29v033/board.h diff --git a/ap_fw/board/zbs29v033/make.mk b/zbs243_AP_FW/board/zbs29v033/make.mk similarity index 100% rename from ap_fw/board/zbs29v033/make.mk rename to zbs243_AP_FW/board/zbs29v033/make.mk diff --git a/ap_fw/board/zbs29v033/screen.h b/zbs243_AP_FW/board/zbs29v033/screen.h similarity index 100% rename from ap_fw/board/zbs29v033/screen.h rename to zbs243_AP_FW/board/zbs29v033/screen.h diff --git a/ap_fw/builder.php b/zbs243_AP_FW/builder.php similarity index 100% rename from ap_fw/builder.php rename to zbs243_AP_FW/builder.php diff --git a/ap_fw/comms.c b/zbs243_AP_FW/comms.c similarity index 100% rename from ap_fw/comms.c rename to zbs243_AP_FW/comms.c diff --git a/ap_fw/comms.h b/zbs243_AP_FW/comms.h similarity index 100% rename from ap_fw/comms.h rename to zbs243_AP_FW/comms.h diff --git a/ap_fw/cpu/8051/asmUtil.c b/zbs243_AP_FW/cpu/8051/asmUtil.c similarity index 100% rename from ap_fw/cpu/8051/asmUtil.c rename to zbs243_AP_FW/cpu/8051/asmUtil.c diff --git a/ap_fw/cpu/8051/cpu.c b/zbs243_AP_FW/cpu/8051/cpu.c similarity index 100% rename from ap_fw/cpu/8051/cpu.c rename to zbs243_AP_FW/cpu/8051/cpu.c diff --git a/ap_fw/cpu/8051/cpu.h b/zbs243_AP_FW/cpu/8051/cpu.h similarity index 100% rename from ap_fw/cpu/8051/cpu.h rename to zbs243_AP_FW/cpu/8051/cpu.h diff --git a/ap_fw/cpu/8051/make.mk b/zbs243_AP_FW/cpu/8051/make.mk similarity index 100% rename from ap_fw/cpu/8051/make.mk rename to zbs243_AP_FW/cpu/8051/make.mk diff --git a/ap_fw/cpu/8051/peep.def b/zbs243_AP_FW/cpu/8051/peep.def similarity index 100% rename from ap_fw/cpu/8051/peep.def rename to zbs243_AP_FW/cpu/8051/peep.def diff --git a/ap_fw/cpu/8051/printf.c b/zbs243_AP_FW/cpu/8051/printf.c similarity index 100% rename from ap_fw/cpu/8051/printf.c rename to zbs243_AP_FW/cpu/8051/printf.c diff --git a/ap_fw/cpu/8051/random.c b/zbs243_AP_FW/cpu/8051/random.c similarity index 100% rename from ap_fw/cpu/8051/random.c rename to zbs243_AP_FW/cpu/8051/random.c diff --git a/ap_fw/main.c b/zbs243_AP_FW/main.c similarity index 100% rename from ap_fw/main.c rename to zbs243_AP_FW/main.c diff --git a/ap_fw/make.bat b/zbs243_AP_FW/make.bat similarity index 100% rename from ap_fw/make.bat rename to zbs243_AP_FW/make.bat diff --git a/ap_fw/makeit.exe b/zbs243_AP_FW/makeit.exe similarity index 100% rename from ap_fw/makeit.exe rename to zbs243_AP_FW/makeit.exe diff --git a/ap_fw/printf.h b/zbs243_AP_FW/printf.h similarity index 100% rename from ap_fw/printf.h rename to zbs243_AP_FW/printf.h diff --git a/ap_fw/proto.h b/zbs243_AP_FW/proto.h similarity index 100% rename from ap_fw/proto.h rename to zbs243_AP_FW/proto.h diff --git a/ap_fw/soc/radioCommon.h b/zbs243_AP_FW/soc/radioCommon.h similarity index 100% rename from ap_fw/soc/radioCommon.h rename to zbs243_AP_FW/soc/radioCommon.h diff --git a/ap_fw/soc/zbs243/flash.c b/zbs243_AP_FW/soc/zbs243/flash.c similarity index 100% rename from ap_fw/soc/zbs243/flash.c rename to zbs243_AP_FW/soc/zbs243/flash.c diff --git a/ap_fw/soc/zbs243/flash.h b/zbs243_AP_FW/soc/zbs243/flash.h similarity index 100% rename from ap_fw/soc/zbs243/flash.h rename to zbs243_AP_FW/soc/zbs243/flash.h diff --git a/ap_fw/soc/zbs243/i2c.c b/zbs243_AP_FW/soc/zbs243/i2c.c similarity index 100% rename from ap_fw/soc/zbs243/i2c.c rename to zbs243_AP_FW/soc/zbs243/i2c.c diff --git a/ap_fw/soc/zbs243/i2c.h b/zbs243_AP_FW/soc/zbs243/i2c.h similarity index 100% rename from ap_fw/soc/zbs243/i2c.h rename to zbs243_AP_FW/soc/zbs243/i2c.h diff --git a/ap_fw/soc/zbs243/make.mk b/zbs243_AP_FW/soc/zbs243/make.mk similarity index 100% rename from ap_fw/soc/zbs243/make.mk rename to zbs243_AP_FW/soc/zbs243/make.mk diff --git a/ap_fw/soc/zbs243/radio.c b/zbs243_AP_FW/soc/zbs243/radio.c similarity index 100% rename from ap_fw/soc/zbs243/radio.c rename to zbs243_AP_FW/soc/zbs243/radio.c diff --git a/ap_fw/soc/zbs243/radio.h b/zbs243_AP_FW/soc/zbs243/radio.h similarity index 100% rename from ap_fw/soc/zbs243/radio.h rename to zbs243_AP_FW/soc/zbs243/radio.h diff --git a/ap_fw/soc/zbs243/sleep.c b/zbs243_AP_FW/soc/zbs243/sleep.c similarity index 100% rename from ap_fw/soc/zbs243/sleep.c rename to zbs243_AP_FW/soc/zbs243/sleep.c diff --git a/ap_fw/soc/zbs243/soc.c b/zbs243_AP_FW/soc/zbs243/soc.c similarity index 100% rename from ap_fw/soc/zbs243/soc.c rename to zbs243_AP_FW/soc/zbs243/soc.c diff --git a/ap_fw/soc/zbs243/soc.h b/zbs243_AP_FW/soc/zbs243/soc.h similarity index 100% rename from ap_fw/soc/zbs243/soc.h rename to zbs243_AP_FW/soc/zbs243/soc.h diff --git a/ap_fw/soc/zbs243/spi.c b/zbs243_AP_FW/soc/zbs243/spi.c similarity index 100% rename from ap_fw/soc/zbs243/spi.c rename to zbs243_AP_FW/soc/zbs243/spi.c diff --git a/ap_fw/soc/zbs243/spi.h b/zbs243_AP_FW/soc/zbs243/spi.h similarity index 100% rename from ap_fw/soc/zbs243/spi.h rename to zbs243_AP_FW/soc/zbs243/spi.h diff --git a/ap_fw/soc/zbs243/temperature.c b/zbs243_AP_FW/soc/zbs243/temperature.c similarity index 100% rename from ap_fw/soc/zbs243/temperature.c rename to zbs243_AP_FW/soc/zbs243/temperature.c diff --git a/ap_fw/soc/zbs243/timer.c b/zbs243_AP_FW/soc/zbs243/timer.c similarity index 100% rename from ap_fw/soc/zbs243/timer.c rename to zbs243_AP_FW/soc/zbs243/timer.c diff --git a/ap_fw/soc/zbs243/timer.h b/zbs243_AP_FW/soc/zbs243/timer.h similarity index 100% rename from ap_fw/soc/zbs243/timer.h rename to zbs243_AP_FW/soc/zbs243/timer.h diff --git a/ap_fw/soc/zbs243/uart.c b/zbs243_AP_FW/soc/zbs243/uart.c similarity index 100% rename from ap_fw/soc/zbs243/uart.c rename to zbs243_AP_FW/soc/zbs243/uart.c diff --git a/ap_fw/soc/zbs243/uart.h b/zbs243_AP_FW/soc/zbs243/uart.h similarity index 100% rename from ap_fw/soc/zbs243/uart.h rename to zbs243_AP_FW/soc/zbs243/uart.h diff --git a/ap_fw/soc/zbs243/wdt.c b/zbs243_AP_FW/soc/zbs243/wdt.c similarity index 100% rename from ap_fw/soc/zbs243/wdt.c rename to zbs243_AP_FW/soc/zbs243/wdt.c diff --git a/ap_fw/soc/zbs243/zbs243.h b/zbs243_AP_FW/soc/zbs243/zbs243.h similarity index 100% rename from ap_fw/soc/zbs243/zbs243.h rename to zbs243_AP_FW/soc/zbs243/zbs243.h diff --git a/ap_fw/wdt.h b/zbs243_AP_FW/wdt.h similarity index 100% rename from ap_fw/wdt.h rename to zbs243_AP_FW/wdt.h diff --git a/tag_fw/.gitignore b/zbs243_Tag_FW/.gitignore similarity index 100% rename from tag_fw/.gitignore rename to zbs243_Tag_FW/.gitignore diff --git a/tag_fw/LICENSE.txt b/zbs243_Tag_FW/LICENSE.txt similarity index 100% rename from tag_fw/LICENSE.txt rename to zbs243_Tag_FW/LICENSE.txt diff --git a/tag_fw/Makefile b/zbs243_Tag_FW/Makefile similarity index 100% rename from tag_fw/Makefile rename to zbs243_Tag_FW/Makefile diff --git a/tag_fw/asmUtil.h b/zbs243_Tag_FW/asmUtil.h similarity index 100% rename from tag_fw/asmUtil.h rename to zbs243_Tag_FW/asmUtil.h diff --git a/tag_fw/barcode.c b/zbs243_Tag_FW/barcode.c similarity index 100% rename from tag_fw/barcode.c rename to zbs243_Tag_FW/barcode.c diff --git a/tag_fw/barcode.h b/zbs243_Tag_FW/barcode.h similarity index 100% rename from tag_fw/barcode.h rename to zbs243_Tag_FW/barcode.h diff --git a/tag_fw/bitmaps.h b/zbs243_Tag_FW/bitmaps.h similarity index 100% rename from tag_fw/bitmaps.h rename to zbs243_Tag_FW/bitmaps.h diff --git a/tag_fw/board/boardCommon.h b/zbs243_Tag_FW/board/boardCommon.h similarity index 100% rename from tag_fw/board/boardCommon.h rename to zbs243_Tag_FW/board/boardCommon.h diff --git a/tag_fw/board/boardZBS29common.c b/zbs243_Tag_FW/board/boardZBS29common.c similarity index 100% rename from tag_fw/board/boardZBS29common.c rename to zbs243_Tag_FW/board/boardZBS29common.c diff --git a/tag_fw/board/ssd1619.c b/zbs243_Tag_FW/board/ssd1619.c similarity index 100% rename from tag_fw/board/ssd1619.c rename to zbs243_Tag_FW/board/ssd1619.c diff --git a/tag_fw/board/ssd1619.h b/zbs243_Tag_FW/board/ssd1619.h similarity index 100% rename from tag_fw/board/ssd1619.h rename to zbs243_Tag_FW/board/ssd1619.h diff --git a/tag_fw/board/uc8151.c b/zbs243_Tag_FW/board/uc8151.c similarity index 100% rename from tag_fw/board/uc8151.c rename to zbs243_Tag_FW/board/uc8151.c diff --git a/tag_fw/board/uc8151.h b/zbs243_Tag_FW/board/uc8151.h similarity index 100% rename from tag_fw/board/uc8151.h rename to zbs243_Tag_FW/board/uc8151.h diff --git a/tag_fw/board/zbs154v033/board.c b/zbs243_Tag_FW/board/zbs154v033/board.c similarity index 100% rename from tag_fw/board/zbs154v033/board.c rename to zbs243_Tag_FW/board/zbs154v033/board.c diff --git a/tag_fw/board/zbs154v033/board.h b/zbs243_Tag_FW/board/zbs154v033/board.h similarity index 100% rename from tag_fw/board/zbs154v033/board.h rename to zbs243_Tag_FW/board/zbs154v033/board.h diff --git a/tag_fw/board/zbs154v033/make.mk b/zbs243_Tag_FW/board/zbs154v033/make.mk similarity index 100% rename from tag_fw/board/zbs154v033/make.mk rename to zbs243_Tag_FW/board/zbs154v033/make.mk diff --git a/tag_fw/board/zbs154v033/screen.c b/zbs243_Tag_FW/board/zbs154v033/screen.c similarity index 100% rename from tag_fw/board/zbs154v033/screen.c rename to zbs243_Tag_FW/board/zbs154v033/screen.c diff --git a/tag_fw/board/zbs154v033/screen.h b/zbs243_Tag_FW/board/zbs154v033/screen.h similarity index 100% rename from tag_fw/board/zbs154v033/screen.h rename to zbs243_Tag_FW/board/zbs154v033/screen.h diff --git a/tag_fw/board/zbs29_uc8151/board.c b/zbs243_Tag_FW/board/zbs29_uc8151/board.c similarity index 100% rename from tag_fw/board/zbs29_uc8151/board.c rename to zbs243_Tag_FW/board/zbs29_uc8151/board.c diff --git a/tag_fw/board/zbs29_uc8151/board.h b/zbs243_Tag_FW/board/zbs29_uc8151/board.h similarity index 100% rename from tag_fw/board/zbs29_uc8151/board.h rename to zbs243_Tag_FW/board/zbs29_uc8151/board.h diff --git a/tag_fw/board/zbs29_uc8151/make.mk b/zbs243_Tag_FW/board/zbs29_uc8151/make.mk similarity index 100% rename from tag_fw/board/zbs29_uc8151/make.mk rename to zbs243_Tag_FW/board/zbs29_uc8151/make.mk diff --git a/tag_fw/board/zbs29_uc8151/screen.c b/zbs243_Tag_FW/board/zbs29_uc8151/screen.c similarity index 100% rename from tag_fw/board/zbs29_uc8151/screen.c rename to zbs243_Tag_FW/board/zbs29_uc8151/screen.c diff --git a/tag_fw/board/zbs29_uc8151/screen.h b/zbs243_Tag_FW/board/zbs29_uc8151/screen.h similarity index 100% rename from tag_fw/board/zbs29_uc8151/screen.h rename to zbs243_Tag_FW/board/zbs29_uc8151/screen.h diff --git a/tag_fw/board/zbs29v033/board.c b/zbs243_Tag_FW/board/zbs29v033/board.c similarity index 100% rename from tag_fw/board/zbs29v033/board.c rename to zbs243_Tag_FW/board/zbs29v033/board.c diff --git a/tag_fw/board/zbs29v033/board.h b/zbs243_Tag_FW/board/zbs29v033/board.h similarity index 100% rename from tag_fw/board/zbs29v033/board.h rename to zbs243_Tag_FW/board/zbs29v033/board.h diff --git a/tag_fw/board/zbs29v033/make.mk b/zbs243_Tag_FW/board/zbs29v033/make.mk similarity index 100% rename from tag_fw/board/zbs29v033/make.mk rename to zbs243_Tag_FW/board/zbs29v033/make.mk diff --git a/tag_fw/board/zbs29v033/screen.c b/zbs243_Tag_FW/board/zbs29v033/screen.c similarity index 100% rename from tag_fw/board/zbs29v033/screen.c rename to zbs243_Tag_FW/board/zbs29v033/screen.c diff --git a/tag_fw/board/zbs29v033/screen.h b/zbs243_Tag_FW/board/zbs29v033/screen.h similarity index 100% rename from tag_fw/board/zbs29v033/screen.h rename to zbs243_Tag_FW/board/zbs29v033/screen.h diff --git a/tag_fw/board/zbs42v033/board.c b/zbs243_Tag_FW/board/zbs42v033/board.c similarity index 100% rename from tag_fw/board/zbs42v033/board.c rename to zbs243_Tag_FW/board/zbs42v033/board.c diff --git a/tag_fw/board/zbs42v033/board.h b/zbs243_Tag_FW/board/zbs42v033/board.h similarity index 100% rename from tag_fw/board/zbs42v033/board.h rename to zbs243_Tag_FW/board/zbs42v033/board.h diff --git a/tag_fw/board/zbs42v033/make.mk b/zbs243_Tag_FW/board/zbs42v033/make.mk similarity index 100% rename from tag_fw/board/zbs42v033/make.mk rename to zbs243_Tag_FW/board/zbs42v033/make.mk diff --git a/tag_fw/board/zbs42v033/screen.c b/zbs243_Tag_FW/board/zbs42v033/screen.c similarity index 100% rename from tag_fw/board/zbs42v033/screen.c rename to zbs243_Tag_FW/board/zbs42v033/screen.c diff --git a/tag_fw/board/zbs42v033/screen.h b/zbs243_Tag_FW/board/zbs42v033/screen.h similarity index 100% rename from tag_fw/board/zbs42v033/screen.h rename to zbs243_Tag_FW/board/zbs42v033/screen.h diff --git a/tag_fw/builder.php b/zbs243_Tag_FW/builder.php similarity index 100% rename from tag_fw/builder.php rename to zbs243_Tag_FW/builder.php diff --git a/tag_fw/buildfw.sh b/zbs243_Tag_FW/buildfw.sh similarity index 100% rename from tag_fw/buildfw.sh rename to zbs243_Tag_FW/buildfw.sh diff --git a/tag_fw/comms.c b/zbs243_Tag_FW/comms.c similarity index 100% rename from tag_fw/comms.c rename to zbs243_Tag_FW/comms.c diff --git a/tag_fw/comms.h b/zbs243_Tag_FW/comms.h similarity index 100% rename from tag_fw/comms.h rename to zbs243_Tag_FW/comms.h diff --git a/tag_fw/cpu/8051/asmUtil.c b/zbs243_Tag_FW/cpu/8051/asmUtil.c similarity index 100% rename from tag_fw/cpu/8051/asmUtil.c rename to zbs243_Tag_FW/cpu/8051/asmUtil.c diff --git a/tag_fw/cpu/8051/cpu.c b/zbs243_Tag_FW/cpu/8051/cpu.c similarity index 100% rename from tag_fw/cpu/8051/cpu.c rename to zbs243_Tag_FW/cpu/8051/cpu.c diff --git a/tag_fw/cpu/8051/cpu.h b/zbs243_Tag_FW/cpu/8051/cpu.h similarity index 100% rename from tag_fw/cpu/8051/cpu.h rename to zbs243_Tag_FW/cpu/8051/cpu.h diff --git a/tag_fw/cpu/8051/make.mk b/zbs243_Tag_FW/cpu/8051/make.mk similarity index 100% rename from tag_fw/cpu/8051/make.mk rename to zbs243_Tag_FW/cpu/8051/make.mk diff --git a/tag_fw/cpu/8051/peep.def b/zbs243_Tag_FW/cpu/8051/peep.def similarity index 100% rename from tag_fw/cpu/8051/peep.def rename to zbs243_Tag_FW/cpu/8051/peep.def diff --git a/tag_fw/cpu/8051/printf.c b/zbs243_Tag_FW/cpu/8051/printf.c similarity index 100% rename from tag_fw/cpu/8051/printf.c rename to zbs243_Tag_FW/cpu/8051/printf.c diff --git a/tag_fw/cpu/8051/random.c b/zbs243_Tag_FW/cpu/8051/random.c similarity index 100% rename from tag_fw/cpu/8051/random.c rename to zbs243_Tag_FW/cpu/8051/random.c diff --git a/tag_fw/drawing.c b/zbs243_Tag_FW/drawing.c similarity index 100% rename from tag_fw/drawing.c rename to zbs243_Tag_FW/drawing.c diff --git a/tag_fw/drawing.h b/zbs243_Tag_FW/drawing.h similarity index 100% rename from tag_fw/drawing.h rename to zbs243_Tag_FW/drawing.h diff --git a/tag_fw/eeprom.c b/zbs243_Tag_FW/eeprom.c similarity index 100% rename from tag_fw/eeprom.c rename to zbs243_Tag_FW/eeprom.c diff --git a/tag_fw/eeprom.h b/zbs243_Tag_FW/eeprom.h similarity index 100% rename from tag_fw/eeprom.h rename to zbs243_Tag_FW/eeprom.h diff --git a/tag_fw/font.h b/zbs243_Tag_FW/font.h similarity index 100% rename from tag_fw/font.h rename to zbs243_Tag_FW/font.h diff --git a/tag_fw/fw154.bin b/zbs243_Tag_FW/fw154.bin similarity index 100% rename from tag_fw/fw154.bin rename to zbs243_Tag_FW/fw154.bin diff --git a/tag_fw/fw29-uc8151.bin b/zbs243_Tag_FW/fw29-uc8151.bin similarity index 100% rename from tag_fw/fw29-uc8151.bin rename to zbs243_Tag_FW/fw29-uc8151.bin diff --git a/tag_fw/fw29.bin b/zbs243_Tag_FW/fw29.bin similarity index 100% rename from tag_fw/fw29.bin rename to zbs243_Tag_FW/fw29.bin diff --git a/tag_fw/fw42.bin b/zbs243_Tag_FW/fw42.bin similarity index 100% rename from tag_fw/fw42.bin rename to zbs243_Tag_FW/fw42.bin diff --git a/tag_fw/i2cdevices.c b/zbs243_Tag_FW/i2cdevices.c similarity index 100% rename from tag_fw/i2cdevices.c rename to zbs243_Tag_FW/i2cdevices.c diff --git a/tag_fw/i2cdevices.h b/zbs243_Tag_FW/i2cdevices.h similarity index 100% rename from tag_fw/i2cdevices.h rename to zbs243_Tag_FW/i2cdevices.h diff --git a/tag_fw/lut.h b/zbs243_Tag_FW/lut.h similarity index 100% rename from tag_fw/lut.h rename to zbs243_Tag_FW/lut.h diff --git a/tag_fw/main.c b/zbs243_Tag_FW/main.c similarity index 100% rename from tag_fw/main.c rename to zbs243_Tag_FW/main.c diff --git a/tag_fw/main.map.old b/zbs243_Tag_FW/main.map.old similarity index 100% rename from tag_fw/main.map.old rename to zbs243_Tag_FW/main.map.old diff --git a/tag_fw/make.bat b/zbs243_Tag_FW/make.bat similarity index 100% rename from tag_fw/make.bat rename to zbs243_Tag_FW/make.bat diff --git a/tag_fw/makeit.exe b/zbs243_Tag_FW/makeit.exe similarity index 100% rename from tag_fw/makeit.exe rename to zbs243_Tag_FW/makeit.exe diff --git a/tag_fw/powermgt.c b/zbs243_Tag_FW/powermgt.c similarity index 100% rename from tag_fw/powermgt.c rename to zbs243_Tag_FW/powermgt.c diff --git a/tag_fw/powermgt.h b/zbs243_Tag_FW/powermgt.h similarity index 100% rename from tag_fw/powermgt.h rename to zbs243_Tag_FW/powermgt.h diff --git a/tag_fw/printf.h b/zbs243_Tag_FW/printf.h similarity index 100% rename from tag_fw/printf.h rename to zbs243_Tag_FW/printf.h diff --git a/tag_fw/proto.h b/zbs243_Tag_FW/proto.h similarity index 100% rename from tag_fw/proto.h rename to zbs243_Tag_FW/proto.h diff --git a/tag_fw/settings.h b/zbs243_Tag_FW/settings.h similarity index 100% rename from tag_fw/settings.h rename to zbs243_Tag_FW/settings.h diff --git a/tag_fw/sleep.h b/zbs243_Tag_FW/sleep.h similarity index 100% rename from tag_fw/sleep.h rename to zbs243_Tag_FW/sleep.h diff --git a/tag_fw/soc/radioCommon.h b/zbs243_Tag_FW/soc/radioCommon.h similarity index 100% rename from tag_fw/soc/radioCommon.h rename to zbs243_Tag_FW/soc/radioCommon.h diff --git a/tag_fw/soc/zbs243/flash.c b/zbs243_Tag_FW/soc/zbs243/flash.c similarity index 100% rename from tag_fw/soc/zbs243/flash.c rename to zbs243_Tag_FW/soc/zbs243/flash.c diff --git a/tag_fw/soc/zbs243/flash.h b/zbs243_Tag_FW/soc/zbs243/flash.h similarity index 100% rename from tag_fw/soc/zbs243/flash.h rename to zbs243_Tag_FW/soc/zbs243/flash.h diff --git a/tag_fw/soc/zbs243/i2c.c b/zbs243_Tag_FW/soc/zbs243/i2c.c similarity index 100% rename from tag_fw/soc/zbs243/i2c.c rename to zbs243_Tag_FW/soc/zbs243/i2c.c diff --git a/tag_fw/soc/zbs243/i2c.h b/zbs243_Tag_FW/soc/zbs243/i2c.h similarity index 100% rename from tag_fw/soc/zbs243/i2c.h rename to zbs243_Tag_FW/soc/zbs243/i2c.h diff --git a/tag_fw/soc/zbs243/make.mk b/zbs243_Tag_FW/soc/zbs243/make.mk similarity index 100% rename from tag_fw/soc/zbs243/make.mk rename to zbs243_Tag_FW/soc/zbs243/make.mk diff --git a/tag_fw/soc/zbs243/radio.c b/zbs243_Tag_FW/soc/zbs243/radio.c similarity index 100% rename from tag_fw/soc/zbs243/radio.c rename to zbs243_Tag_FW/soc/zbs243/radio.c diff --git a/tag_fw/soc/zbs243/radio.h b/zbs243_Tag_FW/soc/zbs243/radio.h similarity index 100% rename from tag_fw/soc/zbs243/radio.h rename to zbs243_Tag_FW/soc/zbs243/radio.h diff --git a/tag_fw/soc/zbs243/sleep.c b/zbs243_Tag_FW/soc/zbs243/sleep.c similarity index 100% rename from tag_fw/soc/zbs243/sleep.c rename to zbs243_Tag_FW/soc/zbs243/sleep.c diff --git a/tag_fw/soc/zbs243/soc.c b/zbs243_Tag_FW/soc/zbs243/soc.c similarity index 100% rename from tag_fw/soc/zbs243/soc.c rename to zbs243_Tag_FW/soc/zbs243/soc.c diff --git a/tag_fw/soc/zbs243/soc.h b/zbs243_Tag_FW/soc/zbs243/soc.h similarity index 100% rename from tag_fw/soc/zbs243/soc.h rename to zbs243_Tag_FW/soc/zbs243/soc.h diff --git a/tag_fw/soc/zbs243/spi.c b/zbs243_Tag_FW/soc/zbs243/spi.c similarity index 100% rename from tag_fw/soc/zbs243/spi.c rename to zbs243_Tag_FW/soc/zbs243/spi.c diff --git a/tag_fw/soc/zbs243/spi.h b/zbs243_Tag_FW/soc/zbs243/spi.h similarity index 100% rename from tag_fw/soc/zbs243/spi.h rename to zbs243_Tag_FW/soc/zbs243/spi.h diff --git a/tag_fw/soc/zbs243/temperature.c b/zbs243_Tag_FW/soc/zbs243/temperature.c similarity index 100% rename from tag_fw/soc/zbs243/temperature.c rename to zbs243_Tag_FW/soc/zbs243/temperature.c diff --git a/tag_fw/soc/zbs243/timer.c b/zbs243_Tag_FW/soc/zbs243/timer.c similarity index 100% rename from tag_fw/soc/zbs243/timer.c rename to zbs243_Tag_FW/soc/zbs243/timer.c diff --git a/tag_fw/soc/zbs243/timer.h b/zbs243_Tag_FW/soc/zbs243/timer.h similarity index 100% rename from tag_fw/soc/zbs243/timer.h rename to zbs243_Tag_FW/soc/zbs243/timer.h diff --git a/tag_fw/soc/zbs243/uart.c b/zbs243_Tag_FW/soc/zbs243/uart.c similarity index 100% rename from tag_fw/soc/zbs243/uart.c rename to zbs243_Tag_FW/soc/zbs243/uart.c diff --git a/tag_fw/soc/zbs243/uart.h b/zbs243_Tag_FW/soc/zbs243/uart.h similarity index 100% rename from tag_fw/soc/zbs243/uart.h rename to zbs243_Tag_FW/soc/zbs243/uart.h diff --git a/tag_fw/soc/zbs243/wdt.c b/zbs243_Tag_FW/soc/zbs243/wdt.c similarity index 100% rename from tag_fw/soc/zbs243/wdt.c rename to zbs243_Tag_FW/soc/zbs243/wdt.c diff --git a/tag_fw/soc/zbs243/zbs243.h b/zbs243_Tag_FW/soc/zbs243/zbs243.h similarity index 100% rename from tag_fw/soc/zbs243/zbs243.h rename to zbs243_Tag_FW/soc/zbs243/zbs243.h diff --git a/tag_fw/syncedproto.c b/zbs243_Tag_FW/syncedproto.c similarity index 100% rename from tag_fw/syncedproto.c rename to zbs243_Tag_FW/syncedproto.c diff --git a/tag_fw/syncedproto.h b/zbs243_Tag_FW/syncedproto.h similarity index 100% rename from tag_fw/syncedproto.h rename to zbs243_Tag_FW/syncedproto.h diff --git a/tag_fw/userinterface.c b/zbs243_Tag_FW/userinterface.c similarity index 100% rename from tag_fw/userinterface.c rename to zbs243_Tag_FW/userinterface.c diff --git a/tag_fw/userinterface.h b/zbs243_Tag_FW/userinterface.h similarity index 100% rename from tag_fw/userinterface.h rename to zbs243_Tag_FW/userinterface.h diff --git a/tag_fw/wdt.h b/zbs243_Tag_FW/wdt.h similarity index 100% rename from tag_fw/wdt.h rename to zbs243_Tag_FW/wdt.h diff --git a/zbs_flasher.py b/zbs_flasher.py new file mode 100644 index 00000000..8b925628 --- /dev/null +++ b/zbs_flasher.py @@ -0,0 +1,515 @@ +#!/usr/bin/python +# -*- coding: ascii -*- +### Autor: Aaron Christophel ATCnetz.de ### + +import sys +from sys import exit +import time +import os +import serial.tools.list_ports + +CMD_GET_VERSION = 1 +CMD_RESET_ESP = 2 +CMD_ZBS_BEGIN = 10 +CMD_RESET_ZBS = 11 +CMD_SELECT_PAGE = 12 +CMD_SET_POWER = 13 +CMD_READ_RAM = 20 +CMD_WRITE_RAM = 21 +CMD_READ_FLASH = 22 +CMD_WRITE_FLASH = 23 +CMD_READ_SFR = 24 +CMD_WRITE_SFR = 25 +CMD_ERASE_FLASH = 26 +CMD_ERASE_INFOBLOCK = 27 +CMD_SAVE_MAC_FROM_FW = 40 +CMD_PASS_THROUGH = 50 + +def print_arg_manual(): + print("For use with the OpenEpaperLink PCB - Will use external flasher-header by default, or add 'internalap' to access the Internal AP header") + print("\n") + print("Manual: COM1 [read][readI][write][writeI] file.bin [internalap][slow_spi] baudrate(default 115200) pass at the end for UART Pass Through mode") + print("Example: COM1 read file.bin slow_spi 115200 <- will read flash to file.bin with slow SPI and 115200 baud") + print("Example: COM1 write file.bin <- will write file.bin to flash with fast SPI and default 115200 baud") + print("Example: COM1 write file.bin internalap <- will write file.bin to the internal AP on the OpenEpaperLink PCB") + print("Example: COM1 MAC <- will write the original MAC into the infopage") + print("Example: COM1 MAC 1234567890ABCDEF <- will write this 16 byte MAC into the infopage") + print("Not the right arguments but here are the... please wait...") + ports_list = "possible UART ports: " + for port in serial.tools.list_ports.comports(): + ports_list += port.device + " " + print(ports_list) + exit() + +if (len(sys.argv) == 1): + print_arg_manual() + +custom_mac = "ffffffffffffffff" +file = "" +usedCom = sys.argv[1] # "COM5" +read_or_write = sys.argv[2] +usedBaud = 1000000 +mac_folder = "mac_backups/" + +if(sys.argv[2].lower() == "mac".lower()): + if(len(sys.argv)==3): + print("going to flash original MAC") + elif(len(sys.argv)==4): + custom_mac = sys.argv[3].lower() + if(len(custom_mac) != 16): + print("Mac not 16 bytes long") + print_arg_manual() + if(custom_mac.lower() == "ffffffffffffffff".lower()): + print("Mac should not be ff's only") + print_arg_manual() + file = mac_folder + custom_mac + ".bin" + print("going to flash custom MAC: " + custom_mac) + else: + print_arg_manual() +else: + if (len(sys.argv) < 4): + print_arg_manual() + file = sys.argv[3] + + +spi_speed = 0 +after_work_pass_through = 0 +use_internal_ap = 0 +if len(sys.argv) >= 5: + if sys.argv[4].lower() == "slow_spi".lower(): + print("Using slow SPI speed") + spi_speed = 1 + elif sys.argv[4].lower() == "pass".lower(): + after_work_pass_through = 1 + elif sys.argv[4].lower() == "internalap".lower(): + use_internal_ap = 2 +if len(sys.argv) >= 6: + usedBaud = int(sys.argv[5]) + print("Using custom baudrate: " + str(usedBaud)) + + +serialPort = serial.Serial(usedCom, usedBaud, serial.EIGHTBITS, + serial.PARITY_NONE, serial.STOPBITS_ONE, timeout=2) +print('Using port: {}'.format(usedCom)) + + +def millis(): + return round(time.time() * 1000) + + +def to_byte(input, number=4): + return input.to_bytes(number, byteorder='big') + + +def send_cmd(cmd, data): + return_data = to_byte(cmd, 1) + to_byte(len(data), 1) + data + crc_val = 0xAB34 + for x in return_data: + crc_val += x + return_data = b"AT" + return_data + to_byte(crc_val & 0xffff, 2) + #print(' '.join(format(x, '02x') for x in return_data)) + serialPort.write(return_data) + + +def uart_flush(): + time.sleep(1) # Flush serial data + while(serialPort.inWaiting() > 0): + data_str = serialPort.read(serialPort.inWaiting()) + #print(' '.join(format(x, '02x') for x in data_str)) + + +def uart_receive_handler(): + start_time = millis() + rx_state = 0 + expected_len = 0 + rx_crc = 0xAB34 + CRC_in = 0 + rx_position = 0 + rx_buffer = [] + while(1 == 1): + while(serialPort.inWaiting() > 0): + current_char = serialPort.read(1) + current_char_int = current_char[0] + if rx_state == 0: + if current_char == b'A': + rx_state += 1 + elif rx_state == 1: + if current_char == b'T': + rx_state += 1 + else: + rx_state = 0 + elif rx_state == 2: + rx_buffer += current_char + rx_crc += current_char_int + rx_state += 1 + elif rx_state == 3: + expected_len = current_char_int + rx_crc += current_char_int + if expected_len == 0: + rx_state = 5 + else: + rx_state += 1 + elif rx_state == 4: + rx_buffer += current_char + rx_crc += current_char_int + rx_position += 1 + if rx_position >= expected_len: + rx_state += 1 + elif rx_state == 5: + CRC_in = current_char_int + rx_state += 1 + elif rx_state == 6: + if rx_crc & 0xffff == CRC_in << 8 | current_char_int: + return [0]+rx_buffer + else: + return [1] + if millis() - start_time > 2000: + return [2] + + +def zbs_read_version(): + retry = 3 + while(retry): + send_cmd(CMD_GET_VERSION, bytearray([])) + answer_array = uart_receive_handler() + #print(' '.join(format(x, '02x') for x in answer_array)) + if answer_array[0] == 0: + return [0] + answer_array[1:] + retry -= 1 + return [1] + + +def zbs_flasher_enter_pass_through(): + retry = 3 + while(retry): + send_cmd(CMD_PASS_THROUGH, bytearray([])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + retry -= 1 + return [1] + +def zbs_init(): + global use_internal_ap + retry = 3 + while(retry): + send_cmd(CMD_ZBS_BEGIN, bytearray([(spi_speed&1)|use_internal_ap&2])) + answer_array = uart_receive_handler() + #print(' '.join(format(x, '02x') for x in answer_array)) + if answer_array[0] == 0 and answer_array[2] == 1: + return [0] + retry -= 1 + return [1] + + +def zbs_reset(): + retry = 3 + while(retry): + send_cmd(CMD_RESET_ZBS, bytearray([])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + retry -= 1 + return [1] + + +def zbs_erase_flash(): + retry = 3 + while(retry): + send_cmd(CMD_ERASE_FLASH, bytearray([])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + retry -= 1 + return [1] + + +def zbs_erase_infopage(): + retry = 3 + while(retry): + send_cmd(CMD_ERASE_INFOBLOCK, bytearray([])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + retry -= 1 + return [1] + + +def zbs_select_flash_page(page): + retry = 3 + while(retry): + send_cmd(CMD_SELECT_PAGE, bytearray([page & 1])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + retry -= 1 + return [1] + + +def zbs_read_flash(addr, len): + retry = 3 + #print("Reading flash at " + str(addr) + " len " + str(len)) + while(retry): + if len > 0xff: + print("error len to long") + return [2] + if addr + len > 0x10000: + print("error addr to high") + return [3] + send_cmd(CMD_READ_FLASH, bytearray( + [len, (addr >> 8) & 0xff, addr & 0xff])) + answer_array = uart_receive_handler() + if answer_array[0] == 0: + return [0] + answer_array[2:] + retry -= 1 + return [1] + + +def zbs_write_flash(addr, len, data): + retry = 3 + #print("Writing flash at " + str(addr) + " len " + str(len)) + #print("Len: " + str(len) + " : "+' '.join(format(x, '02x') for x in data)) + while(retry): + if len > 250: + print("error len to long") + return [2] + if addr + len > 0x10000: + print("error addr to high Addr: " + str(addr) + + " : Len: " + str(len) + " Position: " + str(addr+len)) + return [3] + send_cmd(CMD_WRITE_FLASH, bytearray( + [len, (addr >> 8) & 0xff, addr & 0xff]) + data) + answer_array = uart_receive_handler() + if answer_array[0] == 0 and answer_array[2] == 1: + return [0] + if answer_array[0] == 0 and answer_array[2] == 0: + return [1] + retry -= 1 + return [1] + +################################ + +def cmd_read(): + global file + if zbs_select_flash_page(0)[0] != 0: + print("error selecting flash page") + exit() + print("Reading flash now") + len_left = 0x10000 + position = 0 + curr_len = 0 + dump_buffer = [] + reading_start_time = millis() + while(len_left > 0): + if len_left > 255: + curr_len = 255 + else: + curr_len = len_left + answer = zbs_read_flash(position, curr_len) + if answer[0] == 0: + dump_buffer += answer[1:] + #print(' '.join(format(x, '02x') for x in answer)) + else: + print("Error dumping flash") + exit() + position += curr_len + len_left -= curr_len + print(str(position) + " / " + str(0x10000) + " " + + str(int((position/0x10000)*100)) + "% " + str(int((millis() - reading_start_time) / 1000)) + " seconds", end='\r', flush=True) + print("") + print("Reading flash done, now saving the file") + file = open(file, "wb") + file.write(bytearray(dump_buffer)) + file.close() + print("Saving file done, it took " + + str(int((millis()-reading_start_time)/1000)) + " seconds") + +def cmd_readI(): + global file + if zbs_select_flash_page(1)[0] != 0: + print("error selecting infopage page") + exit() + print("Reading infopage now") + len_left = 0x400 + position = 0 + curr_len = 0 + dump_buffer = [] + reading_start_time = millis() + while(len_left > 0): + if len_left > 255: + curr_len = 255 + else: + curr_len = len_left + answer = zbs_read_flash(position, curr_len) + if answer[0] == 0: + dump_buffer += answer[1:] + #print(' '.join(format(x, '02x') for x in answer)) + else: + print("Error dumping infopage") + exit() + position += curr_len + len_left -= curr_len + print(str(position) + " / " + str(0x400) + " " + + str(int((position/0x400)*100)) + "% " + str(int((millis() - reading_start_time) / 1000)) + " seconds", end='\r', flush=True) + print("") + print("Reading infopage done, now saving the file") + file = open(file, "wb") + file.write(bytearray(dump_buffer)) + file.close() + print("Saving file done, it took " + + str(int((millis()-reading_start_time)/1000)) + " seconds") + +def cmd_write(): + global file + print("Erasing flash now") + if zbs_select_flash_page(0)[0] != 0: + print("error selecting flash page") + exit() + if zbs_erase_flash()[0] != 0: + print("Some Error erasing") + exit() + print("Flashing file: "+file) + in_file = open(file, "rb") + data = bytearray(in_file.read()) + in_file.close() + file_size = len(data) + if file_size > 0x10000: + print("File is too big for flash " + str(file_size)) + exit() + len_left = file_size + print("File size : " + str(len_left)) + curr_len = 0 + position = 0 + write_start_time = millis() + while(len_left): + if len_left > 250: + curr_len = 250 + else: + curr_len = len_left + should_write = 0 + for i in range(curr_len): + if data[position + i] != 0xff: + should_write = 1 + break + if should_write == 1: + if zbs_write_flash(position, curr_len, data[position:position+curr_len])[0] != 0: + print("error writing flash at " + str(position) + " / " + str(file_size) + " " + + str(int((position/file_size)*100)) + "% " + str(int((millis() - write_start_time) / 1000)) + " seconds") + exit() + position += curr_len + len_left -= curr_len + print(str(position) + " / " + str(file_size) + " " + + str(int((position/file_size)*100)) + "% " + str(int((millis() - write_start_time) / 1000)) + " seconds", end='\r', flush=True) + print("") + print("Writing done, it took " + str(int((millis()-write_start_time)/1000)) + " seconds") + print("Verfiy done and OK") + +def cmd_writeI(): + global file + print("Erasing infopage now") + if zbs_select_flash_page(1)[0] != 0: + print("error selecting infopage page") + exit() + if zbs_erase_infopage()[0] != 0: + print("Some Error erasing") + exit() + print("Flashing file: "+file) + in_file = open(file, "rb") + data = bytearray(in_file.read()) + in_file.close() + file_size = len(data) + if file_size > 0x400: + print("File is too big for infopage " + str(file_size)) + exit() + len_left = file_size + print("File size : " + str(len_left)) + curr_len = 0 + position = 0 + write_start_time = millis() + while(len_left): + if len_left > 250: + curr_len = 250 + else: + curr_len = len_left + should_write = 0 + for i in range(curr_len): + if data[position + i] != 0xff: + should_write = 1 + break + if should_write == 1: + if zbs_write_flash(position, curr_len, data[position:position+curr_len])[0] != 0: + print("error writing infopage at " + str(position) + " / " + str(file_size) + " " + + str(int((position/file_size)*100)) + "% " + str(int((millis() - write_start_time) / 1000)) + " seconds") + exit() + position += curr_len + len_left -= curr_len + print(str(position) + " / " + str(file_size) + " " + + str(int((position/file_size)*100)) + "% " + str(int((millis() - write_start_time) / 1000)) + " seconds", end='\r', flush=True) + print("") + print("Writing done, it took " + str(int((millis()-write_start_time)/1000)) + " seconds") + print("Verfiy done and OK") + +uart_flush() + +zbs_version_answer = zbs_read_version() +if zbs_version_answer[0] == 0 and len(zbs_version_answer) == 6: + print("ZBS Flasher version: " + str(zbs_version_answer[2]<<24|zbs_version_answer[3]<<16|zbs_version_answer[4]<<8|zbs_version_answer[5])) +else: + print("Failed to read ZBS Flasher version") + +if zbs_init()[0] != 0: + print("Some Error in init") + exit() + +if (read_or_write.lower() == 'mac'.lower()): + if(custom_mac.lower() == "ffffffffffffffff".lower()): + send_cmd(CMD_SAVE_MAC_FROM_FW, bytearray([])) + answer_array = uart_receive_handler() + if answer_array[2] == 1: + print("Saved MAC from stock FW to infoblock, ready to flash custom firmware") + exit() + print("Error saving mac from stock FW to infoblock") + exit() + else: + if not(os.path.exists(mac_folder)): + os.mkdir(mac_folder) + cmd_readI() + file = mac_folder + custom_mac + ".bin" # needs to be set again + fh = open(file, "r+b") + fh.seek(0x10) + fh.write(bytes.fromhex(custom_mac)[::-1]) + fh.close() + cmd_writeI() + +if(read_or_write.lower() == 'read'.lower()): + cmd_read() + +elif(read_or_write.lower() == 'readI'.lower()): + cmd_readI() + +elif(read_or_write.lower() == 'write'.lower()): + cmd_write() + +elif(read_or_write.lower() == 'writeI'.lower()): + cmd_writeI() + +if zbs_reset()[0] == 0: + print("ZBS Reset") +else: + print("error while Reseting") + +if after_work_pass_through == 1: + if zbs_flasher_enter_pass_through()[0] == 0: + print("Pass Through mode:") + while(1): + while(serialPort.inWaiting() > 0): + current_char = serialPort.read(1) + try: + print(current_char.decode('utf-8'), end = '') + except: + pass + else: + print("error entering Pass Through mode") + + +serialPort.close()