* stm32wl(rak3172): implement cpuDeepSleep()/shutdown() via STM32LowPower cpuDeepSleep() was an empty stub, so the SDS deep-sleep PowerFSM state and low-battery shutdown did nothing but leave the CPU running at full power. Power::shutdown() also didn't include STM32WL in its arch list, so an explicit shutdown command just logged a FIXME warning. Adds STM32LowPower as a lib_dep (rak3172 only, mirroring STM32RTC) and implements cpuDeepSleep() using it. Standby mode is used for both the finite-wake (SDS/low battery) and forever (shutdown) paths, via LowPower.shutdown(), with or without an RTC alarm. If the LSE-backed hardware RTC never came up (stm32wlRtcAvailable() false), this is a no-op - safer than sleeping without a confirmed wake source. LowPower.shutdown() resets the MCU on wake and should never return; if it somehow does, force a reset via HAL_NVIC_SystemReset() rather than hanging the device silently forever. Gated behind the existing HAS_LSE flag, so this is inert on every variant but rak3172. Assisted-by: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Andrew Yong <me@ndoo.sg> * feat(stm32wl): Warn and reset when trying to deepSleep without RTC This is to prevent leaving the firmware catanonic when firmware has run its shutdown routine but doesn't actually shutdown. Signed-off-by: Andrew Yong <me@ndoo.sg> --------- Signed-off-by: Andrew Yong <me@ndoo.sg>
27 lines
898 B
INI
27 lines
898 B
INI
[env:rak3172]
|
|
extends = stm32_base
|
|
board = wiscore_rak3172
|
|
board_level = pr
|
|
board_upload.maximum_size = 247808 ; reserve the last 14KB for filesystem (reduced from 20KB in LittleFS.cpp)
|
|
build_flags =
|
|
${stm32_base.build_flags}
|
|
-Ivariants/stm32/rak3172
|
|
-DENABLE_HWSERIAL1
|
|
-DPIN_SERIAL1_RX=PB7
|
|
-DPIN_SERIAL1_TX=PB6
|
|
-DPIN_WIRE_SDA=PA11
|
|
-DPIN_WIRE_SCL=PA12
|
|
-DMESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR=1
|
|
-DMESHTASTIC_EXCLUDE_AIR_QUALITY_SENSOR=1
|
|
-DMESHTASTIC_EXCLUDE_I2C=1
|
|
-DMESHTASTIC_EXCLUDE_GPS=1
|
|
|
|
lib_deps =
|
|
${stm32_base.lib_deps}
|
|
# renovate: datasource=github-tags depName=STM32RTC packageName=stm32duino/STM32RTC
|
|
https://github.com/stm32duino/STM32RTC/archive/refs/tags/1.9.0.zip
|
|
# renovate: datasource=github-tags depName=STM32LowPower packageName=stm32duino/STM32LowPower
|
|
https://github.com/stm32duino/STM32LowPower/archive/refs/tags/1.5.0.zip
|
|
|
|
upload_port = stlink
|