diff --git a/bin/build-all.sh b/bin/build-all.sh index a13bfffc9..ab779e187 100755 --- a/bin/build-all.sh +++ b/bin/build-all.sh @@ -9,7 +9,7 @@ COUNTRIES="US EU433 EU865 CN JP ANZ KR" #COUNTRIES=CN BOARDS_ESP32="tlora-v2 tlora-v1 tlora-v2-1-1.6 tbeam heltec tbeam0.7" -# BOARDS_ESP32=tbeam +#BOARDS_ESP32=tbeam # FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine BOARDS_NRF52="lora-relay-v1" @@ -113,6 +113,6 @@ XML echo Generating $ARCHIVEDIR/firmware-$VERSION.zip rm -f $ARCHIVEDIR/firmware-$VERSION.zip -zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $OUTDIR/bins/firmware-*-$VERSION.* images/system-info.bin bin/device-install.sh bin/device-update.sh +zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/firmware-*-$VERSION.* images/system-info.bin bin/device-install.sh bin/device-update.sh echo BUILT ALL diff --git a/bin/device-install.sh b/bin/device-install.sh index fb374d091..3d5f27af8 100755 --- a/bin/device-install.sh +++ b/bin/device-install.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -e + # Usage info show_help() { cat << EOF @@ -36,6 +38,7 @@ if [ -f "${FILENAME}" ]; then echo "Trying to flash ${FILENAME}, but first erasing and writing system information" esptool.py --baud 921600 erase_flash esptool.py --baud 921600 write_flash 0x1000 system-info.bin + esptool.py --baud 921600 write_flash 0x00390000 spiffs-*.bin esptool.py --baud 921600 write_flash 0x10000 ${FILENAME} else echo "Invalid file: ${FILENAME}" diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp new file mode 100644 index 000000000..2ce7f0bbe --- /dev/null +++ b/src/FSCommon.cpp @@ -0,0 +1,21 @@ +#include "FSCommon.h" + +void fsInit() +{ +#ifdef FS + if (!FSBegin()) + { + DEBUG_MSG("ERROR filesystem mount Failed\n"); + assert(0); // FIXME - report failure to phone + } + + DEBUG_MSG("Filesystem files:\n"); + File dir = FS.open("/"); + File f = dir.openNextFile(); + while (f) { + DEBUG_MSG(" %s\n", f.name()); + f.close(); + f = dir.openNextFile(); + } +#endif +} diff --git a/src/FSCommon.h b/src/FSCommon.h new file mode 100644 index 000000000..a1adb952e --- /dev/null +++ b/src/FSCommon.h @@ -0,0 +1,29 @@ +#pragma once + +#include "configuration.h" + +// Cross platform filesystem API + +#ifdef PORTDUINO +// Portduino version +#include "PortduinoFS.h" +#define FS PortduinoFS +#define FSBegin() true +#define FILE_O_WRITE "w" +#define FILE_O_READ "r" +#elif !defined(NO_ESP32) +// ESP32 version +#include "SPIFFS.h" +#define FS SPIFFS +#define FSBegin() FS.begin(true) +#define FILE_O_WRITE "w" +#define FILE_O_READ "r" +#else +// NRF52 version +#include "InternalFileSystem.h" +#define FS InternalFS +#define FSBegin() FS.begin() +using namespace Adafruit_LittleFS_Namespace; +#endif + +void fsInit(); \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 61bb2be14..33b60d843 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,7 @@ // #include "rom/rtc.h" #include "DSRRouter.h" // #include "debug.h" +#include "FSCommon.h" #include "RTC.h" #include "SPILock.h" #include "concurrency/OSThread.h" @@ -173,7 +174,7 @@ class ButtonThread : public OSThread #ifdef BUTTON_PIN userButton = OneButton(BUTTON_PIN, true, true); #ifdef INPUT_PULLUP_SENSE - // Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did + // Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did pinMode(BUTTON_PIN, INPUT_PULLUP_SENSE); #endif userButton.attachClick(userButtonPressed); @@ -184,9 +185,9 @@ class ButtonThread : public OSThread #ifdef BUTTON_PIN_ALT userButtonAlt = OneButton(BUTTON_PIN_ALT, true, true); #ifdef INPUT_PULLUP_SENSE - // Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did + // Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did pinMode(BUTTON_PIN_ALT, INPUT_PULLUP_SENSE); -#endif +#endif userButtonAlt.attachClick(userButtonPressed); userButtonAlt.attachDuringLongPress(userButtonPressedLong); userButtonAlt.attachDoubleClick(userButtonDoublePressed); @@ -209,7 +210,7 @@ class ButtonThread : public OSThread canSleep &= userButtonAlt.isIdle(); #endif // if (!canSleep) DEBUG_MSG("Supressing sleep!\n"); - //else DEBUG_MSG("sleep ok\n"); + // else DEBUG_MSG("sleep ok\n"); return 5; } @@ -225,13 +226,13 @@ class ButtonThread : public OSThread DEBUG_MSG("Long press!\n"); screen->adjustBrightness(); } - + static void userButtonDoublePressed() -{ + { #ifndef NO_ESP32 - disablePin(); + disablePin(); #endif -} + } }; static Periodic *ledPeriodic; @@ -266,6 +267,8 @@ void setup() ledPeriodic = new Periodic("Blink", ledBlinker); + fsInit(); + router = new DSRRouter(); #ifdef I2C_SDA diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 61be815ec..517845b9b 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -16,6 +16,7 @@ #include "error.h" #include "mesh-pb-constants.h" #include "meshwifi/meshwifi.h" +#include "FSCommon.h" #include #include @@ -35,27 +36,7 @@ DeviceState versions used to be defined in the .proto file but really only this #define DEVICESTATE_CUR_VER 11 #define DEVICESTATE_MIN_VER DEVICESTATE_CUR_VER -#ifdef PORTDUINO -// Portduino version -#include "PortduinoFS.h" -#define FS PortduinoFS -#define FSBegin() true -#define FILE_O_WRITE "w" -#define FILE_O_READ "r" -#elif !defined(NO_ESP32) -// ESP32 version -#include "SPIFFS.h" -#define FS SPIFFS -#define FSBegin() FS.begin(true) -#define FILE_O_WRITE "w" -#define FILE_O_READ "r" -#else -// NRF52 version -#include "InternalFileSystem.h" -#define FS InternalFS -#define FSBegin() FS.begin() -using namespace Adafruit_LittleFS_Namespace; -#endif + // FIXME - move this somewhere else extern void getMacAddr(uint8_t *dmac); @@ -210,12 +191,6 @@ void NodeDB::init() { installDefaultDeviceState(); - if (!FSBegin()) // FIXME - do this in main? - { - DEBUG_MSG("ERROR filesystem mount Failed\n"); - assert(0); // FIXME - report failure to phone - } - // saveToDisk(); loadFromDisk(); // saveToDisk();