diff --git a/.gitignore b/.gitignore index cc742c6c1..51c96f445 100644 --- a/.gitignore +++ b/.gitignore @@ -39,5 +39,14 @@ release/ src/mesh/raspihttp/certificate.pem src/mesh/raspihttp/private_key.pem +# pioarduino platform +managed_components/* +arduino-lib-builder* +dependencies.lock +idf_component.yml +CMakeLists.txt +sdkconfig.* +.dummy/* + # Ignore logo (set at build time with platformio-custom.py) data/boot/logo.* diff --git a/8MB_no_ota.csv b/8MB_no_ota.csv new file mode 100644 index 000000000..61fea7afe --- /dev/null +++ b/8MB_no_ota.csv @@ -0,0 +1,6 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x5000, +otadata, data, ota, 0xe000, 0x2000, +app0, app, ota_0, 0x10000, 0x660000, +spiffs, data, spiffs, 0x670000,0x180000, +coredump, data, coredump,0x7F0000,0x10000, diff --git a/arch/esp32/esp32.ini b/arch/esp32/esp32.ini index 8990053eb..cf4fcaf49 100644 --- a/arch/esp32/esp32.ini +++ b/arch/esp32/esp32.ini @@ -52,8 +52,8 @@ lib_deps = https://github.com/meshtastic/esp32_https_server/archive/3223704846752e6d545139204837bdb2a55459ca.zip # renovate: datasource=custom.pio depName=NimBLE-Arduino packageName=h2zero/library/NimBLE-Arduino h2zero/NimBLE-Arduino@^1.4.3 - # renovate: datasource=git-refs depName=libpax packageName=https://github.com/dbinfrago/libpax gitBranch=master - https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip + # renovate: datasource=git-refs depName=libpax packageName=https://github.com/mverch67/libpax gitBranch=master + https://github.com/mverch67/libpax/archive/6f52ee989301cdabaeef00bcbf93bff55708ce2f.zip # renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib https://github.com/lewisxhe/XPowersLib/archive/v0.3.0.zip # renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master diff --git a/boards/seeed-sensecap-indicator.json b/boards/seeed-sensecap-indicator.json index 03bff35b5..594bce8a5 100644 --- a/boards/seeed-sensecap-indicator.json +++ b/boards/seeed-sensecap-indicator.json @@ -2,7 +2,7 @@ "build": { "arduino": { "ldscript": "esp32s3_out.ld", - "partitions": "default_8MB.csv", + "partitions": "8MB_no_ota.csv", "memory_type": "qio_opi" }, "core": "esp32", @@ -16,6 +16,7 @@ "f_cpu": "240000000L", "f_flash": "80000000L", "f_boot": "120000000L", + "boot_freq": "120000000L", "boot": "qio", "flash_mode": "qio", "psram_type": "opi", diff --git a/platformio.ini b/platformio.ini index ef0fef791..ce8731fd5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -87,8 +87,9 @@ check_flags = framework = arduino lib_deps = ${env.lib_deps} - # renovate: datasource=custom.pio depName=NonBlockingRTTTL packageName=end2endzone/library/NonBlockingRTTTL - end2endzone/NonBlockingRTTTL@1.3.0 + # renovate: datasource=custom.pio depName=NonBlockingRTTTL packageName=mverch67/library/NonBlockingRTTTL + https://github.com/mverch67/NonBlockingRTTTL/archive/ad1c2fb12bc81db546c6a94e963acb3382d3689e.zip ; TODO + build_flags = ${env.build_flags} -Os build_src_filter = ${env.build_src_filter} - - @@ -99,8 +100,6 @@ lib_deps = thingsboard/TBPubSubClient@2.12.1 # renovate: datasource=custom.pio depName=NTPClient packageName=arduino-libraries/library/NTPClient arduino-libraries/NTPClient@3.2.1 - # renovate: datasource=custom.pio depName=Syslog packageName=arcao/library/Syslog - arcao/Syslog@2.0.0 ; Minimal networking libs for nrf52 (excludes Syslog to save flash) [nrf52_networking_base] diff --git a/src/graphics/draw/MenuHandler.cpp b/src/graphics/draw/MenuHandler.cpp index bcd8d8ee8..212c85e18 100644 --- a/src/graphics/draw/MenuHandler.cpp +++ b/src/graphics/draw/MenuHandler.cpp @@ -528,10 +528,12 @@ void menuHandler::positionBaseMenu() static int optionsEnumArray[enumEnd] = {Back, GPSToggle, CompassMenu}; int options = 3; +#if !MESHTASTIC_EXCLUDE_I2C if (accelerometerThread) { optionsArray[options] = "Compass Calibrate"; optionsEnumArray[options++] = CompassCalibrate; } +#endif BannerOverlayOptions bannerOptions; bannerOptions.message = "Position Action"; bannerOptions.optionsArrayPtr = optionsArray; @@ -544,8 +546,10 @@ void menuHandler::positionBaseMenu() } else if (selected == CompassMenu) { menuQueue = compass_point_north_menu; screen->runNow(); +#if !MESHTASTIC_EXCLUDE_I2C } else if (selected == CompassCalibrate) { accelerometerThread->calibrate(30); +#endif } }; screen->showOverlayBanner(bannerOptions); diff --git a/src/modules/Modules.cpp b/src/modules/Modules.cpp index 0d405fa81..01e2d57cf 100644 --- a/src/modules/Modules.cpp +++ b/src/modules/Modules.cpp @@ -164,7 +164,7 @@ void setupModules() #endif // Example: Put your module here // new ReplyModule(); -#if (HAS_BUTTON || ARCH_PORTDUINO) && !MESHTASTIC_EXCLUDE_INPUTBROKER +#if (HAS_BUTTON || ARCH_PORTDUINO) && !MESHTASTIC_EXCLUDE_INPUTBROKER && !MESHTASTIC_EXCLUDE_I2C if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) { rotaryEncoderInterruptImpl1 = new RotaryEncoderInterruptImpl1(); if (!rotaryEncoderInterruptImpl1->init()) { diff --git a/src/modules/esp32/PaxcounterModule.cpp b/src/modules/esp32/PaxcounterModule.cpp index 8b1fc5302..b8dd9ecc8 100644 --- a/src/modules/esp32/PaxcounterModule.cpp +++ b/src/modules/esp32/PaxcounterModule.cpp @@ -90,8 +90,6 @@ int32_t PaxcounterModule::runOnce() configuration.blecounter = 1; configuration.blescantime = 0; // infinite configuration.wificounter = 1; - configuration.wifi_channel_map = WIFI_CHANNEL_ALL; - configuration.wifi_channel_switch_interval = 50; configuration.wifi_rssi_threshold = Default::getConfiguredOrDefault(moduleConfig.paxcounter.wifi_threshold, -80); configuration.ble_rssi_threshold = Default::getConfiguredOrDefault(moduleConfig.paxcounter.ble_threshold, -80); libpax_update_config(&configuration); diff --git a/src/platform/esp32/main-esp32.cpp b/src/platform/esp32/main-esp32.cpp index cdea53c9a..a99e851dc 100644 --- a/src/platform/esp32/main-esp32.cpp +++ b/src/platform/esp32/main-esp32.cpp @@ -169,9 +169,10 @@ void esp32Setup() // #define APP_WATCHDOG_SECS 45 #define APP_WATCHDOG_SECS 90 -#ifdef CONFIG_IDF_TARGET_ESP32C6 +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) esp_task_wdt_config_t *wdt_config = (esp_task_wdt_config_t *)malloc(sizeof(esp_task_wdt_config_t)); wdt_config->timeout_ms = APP_WATCHDOG_SECS * 1000; + wdt_config->idle_core_mask = 1 << 1; wdt_config->trigger_panic = true; res = esp_task_wdt_init(wdt_config); assert(res == ESP_OK); diff --git a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini index f408054cf..528aae166 100644 --- a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini +++ b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini @@ -1,18 +1,31 @@ ; Seeed Studio SenseCAP Indicator +; note: does not work with vscode platformio plugin; needs pioarduino IDE plugin instead [env:seeed-sensecap-indicator] extends = esp32s3_base +platform = + https://github.com/pioarduino/platform-espressif32.git#55.03.30-1 + platform_packages = - platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32/archive/aef7fef6de3329ed6f75512d46d63bba12b09bb5.zip ; add_tca9535 (based on 2.0.16) + platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32#ab7f873773424561fa0d8434034960a36d335fcb board = seeed-sensecap-indicator board_check = true -board_build.partitions = default_8MB.csv +board_build.partitions = 8MB_no_ota.csv upload_protocol = esptool -build_flags = ${esp32_base.build_flags} +build_unflags = + -DCONFIG_BT_NIMBLE_ENABLED + -DCONFIG_NIMBLE_CPP_LOG_LEVEL=2 + -DCONFIG_BT_NIMBLE_MAX_CCCDS=20 + -DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192 + +build_flags = ${esp32_base.build_flags} -D lcd_periph_signals=lcd_periph_rgb_signals -mtext-section-literals -ffat-lto-objects -Ivariants/esp32s3/seeed-sensecap-indicator -DSENSECAP_INDICATOR - -DCONFIG_ARDUHAL_LOG_COLORS + -DARDUINO_HAL_LOG_LEVEL=5 + -DARDUHAL_LOG_MAXIMUM_LEVEL=5 + -DARDUHAL_LOG_COLORS=1 + -DUSE_ARDUINO_HAL_GPIO -DRADIOLIB_DEBUG_SPI=0 -DRADIOLIB_DEBUG_PROTOCOL=0 -DRADIOLIB_DEBUG_BASIC=0 @@ -20,13 +33,72 @@ build_flags = ${esp32_base.build_flags} -DRADIOLIB_SPI_PARANOID=0 -DIO_EXPANDER=0x40 -DIO_EXPANDER_IRQ=42 - ;-DIO_EXPANDER_DEBUG - -DUSE_ARDUINO_HAL_GPIO +; -DIO_EXPANDER_DEBUG lib_deps = ${esp32s3_base.lib_deps} - https://github.com/mverch67/LovyanGFX/archive/4c76238c1344162a234ae917b27651af146d6fb2.zip - earlephilhower/ESP8266Audio@^1.9.9 - earlephilhower/ESP8266SAM@^1.0.1 + https://github.com/mverch67/LovyanGFX/archive/a1c1278fc9116d1c6cb15a7bb14565aef59a9a97.zip + +custom_component_remove = + espressif/esp_hosted + espressif/esp_wifi_remote + espressif/esp_modem + espressif/esp-dsp + espressif/esp32-camera + espressif/libsodium + espressif/esp-modbus + espressif/qrcode + espressif/esp_insights + espressif/esp_diag_data_store + espressif/esp_diagnostics + espressif/esp_rainmaker + espressif/rmaker_common + espressif/network_provisioning + chmorgan/esp-libhelix-mp3 + +custom_sdkconfig = + CONFIG_AUTOSTART_ARDUINO=y + CONFIG_LOG_DEFAULT_LEVEL=4 + CONFIG_LOG_MAXIMUM_LEVEL=4 + CONFIG_LOG_COLORS=y + CONFIG_ARDUHAL_LOG_COLORS=y + CONFIG_SPIRAM_MODE_OCT=y + CONFIG_SPIRAM_SPEED_120M=y + CONFIG_SPIRAM_SPEED=120 + CONFIG_SPIRAM_XIP_FROM_PSRAM=y + CONFIG_LCD_RGB_ISR_IRAM_SAFE=y + CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y + CONFIG_I2S_ISR_IRAM_SAFE=y + CONFIG_GDMA_ISR_IRAM_SAFE=y + CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y + CONFIG_ESP32S3_DATA_CACHE_64KB=y + CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y + CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK=y + CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y + CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y + CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y + CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM=y + CONFIG_ESP_WIFI_IRAM_OPT=n + CONFIG_ESP32_WIFI_RX_IRAM_OPT=n + CONFIG_SPIRAM_CACHE_LIBCHAR_IN_IRAM=n + CONFIG_SPIRAM_CACHE_LIBSTR_IN_IRAM=n + CONFIG_SPIRAM_CACHE_LIBMISC_IN_IRAM=n + CONFIG_SPIRAM_CACHE_LIBTIME_IN_IRAM=n + CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=0 + CONFIG_BT_ENABLED=y + CONFIG_BT_NIMBLE_ENABLED=y + CONFIG_BT_BLUEDROID_ENABLED=y + CONFIG_BT_CONTROLLER_ENABLED=y + CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192 + CONFIG_BT_NIMBLE_MAX_CCCDS=20 + CONFIG_BT_NIMBLE_CPP_LOG_LEVEL=1 + CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y + CONFIG_ESPTOOLPY_FLASHSIZE="8MB" + CONFIG_ESPTOOLPY_FLASHFREQ_120M=y + CONFIG_ESPTOOLPY_FLASHFREQ="120m" + CONFIG_ESP_TASK_WDT_INIT=n + CONFIG_IDF_EXPERIMENTAL_FEATURES=y + CONFIG_COMPILER_OPTIMIZATION_PERF=y + CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y [env:seeed-sensecap-indicator-tft] @@ -37,14 +109,19 @@ upload_speed = 460800 build_flags = ${env:seeed-sensecap-indicator.build_flags} -D INPUTDRIVER_BUTTON_TYPE=38 + -D MESHTASTIC_EXCLUDE_WEBSERVER=1 + -D MESHTASTIC_EXCLUDE_SERIAL=1 + -D MESHTASTIC_EXCLUDE_SOCKETAPI=1 + -D MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1 + -D HAS_TELEMETRY=0 -D CONFIG_DISABLE_HAL_LOCKS=1 -D HAS_SCREEN=1 -D HAS_TFT=1 -D DISPLAY_SET_RESOLUTION - -D RAM_SIZE=4096 - -D LV_LVGL_H_INCLUDE_SIMPLE - -D LV_CONF_INCLUDE_SIMPLE - -D LV_COMP_CONF_INCLUDE_SIMPLE + -D RAM_SIZE=4000 + -D LV_LVGL_H_INCLUDE_SIMPLE + -D LV_CONF_INCLUDE_SIMPLE + -D LV_COMP_CONF_INCLUDE_SIMPLE -D LV_USE_SYSMON=0 -D LV_USE_PROFILER=0 -D LV_USE_PERF_MONITOR=0 diff --git a/variants/esp32s3/seeed-sensecap-indicator/variant.h b/variants/esp32s3/seeed-sensecap-indicator/variant.h index 8915395f3..4bdb83c93 100644 --- a/variants/esp32s3/seeed-sensecap-indicator/variant.h +++ b/variants/esp32s3/seeed-sensecap-indicator/variant.h @@ -4,7 +4,7 @@ // This board has a serial coprocessor for sensor readings #define SENSOR_RP2040_TXD 19 #define SENSOR_RP2040_RXD 20 -#define SENSOR_PORT_NUM 2 +#define SENSOR_PORT_NUM UART_NUM_2 #define SENSOR_BAUD_RATE 115200 #define BUTTON_PIN 38