From efc527a30ad4c91568fddfedb3390421c40d6025 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Sun, 9 Aug 2026 15:16:48 +1000 Subject: [PATCH 1/3] Merge branch 'dev' # Conflicts: # docs/payloads.md --- .github/workflows/pr-build-check.yml | 3 + .github/workflows/run-unit-tests.yml | 2 +- .vscode/extensions.json | 9 - boards/heltec-rc32.json | 43 ++ boards/heltec_tower_v2.json | 61 ++ boards/heltec_v4.json | 4 +- boards/heltec_v4_r8.json | 43 ++ boards/meshnology_w12.json | 43 ++ boards/seeed-mesh-tracker-x1.json | 60 ++ boards/thinknode_m7.json | 42 ++ boards/thinknode_m9.json | 57 ++ default.nix | 7 +- docs/cli_commands.md | 53 +- docs/faq.md | 27 + docs/kiss_modem_protocol.md | 14 +- docs/number_allocations.md | 2 + docs/payloads.md | 52 +- examples/companion_radio/AbstractUITask.h | 12 +- examples/companion_radio/DataStore.cpp | 72 +-- examples/companion_radio/DataStore.h | 6 +- examples/companion_radio/MyMesh.cpp | 39 +- examples/companion_radio/MyMesh.h | 11 +- examples/companion_radio/NodePrefs.h | 147 ++++- examples/companion_radio/main.cpp | 194 +++--- examples/companion_radio/ui-new/UITask.cpp | 92 ++- examples/companion_radio/ui-new/UITask.h | 4 +- examples/companion_radio/ui-orig/UITask.cpp | 179 +++++- examples/companion_radio/ui-orig/UITask.h | 9 +- .../ui-tiny/ScrollingStatusBar.h | 2 +- examples/companion_radio/ui-tiny/UITask.cpp | 44 +- examples/companion_radio/ui-tiny/UITask.h | 4 +- examples/kiss_modem/KissModem.cpp | 199 +++++- examples/kiss_modem/KissModem.h | 38 +- examples/kiss_modem/main.cpp | 8 +- examples/simple_repeater/MyMesh.cpp | 49 +- examples/simple_repeater/MyMesh.h | 22 +- examples/simple_repeater/UITask.cpp | 88 ++- examples/simple_repeater/UITask.h | 5 +- examples/simple_repeater/main.cpp | 47 +- examples/simple_room_server/MyMesh.cpp | 56 +- examples/simple_room_server/MyMesh.h | 12 +- examples/simple_room_server/UITask.cpp | 11 +- examples/simple_room_server/main.cpp | 42 ++ examples/simple_secure_chat/main.cpp | 9 +- examples/simple_sensor/SensorMesh.cpp | 7 +- examples/simple_sensor/SensorMesh.h | 5 +- examples/simple_sensor/UITask.cpp | 11 +- examples/simple_sensor/main.cpp | 7 + platformio.ini | 27 +- src/Dispatcher.cpp | 1 + src/Dispatcher.h | 3 + src/Identity.cpp | 20 +- src/Mesh.cpp | 47 +- src/Mesh.h | 7 +- src/MeshCore.h | 3 + src/Packet.h | 2 +- src/Utils.cpp | 98 ++- src/helpers/AdvertDataHelpers.cpp | 14 +- src/helpers/AutoDiscoverRTCClock.cpp | 1 + src/helpers/BaseChatMesh.cpp | 52 +- src/helpers/BaseChatMesh.h | 17 +- src/helpers/BaseSerialInterface.h | 1 + src/helpers/CommonCLI.cpp | 186 +++--- src/helpers/CommonCLI.h | 209 ++++-- src/helpers/ConfigSerializer.cpp | 331 ++++++++++ src/helpers/ConfigSerializer.h | 68 ++ src/helpers/ESP32Board.cpp | 42 ++ src/helpers/ESP32Board.h | 40 ++ src/helpers/ExternalWatchdogManager.h | 12 + src/helpers/MeshadventurerBoard.h | 30 - src/helpers/MultiSerialInterface.h | 200 ++++++ src/helpers/NRF52Board.cpp | 90 ++- src/helpers/NRF52Board.h | 2 + src/helpers/RegionMap.cpp | 10 +- src/helpers/SimpleMeshTables.h | 16 +- src/helpers/UTF8Helpers.h | 56 ++ src/helpers/bridges/BridgeBase.cpp | 3 +- src/helpers/bridges/BridgeBase.h | 2 +- src/helpers/bridges/ESPNowBridge.cpp | 5 +- src/helpers/bridges/RS232Bridge.cpp | 3 +- src/helpers/esp32/ESPNOWRadio.h | 2 +- src/helpers/esp32/SerialBLEInterface.cpp | 38 +- src/helpers/esp32/SerialBLEInterface.h | 14 +- src/helpers/esp32/TBeamBoard.cpp | 10 + src/helpers/ethernet/EthernetInterface.h | 11 + .../RAK13800/RAK13800EthernetInterface.cpp | 109 ++++ .../RAK13800/RAK13800EthernetInterface.h | 27 + .../ethernet/SerialEthernetInterface.cpp | 140 ++++ .../ethernet/SerialEthernetInterface.h | 75 +++ .../ethernet/ch390/CH390EthernetInterface.cpp | 94 +++ .../ethernet/ch390/CH390EthernetInterface.h | 30 + src/helpers/nrf52/EthernetCLI.h | 157 +++++ src/helpers/nrf52/EthernetMac.h | 13 + src/helpers/radiolib/CustomLLCC68.h | 73 ++- src/helpers/radiolib/CustomLLCC68Wrapper.h | 8 +- src/helpers/radiolib/CustomLR1110.h | 62 +- src/helpers/radiolib/CustomLR1110Wrapper.h | 12 +- src/helpers/radiolib/CustomLR2021.h | 76 +++ src/helpers/radiolib/CustomLR2021Wrapper.h | 107 ++++ src/helpers/radiolib/CustomSTM32WLx.h | 66 +- src/helpers/radiolib/CustomSTM32WLxWrapper.h | 3 + src/helpers/radiolib/CustomSX1262.h | 81 ++- src/helpers/radiolib/CustomSX1262Wrapper.h | 7 +- src/helpers/radiolib/CustomSX1268.h | 74 ++- src/helpers/radiolib/CustomSX1268Wrapper.h | 7 +- src/helpers/radiolib/CustomSX1276.h | 12 +- src/helpers/radiolib/RadioLibWrappers.cpp | 48 +- src/helpers/radiolib/RadioLibWrappers.h | 25 +- .../sensors/EnvironmentSensorManager.cpp | 11 +- src/helpers/sensors/LPPDataHelpers.h | 2 +- .../sensors/MicroNMEALocationProvider.h | 42 +- src/helpers/stm32/InternalFileSystem.cpp | 6 +- src/helpers/ui/DRV2605Vibration.cpp | 47 ++ src/helpers/ui/DRV2605Vibration.h | 39 ++ src/helpers/ui/DisplayDriver.h | 14 +- src/helpers/ui/E213Display.cpp | 30 +- src/helpers/ui/E213Display.h | 5 +- src/helpers/ui/E290Display.cpp | 30 +- src/helpers/ui/E290Display.h | 5 +- src/helpers/ui/GxEPDDisplay.cpp | 29 +- src/helpers/ui/GxEPDDisplay.h | 4 +- src/helpers/ui/LGFXDisplay.cpp | 48 +- src/helpers/ui/LGFXDisplay.h | 4 +- src/helpers/ui/NV3001BDisplay.cpp | 551 ++++++++++++++++ src/helpers/ui/NV3001BDisplay.h | 68 ++ src/helpers/ui/NullDisplayDriver.cpp | 11 + src/helpers/ui/NullDisplayDriver.h | 4 +- src/helpers/ui/OLEDDisplay.cpp | 2 +- src/helpers/ui/RotaryInput.h | 18 + src/helpers/ui/SH1106Display.cpp | 24 +- src/helpers/ui/SH1106Display.h | 4 +- src/helpers/ui/SSD1306Display.cpp | 19 +- src/helpers/ui/SSD1306Display.h | 4 +- src/helpers/ui/ST7735Display.cpp | 602 +++++++++++++++--- src/helpers/ui/ST7735Display.h | 16 +- src/helpers/ui/ST7789Display.cpp | 68 +- src/helpers/ui/ST7789Display.h | 8 +- src/helpers/ui/ST7789LCDDisplay.cpp | 55 +- src/helpers/ui/ST7789LCDDisplay.h | 8 +- src/helpers/ui/U8g2Display.cpp | 12 + src/helpers/ui/U8g2Display.h | 16 +- test/mocks/Arduino.h | 17 + test/mocks/CayenneLPP.h | 11 + test/mocks/Identity.h | 39 ++ test/mocks/Mesh.h | 27 + test/mocks/SHA256.h | 29 +- test/mocks/Stream.h | 69 +- test/mocks/Utils.h | 44 ++ test/mocks/helpers/SensorManager.h | 10 + .../test_config_serializer.cpp | 180 ++++++ test/test_kiss_modem/test_tx_backpressure.cpp | 294 +++++++++ .../test_simple_mesh_tables.cpp | 103 +++ test/test_utf8_helpers/test_utf8_helpers.cpp | 38 ++ variants/ebyte_eora_s3/platformio.ini | 1 + .../GAT56230SMeshKitBoard.h | 2 +- variants/gat562_30s_mesh_kit/platformio.ini | 1 + .../gat562_mesh_evb_pro/GAT562EVBProBoard.h | 2 +- .../GAT562MeshTrackerProBoard.h | 2 +- .../gat562_mesh_tracker_pro/platformio.ini | 1 + .../GAT56MeshWatch13Board.h | 2 +- variants/heltec_ct62/platformio.ini | 1 + variants/heltec_e213/HeltecE213Board.cpp | 27 - variants/heltec_e213/HeltecE213Board.h | 3 - variants/heltec_e213/platformio.ini | 1 + variants/heltec_e290/HeltecE290Board.cpp | 27 - variants/heltec_e290/HeltecE290Board.h | 3 - variants/heltec_mesh_solar/platformio.ini | 7 +- variants/heltec_mesh_solar/target.cpp | 32 + variants/heltec_mesh_solar/target.h | 11 + variants/heltec_mesh_solar/variant.h | 4 +- variants/heltec_rc32/HeltecRC32Board.cpp | 68 ++ variants/heltec_rc32/HeltecRC32Board.h | 29 + .../heltec_rc32/HeltecRC32RotaryInput.cpp | 122 ++++ variants/heltec_rc32/HeltecRC32RotaryInput.h | 26 + variants/heltec_rc32/pins_arduino.h | 60 ++ variants/heltec_rc32/platformio.ini | 353 ++++++++++ variants/heltec_rc32/target.cpp | 52 ++ variants/heltec_rc32/target.h | 37 ++ variants/heltec_rc32/variant.h | 29 + variants/heltec_t096/LoRaFEMControl.h | 3 +- variants/heltec_t096/T096Board.cpp | 30 +- variants/heltec_t096/T096Board.h | 3 + variants/heltec_t096/platformio.ini | 3 +- variants/heltec_t1/T1Board.cpp | 30 +- variants/heltec_t1/platformio.ini | 3 +- variants/heltec_t114/T114Board.cpp | 2 +- variants/heltec_t114/T114Board.h | 7 +- variants/heltec_t114/platformio.ini | 4 + variants/heltec_t114/target.cpp | 2 +- variants/heltec_t190/HeltecT190Board.cpp | 27 - variants/heltec_t190/HeltecT190Board.h | 3 - variants/heltec_t190/platformio.ini | 1 + .../heltec_tower_v2/HeltecTowerV2Board.cpp | 103 +++ variants/heltec_tower_v2/HeltecTowerV2Board.h | 24 + variants/heltec_tower_v2/LoRaFEMControl.cpp | 40 ++ variants/heltec_tower_v2/LoRaFEMControl.h | 13 + variants/heltec_tower_v2/platformio.ini | 107 ++++ variants/heltec_tower_v2/target.cpp | 64 ++ variants/heltec_tower_v2/target.h | 39 ++ variants/heltec_tower_v2/variant.cpp | 42 ++ variants/heltec_tower_v2/variant.h | 108 ++++ variants/heltec_tracker/platformio.ini | 3 +- .../HeltecTrackerV2Board.cpp | 49 +- .../heltec_tracker_v2/HeltecTrackerV2Board.h | 5 +- variants/heltec_tracker_v2/LoRaFEMControl.h | 3 +- variants/heltec_tracker_v2/platformio.ini | 3 +- variants/heltec_v2/HeltecV2Board.h | 25 - variants/heltec_v2/platformio.ini | 1 + variants/heltec_v3/HeltecV3Board.h | 29 - variants/heltec_v3/platformio.ini | 2 + variants/heltec_v4/HeltecV4Board.cpp | 49 +- variants/heltec_v4/HeltecV4Board.h | 5 +- variants/heltec_v4/LoRaFEMControl.h | 3 +- variants/heltec_v4/platformio.ini | 7 + variants/heltec_v4_r8/HeltecV4R8Board.cpp | 86 +++ variants/heltec_v4_r8/HeltecV4R8Board.h | 39 ++ variants/heltec_v4_r8/LoRaFEMControl.cpp | 52 ++ variants/heltec_v4_r8/LoRaFEMControl.h | 24 + variants/heltec_v4_r8/pins_arduino.h | 56 ++ variants/heltec_v4_r8/platformio.ini | 344 ++++++++++ variants/heltec_v4_r8/target.cpp | 45 ++ variants/heltec_v4_r8/target.h | 31 + variants/heltec_wireless_paper/platformio.ini | 1 + variants/ikoka_handheld_nrf/platformio.ini | 2 + variants/ikoka_nano_nrf/platformio.ini | 6 +- variants/ikoka_stick_nrf/platformio.ini | 1 + variants/keepteen_lt1/KeepteenLT1Board.h | 4 - variants/keepteen_lt1/platformio.ini | 1 + variants/lilygo_t3s3/platformio.ini | 1 + variants/lilygo_t3s3_sx1276/platformio.ini | 5 +- .../lilygo_t_impulse_plus/TImpulsePlusBoard.h | 8 +- variants/lilygo_tbeam_1w/platformio.ini | 1 + variants/lilygo_tbeam_SX1276/platformio.ini | 2 +- .../platformio.ini | 1 + variants/lilygo_tdeck/TDeckBoard.h | 24 - variants/lilygo_tdeck/platformio.ini | 1 + variants/lilygo_techo/TechoBoard.h | 4 +- variants/lilygo_techo/platformio.ini | 1 + variants/lilygo_techo_card/TechoCardBoard.cpp | 4 +- variants/lilygo_techo_card/TechoCardBoard.h | 2 +- variants/lilygo_techo_card/platformio.ini | 3 +- variants/lilygo_techo_lite/TechoBoard.cpp | 2 +- variants/lilygo_techo_lite/TechoBoard.h | 5 +- variants/lilygo_techo_lite/platformio.ini | 2 + variants/lilygo_teth_elite/platformio.ini | 1 + variants/lilygo_tlora_v2_1/platformio.ini | 1 + variants/m5stack_unit_c6l/platformio.ini | 2 + variants/mesh_pocket/MeshPocket.h | 4 - variants/mesh_pocket/platformio.ini | 4 +- variants/meshadventurer/platformio.ini | 10 +- .../meshnology_w12/MeshnologyW12Board.cpp | 83 +++ variants/meshnology_w12/MeshnologyW12Board.h | 37 ++ variants/meshnology_w12/pins_arduino.h | 69 ++ variants/meshnology_w12/platformio.ini | 216 +++++++ variants/meshnology_w12/target.cpp | 73 +++ variants/meshnology_w12/target.h | 28 + variants/meshtiny/MeshtinyBoard.h | 2 +- variants/meshtiny/platformio.ini | 1 + .../meshtracker_x1/MeshTrackerX1Board.cpp | 23 + variants/meshtracker_x1/MeshTrackerX1Board.h | 87 +++ variants/meshtracker_x1/platformio.ini | 132 ++++ variants/meshtracker_x1/target.cpp | 132 ++++ variants/meshtracker_x1/target.h | 47 ++ variants/meshtracker_x1/variant.cpp | 109 ++++ variants/meshtracker_x1/variant.h | 139 ++++ .../MinewsemiME25LS01Board.h | 2 +- .../minewsemi_me25ls01/NullDisplayDriver.h | 24 - variants/minewsemi_me25ls01/platformio.ini | 22 +- variants/minewsemi_me25ls01/target.h | 2 +- variants/muziworks_r1_neo/platformio.ini | 3 +- variants/nano_g2_ultra/nano-g2.h | 2 +- variants/nano_g2_ultra/platformio.ini | 1 + variants/nibble_screen_connect/platformio.ini | 17 +- variants/nibble_zero_connect/platformio.ini | 159 +++++ variants/nibble_zero_connect/target.cpp | 35 + variants/nibble_zero_connect/target.h | 28 + variants/promicro/PromicroBoard.h | 4 - variants/promicro/platformio.ini | 3 +- variants/rak11310/platformio.ini | 1 + variants/rak3112/RAK3112Board.h | 29 - variants/rak3112/platformio.ini | 1 + variants/rak3401/platformio.ini | 1 + variants/rak3x72/platformio.ini | 1 + variants/rak4631/RAK4631Board.cpp | 14 + variants/rak4631/platformio.ini | 75 ++- variants/rak_wismesh_tag/RAKWismeshTagBoard.h | 2 +- variants/rak_wismesh_tag/platformio.ini | 1 + variants/rpi_picow/platformio.ini | 1 + variants/sensecap_solar/SenseCapSolarBoard.h | 2 +- variants/sensecap_solar/platformio.ini | 1 + variants/station_g2/StationG2Board.h | 24 - variants/station_g2/platformio.ini | 10 +- variants/station_g3_esp32/StationG3Board.cpp | 15 + variants/station_g3_esp32/StationG3Board.h | 31 +- variants/station_g3_esp32/platformio.ini | 3 +- variants/t1000-e/T1000eBoard.h | 2 +- variants/t1000-e/platformio.ini | 3 + variants/tenstar_c3/target.h | 2 +- variants/thinknode_m1/ThinkNodeM1Board.h | 3 +- variants/thinknode_m1/platformio.ini | 2 + variants/thinknode_m2/ThinknodeM2Board.cpp | 52 +- variants/thinknode_m2/ThinknodeM2Board.h | 4 - variants/thinknode_m2/platformio.ini | 3 +- variants/thinknode_m3/ThinkNodeM3Board.h | 14 +- variants/thinknode_m3/platformio.ini | 7 +- variants/thinknode_m3/variant.cpp | 8 +- variants/thinknode_m3/variant.h | 9 +- variants/thinknode_m5/ThinknodeM5Board.cpp | 8 - variants/thinknode_m5/ThinknodeM5Board.h | 3 - variants/thinknode_m5/platformio.ini | 3 +- variants/thinknode_m6/ThinkNodeM6Board.h | 2 +- variants/thinknode_m6/platformio.ini | 8 +- variants/thinknode_m6/variant.cpp | 6 +- variants/thinknode_m6/variant.h | 7 +- variants/thinknode_m7/ThinkNodeM7Board.cpp | 17 + variants/thinknode_m7/ThinkNodeM7Board.h | 23 + variants/thinknode_m7/pins_arduino.h | 19 + variants/thinknode_m7/platformio.ini | 179 ++++++ variants/thinknode_m7/target.cpp | 84 +++ variants/thinknode_m7/target.h | 29 + variants/thinknode_m7/variant.cpp | 8 + variants/thinknode_m7/variant.h | 1 + variants/thinknode_m9/ThinkNodeM9Board.cpp | 23 + variants/thinknode_m9/ThinkNodeM9Board.h | 13 + variants/thinknode_m9/pins_arduino.h | 64 ++ variants/thinknode_m9/platformio.ini | 161 +++++ variants/thinknode_m9/target.cpp | 78 +++ variants/thinknode_m9/target.h | 29 + variants/thinknode_m9/variant.cpp | 7 + variants/thinknode_m9/variant.h | 114 ++++ variants/tiny_relay/platformio.ini | 1 + variants/waveshare_rp2040_lora/platformio.ini | 1 + variants/wio-e5-dev/platformio.ini | 1 + variants/wio-e5-mini/NullDisplayDriver.h | 24 - variants/wio-e5-mini/platformio.ini | 2 + variants/wio-e5-mini/target.h | 2 +- variants/wio-tracker-l1/WioTrackerL1Board.h | 2 +- variants/wio-tracker-l1/platformio.ini | 1 + variants/xiao_c3/XiaoC3Board.h | 32 - variants/xiao_c3/platformio.ini | 1 + variants/xiao_c6/platformio.ini | 1 + variants/xiao_nrf52/XiaoNrf52Board.h | 4 +- variants/xiao_nrf52/platformio.ini | 3 +- variants/xiao_nrf52/target.cpp | 1 + variants/xiao_nrf52/target.h | 2 + variants/xiao_rp2040/platformio.ini | 5 +- variants/xiao_s3/platformio.ini | 1 + variants/xiao_s3_wio/platformio.ini | 1 + 348 files changed, 11257 insertions(+), 1639 deletions(-) delete mode 100644 .vscode/extensions.json create mode 100644 boards/heltec-rc32.json create mode 100644 boards/heltec_tower_v2.json create mode 100644 boards/heltec_v4_r8.json create mode 100644 boards/meshnology_w12.json create mode 100644 boards/seeed-mesh-tracker-x1.json create mode 100644 boards/thinknode_m7.json create mode 100755 boards/thinknode_m9.json create mode 100644 src/helpers/ConfigSerializer.cpp create mode 100644 src/helpers/ConfigSerializer.h create mode 100644 src/helpers/ExternalWatchdogManager.h create mode 100644 src/helpers/MultiSerialInterface.h create mode 100644 src/helpers/UTF8Helpers.h create mode 100644 src/helpers/ethernet/EthernetInterface.h create mode 100644 src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.cpp create mode 100644 src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.h create mode 100644 src/helpers/ethernet/SerialEthernetInterface.cpp create mode 100644 src/helpers/ethernet/SerialEthernetInterface.h create mode 100644 src/helpers/ethernet/ch390/CH390EthernetInterface.cpp create mode 100644 src/helpers/ethernet/ch390/CH390EthernetInterface.h create mode 100644 src/helpers/nrf52/EthernetCLI.h create mode 100644 src/helpers/nrf52/EthernetMac.h create mode 100644 src/helpers/radiolib/CustomLR2021.h create mode 100644 src/helpers/radiolib/CustomLR2021Wrapper.h create mode 100644 src/helpers/ui/DRV2605Vibration.cpp create mode 100644 src/helpers/ui/DRV2605Vibration.h create mode 100644 src/helpers/ui/NV3001BDisplay.cpp create mode 100644 src/helpers/ui/NV3001BDisplay.h create mode 100644 src/helpers/ui/NullDisplayDriver.cpp create mode 100644 src/helpers/ui/RotaryInput.h create mode 100644 src/helpers/ui/U8g2Display.cpp create mode 100644 test/mocks/Arduino.h create mode 100644 test/mocks/CayenneLPP.h create mode 100644 test/mocks/Identity.h create mode 100644 test/mocks/Mesh.h create mode 100644 test/mocks/Utils.h create mode 100644 test/mocks/helpers/SensorManager.h create mode 100644 test/test_config_serializer/test_config_serializer.cpp create mode 100644 test/test_kiss_modem/test_tx_backpressure.cpp create mode 100644 test/test_mesh_tables/test_simple_mesh_tables.cpp create mode 100644 test/test_utf8_helpers/test_utf8_helpers.cpp create mode 100644 variants/heltec_rc32/HeltecRC32Board.cpp create mode 100644 variants/heltec_rc32/HeltecRC32Board.h create mode 100644 variants/heltec_rc32/HeltecRC32RotaryInput.cpp create mode 100644 variants/heltec_rc32/HeltecRC32RotaryInput.h create mode 100644 variants/heltec_rc32/pins_arduino.h create mode 100644 variants/heltec_rc32/platformio.ini create mode 100644 variants/heltec_rc32/target.cpp create mode 100644 variants/heltec_rc32/target.h create mode 100644 variants/heltec_rc32/variant.h create mode 100644 variants/heltec_tower_v2/HeltecTowerV2Board.cpp create mode 100644 variants/heltec_tower_v2/HeltecTowerV2Board.h create mode 100644 variants/heltec_tower_v2/LoRaFEMControl.cpp create mode 100644 variants/heltec_tower_v2/LoRaFEMControl.h create mode 100644 variants/heltec_tower_v2/platformio.ini create mode 100644 variants/heltec_tower_v2/target.cpp create mode 100644 variants/heltec_tower_v2/target.h create mode 100644 variants/heltec_tower_v2/variant.cpp create mode 100644 variants/heltec_tower_v2/variant.h create mode 100644 variants/heltec_v4_r8/HeltecV4R8Board.cpp create mode 100644 variants/heltec_v4_r8/HeltecV4R8Board.h create mode 100644 variants/heltec_v4_r8/LoRaFEMControl.cpp create mode 100644 variants/heltec_v4_r8/LoRaFEMControl.h create mode 100644 variants/heltec_v4_r8/pins_arduino.h create mode 100644 variants/heltec_v4_r8/platformio.ini create mode 100644 variants/heltec_v4_r8/target.cpp create mode 100644 variants/heltec_v4_r8/target.h create mode 100644 variants/meshnology_w12/MeshnologyW12Board.cpp create mode 100644 variants/meshnology_w12/MeshnologyW12Board.h create mode 100644 variants/meshnology_w12/pins_arduino.h create mode 100644 variants/meshnology_w12/platformio.ini create mode 100644 variants/meshnology_w12/target.cpp create mode 100644 variants/meshnology_w12/target.h create mode 100644 variants/meshtracker_x1/MeshTrackerX1Board.cpp create mode 100644 variants/meshtracker_x1/MeshTrackerX1Board.h create mode 100644 variants/meshtracker_x1/platformio.ini create mode 100644 variants/meshtracker_x1/target.cpp create mode 100644 variants/meshtracker_x1/target.h create mode 100644 variants/meshtracker_x1/variant.cpp create mode 100644 variants/meshtracker_x1/variant.h delete mode 100644 variants/minewsemi_me25ls01/NullDisplayDriver.h create mode 100644 variants/nibble_zero_connect/platformio.ini create mode 100644 variants/nibble_zero_connect/target.cpp create mode 100644 variants/nibble_zero_connect/target.h create mode 100644 variants/station_g3_esp32/StationG3Board.cpp create mode 100644 variants/thinknode_m7/ThinkNodeM7Board.cpp create mode 100644 variants/thinknode_m7/ThinkNodeM7Board.h create mode 100644 variants/thinknode_m7/pins_arduino.h create mode 100644 variants/thinknode_m7/platformio.ini create mode 100644 variants/thinknode_m7/target.cpp create mode 100644 variants/thinknode_m7/target.h create mode 100644 variants/thinknode_m7/variant.cpp create mode 100644 variants/thinknode_m7/variant.h create mode 100644 variants/thinknode_m9/ThinkNodeM9Board.cpp create mode 100644 variants/thinknode_m9/ThinkNodeM9Board.h create mode 100755 variants/thinknode_m9/pins_arduino.h create mode 100755 variants/thinknode_m9/platformio.ini create mode 100644 variants/thinknode_m9/target.cpp create mode 100644 variants/thinknode_m9/target.h create mode 100644 variants/thinknode_m9/variant.cpp create mode 100755 variants/thinknode_m9/variant.h delete mode 100644 variants/wio-e5-mini/NullDisplayDriver.h diff --git a/.github/workflows/pr-build-check.yml b/.github/workflows/pr-build-check.yml index 84fbc19598..cebf0cfe5c 100644 --- a/.github/workflows/pr-build-check.yml +++ b/.github/workflows/pr-build-check.yml @@ -31,8 +31,11 @@ jobs: - Heltec_v3_room_server # nRF52 - RAK_4631_companion_radio_ble + - RAK_4631_companion_radio_ethernet - RAK_4631_repeater + - RAK_4631_repeater_ethernet - RAK_4631_room_server + - RAK_4631_room_server_ethernet # RP2040 - PicoW_repeater # STM32 diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml index e3af3aafbf..5d48f4c67b 100644 --- a/.github/workflows/run-unit-tests.yml +++ b/.github/workflows/run-unit-tests.yml @@ -20,7 +20,7 @@ jobs: uses: ./.github/actions/setup-build-environment - name: Run Unit Tests - run: pio test -e native -vv + run: pio test -e native -e native_kiss_modem -vv - name: Upload Test Results # Upload test results even if the test step failed. diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 8057bc70a7..0000000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "recommendations": [ - "pioarduino.pioarduino-ide", - "platformio.platformio-ide" - ], - "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" - ] -} diff --git a/boards/heltec-rc32.json b/boards/heltec-rc32.json new file mode 100644 index 0000000000..b9bafa2656 --- /dev/null +++ b/boards/heltec-rc32.json @@ -0,0 +1,43 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "psram_type": "opi", + "hwids": [["0x303A", "0x1001"]], + "mcu": "esp32s3", + "variant": "heltec_rc32" + }, + "connectivity": ["wifi", "bluetooth", "lora"], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": ["esp-builtin"], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": ["arduino", "espidf"], + "name": "Heltec RC32 (16 MB FLASH, 8 MB PSRAM)", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://heltec.org/", + "vendor": "Heltec" +} diff --git a/boards/heltec_tower_v2.json b/boards/heltec_tower_v2.json new file mode 100644 index 0000000000..9f9b6ab591 --- /dev/null +++ b/boards/heltec_tower_v2.json @@ -0,0 +1,61 @@ +{ + "build": { + "arduino": { + "ldscript": "nrf52840_s140_v6.ld" + }, + "core": "nRF5", + "cpu": "cortex-m4", + "extra_flags": "-DNRF52840_XXAA", + "f_cpu": "64000000L", + "hwids": [ + ["0x239A","0x4405"], + ["0x239A","0x0029"], + ["0x239A","0x002A"], + ["0x239A","0x0071"] + ], + "usb_product": "HT-n5262", + "mcu": "nrf52840", + "variant": "heltec_tower_v2", + "bsp": { + "name": "adafruit" + }, + "softdevice": { + "sd_flags": "-DS140", + "sd_name": "s140", + "sd_version": "6.1.1", + "sd_fwid": "0x00B6" + }, + "bootloader": { + "settings_addr": "0xFF000" + } + }, + "connectivity": [ + "bluetooth" + ], + "debug": { + "jlink_device": "nRF52840_xxAA", + "svd_path": "nrf52840.svd", + "openocd_target": "nrf52.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Heltec Tower V2 Board", + "upload": { + "maximum_ram_size": 235520, + "maximum_size": 815104, + "speed": 115200, + "protocol": "nrfutil", + "protocols": [ + "jlink", + "nrfjprog", + "nrfutil", + "stlink" + ], + "use_1200bps_touch": true, + "require_upload_port": true, + "wait_for_upload_port": true + }, + "url": "https://heltec.org/", + "vendor": "Heltec" +} diff --git a/boards/heltec_v4.json b/boards/heltec_v4.json index 36cdfc043d..0d3a52cd07 100644 --- a/boards/heltec_v4.json +++ b/boards/heltec_v4.json @@ -9,7 +9,7 @@ "extra_flags": [ "-DBOARD_HAS_PSRAM", "-DARDUINO_USB_CDC_ON_BOOT=1", - "-DARDUINO_USB_MODE=0", + "-DARDUINO_USB_MODE=1", "-DARDUINO_RUNNING_CORE=1", "-DARDUINO_EVENT_RUNNING_CORE=1" ], @@ -40,4 +40,4 @@ }, "url": "https://heltec.org/", "vendor": "heltec" -} \ No newline at end of file +} diff --git a/boards/heltec_v4_r8.json b/boards/heltec_v4_r8.json new file mode 100644 index 0000000000..6dd97c84b2 --- /dev/null +++ b/boards/heltec_v4_r8.json @@ -0,0 +1,43 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "psram_type": "opi", + "hwids": [["0x303A", "0x1001"]], + "mcu": "esp32s3", + "variant": "heltec_v4_r8" + }, + "connectivity": ["wifi", "bluetooth", "lora"], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": ["esp-builtin"], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": ["arduino", "espidf"], + "name": "heltec_wifi_lora_32 v4 r8 (16 MB FLASH, 8 MB PSRAM)", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://heltec.org/", + "vendor": "heltec" +} diff --git a/boards/meshnology_w12.json b/boards/meshnology_w12.json new file mode 100644 index 0000000000..2e74af9b32 --- /dev/null +++ b/boards/meshnology_w12.json @@ -0,0 +1,43 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "partitions": "default_16MB.csv", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "psram_type": "opi", + "hwids": [["0x303A", "0x0002"], ["0x303A", "0x1001"]], + "mcu": "esp32s3", + "variant": "meshnology_w12" + }, + "connectivity": ["wifi", "bluetooth", "lora"], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": ["esp-builtin"], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": ["arduino", "espidf"], + "name": "heltec_wifi_lora_32 v5 (16 MB FLASH, 8 MB PSRAM)", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://heltec.org/", + "vendor": "heltec" +} \ No newline at end of file diff --git a/boards/seeed-mesh-tracker-x1.json b/boards/seeed-mesh-tracker-x1.json new file mode 100644 index 0000000000..347aca53ff --- /dev/null +++ b/boards/seeed-mesh-tracker-x1.json @@ -0,0 +1,60 @@ +{ + "build": { + "arduino": { + "ldscript": "nrf52840_s140_v7.ld" + }, + "core": "nRF5", + "cpu": "cortex-m4", + "extra_flags": "-DARDUINO_WIO_WM1110 -DNRF52840_XXAA", + "f_cpu": "64000000L", + "hwids": [ + ["0x239A", "0x8029"], + ["0x239A", "0x0029"], + ["0x239A", "0x002A"], + ["0x239A", "0x802A"], + ["0x2886", "0x0057"] + ], + "usb_product": "X1-BOOT", + "mcu": "nrf52840", + "variant": "Seeed_Mesh-Tracker-X1", + "bsp": { + "name": "adafruit" + }, + "softdevice": { + "sd_flags": "-DS140", + "sd_name": "s140", + "sd_version": "7.3.0", + "sd_fwid": "0x0123" + }, + "bootloader": { + "settings_addr": "0xFF000" + } + }, + "connectivity": ["bluetooth"], + "debug": { + "jlink_device": "nRF52840_xxAA", + "svd_path": "nrf52840.svd", + "openocd_target": "nrf52.cfg" + }, + "frameworks": ["arduino"], + "name": "Seeed SenseCAP MeshTracker X1", + "upload": { + "maximum_ram_size": 248832, + "maximum_size": 815104, + "speed": 115200, + "protocol": "nrfutil", + "protocols": [ + "jlink", + "nrfjprog", + "nrfutil", + "stlink", + "cmsis-dap", + "blackmagic" + ], + "use_1200bps_touch": true, + "require_upload_port": true, + "wait_for_upload_port": true + }, + "url": "https://www.seeedstudio.com/SenseCAP-MeshTracker-X1-for-Meshtastic-p-6793.html", + "vendor": "Seeed Studio" +} diff --git a/boards/thinknode_m7.json b/boards/thinknode_m7.json new file mode 100644 index 0000000000..2a0c5e5838 --- /dev/null +++ b/boards/thinknode_m7.json @@ -0,0 +1,42 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "-D BOARD_HAS_PSRAM", + "-D ARDUINO_USB_CDC_ON_BOOT=0", + "-D ARDUINO_USB_MODE=0", + "-D ARDUINO_RUNNING_CORE=1", + "-D ARDUINO_EVENT_RUNNING_CORE=0" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "psram_type": "qio_opi", + "hwids": [["0x303A", "0x1001"]], + "mcu": "esp32s3", + "variant": "ELECROW-ThinkNode-M7" + }, + "connectivity": ["wifi", "bluetooth", "lora"], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": ["esp-builtin"], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": ["arduino", "espidf"], + "name": "ELECROW ThinkNode M7", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 524288, + "maximum_size": 8388608, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.elecrow.com", + "vendor": "ELECROW" +} diff --git a/boards/thinknode_m9.json b/boards/thinknode_m9.json new file mode 100755 index 0000000000..31ebdbb91a --- /dev/null +++ b/boards/thinknode_m9.json @@ -0,0 +1,57 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "memory_type": "qio_opi", + "partitions": "default_16MB.csv" + }, + "core": "esp32", + "extra_flags": [ + "-DBOARD_HAS_PSRAM", + "-DARDUINO_USB_CDC_ON_BOOT=0", + "-DARDUINO_USB_MODE=0", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=0" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "psram_type": "qio_opi", + "hwids": [ + [ + "0x303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "ELECROW-ThinkNode-M9" + }, + "connectivity": [ + "wifi", + "bluetooth", + "lora" + ], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": [ + "esp-builtin" + ], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "elecrow-thinknode-m9", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 524288, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "https://www.elecrow.com/thinknode-m1-meshtastic-lora-signal-transceiver-powered-by-nrf52840-with-154-screen-support-gps.html", + "vendor": "ELECROW" +} \ No newline at end of file diff --git a/default.nix b/default.nix index 4f9e1c59b8..13d410de3e 100644 --- a/default.nix +++ b/default.nix @@ -1,11 +1,12 @@ -{ pkgs ? import {} }: -let +{pkgs ? import {}}: let in pkgs.mkShell { buildInputs = [ pkgs.platformio pkgs.python3 + pkgs.gcc + pkgs.gtest # optional: needed as a programmer i.e. for esp32 pkgs.avrdude ]; -} + } diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 66a9b77afe..b618ae2bfe 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -19,6 +19,7 @@ This document provides an overview of CLI commands that can be sent to MeshCore - [GPS](#gps-when-gps-support-is-compiled-in) - [Sensors](#sensors-when-sensor-support-is-compiled-in) - [Bridge](#bridge-when-bridge-support-is-compiled-in) + - [Ethernet](#ethernet-when-ethernet-support-is-compiled-in) --- @@ -276,6 +277,20 @@ This document provides an overview of CLI commands that can be sent to MeshCore --- +#### View or change the LoRa FEM receive-path gain state on supported boards +**Usage:** +- `get radio.fem.rxgain` +- `set radio.fem.rxgain ` + +**Parameters:** +- `state`: `on`|`off` + +**Notes:** +- This controls the external LoRa FEM receive-path LNA where the board supports it. +- This is separate from `radio.rxgain`, which controls the radio chip receive gain mode. + +--- + ### System #### View or change this node's name @@ -290,7 +305,7 @@ This document provides an overview of CLI commands that can be sent to MeshCore **Default:** Varies by board -**Note:** Max length varies. If a location is set, the max length is 24 bytes; 32 otherwise. Emoji and unicode characters may take more than one byte. +**Note:** Advertised names can use up to 23 bytes when location is included and 31 bytes otherwise. Emoji and Unicode characters may take more than one byte. Names that exceed the available advert space are truncated at a valid UTF-8 code point boundary. --- @@ -577,6 +592,20 @@ This document provides an overview of CLI commands that can be sent to MeshCore --- +#### Enable or disable hardware Channel Activity Detection (CAD) +**Usage:** +- `get cad` +- `set cad ` + +**Description:** When enabled, the radio performs a hardware Channel Activity Detection scan before transmitting and defers if the channel is busy. Runs independently of `int.thresh` — either, both, or none may be active. + +**Parameters:** +- `on|off`: Enable or disable hardware CAD + +**Default:** `off` + +--- + #### View or change the AGC Reset Interval **Usage:** - `get agc.reset.interval` @@ -1124,3 +1153,25 @@ region save **Note:** Returns an error on boards without power management support. --- + +### Ethernet (when Ethernet support is compiled in) + +Ethernet support is available on RAK4631 boards with a RAK13800 (W5100S) Ethernet module. Use the `_ethernet` firmware variants (e.g. `RAK_4631_repeater_ethernet`) to enable this feature. + +--- + +#### View Ethernet connection status +**Usage:** +- `eth.status` + +**Output:** +- `ETH: :` when connected (e.g. `ETH: 192.168.1.50:23`) +- `ETH: not connected` when Ethernet is not active + +**Notes:** +- Available on repeater and room server firmware only. Companion radio ethernet firmware does not expose a CLI. +- The Ethernet interface obtains an IP address via DHCP automatically on boot. +- A TCP server listens on port 23 (default) for CLI connections. +- Connect with any TCP client (e.g. `nc`, PuTTY) to access the same CLI available over serial. + +--- diff --git a/docs/faq.md b/docs/faq.md index 5ebdb9b614..c7d7a118e3 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -83,6 +83,7 @@ A list of frequently-asked questions and answers for MeshCore - [7.5. Q: What is the format of a contact or channel QR code?](#75-q-what-is-the-format-of-a-contact-or-channel-qr-code) - [7.6. Q: How do I connect to the companion via Wi-Fi, e.g. using a Heltec V3?](#76-q-how-do-i-connect-to-the-companion-via-wi-fi-eg-using-a-heltec-v3) - [7.7. Q: I have a Station G2, or a Heltec V4, or an Ikoka Stick, or a radio with an EByte E22-900M30S or an EByte E22-900M33S module, what should their transmit power be set to?](#77-q-i-have-a-station-g2-or-a-heltec-v4-or-an-ikoka-stick-or-a-radio-with-an-ebyte-e22-900m30s-or-an-ebyte-e22-900m33s-module-what-should-their-transmit-power-be-set-to) + - [7.8. Q: How do I use Ethernet with a RAK4631?](#78-q-how-do-i-use-ethernet-with-a-rak4631) ## 1. Introduction @@ -820,3 +821,29 @@ For companion radios, you can set these radios' transmit power in the smartphone | **Ikoka Stick E22-900M33S** | 2W Model | 9 dBm | 2W | **DO NOT EXCEED** (Risk of burn out) [data sheet](https://www.cdebyte.com/pdf-down.aspx?id=4216) Refer to your local government's requirements | | **Heltec V4** | Standard Output | 10 dBm | 22 dBm (~0.15W) | | | | High Output | 22 dBm | 28 dBm (~0.5W to 0.6W) | | + +--- + +### 7.8. Q: How do I use Ethernet with a RAK4631? + **A:** +MeshCore supports Ethernet on RAK4631 boards using the [RAK13800](https://docs.rakwireless.com/product-categories/wisblock/rak13800/datasheet/) WisBlock Ethernet module (based on the W5100S chip). + +**Hardware required:** +- RAK4631 WisBlock Core +- RAK19007 or RAK19018 WisBlock Base Board (with an available IO slot) +- RAK13800 WisBlock Ethernet module +- Ethernet cable connected to a network with a DHCP server + +**Firmware:** +Flash one of the Ethernet-enabled firmware variants: +- `RAK_4631_repeater_ethernet` - Repeater with Ethernet CLI access +- `RAK_4631_room_server_ethernet` - Room server with Ethernet CLI access +- `RAK_4631_companion_radio_ethernet` - Companion radio over Ethernet (replaces BLE) + +**Connecting:** +- The device obtains an IP address via DHCP automatically on boot. +- For repeaters and room servers, connect to the device on TCP port 23 using any TCP client (e.g. `nc 23` or PuTTY in raw mode). This gives you the same CLI available over serial/USB. +- For companion radio firmware, the Ethernet interface replaces BLE as the transport to companion apps. Connect on TCP port 5000 (same as the WiFi companion radio). +- Use the `eth.status` CLI command to check connection status and see the assigned IP address. + +--- diff --git a/docs/kiss_modem_protocol.md b/docs/kiss_modem_protocol.md index 9a9962248b..3f4dbf9c4b 100644 --- a/docs/kiss_modem_protocol.md +++ b/docs/kiss_modem_protocol.md @@ -41,7 +41,7 @@ Maximum unescaped frame size: 512 bytes. | Command | Value | Data | Description | |-------------|--------|--------------------|-------------------------------------------------------------| -| Data | `0x00` | Raw packet | Queue packet for transmission | +| Data | `0x00` | Raw packet | Queue packet for transmission (one pending at a time) | | TXDELAY | `0x01` | Delay (1 byte) | Transmitter keyup delay in 10ms units (default: 50 = 500ms) | | Persistence | `0x02` | P (1 byte) | CSMA persistence parameter 0-255 (default: 63) | | SlotTime | `0x03` | Interval (1 byte) | CSMA slot interval in 10ms units (default: 10 = 100ms) | @@ -58,6 +58,12 @@ Maximum unescaped frame size: 512 bytes. Data frames carry raw packet data only, with no metadata prepended. The Data command payload is limited to 255 bytes to match the MeshCore maximum transmission unit (MAX_TRANS_UNIT); frames larger than 255 bytes are silently dropped. The KISS specification recommends at least 1024 bytes for general-purpose TNCs; this modem is intended for MeshCore packets only, whose protocol MTU is 255 bytes. +Only one packet may be pending for radio transmission at a time. If the host sends a second Data frame before the first has completed, the modem responds with Error (0xF1) and TxBusy (0x07). + +### Host Output Backpressure + +Outbound frames are encoded into a 2-slot queue and flushed when serial output space is available; `loop()` never blocks on writes. Radio TX state advances independently of host read speed. TxDone is retained until it can be queued. If the outbound queue is full, the modem responds with Error (0xF1) and TxBusy (0x07). Hosts should read serial promptly to avoid delayed responses. + ### CSMA Behavior The TNC implements p-persistent CSMA for half-duplex operation: @@ -156,15 +162,15 @@ Response codes use the high-bit convention: `response = command | 0x80`. Generic | MacFailed | `0x04` | MAC verification failed | | UnknownCmd | `0x05` | Unknown sub-command | | EncryptFailed | `0x06` | Encryption failed | -| TxBusy | `0x07` | Transmit busy | +| TxBusy | `0x07` | Radio TX busy, or host output queue full | ### Unsolicited Events The TNC sends these SetHardware frames without a preceding request: -**TxDone (0xF8)**: Sent after a packet has been transmitted. Contains a single byte: 0x01 for success, 0x00 for failure. +**TxDone (0xF8)**: Sent after radio transmission completes. Contains a single byte: 0x01 for success, 0x00 for failure. Delivery to the host may be delayed under serial backpressure but is not dropped. -**RxMeta (0xF9)**: Sent immediately after each standard data frame (type 0x00) with metadata for the received packet. Contains SNR (1 byte, signed, value x4 for 0.25 dB precision) followed by RSSI (1 byte, signed, dBm). Enabled by default; can be toggled with SetSignalReport. Standard KISS clients ignore this frame. +**RxMeta (0xF9)**: Sent after each standard data frame (type 0x00) with SNR (1 byte, signed, value x4) and RSSI (1 byte, signed, dBm). Queued with the data frame; omitted if the data frame cannot be queued. Enabled by default; toggle with SetSignalReport. Standard KISS clients ignore this frame. ## Data Formats diff --git a/docs/number_allocations.md b/docs/number_allocations.md index 857525d468..b8cc22a212 100644 --- a/docs/number_allocations.md +++ b/docs/number_allocations.md @@ -17,6 +17,8 @@ Once you have a working app/project, you need to be able to demonstrate it exist | 0000 - 00FF | -reserved for internal use- | | | 0100 | MeshCore Open | zsylvester@monitormx.com — https://github.com/zjs81/meshcore-open | | 0110 - 011F | Ripple | ripple_biz@protonmail.com — https://buymeacoffee.com/ripplebiz | +| 0120 | MCO Advanced | most.original.address@gmail.com — https://hdden.ru/MCOa/ | +| 0130 - 013F | StreamSensor | william@housedillon.com - https://housedillon.com/blog/lora-e5-with-seeed-fusion | | FF00 - FFFF | -reserved for testing/dev- | | (add rows, inside the range 0100 - FEFF for custom apps) diff --git a/docs/payloads.md b/docs/payloads.md index 9d2a8a113b..a2945e27f0 100644 --- a/docs/payloads.md +++ b/docs/payloads.md @@ -23,7 +23,7 @@ NOTE: all 16 and 32-bit integer fields are Little Endian. * Node hash: the first byte of the node's public key -# Node advertisement +## Node advertisement This kind of payload notifies receivers that a node exists, and gives information about the node | Field | Size (bytes) | Description | @@ -57,7 +57,7 @@ Appdata Flags | `0x40` | has feature 2 | Reserved for future use. | | `0x80` | has name | appdata contains a node name | -# Acknowledgement +## Acknowledgement An acknowledgement that a message was received. Note that for returned path messages, an acknowledgement can be sent in the "extra" payload (see [Returned Path](#returned-path)) instead of as a separate acknowledgement packet. CLI commands do not cause acknowledgement responses, neither discrete nor extra. @@ -66,7 +66,7 @@ An acknowledgement that a message was received. Note that for returned path mess | checksum | 4 | CRC checksum of message timestamp, text, and sender pubkey | -# Returned path, request, response, and plain text message +## Returned path, request, response, and plain text message Returned path, request, response, and plain text messages are all formatted in the same way. See the subsection for more details about the ciphertext's associated plaintext representation. @@ -77,7 +77,7 @@ Returned path, request, response, and plain text messages are all formatted in t | cipher MAC | 2 | MAC for encrypted data in next field | | ciphertext | rest of payload | encrypted message, see subsections below for details | -## Returned path +### Returned path Returned path messages provide a description of the route a packet took from the original author. Receivers will send returned path messages to the author of the original message. @@ -88,7 +88,7 @@ Returned path messages provide a description of the route a packet took from the | extra type | 1 | extra, bundled payload type, eg., acknowledgement or response. Same values as in [Packet Format](./packet_format.md) | | extra | rest of data | extra, bundled payload content, follows same format as main content defined by this document | -## Request +### Request | Field | Size (bytes) | Description | |--------------|-----------------|------------------------------------------| @@ -102,7 +102,7 @@ For the common chat/server helpers in `BaseChatMesh`, the current request type v | `0x01` | get stats | get stats of repeater or room server | | `0x02` | keepalive | keep-alive request used for maintained connections | -### Get stats +#### Get stats Gets information about the node, possibly including the following: @@ -125,32 +125,32 @@ Gets information about the node, possibly including the following: * Number posted (?) * Number of post pushes (?) -### Get telemetry data +#### Get telemetry data Not defined in `BaseChatMesh`. Sensor- and application-specific request payloads may be implemented by higher-level firmware. -### Get Telemetry +#### Get Telemetry Not defined in `BaseChatMesh`. -### Get Min/Max/Ave (Sensor nodes) +#### Get Min/Max/Ave (Sensor nodes) Not defined in `BaseChatMesh`. -### Get Access List +#### Get Access List Not defined in `BaseChatMesh`. -### Get Neighbors +#### Get Neighbors Not defined in `BaseChatMesh`. -### Get Owner Info +#### Get Owner Info Not defined in `BaseChatMesh`. -## Response +### Response | Field | Size (bytes) | Description | |---------|-----------------|-----------------------------------| @@ -158,7 +158,7 @@ Not defined in `BaseChatMesh`. Response contents are opaque application data. There is no single generic response envelope beyond the encrypted payload wrapper shown above. -## Plain text message +### Plain text message | Field | Size (bytes) | Description | |--------------------|-----------------|-----------------------------------------------------------------------------------| @@ -174,7 +174,7 @@ txt_type | `0x01` | CLI command | the command text of the message | | `0x02` | signed plain text message | first four bytes is sender pubkey prefix, followed by plain text message | -# Anonymous request +## Anonymous request | Field | Size (bytes) | Description | |------------------|-----------------|-------------------------------------------| @@ -183,7 +183,7 @@ txt_type | cipher MAC | 2 | MAC for encrypted data in next field | | ciphertext | rest of payload | encrypted message, see below for details | -## Room server login +### Room server login | Field | Size (bytes) | Description | |----------------|-----------------|-------------------------------------------------------------------------------| @@ -191,14 +191,14 @@ txt_type | sync timestamp | 4 | sender's "sync messages SINCE x" timestamp | | password | rest of message | password for room | -## Repeater/Sensor login +### Repeater/Sensor login | Field | Size (bytes) | Description | |----------------|-----------------|-------------------------------------------------------------------------------| | timestamp | 4 | sender time (unix timestamp) | | password | rest of message | password for repeater/sensor | -## Repeater - Regions request +### Repeater - Regions request | Field | Size (bytes) | Description | |----------------|--------------|------------------------------| @@ -207,7 +207,7 @@ txt_type | reply path len | 1 | path len for reply | | reply path | (variable) | reply path | -## Repeater - Owner info request +### Repeater - Owner info request | Field | Size (bytes) | Description | |----------------|--------------|------------------------------| @@ -216,7 +216,7 @@ txt_type | reply path len | 1 | path len for reply | | reply path | (variable) | reply path | -## Repeater - Clock and status request +### Repeater - Clock and status request | Field | Size (bytes) | Description | |----------------|--------------|------------------------------| @@ -226,7 +226,7 @@ txt_type | reply path | (variable) | reply path | -# Group text message +## Group text message | Field | Size (bytes) | Description | |--------------|-----------------|----------------------------------------------| @@ -239,7 +239,7 @@ The plaintext contained in the ciphertext matches the format described in [plain The sender name is unverified message text. Group messages contain no sender signature, so any channel-key holder can choose any sender name. -# Group datagram +## Group datagram | Field | Size (bytes) | Description | |--------------|-----------------|----------------------------------------------| @@ -256,14 +256,14 @@ The data contained in the ciphertext uses the format below: | data | rest of payload | (depends on data type) | -# Control data +## Control data | Field | Size (bytes) | Description | |--------------|-----------------|--------------------------------------------| | flags | 1 | upper 4 bits is sub_type | | data | rest of payload | typically unencrypted data | -## DISCOVER_REQ (sub_type) +### DISCOVER_REQ (sub_type) | Field | Size (bytes) | Description | |--------------|-----------------|----------------------------------------------| @@ -272,7 +272,7 @@ The data contained in the ciphertext uses the format below: | tag | 4 | randomly generate by sender | | since | 4 | (optional) epoch timestamp (0 by default) | -## DISCOVER_RESP (sub_type) +### DISCOVER_RESP (sub_type) | Field | Size (bytes) | Description | |--------------|-----------------|--------------------------------------------| @@ -282,6 +282,6 @@ The data contained in the ciphertext uses the format below: | pubkey | 8 or 32 | node's ID (or prefix) | -# Custom packet +## Custom packet Custom packets have no defined format. diff --git a/examples/companion_radio/AbstractUITask.h b/examples/companion_radio/AbstractUITask.h index 0eee45aef3..b25b1442fc 100644 --- a/examples/companion_radio/AbstractUITask.h +++ b/examples/companion_radio/AbstractUITask.h @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #ifdef PIN_BUZZER @@ -25,10 +25,10 @@ enum class UIEventType { class AbstractUITask { protected: mesh::MainBoard* _board; - BaseSerialInterface* _serial; + MultiSerialInterface* _interfaceManager; bool _connected; - AbstractUITask(mesh::MainBoard* board, BaseSerialInterface* serial) : _board(board), _serial(serial) { + AbstractUITask(mesh::MainBoard* board, MultiSerialInterface* interfaceManager) : _board(board), _interfaceManager(interfaceManager) { _connected = false; } @@ -36,9 +36,9 @@ class AbstractUITask { void setHasConnection(bool connected) { _connected = connected; } bool hasConnection() const { return _connected; } uint16_t getBattMilliVolts() const { return _board->getBattMilliVolts(); } - bool isSerialEnabled() const { return _serial->isEnabled(); } - void enableSerial() { _serial->enable(); } - void disableSerial() { _serial->disable(); } + bool isBluetoothEnabled() const { return _interfaceManager->isBluetoothEnabled(); } + void enableBluetooth() { _interfaceManager->enableBluetooth(); } + void disableBluetooth() { _interfaceManager->disableBluetooth(); } virtual void msgRead(int msgcount) = 0; virtual void newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount) = 0; virtual void notify(UIEventType t = UIEventType::none) = 0; diff --git a/examples/companion_radio/DataStore.cpp b/examples/companion_radio/DataStore.cpp index bf2f36c3d9..06c56a7a44 100644 --- a/examples/companion_radio/DataStore.cpp +++ b/examples/companion_radio/DataStore.cpp @@ -189,17 +189,22 @@ bool DataStore::saveMainIdentity(const mesh::LocalIdentity &identity) { return identity_store.save("_main", identity); } -void DataStore::loadPrefs(NodePrefs& prefs, double& node_lat, double& node_lon) { - if (_fs->exists("/new_prefs")) { - loadPrefsInt("/new_prefs", prefs, node_lat, node_lon); // new filename - } else if (_fs->exists("/node_prefs")) { - loadPrefsInt("/node_prefs", prefs, node_lat, node_lon); - savePrefs(prefs, node_lat, node_lon); // save to new filename - _fs->remove("/node_prefs"); // remove old +void DataStore::loadPrefs(NodePrefs& prefs) { + if (_fs->exists("/prefs.json")) { + File file = openRead(_fs, "/prefs.json"); + if (file) { + prefs.loadSerial(file); // new Serial prefs + file.close(); + } + } else if (_fs->exists("/new_prefs")) { + loadPrefsInt("/new_prefs", prefs); + if (savePrefs(prefs) ) { // save to new format + //_fs->remove("/new_prefs"); // remove old + } } } -void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& node_lat, double& node_lon) { +void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs) { File file = openRead(_fs, filename); if (file) { uint8_t pad[8]; @@ -207,12 +212,12 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no file.read((uint8_t *)&_prefs.airtime_factor, sizeof(float)); // 0 file.read((uint8_t *)_prefs.node_name, sizeof(_prefs.node_name)); // 4 file.read(pad, 4); // 36 - file.read((uint8_t *)&node_lat, sizeof(node_lat)); // 40 - file.read((uint8_t *)&node_lon, sizeof(node_lon)); // 48 + file.read((uint8_t *)&_prefs.node_lat, sizeof(_prefs.node_lat)); // 40 + file.read((uint8_t *)&_prefs.node_lon, sizeof(_prefs.node_lon)); // 48 file.read((uint8_t *)&_prefs.freq, sizeof(_prefs.freq)); // 56 file.read((uint8_t *)&_prefs.sf, sizeof(_prefs.sf)); // 60 file.read((uint8_t *)&_prefs.cr, sizeof(_prefs.cr)); // 61 - file.read((uint8_t *)&_prefs.client_repeat, sizeof(_prefs.client_repeat)); // 62 + file.read((uint8_t *)&_prefs._client_repeat, sizeof(_prefs._client_repeat)); // 62 file.read((uint8_t *)&_prefs.manual_add_contacts, sizeof(_prefs.manual_add_contacts)); // 63 file.read((uint8_t *)&_prefs.bw, sizeof(_prefs.bw)); // 64 file.read((uint8_t *)&_prefs.tx_power_dbm, sizeof(_prefs.tx_power_dbm)); // 68 @@ -234,48 +239,21 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no file.read((uint8_t *)_prefs.default_scope_name, sizeof(_prefs.default_scope_name)); // 90 file.read((uint8_t *)_prefs.default_scope_key, sizeof(_prefs.default_scope_key)); // 121 + // migrate old fields + _prefs.setRepeatEn(_prefs._client_repeat != 0); + file.close(); } } -void DataStore::savePrefs(const NodePrefs& _prefs, double node_lat, double node_lon) { - File file = openWrite(_fs, "/new_prefs"); +bool DataStore::savePrefs(NodePrefs& _prefs) { + File file = openWrite(_fs, "/prefs.json"); if (file) { - uint8_t pad[8]; - memset(pad, 0, sizeof(pad)); - - file.write((uint8_t *)&_prefs.airtime_factor, sizeof(float)); // 0 - file.write((uint8_t *)_prefs.node_name, sizeof(_prefs.node_name)); // 4 - file.write(pad, 4); // 36 - file.write((uint8_t *)&node_lat, sizeof(node_lat)); // 40 - file.write((uint8_t *)&node_lon, sizeof(node_lon)); // 48 - file.write((uint8_t *)&_prefs.freq, sizeof(_prefs.freq)); // 56 - file.write((uint8_t *)&_prefs.sf, sizeof(_prefs.sf)); // 60 - file.write((uint8_t *)&_prefs.cr, sizeof(_prefs.cr)); // 61 - file.write((uint8_t *)&_prefs.client_repeat, sizeof(_prefs.client_repeat)); // 62 - file.write((uint8_t *)&_prefs.manual_add_contacts, sizeof(_prefs.manual_add_contacts)); // 63 - file.write((uint8_t *)&_prefs.bw, sizeof(_prefs.bw)); // 64 - file.write((uint8_t *)&_prefs.tx_power_dbm, sizeof(_prefs.tx_power_dbm)); // 68 - file.write((uint8_t *)&_prefs.telemetry_mode_base, sizeof(_prefs.telemetry_mode_base)); // 69 - file.write((uint8_t *)&_prefs.telemetry_mode_loc, sizeof(_prefs.telemetry_mode_loc)); // 70 - file.write((uint8_t *)&_prefs.telemetry_mode_env, sizeof(_prefs.telemetry_mode_env)); // 71 - file.write((uint8_t *)&_prefs.rx_delay_base, sizeof(_prefs.rx_delay_base)); // 72 - file.write((uint8_t *)&_prefs.advert_loc_policy, sizeof(_prefs.advert_loc_policy)); // 76 - file.write((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77 - file.write((uint8_t *)&_prefs.path_hash_mode, sizeof(_prefs.path_hash_mode)); // 78 - file.write(pad, 1); // 79 - file.write((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80 - file.write((uint8_t *)&_prefs.buzzer_quiet, sizeof(_prefs.buzzer_quiet)); // 84 - file.write((uint8_t *)&_prefs.gps_enabled, sizeof(_prefs.gps_enabled)); // 85 - file.write((uint8_t *)&_prefs.gps_interval, sizeof(_prefs.gps_interval)); // 86 - file.write((uint8_t *)&_prefs.autoadd_config, sizeof(_prefs.autoadd_config)); // 87 - file.write((uint8_t *)&_prefs.autoadd_max_hops, sizeof(_prefs.autoadd_max_hops)); // 88 - file.write((uint8_t *)&_prefs.rx_boosted_gain, sizeof(_prefs.rx_boosted_gain)); // 89 - file.write((uint8_t *)_prefs.default_scope_name, sizeof(_prefs.default_scope_name)); // 90 - file.write((uint8_t *)_prefs.default_scope_key, sizeof(_prefs.default_scope_key)); // 121 - + bool success = _prefs.saveSerial(file); file.close(); + return success; } + return false; } void DataStore::loadContacts(DataStoreHost* host) { @@ -545,7 +523,7 @@ bool DataStore::putBlobByKey(const uint8_t key[], int key_len, const uint8_t src uint32_t pos = 0, found_pos = 0; uint32_t min_timestamp = 0xFFFFFFFF; - // search for matching key OR evict by oldest timestmap + // search for matching key OR evict by oldest timestamp BlobRec tmp; file.seek(0); while (file.read((uint8_t *) &tmp, sizeof(tmp)) == sizeof(tmp)) { diff --git a/examples/companion_radio/DataStore.h b/examples/companion_radio/DataStore.h index af5ee7af86..e0a145caf1 100644 --- a/examples/companion_radio/DataStore.h +++ b/examples/companion_radio/DataStore.h @@ -19,7 +19,7 @@ class DataStore { mesh::RTCClock* _clock; IdentityStore identity_store; - void loadPrefsInt(const char *filename, NodePrefs& prefs, double& node_lat, double& node_lon); + void loadPrefsInt(const char *filename, NodePrefs& prefs); #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) void checkAdvBlobFile(); #endif @@ -33,8 +33,8 @@ class DataStore { FILESYSTEM* getSecondaryFS() const { return _fsExtra; } bool loadMainIdentity(mesh::LocalIdentity &identity); bool saveMainIdentity(const mesh::LocalIdentity &identity); - void loadPrefs(NodePrefs& prefs, double& node_lat, double& node_lon); - void savePrefs(const NodePrefs& prefs, double node_lat, double node_lon); + void loadPrefs(NodePrefs& prefs); + bool savePrefs(NodePrefs& prefs); void loadContacts(DataStoreHost* host); void saveContacts(DataStoreHost* host, bool (*filter)(const ContactInfo& c) = NULL); void loadChannels(DataStoreHost* host); diff --git a/examples/companion_radio/MyMesh.cpp b/examples/companion_radio/MyMesh.cpp index 6fbb0f7428..b03334c1c9 100644 --- a/examples/companion_radio/MyMesh.cpp +++ b/examples/companion_radio/MyMesh.cpp @@ -261,6 +261,9 @@ float MyMesh::getAirtimeBudgetFactor() const { int MyMesh::getInterferenceThreshold() const { return 0; // disabled for now, until currentRSSI() problem is resolved } +bool MyMesh::getCADEnabled() const { + return false; // hardware CAD before TX (disabled by default, until configurable) +} int MyMesh::calcRxDelay(float score, uint32_t air_time) const { if (_prefs.rx_delay_base <= 0.0f) return 0; @@ -480,7 +483,7 @@ bool MyMesh::filterRecvFloodPacket(mesh::Packet* packet) { } bool MyMesh::allowPacketForward(const mesh::Packet* packet) { - return _prefs.client_repeat != 0; + return _prefs.isRepeatEn(); } void MyMesh::sendFloodScoped(const TransportKey& scope, mesh::Packet* pkt, uint32_t delay_millis) { @@ -654,6 +657,11 @@ uint8_t MyMesh::onContactRequest(const ContactInfo &contact, uint32_t sender_tim // query other sensors -- target specific sensors.querySensors(permissions, telemetry); + float temperature = board.getMCUTemperature(); + if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN + telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature + } + memcpy(reply, &sender_timestamp, 4); // reflect sender_timestamp back in response packet (kind of like a 'tag') @@ -854,7 +862,7 @@ void MyMesh::onSendTimeout() {} MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store, AbstractUITask* ui) : BaseChatMesh(radio, *new ArduinoMillis(), rng, rtc, *new StaticPoolPacketManager(16), tables), - _serial(NULL), telemetry(MAX_PACKET_PAYLOAD - 4), _store(&store), _ui(ui) { + _serial(NULL), telemetry(MAX_PACKET_PAYLOAD - 4), _store(&store), _ui(ui), _iter(0) { _iter_started = false; _cli_rescue = false; offline_queue_len = 0; @@ -868,7 +876,6 @@ MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMe send_unscoped = false; // defaults - memset(&_prefs, 0, sizeof(_prefs)); _prefs.airtime_factor = 1.0; strcpy(_prefs.node_name, "NONAME"); _prefs.freq = LORA_FREQ; @@ -879,6 +886,7 @@ MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMe _prefs.gps_enabled = 0; // GPS disabled by default _prefs.gps_interval = 0; // No automatic GPS updates by default //_prefs.rx_delay_base = 10.0f; enable once new algo fixed + _prefs.setRepeatEn(false); #if defined(USE_SX1262) || defined(USE_SX1268) #ifdef SX126X_RX_BOOSTED_GAIN _prefs.rx_boosted_gain = SX126X_RX_BOOSTED_GAIN; @@ -923,7 +931,9 @@ void MyMesh::begin(bool has_display) { #endif // load persisted prefs - _store->loadPrefs(_prefs, sensors.node_lat, sensors.node_lon); + _store->loadPrefs(_prefs); + sensors.node_lat = _prefs.node_lat; + sensors.node_lon = _prefs.node_lon; // sanitise bad pref values _prefs.rx_delay_base = constrain(_prefs.rx_delay_base, 0, 20.0f); @@ -1023,7 +1033,7 @@ void MyMesh::handleCmdFrame(size_t len) { i += 40; StrHelper::strzcpy((char *)&out_frame[i], FIRMWARE_VERSION, 20); i += 20; - out_frame[i++] = _prefs.client_repeat; // v9+ + out_frame[i++] = _prefs.isRepeatEn() ? 1 : 0; // v9+ out_frame[i++] = _prefs.path_hash_mode; // v10+ _serial->writeFrame(out_frame, i); } else if (cmd_frame[0] == CMD_APP_START && @@ -1385,7 +1395,7 @@ void MyMesh::handleCmdFrame(size_t len) { _prefs.cr = cr; _prefs.freq = (float)freq / 1000.0; _prefs.bw = (float)bw / 1000.0; - _prefs.client_repeat = repeat; + _prefs.setRepeatEn(repeat != 0); savePrefs(); radio_driver.setParams(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr); @@ -1542,6 +1552,7 @@ void MyMesh::handleCmdFrame(size_t len) { memcpy(anon.id.pub_key, pub_key, PUB_KEY_SIZE); anon.out_path_len = 0; // default to zero-hop direct anon.type = ADV_TYPE_NONE; // unknown + anon.lastmod = getRTCClock()->getCurrentTime(); if (addContact(anon)) recipient = &anon; } @@ -1636,6 +1647,11 @@ void MyMesh::handleCmdFrame(size_t len) { } else if (cmd_frame[0] == CMD_SEND_TELEMETRY_REQ && len == 4) { // 'self' telemetry request telemetry.reset(); telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f); + float temperature = board.getMCUTemperature(); + if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN + telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature + } + // query other sensors -- target specific sensors.querySensors(0xFF, telemetry); @@ -1981,6 +1997,7 @@ void MyMesh::handleCmdFrame(size_t len) { sendPacket(pkt, priority, 0); writeOKFrame(); } else { + releasePacket(pkt); writeErrFrame(ERR_CODE_ILLEGAL_ARG); } } else { @@ -2186,15 +2203,7 @@ void MyMesh::checkSerialInterface() { && !_serial->isWriteBusy() // don't spam the Serial Interface too quickly! ) { ContactInfo contact; - bool found = false; - while (_iter.hasNext(this, contact)) { - if (contact.type != ADV_TYPE_NONE) { - found = true; - break; - } - } - - if (found) { + if (_iter.hasNext(this, contact)) { if (contact.lastmod > _iter_filter_since) { // apply the 'since' filter writeContactRespFrame(RESP_CODE_CONTACT, contact); if (contact.lastmod > _most_recent_lastmod) { diff --git a/examples/companion_radio/MyMesh.h b/examples/companion_radio/MyMesh.h index 43d3950beb..f73fe0e063 100644 --- a/examples/companion_radio/MyMesh.h +++ b/examples/companion_radio/MyMesh.h @@ -8,11 +8,11 @@ #define FIRMWARE_VER_CODE 13 #ifndef FIRMWARE_BUILD_DATE -#define FIRMWARE_BUILD_DATE "6 Jun 2026" +#define FIRMWARE_BUILD_DATE "9 Aug 2026" #endif #ifndef FIRMWARE_VERSION -#define FIRMWARE_VERSION "v1.16.0" +#define FIRMWARE_VERSION "v1.17.0" #endif #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) @@ -105,6 +105,7 @@ class MyMesh : public BaseChatMesh, public DataStoreHost { protected: float getAirtimeBudgetFactor() const override; int getInterferenceThreshold() const override; + bool getCADEnabled() const override; int calcRxDelay(float score, uint32_t air_time) const override; uint32_t getRetransmitDelay(const mesh::Packet *packet) override; uint32_t getDirectRetransmitDelay(const mesh::Packet *packet) override; @@ -164,7 +165,11 @@ class MyMesh : public BaseChatMesh, public DataStoreHost { } public: - void savePrefs() { _store->savePrefs(_prefs, sensors.node_lat, sensors.node_lon); } + void savePrefs() { + _prefs.node_lat = sensors.node_lat; + _prefs.node_lon = sensors.node_lon; + _store->savePrefs(_prefs); + } #if ENV_INCLUDE_GPS == 1 void applyGpsPrefs() { diff --git a/examples/companion_radio/NodePrefs.h b/examples/companion_radio/NodePrefs.h index 48c381ceaf..4ec1803e1c 100644 --- a/examples/companion_radio/NodePrefs.h +++ b/examples/companion_radio/NodePrefs.h @@ -1,5 +1,6 @@ #pragma once #include // For uint8_t, uint32_t +#include #define TELEM_MODE_DENY 0 #define TELEM_MODE_ALLOW_FLAGS 1 // use contact.flags @@ -8,30 +9,130 @@ #define ADVERT_LOC_NONE 0 #define ADVERT_LOC_SHARE 1 -struct NodePrefs { // persisted to file - float airtime_factor; +class NodePrefs : public ConfigSerializer { // persisted to file +public: + float airtime_factor = 0; char node_name[32]; - float freq; - uint8_t sf; - uint8_t cr; - uint8_t multi_acks; - uint8_t manual_add_contacts; - float bw; - int8_t tx_power_dbm; - uint8_t telemetry_mode_base; - uint8_t telemetry_mode_loc; - uint8_t telemetry_mode_env; - float rx_delay_base; - uint32_t ble_pin; - uint8_t advert_loc_policy; - uint8_t buzzer_quiet; - uint8_t gps_enabled; // GPS enabled flag (0=disabled, 1=enabled) - uint32_t gps_interval; // GPS read interval in seconds - uint8_t autoadd_config; // bitmask for auto-add contacts config - uint8_t rx_boosted_gain; // SX126x RX boosted gain mode (0=power saving, 1=boosted) - uint8_t client_repeat; - uint8_t path_hash_mode; // which path mode to use when sending - uint8_t autoadd_max_hops; // 0 = no limit, 1 = direct (0 hops), N = up to N-1 hops (max 64) + double node_lat = 0, node_lon = 0; + float freq = 0; + uint8_t sf = 0; + uint8_t cr = 0; + uint8_t multi_acks = 0; + uint8_t manual_add_contacts = 0; + float bw = 0; + int8_t tx_power_dbm = 0; + uint8_t telemetry_mode_base = 0; + uint8_t telemetry_mode_loc = 0; + uint8_t telemetry_mode_env = 0; + float rx_delay_base = 0; + uint32_t ble_pin = 0; + uint8_t advert_loc_policy = 0; + uint8_t buzzer_quiet = 0; + uint8_t vibe_quiet = 0; + uint8_t gps_enabled = 0; // GPS enabled flag (0=disabled, 1=enabled) + uint32_t gps_interval = 0; // GPS read interval in seconds + uint8_t autoadd_config = 0; // bitmask for auto-add contacts config + uint8_t rx_boosted_gain = 0; // SX126x RX boosted gain mode (0=power saving, 1=boosted) + uint8_t _client_repeat = 0; // DEPRECATED -> use repeat.disable_fwd + uint8_t path_hash_mode = 0; // which path mode to use when sending + uint8_t autoadd_max_hops = 0; // 0 = no limit, 1 = direct (0 hops), N = up to N-1 hops (max 64) char default_scope_name[31]; uint8_t default_scope_key[16]; + +private: + class RadioPrefs : public ConfigSerializer { // COPIED from CommonCLI (for now) + NodePrefs* _parent; + protected: + void structure() override { + def("freq", _parent->freq); + def("bw", _parent->bw); + def("sf", _parent->sf); + def("cr", _parent->cr); + //def("cad", _parent->cad_enabled); + //def("int_thr", _parent->interference_threshold); + def("rxgain", _parent->rx_boosted_gain); + def("fem_rxgain", _parent->rx_boosted_gain); + def("tx", _parent->tx_power_dbm); + def("af", _parent->airtime_factor); + def("rxdelay", _parent->rx_delay_base); + //def("f_txdelay", _parent->tx_delay_factor); currently hard-coded + //def("d_txdelay", _parent->direct_tx_delay_factor); currently hard-coded + //def("agc_int", _parent->agc_reset_interval); + def("hash_mode", _parent->path_hash_mode); + def("multi_ack", _parent->multi_acks); + } + public: + RadioPrefs(NodePrefs* parent) : _parent(parent) { } + }; + RadioPrefs radio; + + class GPSPrefs : public ConfigSerializer { // COPIED from CommonCLI (for now) + NodePrefs* _parent; + protected: + void structure() override { + def("en", _parent->gps_enabled); // boolean + def("int", _parent->gps_interval); // interval in seconds + def("adv_loc", _parent->advert_loc_policy); + } + public: + GPSPrefs(NodePrefs* parent) : _parent(parent) { } + }; + GPSPrefs gps; + + class RepeatPrefs : public ConfigSerializer { // COPIED from CommonCLI (for now) + public: + uint8_t disable_fwd = 1; + protected: + void structure() override { + def("disable", disable_fwd); + //def("f_max", flood_max); + //def("f_max_uns", flood_max_unscoped); + //def("f_max_adv", flood_max_advert); + //def("loop", loop_detect); + } + }; + RepeatPrefs repeat; + + class CompanionPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("auto_max", _parent->autoadd_max_hops); // 0 = no limit, 1 = direct (0 hops), N = up to N-1 hops (max 64) + def("defs_nm", _parent->default_scope_name, sizeof(_parent->default_scope_name)); + def("defs_key", (void *) _parent->default_scope_key, sizeof(_parent->default_scope_key)); + def("pin", _parent->ble_pin); + def("buzz_q", _parent->buzzer_quiet); + def("vibe_q", _parent->vibe_quiet); + def("auto_add", _parent->autoadd_config); // bitmask for auto-add contacts config + def("man_add", _parent->manual_add_contacts); + def("tel_base", _parent->telemetry_mode_base); + def("tel_loc", _parent->telemetry_mode_loc); + def("tel_env", _parent->telemetry_mode_env); + } + public: + CompanionPrefs(NodePrefs* parent) : _parent(parent) { } + }; + CompanionPrefs companion; + +protected: + void structure() override { + def("name", node_name, sizeof(node_name)); + //def("adv_int", advert_interval); + //def("f_adv_int", flood_advert_interval); + def("lat", node_lat); + def("lon", node_lon); + def("radio", radio); + def("gps", gps); + def("repeat", repeat); + def("comp", companion); + } +public: + NodePrefs() : radio(this), gps(this), companion(this) { + node_name[0] = 0; + default_scope_name[0] = 0; + memset(default_scope_key, 0, sizeof(default_scope_key)); + } + // new accessor methods + bool isRepeatEn() const { return repeat.disable_fwd == 0; } + void setRepeatEn(bool en) { repeat.disable_fwd = en ? 0 : 1; } }; \ No newline at end of file diff --git a/examples/companion_radio/main.cpp b/examples/companion_radio/main.cpp index ef9b6bfca4..89f0e6cb9f 100644 --- a/examples/companion_radio/main.cpp +++ b/examples/companion_radio/main.cpp @@ -12,19 +12,72 @@ static uint32_t _atoi(const char* sp) { return n; } +// interface manager +#include +MultiSerialInterface interface_manager; + +// include bluetooth interface +#if defined(BLE_PIN_CODE) + #ifdef ESP32 + // include esp32 bluetooth interface + #include + SerialBLEInterface bluetooth_interface; + #elif defined(NRF52_PLATFORM) + // include nrf52 bluetooth interface + #include + SerialBLEInterface bluetooth_interface; + #else + #error "SerialBLEInterface is not defined for this platform" + #endif +#endif + +// include wifi interface +#ifdef WIFI_SSID + #ifndef TCP_PORT + #define TCP_PORT 5000 + #endif + #ifdef ESP32 + // include esp32 wifi interface + #include + SerialWifiInterface wifi_interface; + #else + #error "SerialWifiInterface is not defined for this platform" + #endif +#endif + +// include usb interface +#if defined(ENABLE_USB_INTERFACE) + #include + ArduinoSerialInterface usb_serial_interface; +#endif + +// include ethernet interface +#if defined(ETHERNET_ENABLED) + #include + ETHERNET_CLASS ethernet_interface; +#endif + +// include hardware serial interface +#if defined(SERIAL_RX) + #include + ArduinoSerialInterface hardware_serial_interface; + HardwareSerial companion_serial(1); +#endif + +// platform file system #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #include #if defined(QSPIFLASH) #include DataStore store(InternalFS, QSPIFlash, rtc_clock); #else - #if defined(EXTRAFS) - #include - CustomLFS ExtraFS(0xD4000, 0x19000, 128); - DataStore store(InternalFS, ExtraFS, rtc_clock); - #else - DataStore store(InternalFS, rtc_clock); - #endif + #if defined(EXTRAFS) + #include + CustomLFS ExtraFS(0xD4000, 0x19000, 128); + DataStore store(InternalFS, ExtraFS, rtc_clock); + #else + DataStore store(InternalFS, rtc_clock); + #endif #endif #elif defined(RP2040_PLATFORM) #include @@ -34,61 +87,10 @@ static uint32_t _atoi(const char* sp) { DataStore store(SPIFFS, rtc_clock); #endif -#ifdef ESP32 - #ifdef WIFI_SSID - #include - SerialWifiInterface serial_interface; - #ifndef TCP_PORT - #define TCP_PORT 5000 - #endif - #elif defined(BLE_PIN_CODE) - #include - SerialBLEInterface serial_interface; - #elif defined(SERIAL_RX) - #include - ArduinoSerialInterface serial_interface; - HardwareSerial companion_serial(1); - #else - #include - ArduinoSerialInterface serial_interface; - #endif -#elif defined(RP2040_PLATFORM) - //#ifdef WIFI_SSID - // #include - // SerialWifiInterface serial_interface; - // #ifndef TCP_PORT - // #define TCP_PORT 5000 - // #endif - // #elif defined(BLE_PIN_CODE) - // #include - // SerialBLEInterface serial_interface; - #if defined(SERIAL_RX) - #include - ArduinoSerialInterface serial_interface; - HardwareSerial companion_serial(1); - #else - #include - ArduinoSerialInterface serial_interface; - #endif -#elif defined(NRF52_PLATFORM) - #ifdef BLE_PIN_CODE - #include - SerialBLEInterface serial_interface; - #else - #include - ArduinoSerialInterface serial_interface; - #endif -#elif defined(STM32_PLATFORM) - #include - ArduinoSerialInterface serial_interface; -#else - #error "need to define a serial interface" -#endif - /* GLOBAL OBJECTS */ #ifdef DISPLAY_CLASS #include "UITask.h" - UITask ui_task(&board, &serial_interface); + UITask ui_task(&board, &interface_manager); #endif StdRNG fast_rng; @@ -113,9 +115,12 @@ void halt() { void setup() { Serial.begin(115200); - board.begin(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.begin(); +#endif + #ifdef DISPLAY_CLASS DisplayDriver* disp = NULL; if (display.begin()) { @@ -155,13 +160,6 @@ void setup() { false #endif ); - -#ifdef BLE_PIN_CODE - serial_interface.begin(BLE_NAME_PREFIX, the_mesh.getNodePrefs()->node_name, the_mesh.getBLEPin()); -#else - serial_interface.begin(Serial); -#endif - the_mesh.startInterface(serial_interface); #elif defined(RP2040_PLATFORM) LittleFS.begin(); store.begin(); @@ -172,22 +170,6 @@ void setup() { false #endif ); - - //#ifdef WIFI_SSID - // WiFi.begin(WIFI_SSID, WIFI_PWD); - // serial_interface.begin(TCP_PORT); - // #elif defined(BLE_PIN_CODE) - // char dev_name[32+16]; - // sprintf(dev_name, "%s%s", BLE_NAME_PREFIX, the_mesh.getNodeName()); - // serial_interface.begin(dev_name, the_mesh.getBLEPin()); - #if defined(SERIAL_RX) - companion_serial.setPins(SERIAL_RX, SERIAL_TX); - companion_serial.begin(115200); - serial_interface.begin(companion_serial); - #else - serial_interface.begin(Serial); - #endif - the_mesh.startInterface(serial_interface); #elif defined(ESP32) SPIFFS.begin(true); store.begin(); @@ -198,7 +180,17 @@ void setup() { false #endif ); +#else + #error "need to define filesystem" +#endif + +// add bluetooth interface +#if defined(BLE_PIN_CODE) + bluetooth_interface.begin(BLE_NAME_PREFIX, the_mesh.getNodePrefs()->node_name, the_mesh.getBLEPin()); + interface_manager.addInterface(InterfaceType::Bluetooth, &bluetooth_interface); +#endif +// add wifi interface #ifdef WIFI_SSID board.setInhibitSleep(true); // prevent sleep when WiFi is active WiFi.setAutoReconnect(true); @@ -214,21 +206,31 @@ void setup() { }); WiFi.begin(WIFI_SSID, WIFI_PWD); - serial_interface.begin(TCP_PORT); -#elif defined(BLE_PIN_CODE) - serial_interface.begin(BLE_NAME_PREFIX, the_mesh.getNodePrefs()->node_name, the_mesh.getBLEPin()); -#elif defined(SERIAL_RX) + wifi_interface.begin(TCP_PORT); + interface_manager.addInterface(InterfaceType::WiFi, &wifi_interface); +#endif + +// add usb interface +#if defined(ENABLE_USB_INTERFACE) + usb_serial_interface.begin(Serial); + interface_manager.addInterface(InterfaceType::USB, &usb_serial_interface); +#endif + +// add ethernet interface +#if defined(ETHERNET_ENABLED) + ethernet_interface.begin(); + interface_manager.addInterface(InterfaceType::Ethernet, ðernet_interface); +#endif + +// add hardware serial interface +#if defined(SERIAL_RX) companion_serial.setPins(SERIAL_RX, SERIAL_TX); companion_serial.begin(115200); - serial_interface.begin(companion_serial); -#else - serial_interface.begin(Serial); -#endif - the_mesh.startInterface(serial_interface); -#else - #error "need to define filesystem" + hardware_serial_interface.begin(companion_serial); + interface_manager.addInterface(InterfaceType::HardwareSerial, &hardware_serial_interface); #endif + the_mesh.startInterface(interface_manager); sensors.begin(); #if ENV_INCLUDE_GPS == 1 @@ -244,11 +246,15 @@ void setup() { void loop() { the_mesh.loop(); + interface_manager.loop(); sensors.loop(); #ifdef DISPLAY_CLASS ui_task.loop(); #endif rtc_clock.tick(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.loop(); +#endif if (!the_mesh.hasPendingWork()) { #if defined(NRF52_PLATFORM) diff --git a/examples/companion_radio/ui-new/UITask.cpp b/examples/companion_radio/ui-new/UITask.cpp index 7c84201941..051f3b31ea 100644 --- a/examples/companion_radio/ui-new/UITask.cpp +++ b/examples/companion_radio/ui-new/UITask.cpp @@ -53,23 +53,24 @@ class SplashScreen : public UIScreen { int render(DisplayDriver& display) override { // meshcore logo - display.setColor(DisplayDriver::BLUE); + display.setColor(UIColor::corp_blue); int logoWidth = 128; display.drawXbm((display.width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); // meshcore website const char* website = "https://meshcore.io"; - display.setColor(DisplayDriver::LIGHT); + display.setColor(UIColor::primary_txt); display.setTextSize(1); uint16_t websiteWidth = display.getTextWidth(website); display.setCursor((display.width() - websiteWidth) / 2, 22); display.print(website); // version info - display.setColor(DisplayDriver::LIGHT); + display.setColor(UIColor::primary_txt); display.setTextSize(1); display.drawTextCentered(display.width()/2, 35, _version_info); + display.setColor(UIColor::secondary_txt); display.setTextSize(1); display.drawTextCentered(display.width()/2, 48, FIRMWARE_BUILD_DATE); @@ -128,7 +129,7 @@ class HomeScreen : public UIScreen { int iconHeight = 10; int iconX = display.width() - iconWidth - 5; // Position the icon near the top-right corner int iconY = 0; - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::title_txt); // battery outline display.drawRect(iconX, iconY, iconWidth, iconHeight); @@ -143,7 +144,7 @@ class HomeScreen : public UIScreen { // show muted icon if buzzer is muted #ifdef PIN_BUZZER if (_task->isBuzzerQuiet()) { - display.setColor(DisplayDriver::RED); + display.setColor(UIColor::warning_txt); display.drawXbm(iconX - 9, iconY + 1, muted_icon, 8, 8); } #endif @@ -188,34 +189,41 @@ class HomeScreen : public UIScreen { } int render(DisplayDriver& display) override { + display.setColor(UIColor::title_bkg); + display.fillRect(0, 0, display.width(), 12); char tmp[80]; // node name display.setTextSize(1); - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::title_txt); char filtered_name[sizeof(_node_prefs->node_name)]; display.translateUTF8ToBlocks(filtered_name, _node_prefs->node_name, sizeof(filtered_name)); - display.setCursor(0, 0); + display.setCursor(0, 2); display.print(filtered_name); // battery voltage renderBatteryIndicator(display, _task->getBattMilliVolts()); // curr page indicator + if (UIColor::title_bkg == UIColor::window_bkg) { + display.setColor(UIColor::title_txt); + } else { + display.setColor(UIColor::title_bkg); + } int y = 14; int x = display.width() / 2 - 5 * (HomePage::Count-1); for (uint8_t i = 0; i < HomePage::Count; i++, x += 10) { if (i == _page) { - display.fillRect(x-1, y-1, 3, 3); + display.fillRect(x-1, y-1, 4, 4); } else { - display.fillRect(x, y, 1, 1); + display.fillRect(x, y, 2, 2); } } if (_page == HomePage::FIRST) { - display.setColor(DisplayDriver::YELLOW); + display.setColor(UIColor::primary_txt); display.setTextSize(2); sprintf(tmp, "MSG: %d", _task->getMsgCount()); - display.drawTextCentered(display.width() / 2, 20, tmp); + display.drawTextCentered(display.width() / 2, 22, tmp); #ifdef WIFI_SSID IPAddress ip = WiFi.localIP(); @@ -224,19 +232,19 @@ class HomeScreen : public UIScreen { display.drawTextCentered(display.width() / 2, 54, tmp); #endif if (_task->hasConnection()) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::warning_txt); display.setTextSize(1); display.drawTextCentered(display.width() / 2, 43, "< Connected >"); } else if (the_mesh.getBLEPin() != 0) { // BT pin - display.setColor(DisplayDriver::RED); + display.setColor(UIColor::warning_txt); display.setTextSize(2); sprintf(tmp, "Pin:%d", the_mesh.getBLEPin()); display.drawTextCentered(display.width() / 2, 43, tmp); } } else if (_page == HomePage::RECENT) { the_mesh.getRecentlyHeard(recent, UI_RECENT_LIST_SIZE); - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::primary_txt); int y = 20; for (int i = 0; i < UI_RECENT_LIST_SIZE; i++, y += 11) { auto a = &recent[i]; @@ -260,7 +268,7 @@ class HomeScreen : public UIScreen { display.print(tmp); } } else if (_page == HomePage::RADIO) { - display.setColor(DisplayDriver::YELLOW); + display.setColor(UIColor::primary_txt); display.setTextSize(1); // freq / sf display.setCursor(0, 20); @@ -279,15 +287,17 @@ class HomeScreen : public UIScreen { sprintf(tmp, "Noise floor: %d", radio_driver.getNoiseFloor()); display.print(tmp); } else if (_page == HomePage::BLUETOOTH) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); display.drawXbm((display.width() - 32) / 2, 18, - _task->isSerialEnabled() ? bluetooth_on : bluetooth_off, + _task->isBluetoothEnabled() ? bluetooth_on : bluetooth_off, 32, 32); + display.setColor(UIColor::secondary_txt); display.setTextSize(1); display.drawTextCentered(display.width() / 2, 64 - 11, "toggle: " PRESS_LABEL); } else if (_page == HomePage::ADVERT) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); display.drawXbm((display.width() - 32) / 2, 18, advert_icon, 32, 32); + display.setColor(UIColor::secondary_txt); display.drawTextCentered(display.width() / 2, 64 - 11, "advert: " PRESS_LABEL); #if ENV_INCLUDE_GPS == 1 } else if (_page == HomePage::GPS) { @@ -305,24 +315,33 @@ class HomeScreen : public UIScreen { #else strcpy(buf, gps_state ? "gps on" : "gps off"); #endif + display.setColor(UIColor::primary_txt); display.drawTextLeftAlign(0, y, buf); if (nmea == NULL) { y = y + 12; + display.setColor(UIColor::secondary_txt); display.drawTextLeftAlign(0, y, "Can't access GPS"); } else { + display.setColor(UIColor::primary_txt); strcpy(buf, nmea->isValid()?"fix":"no fix"); display.drawTextRightAlign(display.width()-1, y, buf); y = y + 12; + display.setColor(UIColor::secondary_txt); display.drawTextLeftAlign(0, y, "sat"); + display.setColor(UIColor::primary_txt); sprintf(buf, "%d", nmea->satellitesCount()); display.drawTextRightAlign(display.width()-1, y, buf); y = y + 12; + display.setColor(UIColor::secondary_txt); display.drawTextLeftAlign(0, y, "pos"); + display.setColor(UIColor::primary_txt); sprintf(buf, "%.4f %.4f", nmea->getLatitude()/1000000., nmea->getLongitude()/1000000.); display.drawTextRightAlign(display.width()-1, y, buf); y = y + 12; + display.setColor(UIColor::secondary_txt); display.drawTextLeftAlign(0, y, "alt"); + display.setColor(UIColor::primary_txt); sprintf(buf, "%.2f", nmea->getAltitude()/1000.); display.drawTextRightAlign(display.width()-1, y, buf); y = y + 12; @@ -390,7 +409,9 @@ class HomeScreen : public UIScreen { strcpy(name, "unk"); sprintf(buf, ""); } display.setCursor(0, y); + display.setColor(UIColor::secondary_txt); display.print(name); + display.setColor(UIColor::primary_txt); display.setCursor( display.width()-display.getTextWidth(buf)-1, y ); @@ -401,11 +422,13 @@ class HomeScreen : public UIScreen { else sensors_scroll_offset = 0; #endif } else if (_page == HomePage::SHUTDOWN) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); display.setTextSize(1); if (_shutdown_init) { + display.setColor(UIColor::warning_txt); display.drawTextCentered(display.width() / 2, 34, "hibernating..."); } else { + display.setColor(UIColor::secondary_txt); display.drawXbm((display.width() - 32) / 2, 18, power_icon, 32, 32); display.drawTextCentered(display.width() / 2, 64 - 11, "hibernate:" PRESS_LABEL); } @@ -426,10 +449,10 @@ class HomeScreen : public UIScreen { return true; } if (c == KEY_ENTER && _page == HomePage::BLUETOOTH) { - if (_task->isSerialEnabled()) { // toggle Bluetooth on/off - _task->disableSerial(); + if (_task->isBluetoothEnabled()) { // toggle Bluetooth on/off + _task->disableBluetooth(); } else { - _task->enableSerial(); + _task->enableBluetooth(); } return true; } @@ -498,7 +521,7 @@ class MsgPreviewScreen : public UIScreen { char tmp[16]; display.setCursor(0, 0); display.setTextSize(1); - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); sprintf(tmp, "Unread: %d", num_unread); display.print(tmp); @@ -518,13 +541,13 @@ class MsgPreviewScreen : public UIScreen { display.drawRect(0, 11, display.width(), 1); // horiz line display.setCursor(0, 14); - display.setColor(DisplayDriver::YELLOW); + display.setColor(UIColor::secondary_txt); char filtered_origin[sizeof(p->origin)]; display.translateUTF8ToBlocks(filtered_origin, p->origin, sizeof(filtered_origin)); display.print(filtered_origin); display.setCursor(0, 25); - display.setColor(DisplayDriver::LIGHT); + display.setColor(UIColor::primary_txt); char filtered_msg[sizeof(p->msg)]; display.translateUTF8ToBlocks(filtered_msg, p->msg, sizeof(filtered_msg)); display.printWordWrap(filtered_msg, display.width()); @@ -697,8 +720,7 @@ void UITask::shutdown(bool restart){ if (restart) { _board->reboot(); } else { - _display->turnOff(); - radio_driver.powerOff(); + // Power off board including radio, display, GPS and components _board->powerOff(); } } @@ -748,6 +770,16 @@ void UITask::loop() { c = handleTripleClick(KEY_SELECT); } #endif +#if defined(UI_HAS_ROTARY_INPUT) + RotaryInputEvent rotaryEv = rotary_input.poll(); + if (c == 0 && _display != NULL && _display->isOn()) { + if (rotaryEv == RotaryInputEvent::Next) { + c = KEY_NEXT; + } else if (rotaryEv == RotaryInputEvent::Prev) { + c = KEY_PREV; + } + } +#endif #if defined(PIN_USER_BTN_ANA) if (abs(millis() - _analogue_pin_read_millis) > 10) { int ev = analog_btn.check(); @@ -797,9 +829,9 @@ void UITask::loop() { _display->setTextSize(1); int y = _display->height() / 3; int p = _display->height() / 32; - _display->setColor(DisplayDriver::DARK); + _display->setColor(UIColor::popup_bkg); _display->fillRect(p, y, _display->width() - p*2, y); - _display->setColor(DisplayDriver::LIGHT); // draw box border + _display->setColor(UIColor::popup_txt); // draw box border _display->drawRect(p, y, _display->width() - p*2, y); _display->drawTextCentered(_display->width() / 2, y + p*3, _alert); _next_refresh = _alert_expiry; // will need refresh when alert is dismissed @@ -836,7 +868,7 @@ void UITask::loop() { if (_display != NULL) { _display->startFrame(); _display->setTextSize(2); - _display->setColor(DisplayDriver::RED); + _display->setColor(UIColor::warning_txt); _display->drawTextCentered(_display->width() / 2, 20, "Low Battery."); _display->drawTextCentered(_display->width() / 2, 40, "Shutting Down!"); _display->endFrame(); diff --git a/examples/companion_radio/ui-new/UITask.h b/examples/companion_radio/ui-new/UITask.h index a77ad6e7ec..52d3ffa13c 100644 --- a/examples/companion_radio/ui-new/UITask.h +++ b/examples/companion_radio/ui-new/UITask.h @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include @@ -65,7 +65,7 @@ class UITask : public AbstractUITask { public: - UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { + UITask(mesh::MainBoard* board, MultiSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { next_batt_chck = _next_refresh = 0; ui_started_at = 0; curr = NULL; diff --git a/examples/companion_radio/ui-orig/UITask.cpp b/examples/companion_radio/ui-orig/UITask.cpp index 5529046775..b49b05dd19 100644 --- a/examples/companion_radio/ui-orig/UITask.cpp +++ b/examples/companion_radio/ui-orig/UITask.cpp @@ -6,12 +6,19 @@ #define AUTO_OFF_MILLIS 15000 // 15 seconds #define BOOT_SCREEN_MILLIS 3000 // 3 seconds -#ifdef PIN_STATUS_LED +#if defined(PIN_STATUS_LED) || defined(PIN_STATUS_LED_R) #define LED_ON_MILLIS 20 #define LED_ON_MSG_MILLIS 200 #define LED_CYCLE_MILLIS 4000 #endif +#if defined(PIN_STATUS_LED_R) && defined(PIN_STATUS_LED_G) && defined(PIN_STATUS_LED_B) +#define STATUS_LED_RGB 1 +#ifndef LOW_BATT_MILLIVOLTS +#define LOW_BATT_MILLIVOLTS 3500 +#endif +#endif + #ifndef USER_BTN_PRESSED #define USER_BTN_PRESSED LOW #endif @@ -60,6 +67,11 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no buzzer.startup(); #endif +#ifdef HAS_DRV2605 + vibration.begin(); + vibration.quiet(_node_prefs->vibe_quiet); +#endif + // Initialize digital button if available #ifdef PIN_USER_BTN _userButton = new Button(PIN_USER_BTN, USER_BTN_PRESSED); @@ -130,6 +142,10 @@ void UITask::clearMsgPreview() { void UITask::newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount) { _msgcount = msgcount; +#ifdef HAS_DRV2605 + vibration.trigger(); // vibrate even while the app is connected (honors quiet + cooldown) +#endif + if (path_len == 0xFF) { sprintf(_origin, "(F) %s", from_name); } else { @@ -167,7 +183,7 @@ void UITask::renderBatteryIndicator(uint16_t batteryMilliVolts) { int iconHeight = 12; int iconX = _display->width() - iconWidth - 5; // Position the icon near the top-right corner int iconY = 0; - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); // battery outline _display->drawRect(iconX, iconY, iconWidth, iconHeight); @@ -188,7 +204,7 @@ void UITask::renderCurrScreen() { _display->setTextSize(1.4); uint16_t textWidth = _display->getTextWidth(_alert); _display->setCursor((_display->width() - textWidth) / 2, 22); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::warning_txt); _display->print(_alert); _alert[0] = 0; _need_refresh = true; @@ -197,30 +213,29 @@ void UITask::renderCurrScreen() { // render message preview _display->setCursor(0, 0); _display->setTextSize(1); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); _display->print(_node_prefs->node_name); _display->setCursor(0, 12); - _display->setColor(DisplayDriver::YELLOW); + _display->setColor(UIColor::secondary_txt); _display->print(_origin); _display->setCursor(0, 24); - _display->setColor(DisplayDriver::LIGHT); _display->print(_msg); _display->setCursor(_display->width() - 28, 9); _display->setTextSize(2); - _display->setColor(DisplayDriver::ORANGE); + _display->setColor(UIColor::primary_txt); sprintf(tmp, "%d", _msgcount); _display->print(tmp); - _display->setColor(DisplayDriver::YELLOW); // last color will be kept on T114 + _display->setColor(UIColor::secondary_txt); // last color will be kept on T114 } else if ((millis() - ui_started_at) < BOOT_SCREEN_MILLIS) { // boot screen // meshcore logo - _display->setColor(DisplayDriver::BLUE); + _display->setColor(UIColor::corp_blue); int logoWidth = 128; _display->drawXbm((_display->width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); // version info - _display->setColor(DisplayDriver::LIGHT); + _display->setColor(UIColor::primary_txt); _display->setTextSize(1); uint16_t textWidth = _display->getTextWidth(_version_info); _display->setCursor((_display->width() - textWidth) / 2, 22); @@ -229,7 +244,7 @@ void UITask::renderCurrScreen() { // node name _display->setCursor(0, 0); _display->setTextSize(1); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); _display->print(_node_prefs->node_name); // battery voltage @@ -237,7 +252,7 @@ void UITask::renderCurrScreen() { // freq / sf _display->setCursor(0, 20); - _display->setColor(DisplayDriver::YELLOW); + _display->setColor(UIColor::secondary_txt); sprintf(tmp, "FREQ: %06.3f SF%d", _node_prefs->freq, _node_prefs->sf); _display->print(tmp); @@ -248,21 +263,127 @@ void UITask::renderCurrScreen() { // BT pin if (!_connected && the_mesh.getBLEPin() != 0) { - _display->setColor(DisplayDriver::RED); + _display->setColor(UIColor::warning_txt); _display->setTextSize(2); _display->setCursor(0, 43); sprintf(tmp, "Pin:%d", the_mesh.getBLEPin()); _display->print(tmp); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); } else { - _display->setColor(DisplayDriver::LIGHT); + _display->setColor(UIColor::primary_txt); } } _need_refresh = false; } +#ifdef STATUS_LED_RGB +static void statusLedWrite(uint8_t r, uint8_t g, uint8_t b) { + analogWrite(PIN_STATUS_LED_R, r); + analogWrite(PIN_STATUS_LED_G, g); + analogWrite(PIN_STATUS_LED_B, b); +} + +static void statusLedWheel(uint8_t pos) { // smooth hue sweep, 0..255 + if (pos < 85) { + statusLedWrite(255 - pos * 3, pos * 3, 0); + } else if (pos < 170) { + pos -= 85; + statusLedWrite(0, 255 - pos * 3, pos * 3); + } else { + pos -= 170; + statusLedWrite(pos * 3, 0, 255 - pos * 3); + } +} +#endif + void UITask::userLedHandler() { -#ifdef PIN_STATUS_LED +#ifdef STATUS_LED_RGB + static bool booted = false; + static bool flourish_active = false; + static unsigned long flourish_until = 0; + static int prev_msgcount = 0; + static int state = 0; + static unsigned long next_change = 0; + static int last_increment = 0; + static unsigned long next_batt_check = 0; + static bool low_batt = false; + + unsigned long cur_time = millis(); + + if (!booted) { // color sweep on boot + booted = true; + flourish_until = cur_time + 1200; + flourish_active = true; + } + if (_msgcount > prev_msgcount) { // color sweep when a new message arrives + flourish_until = cur_time + 800; + flourish_active = true; + } + prev_msgcount = _msgcount; + + if (flourish_active) { + if (cur_time < flourish_until) { + statusLedWheel((cur_time % 1200) * 255 / 1200); + return; + } + statusLedWrite(0, 0, 0); + flourish_active = false; + state = 0; + next_change = cur_time; + } + + if (cur_time > next_batt_check) { // battery reads are not free, keep them rare + low_batt = _board->getBattMilliVolts() < LOW_BATT_MILLIVOLTS; + next_batt_check = cur_time + 60000; + } + +#ifdef EXT_CHRG_DETECT + // charge status display while docked (skipped when messages are waiting, + // so the unread indication is never masked) + static unsigned long next_pwr_check = 0; + static bool ext_powered = false, ext_charging = false; + if (cur_time > next_pwr_check) { + ext_powered = _board->isExternalPowered(); + ext_charging = ext_powered && digitalRead(EXT_CHRG_DETECT) == LOW; + next_pwr_check = cur_time + 1000; + } + if (ext_powered && _msgcount == 0) { + if (ext_charging) { + // amber breathing while charging + int ph = cur_time % 2000; + int v = ph < 1000 ? ph : 2000 - ph; + uint8_t lvl = (uint8_t)(v * 255 / 1000); + statusLedWrite(lvl, (uint8_t)(lvl * 35 / 100), 0); + } else { + statusLedWrite(0, 40, 0); // dim solid green: charge complete + } + state = 0; + next_change = cur_time; + return; + } +#endif + + if (cur_time > next_change) { + if (state == 0) { + state = 1; + last_increment = (_msgcount > 0) ? LED_ON_MSG_MILLIS : LED_ON_MILLIS; + next_change = cur_time + last_increment; + if (low_batt) { + statusLedWrite(255, 0, 0); // red: battery low + } else if (_msgcount > 0) { + statusLedWrite(255, 90, 0); // amber: unread messages + } else if (_connected) { + statusLedWrite(0, 0, 255); // blue: app connected + } else { + statusLedWrite(0, 255, 0); // green: heartbeat + } + } else { + state = 0; + next_change = cur_time + LED_CYCLE_MILLIS - last_increment; + statusLedWrite(0, 0, 0); + } + } +#elif defined(PIN_STATUS_LED) static int state = 0; static int next_change = 0; static int last_increment = 0; @@ -307,7 +428,7 @@ void UITask::shutdown(bool restart){ if (restart) { _board->reboot(); } else { - radio_driver.powerOff(); + // Power off board including radio, display, GPS and components _board->powerOff(); } } @@ -407,8 +528,26 @@ void UITask::handleButtonDoublePress() { void UITask::handleButtonTriplePress() { MESH_DEBUG_PRINTLN("UITask: triple press triggered"); - // Toggle buzzer quiet mode - #ifdef PIN_BUZZER +#if defined(PIN_BUZZER) && defined(HAS_DRV2605) + // cycle alert modes: Buzz+Vibe -> Buzz only -> Vibe only -> Silent + int mode = (_node_prefs->buzzer_quiet ? 2 : 0) | (_node_prefs->vibe_quiet ? 1 : 0); + mode = (mode + 1) & 3; + _node_prefs->buzzer_quiet = (mode & 2) ? 1 : 0; + _node_prefs->vibe_quiet = (mode & 1) ? 1 : 0; + buzzer.quiet(_node_prefs->buzzer_quiet); + vibration.quiet(_node_prefs->vibe_quiet); + // audible/tactile confirmation of the new mode (no screen on some boards) + if (!_node_prefs->buzzer_quiet) notify(UIEventType::ack); + if (!_node_prefs->vibe_quiet) vibration.trigger(true); + switch (mode) { + case 0: sprintf(_alert, "Alerts: Buzz+Vibe"); break; + case 1: sprintf(_alert, "Alerts: Buzz only"); break; + case 2: sprintf(_alert, "Alerts: Vibe only"); break; + default: sprintf(_alert, "Alerts: Silent"); break; + } + the_mesh.savePrefs(); + _need_refresh = true; +#elif defined(PIN_BUZZER) if (buzzer.isQuiet()) { buzzer.quiet(false); notify(UIEventType::ack); @@ -420,7 +559,7 @@ void UITask::handleButtonTriplePress() { _node_prefs->buzzer_quiet = buzzer.isQuiet(); the_mesh.savePrefs(); _need_refresh = true; - #endif +#endif } void UITask::handleButtonQuadruplePress() { diff --git a/examples/companion_radio/ui-orig/UITask.h b/examples/companion_radio/ui-orig/UITask.h index 60cd0d042c..02d126e8fe 100644 --- a/examples/companion_radio/ui-orig/UITask.h +++ b/examples/companion_radio/ui-orig/UITask.h @@ -14,11 +14,18 @@ #include "Button.h" +#ifdef HAS_DRV2605 + #include +#endif + class UITask : public AbstractUITask { DisplayDriver* _display; SensorManager* _sensors; #ifdef PIN_BUZZER genericBuzzer buzzer; +#endif +#ifdef HAS_DRV2605 + DRV2605Vibration vibration; #endif unsigned long _next_refresh, _auto_off; NodePrefs* _node_prefs; @@ -54,7 +61,7 @@ class UITask : public AbstractUITask { public: - UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { + UITask(mesh::MainBoard* board, MultiSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { _next_refresh = 0; ui_started_at = 0; } diff --git a/examples/companion_radio/ui-tiny/ScrollingStatusBar.h b/examples/companion_radio/ui-tiny/ScrollingStatusBar.h index f5943c9b6f..9967489fd2 100644 --- a/examples/companion_radio/ui-tiny/ScrollingStatusBar.h +++ b/examples/companion_radio/ui-tiny/ScrollingStatusBar.h @@ -104,7 +104,7 @@ class ScrollingStatusBar { if (_status[0] == 0) return; display.setTextSize(1); - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::primary_txt); // if (_needs_redraw) { // _text_width = display.getTextWidth(_status); diff --git a/examples/companion_radio/ui-tiny/UITask.cpp b/examples/companion_radio/ui-tiny/UITask.cpp index 0119475e77..b6bdbcf4bd 100644 --- a/examples/companion_radio/ui-tiny/UITask.cpp +++ b/examples/companion_radio/ui-tiny/UITask.cpp @@ -56,24 +56,24 @@ class SplashScreen : public UIScreen { int render(DisplayDriver& display) override { if (millis() < version_after) { // meshcore logo - display.setColor(DisplayDriver::BLUE); + display.setColor(UIColor::corp_blue); int logoWidth = 72; display.drawXbm(0, 0, meshcore_logo, 72, 36); } else { // meshcore website const char* website = "meshcore.io"; - display.setColor(DisplayDriver::LIGHT); + display.setColor(UIColor::primary_txt); display.setTextSize(1); uint16_t websiteWidth = display.getTextWidth(website); display.setCursor((display.width() - websiteWidth) / 2, 9); display.print(website); // version info - display.setColor(DisplayDriver::LIGHT); display.setTextSize(1); display.drawTextCentered(display.width()/2, 18, _version_info); + display.setColor(UIColor::secondary_txt); display.setTextSize(1); display.drawTextCentered(display.width()/2, 27, FIRMWARE_BUILD_DATE); } @@ -163,7 +163,7 @@ class HomeScreen : public UIScreen { // display.print(filtered_name); - display.setColor(DisplayDriver::YELLOW); + display.setColor(UIColor::primary_txt); display.setTextSize(2); sprintf(tmp, "MSG: %d", _task->getMsgCount()); display.setCursor(0, 10); @@ -180,19 +180,19 @@ class HomeScreen : public UIScreen { display.drawTextCentered(display.width() / 2, 54, tmp); #endif if (_task->hasConnection()) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::warning_txt); display.setTextSize(1); display.drawTextCentered(display.width() / 2, display.height()-8, "< Connected >"); } else if (the_mesh.getBLEPin() != 0) { // BT pin - display.setColor(DisplayDriver::RED); + display.setColor(UIColor::warning_txt); display.setTextSize(2); sprintf(tmp, "Pin:%d", the_mesh.getBLEPin()); display.drawTextCentered(display.width() / 2, display.height()-8, tmp); } } else if (_page == HomePage::RECENT) { the_mesh.getRecentlyHeard(recent, UI_RECENT_LIST_SIZE); - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::primary_txt); int y = 8; for (int i = 0; i < UI_RECENT_LIST_SIZE; i++, y += 11) { auto a = &recent[i]; @@ -216,7 +216,7 @@ class HomeScreen : public UIScreen { display.print(tmp); } } else if (_page == HomePage::RADIO) { - display.setColor(DisplayDriver::YELLOW); + display.setColor(UIColor::primary_txt); display.setTextSize(1); // frequency and spreading factor display.setCursor(0, 8); @@ -238,14 +238,14 @@ class HomeScreen : public UIScreen { display.drawTextRightAlign(display.width(), 26, tmp); } else if (_page == HomePage::BLUETOOTH) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); display.drawXbm((display.width() - 32) / 2, 8, - _task->isSerialEnabled() ? bluetooth_on : bluetooth_off, + _task->isBluetoothEnabled() ? bluetooth_on : bluetooth_off, 32, 32); display.setTextSize(1); // display.drawTextCentered(display.width() / 2, 40 - 11, "toggle: " PRESS_LABEL); } else if (_page == HomePage::ADVERT) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::corp_blue); display.drawXbm((display.width() - 32) / 2, 8, advert_icon, 32, 32); // display.drawTextCentered(display.width() / 2, 40 - 11, "advert: " PRESS_LABEL); #if ENV_INCLUDE_GPS == 1 @@ -264,9 +264,11 @@ class HomeScreen : public UIScreen { #else strcpy(buf, gps_state ? "gps on" : "gps off"); #endif + display.setColor(UIColor::primary_txt); display.drawTextLeftAlign(0, y, buf); if (nmea == NULL) { // y = y + 8; + display.setColor(UIColor::warning_txt); display.drawTextLeftAlign(0, y, "Can't access GPS"); } else { if (!gps_state || !nmea->isValid()) { @@ -274,6 +276,7 @@ class HomeScreen : public UIScreen { } else { sprintf(buf, "%d sat", nmea->satellitesCount()); } + display.setColor(UIColor::primary_txt); display.drawTextRightAlign(display.width()-1, y, buf); y = y + 8; sprintf(buf, "lat %.4f", @@ -349,8 +352,10 @@ class HomeScreen : public UIScreen { r.skipData(type); strcpy(name, "unk"); sprintf(buf, ""); } + display.setColor(UIColor::secondary_txt); display.setCursor(0, y); display.print(name); + display.setColor(UIColor::primary_txt); display.setCursor( display.width()-display.getTextWidth(buf)-1, y ); @@ -361,7 +366,7 @@ class HomeScreen : public UIScreen { else sensors_scroll_offset = 0; #endif } else if (_page == HomePage::SHUTDOWN) { - display.setColor(DisplayDriver::GREEN); + display.setColor(UIColor::secondary_txt); display.setTextSize(1); if (_shutdown_init) { display.drawTextCentered(display.width() / 2, 20, "hibernating..."); @@ -386,10 +391,10 @@ class HomeScreen : public UIScreen { return true; } if (c == KEY_ENTER && _page == HomePage::BLUETOOTH) { - if (_task->isSerialEnabled()) { // toggle Bluetooth on/off - _task->disableSerial(); + if (_task->isBluetoothEnabled()) { // toggle Bluetooth on/off + _task->disableBluetooth(); } else { - _task->enableSerial(); + _task->enableBluetooth(); } return true; } @@ -566,8 +571,7 @@ void UITask::shutdown(bool restart){ if (restart) { _board->reboot(); } else { - _display->turnOff(); - radio_driver.powerOff(); + // Power off board including radio, display, GPS and components _board->powerOff(); } } @@ -673,7 +677,7 @@ void UITask::loop() { _cached_batt_mv, isBuzzerQuiet(), getGPSState(), - isSerialEnabled()); + isBluetoothEnabled()); bool status_dirty = _statusBar.needsRedraw(); bool content_dirty = (millis() >= _next_refresh && curr); @@ -693,9 +697,9 @@ void UITask::loop() { _display->setTextSize(1); int y = _display->height() / 3; int p = _display->height() / 32; - _display->setColor(DisplayDriver::DARK); + _display->setColor(UIColor::popup_bkg); _display->fillRect(p, y, _display->width() - p*2, y); - _display->setColor(DisplayDriver::LIGHT); // draw box border + _display->setColor(UIColor::popup_txt); // draw box border _display->drawRect(p, y, _display->width() - p*2, y); _display->drawTextCentered(_display->width() / 2, y + p*3, _alert); _next_refresh = _alert_expiry; // will need refresh when alert is dismissed diff --git a/examples/companion_radio/ui-tiny/UITask.h b/examples/companion_radio/ui-tiny/UITask.h index 344e48b98f..dc689478ec 100644 --- a/examples/companion_radio/ui-tiny/UITask.h +++ b/examples/companion_radio/ui-tiny/UITask.h @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include @@ -71,7 +71,7 @@ class UITask : public AbstractUITask { public: - UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { + UITask(mesh::MainBoard* board, MultiSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) { next_batt_chck = _next_refresh = 0; _cached_batt_mv = 0; ui_started_at = 0; diff --git a/examples/kiss_modem/KissModem.cpp b/examples/kiss_modem/KissModem.cpp index eeab1501d5..7dcfc8d7d9 100644 --- a/examples/kiss_modem/KissModem.cpp +++ b/examples/kiss_modem/KissModem.cpp @@ -22,6 +22,7 @@ KissModem::KissModem(Stream& serial, mesh::LocalIdentity& identity, mesh::RNG& r _getStatsCallback = nullptr; _config = {0, 0, 0, 0, 0}; _signal_report_enabled = true; + resetOutputQueue(); } void KissModem::begin() { @@ -30,37 +31,168 @@ void KissModem::begin() { _rx_active = false; _has_pending_tx = false; _tx_state = TX_IDLE; + resetOutputQueue(); } -void KissModem::writeByte(uint8_t b) { - if (b == KISS_FEND) { - _serial.write(KISS_FESC); - _serial.write(KISS_TFEND); - } else if (b == KISS_FESC) { - _serial.write(KISS_FESC); - _serial.write(KISS_TFESC); - } else { - _serial.write(b); +void KissModem::resetOutputQueue() { + _tx_frame_head = 0; + _tx_frame_tail = 0; + _tx_frame_count = 0; + _tx_busy_error_pending = false; + _tx_done_pending = false; + _tx_done_result = 0; +} + +void KissModem::popTxFrame() { + _tx_frame_head = (uint8_t)((_tx_frame_head + 1) % KISS_TX_FRAME_QUEUE_DEPTH); + _tx_frame_count--; +} + +uint16_t KissModem::appendEscapedByte(uint8_t* dest, uint16_t idx, uint16_t max_len, uint8_t b) { + if (b == KISS_FEND || b == KISS_FESC) { + if (idx + 2 > max_len) { + return 0; + } + dest[idx++] = KISS_FESC; + dest[idx++] = (b == KISS_FEND) ? KISS_TFEND : KISS_TFESC; + return idx; } + if (idx + 1 > max_len) { + return 0; + } + dest[idx++] = b; + return idx; } -void KissModem::writeFrame(uint8_t type, const uint8_t* data, uint16_t len) { - _serial.write(KISS_FEND); - writeByte(type); +uint16_t KissModem::encodeFrame(uint8_t type, const uint8_t* data, uint16_t len, uint8_t* dest, uint16_t max_len) { + if (max_len < KISS_FRAME_BOUNDARY_BYTES) { + return 0; + } + + uint16_t idx = 0; + dest[idx++] = KISS_FEND; + + idx = appendEscapedByte(dest, idx, max_len, type); + if (idx == 0) { + return 0; + } + for (uint16_t i = 0; i < len; i++) { - writeByte(data[i]); + idx = appendEscapedByte(dest, idx, max_len, data[i]); + if (idx == 0) { + return 0; + } + } + + if (idx + 1 > max_len) { + return 0; } - _serial.write(KISS_FEND); + dest[idx++] = KISS_FEND; + return idx; } -void KissModem::writeHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len) { - _serial.write(KISS_FEND); - writeByte(KISS_CMD_SETHARDWARE); - writeByte(sub_cmd); - for (uint16_t i = 0; i < len; i++) { - writeByte(data[i]); +bool KissModem::tryFlushFrames() { + while (_tx_frame_count > 0) { + const uint8_t idx = _tx_frame_head; + const uint16_t frame_len = _tx_frame_len[idx]; + uint16_t written_len = _tx_frame_written[idx]; + + if (written_len >= frame_len) { + popTxFrame(); + continue; + } + + const int available = _serial.availableForWrite(); + if (available <= 0) { + return false; + } + + const uint16_t remaining = frame_len - written_len; + const uint16_t chunk_len = (available < (int)remaining) ? (uint16_t)available : remaining; + if (chunk_len == 0) { + return false; + } + + size_t chunk_written = _serial.write(_tx_frame_buf[idx] + written_len, chunk_len); + if (chunk_written == 0) { + return false; + } + + written_len += (uint16_t)chunk_written; + _tx_frame_written[idx] = written_len; + + if (written_len < frame_len) { + return false; + } + + popTxFrame(); } - _serial.write(KISS_FEND); + return true; +} + +bool KissModem::queueFrame(uint8_t type, const uint8_t* data, uint16_t len, bool mark_busy_error) { + if (_tx_frame_count >= KISS_TX_FRAME_QUEUE_DEPTH && !tryFlushFrames()) { + if (mark_busy_error) { + _tx_busy_error_pending = true; + } + return false; + } + const uint8_t idx = _tx_frame_tail; + uint16_t frame_len = encodeFrame(type, data, len, _tx_frame_buf[idx], sizeof(_tx_frame_buf[idx])); + if (frame_len == 0) { + return false; + } + + _tx_frame_len[idx] = frame_len; + _tx_frame_written[idx] = 0; + _tx_frame_tail = (uint8_t)((_tx_frame_tail + 1) % KISS_TX_FRAME_QUEUE_DEPTH); + _tx_frame_count++; + tryFlushFrames(); + return true; +} + +bool KissModem::queuePendingBusyError() { + if (!_tx_busy_error_pending) { + return true; + } + const uint8_t err = HW_ERR_TX_BUSY; + if (!queueHardwareFrame(HW_RESP_ERROR, &err, 1, false)) { + return false; + } + _tx_busy_error_pending = false; + return true; +} + +bool KissModem::queueHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len, bool mark_busy_error) { + if (len > KISS_MAX_FRAME_SIZE) { + return false; + } + _tx_hw_payload[0] = sub_cmd; + if (len > 0) { + memcpy(_tx_hw_payload + 1, data, len); + } + return queueFrame(KISS_CMD_SETHARDWARE, _tx_hw_payload, len + 1, mark_busy_error); +} + +bool KissModem::queuePendingTxDone() { + if (!_tx_done_pending) { + return true; + } + if (!queueHardwareFrame(HW_RESP_TX_DONE, &_tx_done_result, 1, false)) { + return false; + } + _tx_done_pending = false; + return true; +} + +void KissModem::setTxDonePending(uint8_t result) { + _tx_done_result = result; + _tx_done_pending = true; + _tx_state = TX_DONE_PENDING; +} + +bool KissModem::writeHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len) { + return queueHardwareFrame(sub_cmd, data, len, true); } void KissModem::writeHardwareError(uint8_t error_code) { @@ -68,6 +200,8 @@ void KissModem::writeHardwareError(uint8_t error_code) { } void KissModem::loop() { + tryFlushFrames(); + while (_serial.available()) { uint8_t b = _serial.read(); @@ -106,6 +240,8 @@ void KissModem::loop() { } processTx(); + tryFlushFrames(); + queuePendingBusyError(); } void KissModem::processFrame() { @@ -295,10 +431,7 @@ void KissModem::processTx() { _tx_timer = millis(); _tx_state = TX_SENDING; } else { - uint8_t result = 0x00; - writeHardwareFrame(HW_RESP_TX_DONE, &result, 1); - _has_pending_tx = false; - _tx_state = TX_IDLE; + setTxDonePending(0x00); } } break; @@ -306,14 +439,15 @@ void KissModem::processTx() { case TX_SENDING: if (_radio.isSendComplete()) { _radio.onSendFinished(); - uint8_t result = 0x01; - writeHardwareFrame(HW_RESP_TX_DONE, &result, 1); - _has_pending_tx = false; - _tx_state = TX_IDLE; + setTxDonePending(0x01); } else if (millis() - _tx_timer >= _radio.getEstAirtimeFor(_pending_tx_len) * KISS_TX_TIMEOUT_FACTOR) { _radio.onSendFinished(); - uint8_t result = 0x00; - writeHardwareFrame(HW_RESP_TX_DONE, &result, 1); + setTxDonePending(0x00); + } + break; + + case TX_DONE_PENDING: + if (queuePendingTxDone()) { _has_pending_tx = false; _tx_state = TX_IDLE; } @@ -322,8 +456,7 @@ void KissModem::processTx() { } void KissModem::onPacketReceived(int8_t snr, int8_t rssi, const uint8_t* packet, uint16_t len) { - writeFrame(KISS_CMD_DATA, packet, len); - if (_signal_report_enabled) { + if (queueFrame(KISS_CMD_DATA, packet, len) && _signal_report_enabled) { uint8_t meta[2] = { (uint8_t)snr, (uint8_t)rssi }; writeHardwareFrame(HW_RESP_RX_META, meta, 2); } diff --git a/examples/kiss_modem/KissModem.h b/examples/kiss_modem/KissModem.h index bbe99d6de4..a23e459bea 100644 --- a/examples/kiss_modem/KissModem.h +++ b/examples/kiss_modem/KissModem.h @@ -13,6 +13,14 @@ #define KISS_MAX_FRAME_SIZE 512 #define KISS_MAX_PACKET_SIZE 255 +#define KISS_FRAME_BOUNDARY_BYTES 2 +#define KISS_TYPE_BYTES 1 +#define KISS_HW_SUBCMD_BYTES 1 +#define KISS_MAX_ESCAPABLE_BYTES (KISS_MAX_FRAME_SIZE + KISS_TYPE_BYTES + KISS_HW_SUBCMD_BYTES) +#define KISS_MAX_ESCAPED_PAYLOAD_SIZE (2 * KISS_MAX_ESCAPABLE_BYTES) +#define KISS_MAX_ENCODED_FRAME_SIZE (KISS_FRAME_BOUNDARY_BYTES + KISS_MAX_ESCAPED_PAYLOAD_SIZE) +#define KISS_TX_FRAME_QUEUE_DEPTH 2 +#define KISS_HW_MAX_PAYLOAD_SIZE (KISS_MAX_FRAME_SIZE + KISS_HW_SUBCMD_BYTES) #define KISS_CMD_DATA 0x00 #define KISS_CMD_TXDELAY 0x01 @@ -94,7 +102,8 @@ enum TxState { TX_WAIT_CLEAR, TX_SLOT_WAIT, TX_DELAY, - TX_SENDING + TX_SENDING, + TX_DONE_PENDING }; class KissModem { @@ -130,10 +139,28 @@ class KissModem { RadioConfig _config; bool _signal_report_enabled; - - void writeByte(uint8_t b); - void writeFrame(uint8_t type, const uint8_t* data, uint16_t len); - void writeHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len); + uint8_t _tx_frame_buf[KISS_TX_FRAME_QUEUE_DEPTH][KISS_MAX_ENCODED_FRAME_SIZE]; + uint16_t _tx_frame_len[KISS_TX_FRAME_QUEUE_DEPTH]; + uint16_t _tx_frame_written[KISS_TX_FRAME_QUEUE_DEPTH]; + uint8_t _tx_frame_head; + uint8_t _tx_frame_tail; + uint8_t _tx_frame_count; + bool _tx_busy_error_pending; + bool _tx_done_pending; + uint8_t _tx_done_result; + uint8_t _tx_hw_payload[KISS_HW_MAX_PAYLOAD_SIZE]; + + static uint16_t appendEscapedByte(uint8_t* dest, uint16_t idx, uint16_t max_len, uint8_t b); + static uint16_t encodeFrame(uint8_t type, const uint8_t* data, uint16_t len, uint8_t* dest, uint16_t max_len); + void resetOutputQueue(); + void popTxFrame(); + bool tryFlushFrames(); + bool queueFrame(uint8_t type, const uint8_t* data, uint16_t len, bool mark_busy_error = true); + bool queuePendingBusyError(); + bool queueHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len, bool mark_busy_error); + bool queuePendingTxDone(); + void setTxDonePending(uint8_t result); + bool writeHardwareFrame(uint8_t sub_cmd, const uint8_t* data, uint16_t len); void writeHardwareError(uint8_t error_code); void processFrame(); void handleHardwareCommand(uint8_t sub_cmd, const uint8_t* data, uint16_t len); @@ -182,4 +209,5 @@ class KissModem { bool isTxBusy() const { return _tx_state != TX_IDLE; } /** True only when radio is actually transmitting; use to skip recvRaw in main loop. */ bool isActuallyTransmitting() const { return _tx_state == TX_SENDING; } + bool isHostOutputBackedUp() const { return _tx_frame_count > 0 || _tx_busy_error_pending || _tx_done_pending; } }; diff --git a/examples/kiss_modem/main.cpp b/examples/kiss_modem/main.cpp index 7fbcaed127..5836a69416 100644 --- a/examples/kiss_modem/main.cpp +++ b/examples/kiss_modem/main.cpp @@ -20,6 +20,8 @@ #define NOISE_FLOOR_CALIB_INTERVAL_MS 2000 #define AGC_RESET_INTERVAL_MS 30000 +#define USB_TX_TIMEOUT_MS 50 +#define USB_TX_BUFFER_SIZE 1024 StdRNG rng; mesh::LocalIdentity identity; @@ -111,6 +113,10 @@ void setup() { uint32_t start = millis(); while (!Serial && millis() - start < 3000) delay(10); delay(100); +#if defined(ESP32) && ARDUINO_USB_MODE + Serial.setTxTimeoutMs(USB_TX_TIMEOUT_MS); + Serial.setTxBufferSize(USB_TX_BUFFER_SIZE); +#endif modem = new KissModem(Serial, identity, rng, radio_driver, board, sensors); #endif @@ -126,7 +132,7 @@ void setup() { void loop() { modem->loop(); - if (!modem->isActuallyTransmitting()) { + if (!modem->isActuallyTransmitting() && !modem->isHostOutputBackedUp()) { if (!modem->isTxBusy()) { if ((uint32_t)(millis() - next_agc_reset_ms) >= AGC_RESET_INTERVAL_MS) { radio_driver.resetAGC(); diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index 096907494b..c93ba1a4cd 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -147,11 +147,10 @@ uint8_t MyMesh::handleLoginReq(const mesh::Identity& sender, const uint8_t* secr uint8_t MyMesh::handleAnonRegionsReq(const mesh::Identity& sender, uint32_t sender_timestamp, const uint8_t* data) { if (anon_limiter.allow(rtc_clock.getCurrentTime())) { // request data has: {reply-path-len}{reply-path} - reply_path_len = *data & 63; - reply_path_hash_size = (*data >> 6) + 1; - data++; + reply_path_len = *data++; + if (!mesh::Packet::isValidPathLen(reply_path_len)) return 0; // reject - bad encoding - memcpy(reply_path, data, ((uint8_t)reply_path_len) * reply_path_hash_size); + mesh::Packet::writePath(reply_path, data, reply_path_len); // data += (uint8_t)reply_path_len * reply_path_hash_size; memcpy(reply_data, &sender_timestamp, 4); // prefix with sender_timestamp, like a tag @@ -166,11 +165,10 @@ uint8_t MyMesh::handleAnonRegionsReq(const mesh::Identity& sender, uint32_t send uint8_t MyMesh::handleAnonOwnerReq(const mesh::Identity& sender, uint32_t sender_timestamp, const uint8_t* data) { if (anon_limiter.allow(rtc_clock.getCurrentTime())) { // request data has: {reply-path-len}{reply-path} - reply_path_len = *data & 63; - reply_path_hash_size = (*data >> 6) + 1; - data++; + reply_path_len = *data++; + if (!mesh::Packet::isValidPathLen(reply_path_len)) return 0; // reject - bad encoding - memcpy(reply_path, data, ((uint8_t)reply_path_len) * reply_path_hash_size); + mesh::Packet::writePath(reply_path, data, reply_path_len); // data += (uint8_t)reply_path_len * reply_path_hash_size; memcpy(reply_data, &sender_timestamp, 4); // prefix with sender_timestamp, like a tag @@ -186,11 +184,10 @@ uint8_t MyMesh::handleAnonOwnerReq(const mesh::Identity& sender, uint32_t sender uint8_t MyMesh::handleAnonClockReq(const mesh::Identity& sender, uint32_t sender_timestamp, const uint8_t* data) { if (anon_limiter.allow(rtc_clock.getCurrentTime())) { // request data has: {reply-path-len}{reply-path} - reply_path_len = *data & 63; - reply_path_hash_size = (*data >> 6) + 1; - data++; + reply_path_len = *data++; + if (!mesh::Packet::isValidPathLen(reply_path_len)) return 0; // reject - bad encoding - memcpy(reply_path, data, ((uint8_t)reply_path_len) * reply_path_hash_size); + mesh::Packet::writePath(reply_path, data, reply_path_len); // data += (uint8_t)reply_path_len * reply_path_hash_size; memcpy(reply_data, &sender_timestamp, 4); // prefix with sender_timestamp, like a tag @@ -549,8 +546,7 @@ uint32_t MyMesh::getDirectRetransmitDelay(const mesh::Packet *packet) { return getRNG()->nextInt(0, 5*t + 1); } -bool MyMesh::filterRecvFloodPacket(mesh::Packet* pkt) { - // just try to determine region for packet (apply later in allowPacketForward()) +mesh::DispatcherAction MyMesh::onRecvPacket(mesh::Packet* pkt) { if (pkt->getRouteType() == ROUTE_TYPE_TRANSPORT_FLOOD) { recv_pkt_region = region_map.findMatch(pkt, REGION_DENY_FLOOD); } else if (pkt->getRouteType() == ROUTE_TYPE_FLOOD) { @@ -562,8 +558,7 @@ bool MyMesh::filterRecvFloodPacket(mesh::Packet* pkt) { } else { recv_pkt_region = NULL; } - // do normal processing - return false; + return Mesh::onRecvPacket(pkt); } void MyMesh::onAnonDataRecv(mesh::Packet *packet, const uint8_t *secret, const mesh::Identity &sender, @@ -576,7 +571,7 @@ void MyMesh::onAnonDataRecv(mesh::Packet *packet, const uint8_t *secret, const m data[len] = 0; // ensure null terminator uint8_t reply_len; - reply_path_len = -1; + reply_path_len = 0xFF; if (data[4] == 0 || data[4] >= ' ') { // is password, ie. a login request reply_len = handleLoginReq(sender, secret, timestamp, &data[4], packet->isRouteFlood()); } else if (data[4] == ANON_REQ_TYPE_REGIONS && packet->isRouteDirect()) { @@ -596,13 +591,12 @@ void MyMesh::onAnonDataRecv(mesh::Packet *packet, const uint8_t *secret, const m mesh::Packet* path = createPathReturn(sender, secret, packet->path, packet->path_len, PAYLOAD_TYPE_RESPONSE, reply_data, reply_len); if (path) sendFloodReply(path, SERVER_RESPONSE_DELAY, packet->getPathHashSize()); - } else if (reply_path_len < 0) { + } else if (reply_path_len == 0xFF) { mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, sender, secret, reply_data, reply_len); if (reply) sendFloodReply(reply, SERVER_RESPONSE_DELAY, packet->getPathHashSize()); } else { mesh::Packet* reply = createDatagram(PAYLOAD_TYPE_RESPONSE, sender, secret, reply_data, reply_len); - uint8_t path_len = ((reply_path_hash_size - 1) << 6) | (reply_path_len & 63); - if (reply) sendDirect(reply, reply_path, path_len, SERVER_RESPONSE_DELAY); + if (reply) sendDirect(reply, reply_path, reply_path_len, SERVER_RESPONSE_DELAY); } } } @@ -867,13 +861,13 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc set_radio_at = revert_radio_at = 0; _logging = false; region_load_active = false; + recv_pkt_region = NULL; #if MAX_NEIGHBOURS memset(neighbours, 0, sizeof(neighbours)); #endif // defaults - memset(&_prefs, 0, sizeof(_prefs)); _prefs.airtime_factor = 1.0; _prefs.rx_delay_base = 0.0f; // turn off by default, was 10.0; _prefs.tx_delay_factor = 0.5f; // was 0.25f @@ -893,6 +887,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.flood_max_unscoped = 64; _prefs.flood_max_advert = 8; _prefs.interference_threshold = 0; // disabled + _prefs.cad_enabled = 0; // hardware CAD before TX (off by default; 'set cad on') // bridge defaults _prefs.bridge_enabled = 1; // enabled @@ -917,6 +912,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.rx_boosted_gain = 1; // enabled by default; #endif #endif + _prefs.radio_fem_rxgain = 1; pending_discover_tag = 0; pending_discover_until = 0; @@ -965,6 +961,7 @@ void MyMesh::begin(FILESYSTEM *fs) { radio_driver.setRxBoostedGainMode(_prefs.rx_boosted_gain); MESH_DEBUG_PRINTLN("RX Boosted Gain Mode: %s", radio_driver.getRxBoostedGainMode() ? "Enabled" : "Disabled"); + board.setLoRaFemLnaEnabled(_prefs.radio_fem_rxgain); updateAdvertTimer(); updateFloodAdvertTimer(); @@ -1059,9 +1056,13 @@ void MyMesh::setTxPower(int8_t power_dbm) { radio_driver.setTxPower(power_dbm); } -#if defined(USE_SX1262) || defined(USE_SX1268) -void MyMesh::setRxBoostedGain(bool enable) { - radio_driver.setRxBoostedGainMode(enable); +bool MyMesh::setRxBoostedGain(bool enable) { + return radio_driver.setRxBoostedGainMode(enable); +} + +#if defined(USE_LR2021) +bool MyMesh::configSideDetectors(const uint8_t sideDetSFs[], uint8_t num, float bw) { + return radio_driver.configSideDetectors(sideDetSFs, num, bw); } #endif diff --git a/examples/simple_repeater/MyMesh.h b/examples/simple_repeater/MyMesh.h index 7597c6c6f6..2f923c871a 100644 --- a/examples/simple_repeater/MyMesh.h +++ b/examples/simple_repeater/MyMesh.h @@ -11,6 +11,7 @@ #include #elif defined(ESP32) #include + using File = fs::File; #endif #ifdef WITH_RS232_BRIDGE @@ -69,11 +70,11 @@ struct NeighbourInfo { }; #ifndef FIRMWARE_BUILD_DATE - #define FIRMWARE_BUILD_DATE "6 Jun 2026" + #define FIRMWARE_BUILD_DATE "9 Aug 2026" #endif #ifndef FIRMWARE_VERSION - #define FIRMWARE_VERSION "v1.16.0" + #define FIRMWARE_VERSION "v1.17.0" #endif #define FIRMWARE_ROLE "repeater" @@ -91,8 +92,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { CommonCLI _cli; uint8_t reply_data[MAX_PACKET_PAYLOAD]; uint8_t reply_path[MAX_PATH_SIZE]; - int8_t reply_path_len; - uint8_t reply_path_hash_size; + uint8_t reply_path_len; TransportKeyStore key_store; RegionMap region_map, temp_map; RegionEntry* load_stack[8]; @@ -150,6 +150,9 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { int getInterferenceThreshold() const override { return _prefs.interference_threshold; } + bool getCADEnabled() const override { + return _prefs.cad_enabled; + } int getAGCResetInterval() const override { return ((int)_prefs.agc_reset_interval) * 4000; // milliseconds } @@ -163,7 +166,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { } #endif - bool filterRecvFloodPacket(mesh::Packet* pkt) override; + mesh::DispatcherAction onRecvPacket(mesh::Packet* pkt) override; void onAnonDataRecv(mesh::Packet* packet, const uint8_t* secret, const mesh::Identity& sender, uint8_t* data, size_t len) override; int searchPeersByHash(const uint8_t* hash) override; @@ -249,7 +252,10 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { // To check if there is pending work bool hasPendingWork() const; -#if defined(USE_SX1262) || defined(USE_SX1268) - void setRxBoostedGain(bool enable) override; -#endif + bool setRxBoostedGain(bool enable) override; + + #if defined(USE_LR2021) + virtual bool configSideDetectors(const uint8_t sideDetSFs[], uint8_t num, float bw) override; + #endif + }; diff --git a/examples/simple_repeater/UITask.cpp b/examples/simple_repeater/UITask.cpp index 6a85143887..e7225557dd 100644 --- a/examples/simple_repeater/UITask.cpp +++ b/examples/simple_repeater/UITask.cpp @@ -1,4 +1,5 @@ #include "UITask.h" +#include "target.h" #include #include @@ -9,6 +10,8 @@ #define AUTO_OFF_MILLIS 20000 // 20 seconds #define BOOT_SCREEN_MILLIS 4000 // 4 seconds +#define POWEROFF_DELAY 3000 + // 'meshcore', 128x13px static const uint8_t meshcore_logo [] PROGMEM = { 0x3c, 0x01, 0xe3, 0xff, 0xc7, 0xff, 0x8f, 0x03, 0x87, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, @@ -29,9 +32,14 @@ static const uint8_t meshcore_logo [] PROGMEM = { void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* firmware_version) { _prevBtnState = HIGH; _auto_off = millis() + AUTO_OFF_MILLIS; + _started_at = millis(); _node_prefs = node_prefs; _display->turnOn(); +#if defined(PIN_USER_BTN) && defined(DISPLAY_CLASS) + user_btn.begin(); +#endif + // strip off dash and commit hash by changing dash to null terminator // e.g: v1.2.3-abcdef -> v1.2.3 char *version = strdup(firmware_version); @@ -41,47 +49,56 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi } // v1.2.3 (1 Jan 2025) - sprintf(_version_info, "%s (%s)", version, build_date); + snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date); + free(version); } void UITask::renderCurrScreen() { char tmp[80]; - if (millis() < BOOT_SCREEN_MILLIS) { // boot screen + if (millis() < _started_at + BOOT_SCREEN_MILLIS) { // boot screen // meshcore logo - _display->setColor(DisplayDriver::BLUE); + _display->setColor(UIColor::corp_blue); int logoWidth = 128; _display->drawXbm((_display->width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); // meshcore website const char* website = "https://meshcore.io"; - _display->setColor(DisplayDriver::LIGHT); + _display->setColor(UIColor::primary_txt); _display->setTextSize(1); - uint16_t websiteWidth = _display->getTextWidth(website); - _display->setCursor((_display->width() - websiteWidth) / 2, 22); - _display->print(website); + _display->drawTextCentered(_display->width() / 2, 22, website); // version info - _display->setColor(DisplayDriver::LIGHT); _display->setTextSize(1); - uint16_t versionWidth = _display->getTextWidth(_version_info); - _display->setCursor((_display->width() - versionWidth) / 2, 35); - _display->print(_version_info); + _display->drawTextCentered(_display->width() / 2, 35, _version_info); // node type const char* node_type = "< Repeater >"; - uint16_t typeWidth = _display->getTextWidth(node_type); - _display->setCursor((_display->width() - typeWidth) / 2, 48); - _display->print(node_type); - } else { // home screen - // node name + _display->drawTextCentered(_display->width() / 2, 48, node_type); + } else if (_powering_off_at > 0) { + // meshcore logo + _display->setColor(UIColor::corp_blue); + int logoWidth = 128; + _display->drawXbm((_display->width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); + + // meshcore website + const char* website = "https://meshcore.io"; + _display->setColor(UIColor::primary_txt); + _display->setTextSize(1); + _display->drawTextCentered(_display->width()/ 2, 22, website); + + // Powering off + const char* poweroff_string = "Turning OFF"; + uint16_t poffWidth = _display->getTextWidth(poweroff_string); + _display->setCursor((_display->width() - poffWidth) / 2, 48); + _display->drawTextCentered(_display->width()/2, 48, poweroff_string); + } else { _display->setCursor(0, 0); _display->setTextSize(1); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); _display->print(_node_prefs->node_name); // freq / sf _display->setCursor(0, 20); - _display->setColor(DisplayDriver::YELLOW); sprintf(tmp, "FREQ: %06.3f SF%d", _node_prefs->freq, _node_prefs->sf); _display->print(tmp); @@ -93,21 +110,19 @@ void UITask::renderCurrScreen() { } void UITask::loop() { -#ifdef PIN_USER_BTN - if (millis() >= _next_read) { - int btnState = digitalRead(PIN_USER_BTN); - if (btnState != _prevBtnState) { - if (btnState == USER_BTN_PRESSED) { // pressed? - if (_display->isOn()) { - // TODO: any action ? - } else { - _display->turnOn(); - } - _auto_off = millis() + AUTO_OFF_MILLIS; // extend auto-off timer - } - _prevBtnState = btnState; +#if defined(PIN_USER_BTN) && defined(DISPLAY_CLASS) + int ev = user_btn.check(); + if (ev == BUTTON_EVENT_CLICK) { + if (_display->isOn()) { + // TODO: any action ? + } else { + _display->turnOn(); } - _next_read = millis() + 200; // 5 reads per second + _auto_off = millis() + AUTO_OFF_MILLIS; // extend auto-off timer + } else if (ev == BUTTON_EVENT_LONG_PRESS) { + _display->turnOn(); + Serial.println("Powering Off"); + _powering_off_at = millis() + POWEROFF_DELAY; } #endif @@ -123,4 +138,13 @@ void UITask::loop() { _display->turnOff(); } } + + if (_powering_off_at > 0) { // power off timer armed +#ifdef LED_PIN + digitalWrite(LED_PIN, LED_STATE_ON); // switch on the led until poweroff +#endif + if (millis() > _powering_off_at) { + _board->powerOff(); // should not return + } + } } diff --git a/examples/simple_repeater/UITask.h b/examples/simple_repeater/UITask.h index a27259f117..d8e3ce1d2f 100644 --- a/examples/simple_repeater/UITask.h +++ b/examples/simple_repeater/UITask.h @@ -4,15 +4,18 @@ #include class UITask { + mesh::MainBoard* _board; DisplayDriver* _display; unsigned long _next_read, _next_refresh, _auto_off; int _prevBtnState; NodePrefs* _node_prefs; char _version_info[32]; + unsigned long _powering_off_at = 0; + unsigned long _started_at = 0; void renderCurrScreen(); public: - UITask(DisplayDriver& display) : _display(&display) { _next_read = _next_refresh = 0; } + UITask(mesh::MainBoard& board, DisplayDriver& display) : _board(&board), _display(&display) { _next_read = _next_refresh = 0; } void begin(NodePrefs* node_prefs, const char* build_date, const char* firmware_version); void loop(); diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 2ce056f521..a714db68ec 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -5,7 +5,12 @@ #ifdef DISPLAY_CLASS #include "UITask.h" - static UITask ui_task(display); + static UITask ui_task(board, display); +#endif + +#ifdef ETHERNET_ENABLED + #define ETHERNET_CLI_BANNER "MeshCore Repeater CLI" + #include #endif StdRNG fast_rng; @@ -18,6 +23,9 @@ void halt() { } static char command[160]; +#ifdef ETHERNET_ENABLED +static char ethernet_command[160]; +#endif // For power saving unsigned long POWERSAVING_FIRSTSLEEP_SECS = 120; // The first sleep (if enabled) from boot @@ -33,6 +41,10 @@ void setup() { board.begin(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.begin(); +#endif + #if defined(MESH_DEBUG) && defined(NRF52_PLATFORM) // give some extra time for serial to settle so // boot debug messages can be seen on terminal @@ -86,6 +98,9 @@ void setup() { mesh::Utils::printHex(Serial, the_mesh.self_id.pub_key, PUB_KEY_SIZE); Serial.println(); command[0] = 0; +#ifdef ETHERNET_ENABLED + ethernet_command[0] = 0; +#endif sensors.begin(); @@ -95,6 +110,10 @@ void setup() { ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION); #endif +#ifdef ETHERNET_ENABLED + ethernet_start_task(); +#endif + // send out initial zero hop Advertisement to the mesh #if ENABLE_ADVERT_ON_BOOT == 1 the_mesh.sendSelfAdvertisement(16000, false); @@ -104,6 +123,7 @@ void setup() { } void loop() { + // Handle Serial CLI int len = strlen(command); while (Serial.available() && len < sizeof(command)-1) { char c = Serial.read(); @@ -122,7 +142,14 @@ void loop() { Serial.print('\n'); command[len - 1] = 0; // replace newline with C string null terminator char reply[160]; + reply[0] = 0; +#ifdef ETHERNET_ENABLED + if (!ethernet_handle_command(command, reply)) { + the_mesh.handleCommand(0, command, reply); + } +#else the_mesh.handleCommand(0, command, reply); // NOTE: there is no sender_timestamp via serial! +#endif if (reply[0]) { Serial.print(" -> "); Serial.println(reply); } @@ -130,7 +157,20 @@ void loop() { command[0] = 0; // reset command buffer } -#if defined(PIN_USER_BTN) && defined(_SEEED_SENSECAP_SOLAR_H_) +#ifdef ETHERNET_ENABLED + ethernet_loop_maintain(); + if (ethernet_read_line(ethernet_command, sizeof(ethernet_command))) { + char reply[160]; + reply[0] = 0; + if (!ethernet_handle_command(ethernet_command, reply)) { + the_mesh.handleCommand(0, ethernet_command, reply); + } + ethernet_send_reply(reply); + ethernet_command[0] = 0; + } +#endif + +#if defined(PIN_USER_BTN) && defined(_SEEED_SENSECAP_SOLAR_H_) && !defined(DISPLAY_CLASS) // Hold the user button to power off the SenseCAP Solar repeater. int btnState = digitalRead(PIN_USER_BTN); if (btnState == LOW) { @@ -152,6 +192,9 @@ void loop() { #endif rtc_clock.tick(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.loop(); +#endif if (the_mesh.getNodePrefs()->powersaving_enabled && !the_mesh.hasPendingWork()) { #if defined(NRF52_PLATFORM) board.sleep(0); // nrf ignores seconds param, sleeps whenever possible diff --git a/examples/simple_room_server/MyMesh.cpp b/examples/simple_room_server/MyMesh.cpp index 98b22fdb72..0aff39cc1a 100644 --- a/examples/simple_room_server/MyMesh.cpp +++ b/examples/simple_room_server/MyMesh.cpp @@ -39,18 +39,35 @@ struct ServerStats { }; void MyMesh::addPost(ClientInfo *client, const char *postData) { + storePost(client->id, postData); +} + +void MyMesh::addSystemPost(const char *postData) { + if (!postData || postData[0] == 0) return; + + MESH_DEBUG_PRINTLN("room.post: addSystemPost: %s", postData); + + storePost(self_id, postData); +} + +void MyMesh::storePost(const mesh::Identity &author, const char *postData) { + int idx = next_post_idx; // TODO: suggested postData format: /<descrption> - posts[next_post_idx].author = client->id; // add to cyclic queue - StrHelper::strncpy(posts[next_post_idx].text, postData, MAX_POST_TEXT_LEN); + posts[idx].author = author; // add to cyclic queue + StrHelper::strncpy(posts[idx].text, postData, MAX_POST_TEXT_LEN); - posts[next_post_idx].post_timestamp = getRTCClock()->getCurrentTimeUnique(); + posts[idx].post_timestamp = getRTCClock()->getCurrentTimeUnique(); + MESH_DEBUG_PRINTLN("room.post: storePost idx=%d text=%s", idx, posts[idx].text); + MESH_DEBUG_PRINTLN("room.post: timestamp=%u", posts[idx].post_timestamp); next_post_idx = (next_post_idx + 1) % MAX_UNSYNCED_POSTS; next_push = futureMillis(PUSH_NOTIFY_DELAY_MILLIS); _num_posted++; // stats + MESH_DEBUG_PRINTLN("room.post: next_post_idx=%d num_posted=%d push scheduled", next_post_idx, _num_posted); } void MyMesh::pushPostToClient(ClientInfo *client, PostInfo &post) { + MESH_DEBUG_PRINTLN("room.post: pushPostToClient text=%s", post.text); int len = 0; memcpy(&reply_data[len], &post.post_timestamp, 4); len += 4; // this is a PAST timestamp... but should be accepted by client @@ -290,8 +307,7 @@ bool MyMesh::allowPacketForward(const mesh::Packet *packet) { return true; } -bool MyMesh::filterRecvFloodPacket(mesh::Packet* pkt) { - // just try to determine region for packet (apply later in allowPacketForward()) +mesh::DispatcherAction MyMesh::onRecvPacket(mesh::Packet* pkt) { if (pkt->getRouteType() == ROUTE_TYPE_TRANSPORT_FLOOD) { recv_pkt_region = region_map.findMatch(pkt, REGION_DENY_FLOOD); } else if (pkt->getRouteType() == ROUTE_TYPE_FLOOD) { @@ -303,8 +319,7 @@ bool MyMesh::filterRecvFloodPacket(mesh::Packet* pkt) { } else { recv_pkt_region = NULL; } - // do normal processing - return false; + return Mesh::onRecvPacket(pkt); } void MyMesh::onAnonDataRecv(mesh::Packet *packet, const uint8_t *secret, const mesh::Identity &sender, @@ -627,9 +642,9 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _logging = false; region_load_active = false; set_radio_at = revert_radio_at = 0; + recv_pkt_region = NULL; // defaults - memset(&_prefs, 0, sizeof(_prefs)); _prefs.airtime_factor = 1.0; _prefs.rx_delay_base = 0.0f; // off by default, was 10.0 _prefs.tx_delay_factor = 0.5f; // was 0.25f; @@ -650,6 +665,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.flood_max_unscoped = 64; _prefs.flood_max_advert = 8; _prefs.interference_threshold = 0; // disabled + _prefs.cad_enabled = 0; // hardware CAD before TX (off by default; 'set cad on') #ifdef ROOM_PASSWORD StrHelper::strncpy(_prefs.guest_password, ROOM_PASSWORD, sizeof(_prefs.guest_password)); #endif @@ -659,6 +675,15 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.gps_interval = 0; _prefs.advert_loc_policy = ADVERT_LOC_PREFS; +#if defined(USE_SX1262) || defined(USE_SX1268) +#ifdef SX126X_RX_BOOSTED_GAIN + _prefs.rx_boosted_gain = SX126X_RX_BOOSTED_GAIN; +#else + _prefs.rx_boosted_gain = 1; // enabled by default; +#endif +#endif + _prefs.radio_fem_rxgain = 1; + next_post_idx = 0; next_client_idx = 0; next_push = 0; @@ -699,6 +724,8 @@ void MyMesh::begin(FILESYSTEM *fs) { radio_driver.setParams(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr); radio_driver.setTxPower(_prefs.tx_power_dbm); + radio_driver.setRxBoostedGainMode(_prefs.rx_boosted_gain); + board.setLoRaFemLnaEnabled(_prefs.radio_fem_rxgain); updateAdvertTimer(); updateFloodAdvertTimer(); @@ -805,6 +832,10 @@ void MyMesh::setTxPower(int8_t power_dbm) { radio_driver.setTxPower(power_dbm); } +bool MyMesh::setRxBoostedGain(bool enable) { + return radio_driver.setRxBoostedGainMode(enable); +} + void MyMesh::saveIdentity(const mesh::LocalIdentity &new_id) { #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) IdentityStore store(*_fs, ""); @@ -934,6 +965,15 @@ void MyMesh::handleCommand(uint32_t sender_timestamp, char *command, char *reply Serial.printf("\n"); } reply[0] = 0; + } else if (strncmp(command, "room.post", 9) == 0) { + char* msg = command + 9; + while (*msg == ' ') msg++; + if (*msg == 0) { + snprintf(reply, MAX_POST_TEXT_LEN, "ERR empty message"); + } else { + addSystemPost(msg); + snprintf(reply, MAX_POST_TEXT_LEN, "OK"); + } } else{ _cli.handleCommand(sender_timestamp, command, reply); // common CLI commands } diff --git a/examples/simple_room_server/MyMesh.h b/examples/simple_room_server/MyMesh.h index 5277ddad61..878c2e9593 100644 --- a/examples/simple_room_server/MyMesh.h +++ b/examples/simple_room_server/MyMesh.h @@ -27,11 +27,11 @@ /* ------------------------------ Config -------------------------------- */ #ifndef FIRMWARE_BUILD_DATE - #define FIRMWARE_BUILD_DATE "6 Jun 2026" + #define FIRMWARE_BUILD_DATE "9 Aug 2026" #endif #ifndef FIRMWARE_VERSION - #define FIRMWARE_VERSION "v1.16.0" + #define FIRMWARE_VERSION "v1.17.0" #endif #ifndef LORA_FREQ @@ -119,6 +119,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { int matching_peer_indexes[MAX_CLIENTS]; void addPost(ClientInfo* client, const char* postData); + void storePost(const mesh::Identity& author, const char* postData); void pushPostToClient(ClientInfo* client, PostInfo& post); uint8_t getUnsyncedCount(ClientInfo* client); bool processAck(const uint8_t *data); @@ -144,6 +145,9 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { int getInterferenceThreshold() const override { return _prefs.interference_threshold; } + bool getCADEnabled() const override { + return _prefs.cad_enabled; + } int getAGCResetInterval() const override { return ((int)_prefs.agc_reset_interval) * 4000; // milliseconds } @@ -151,7 +155,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { return _prefs.multi_acks; } - bool filterRecvFloodPacket(mesh::Packet* pkt) override; + mesh::DispatcherAction onRecvPacket(mesh::Packet* pkt) override; bool allowPacketForward(const mesh::Packet* packet) override; void onAnonDataRecv(mesh::Packet* packet, const uint8_t* secret, const mesh::Identity& sender, uint8_t* data, size_t len) override; @@ -173,6 +177,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { MyMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::MillisecondClock& ms, mesh::RNG& rng, mesh::RTCClock& rtc, mesh::MeshTables& tables); void begin(FILESYSTEM* fs); + void addSystemPost(const char* postData); const char* getFirmwareVer() override { return FIRMWARE_VERSION; } const char* getBuildDate() override { return FIRMWARE_BUILD_DATE; } @@ -203,6 +208,7 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks { void dumpLogFile() override; void setTxPower(int8_t power_dbm) override; + bool setRxBoostedGain(bool enable) override; void formatNeighborsReply(char *reply) override { strcpy(reply, "not supported"); diff --git a/examples/simple_room_server/UITask.cpp b/examples/simple_room_server/UITask.cpp index 640a1d2d10..8e4c2fcf64 100644 --- a/examples/simple_room_server/UITask.cpp +++ b/examples/simple_room_server/UITask.cpp @@ -41,27 +41,27 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi } // v1.2.3 (1 Jan 2025) - sprintf(_version_info, "%s (%s)", version, build_date); + snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date); + free(version); } void UITask::renderCurrScreen() { char tmp[80]; if (millis() < BOOT_SCREEN_MILLIS) { // boot screen // meshcore logo - _display->setColor(DisplayDriver::BLUE); + _display->setColor(UIColor::corp_blue); int logoWidth = 128; _display->drawXbm((_display->width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); // meshcore website const char* website = "https://meshcore.io"; - _display->setColor(DisplayDriver::LIGHT); + _display->setColor(UIColor::primary_txt); _display->setTextSize(1); uint16_t websiteWidth = _display->getTextWidth(website); _display->setCursor((_display->width() - websiteWidth) / 2, 22); _display->print(website); // version info - _display->setColor(DisplayDriver::LIGHT); _display->setTextSize(1); uint16_t versionWidth = _display->getTextWidth(_version_info); _display->setCursor((_display->width() - versionWidth) / 2, 35); @@ -76,12 +76,11 @@ void UITask::renderCurrScreen() { // node name _display->setCursor(0, 0); _display->setTextSize(1); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); _display->print(_node_prefs->node_name); // freq / sf _display->setCursor(0, 20); - _display->setColor(DisplayDriver::YELLOW); sprintf(tmp, "FREQ: %06.3f SF%d", _node_prefs->freq, _node_prefs->sf); _display->print(tmp); diff --git a/examples/simple_room_server/main.cpp b/examples/simple_room_server/main.cpp index a3798b2175..d833fff39e 100644 --- a/examples/simple_room_server/main.cpp +++ b/examples/simple_room_server/main.cpp @@ -3,6 +3,11 @@ #include "MyMesh.h" +#ifdef ETHERNET_ENABLED + #define ETHERNET_CLI_BANNER "MeshCore Room Server CLI" + #include <helpers/nrf52/EthernetCLI.h> +#endif + #ifdef DISPLAY_CLASS #include "UITask.h" static UITask ui_task(display); @@ -17,6 +22,9 @@ void halt() { } static char command[MAX_POST_TEXT_LEN+1]; +#ifdef ETHERNET_ENABLED +static char ethernet_command[MAX_POST_TEXT_LEN+1]; +#endif void setup() { Serial.begin(115200); @@ -24,6 +32,10 @@ void setup() { board.begin(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.begin(); +#endif + #ifdef DISPLAY_CLASS if (display.begin()) { display.startFrame(); @@ -67,6 +79,9 @@ void setup() { mesh::Utils::printHex(Serial, the_mesh.self_id.pub_key, PUB_KEY_SIZE); Serial.println(); command[0] = 0; +#ifdef ETHERNET_ENABLED + ethernet_command[0] = 0; +#endif sensors.begin(); @@ -76,6 +91,10 @@ void setup() { ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION); #endif +#ifdef ETHERNET_ENABLED + ethernet_start_task(); +#endif + // send out initial zero hop Advertisement to the mesh #if ENABLE_ADVERT_ON_BOOT == 1 the_mesh.sendSelfAdvertisement(16000, false); @@ -101,7 +120,14 @@ void loop() { if (len > 0 && command[len - 1] == '\r') { // received complete line command[len - 1] = 0; // replace newline with C string null terminator char reply[160]; + reply[0] = 0; +#ifdef ETHERNET_ENABLED + if (!ethernet_handle_command(command, reply)) { + the_mesh.handleCommand(0, command, reply); + } +#else the_mesh.handleCommand(0, command, reply); // NOTE: there is no sender_timestamp via serial! +#endif if (reply[0]) { Serial.print(" -> "); Serial.println(reply); } @@ -109,10 +135,26 @@ void loop() { command[0] = 0; // reset command buffer } +#ifdef ETHERNET_ENABLED + ethernet_loop_maintain(); + if (ethernet_read_line(ethernet_command, sizeof(ethernet_command))) { + char reply[160]; + reply[0] = 0; + if (!ethernet_handle_command(ethernet_command, reply)) { + the_mesh.handleCommand(0, ethernet_command, reply); + } + ethernet_send_reply(reply); + ethernet_command[0] = 0; + } +#endif + the_mesh.loop(); sensors.loop(); #ifdef DISPLAY_CLASS ui_task.loop(); #endif rtc_clock.tick(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.loop(); +#endif } diff --git a/examples/simple_secure_chat/main.cpp b/examples/simple_secure_chat/main.cpp index d50667368c..da42ddcbbd 100644 --- a/examples/simple_secure_chat/main.cpp +++ b/examples/simple_secure_chat/main.cpp @@ -135,7 +135,7 @@ class MyMesh : public BaseChatMesh, ContactVisitor { File file = _fs->open("/contacts", "w", true); #endif if (file) { - ContactsIterator iter; + ContactsIterator iter = startContactsIterator(); ContactInfo c; uint8_t unused = 0; uint32_t reserved = 0; @@ -560,6 +560,10 @@ void setup() { board.begin(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.begin(); +#endif + if (!radio_init()) { halt(); } fast_rng.begin(radio_driver.getRngSeed()); @@ -591,4 +595,7 @@ void setup() { void loop() { the_mesh.loop(); rtc_clock.tick(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.loop(); +#endif } diff --git a/examples/simple_sensor/SensorMesh.cpp b/examples/simple_sensor/SensorMesh.cpp index 879fcbf026..17f8e323e5 100644 --- a/examples/simple_sensor/SensorMesh.cpp +++ b/examples/simple_sensor/SensorMesh.cpp @@ -323,6 +323,9 @@ uint32_t SensorMesh::getDirectRetransmitDelay(const mesh::Packet* packet) { int SensorMesh::getInterferenceThreshold() const { return _prefs.interference_threshold; } +bool SensorMesh::getCADEnabled() const { + return _prefs.cad_enabled; +} int SensorMesh::getAGCResetInterval() const { return ((int)_prefs.agc_reset_interval) * 4000; // milliseconds } @@ -707,7 +710,6 @@ SensorMesh::SensorMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::Millise set_radio_at = revert_radio_at = 0; // defaults - memset(&_prefs, 0, sizeof(_prefs)); _prefs.airtime_factor = 1.0; _prefs.rx_delay_base = 0.0f; // turn off by default, was 10.0; _prefs.tx_delay_factor = 0.5f; // was 0.25f @@ -726,11 +728,13 @@ SensorMesh::SensorMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::Millise _prefs.disable_fwd = true; _prefs.flood_max = 64; _prefs.interference_threshold = 0; // disabled + _prefs.cad_enabled = 0; // hardware CAD before TX (off by default; 'set cad on') // GPS defaults _prefs.gps_enabled = 0; _prefs.gps_interval = 0; _prefs.advert_loc_policy = ADVERT_LOC_PREFS; + _prefs.radio_fem_rxgain = 1; memset(default_scope.key, 0, sizeof(default_scope.key)); } @@ -766,6 +770,7 @@ void SensorMesh::begin(FILESYSTEM* fs) { radio_driver.setParams(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr); radio_driver.setTxPower(_prefs.tx_power_dbm); + board.setLoRaFemLnaEnabled(_prefs.radio_fem_rxgain); updateAdvertTimer(); updateFloodAdvertTimer(); diff --git a/examples/simple_sensor/SensorMesh.h b/examples/simple_sensor/SensorMesh.h index c9f135f65e..3a33b638c9 100644 --- a/examples/simple_sensor/SensorMesh.h +++ b/examples/simple_sensor/SensorMesh.h @@ -34,11 +34,11 @@ #define PERM_RECV_ALERTS_HI (1 << 7) // high priority alerts #ifndef FIRMWARE_BUILD_DATE - #define FIRMWARE_BUILD_DATE "6 Jun 2026" + #define FIRMWARE_BUILD_DATE "9 Aug 2026" #endif #ifndef FIRMWARE_VERSION - #define FIRMWARE_VERSION "v1.16.0" + #define FIRMWARE_VERSION "v1.17.0" #endif #define FIRMWARE_ROLE "sensor" @@ -120,6 +120,7 @@ class SensorMesh : public mesh::Mesh, public CommonCLICallbacks { uint32_t getRetransmitDelay(const mesh::Packet* packet) override; uint32_t getDirectRetransmitDelay(const mesh::Packet* packet) override; int getInterferenceThreshold() const override; + bool getCADEnabled() const override; int getAGCResetInterval() const override; void onAnonDataRecv(mesh::Packet* packet, const uint8_t* secret, const mesh::Identity& sender, uint8_t* data, size_t len) override; int searchPeersByHash(const uint8_t* hash) override; diff --git a/examples/simple_sensor/UITask.cpp b/examples/simple_sensor/UITask.cpp index 757ea1dc60..75a0b46509 100644 --- a/examples/simple_sensor/UITask.cpp +++ b/examples/simple_sensor/UITask.cpp @@ -41,27 +41,27 @@ void UITask::begin(NodePrefs* node_prefs, const char* build_date, const char* fi } // v1.2.3 (1 Jan 2025) - sprintf(_version_info, "%s (%s)", version, build_date); + snprintf(_version_info, sizeof(_version_info), "%s (%s)", version, build_date); + free(version); } void UITask::renderCurrScreen() { char tmp[80]; if (millis() < BOOT_SCREEN_MILLIS) { // boot screen // meshcore logo - _display->setColor(DisplayDriver::BLUE); + _display->setColor(UIColor::corp_blue); int logoWidth = 128; _display->drawXbm((_display->width() - logoWidth) / 2, 3, meshcore_logo, logoWidth, 13); // meshcore website const char* website = "https://meshcore.io"; - _display->setColor(DisplayDriver::LIGHT); + _display->setColor(UIColor::primary_txt); _display->setTextSize(1); uint16_t websiteWidth = _display->getTextWidth(website); _display->setCursor((_display->width() - websiteWidth) / 2, 22); _display->print(website); // version info - _display->setColor(DisplayDriver::LIGHT); _display->setTextSize(1); uint16_t versionWidth = _display->getTextWidth(_version_info); _display->setCursor((_display->width() - versionWidth) / 2, 35); @@ -76,12 +76,11 @@ void UITask::renderCurrScreen() { // node name _display->setCursor(0, 0); _display->setTextSize(1); - _display->setColor(DisplayDriver::GREEN); + _display->setColor(UIColor::primary_txt); _display->print(_node_prefs->node_name); // freq / sf _display->setCursor(0, 20); - _display->setColor(DisplayDriver::YELLOW); sprintf(tmp, "FREQ: %06.3f SF%d", _node_prefs->freq, _node_prefs->sf); _display->print(tmp); diff --git a/examples/simple_sensor/main.cpp b/examples/simple_sensor/main.cpp index cace67a08c..69182f3a7a 100644 --- a/examples/simple_sensor/main.cpp +++ b/examples/simple_sensor/main.cpp @@ -58,6 +58,10 @@ void setup() { board.begin(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.begin(); +#endif + #ifdef DISPLAY_CLASS if (display.begin()) { display.startFrame(); @@ -147,4 +151,7 @@ void loop() { ui_task.loop(); #endif rtc_clock.tick(); +#ifdef HAS_EXTERNAL_WATCHDOG + external_watchdog.loop(); +#endif } diff --git a/platformio.ini b/platformio.ini index e16f7b8304..e78124a40b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -19,7 +19,8 @@ monitor_speed = 115200 lib_deps = SPI Wire - jgromes/RadioLib @ ^7.6.0 + ;jgromes/RadioLib @ ^7.7.1 + https://github.com/jgromes/RadioLib.git#6d8934836678d8894e3d556550475b37dce3e2b6 rweather/Crypto @ ^0.4.0 adafruit/RTClib @ ^2.1.3 melopero/Melopero RV3028 @ ^1.1.0 @@ -90,16 +91,17 @@ build_flags = ${arduino_base.build_flags} -D NRF52_PLATFORM -D LFS_NO_ASSERT=1 -D EXTRAFS=1 + -D USE_CC310_HW_CRYPTO=1 lib_deps = ${arduino_base.lib_deps} - https://github.com/oltaco/CustomLFS#0.2.2 + https://github.com/oltaco/CustomLFS#0.2.3 ; ----------------- RP2040 --------------------- [rp2040_base] extends = arduino_base upload_protocol = picotool board_build.core = earlephilhower -platform = https://github.com/maxgerhardt/platform-raspberrypi.git#4e22a0d ; framework-arduinopico @ 1.50600.0+sha.6a1d13e9 +platform = https://github.com/maxgerhardt/platform-raspberrypi.git ; framework-arduinopico @ 1.50600.0+sha.6a1d13e9 build_flags = ${arduino_base.build_flags} -D RP2040_PLATFORM @@ -157,12 +159,31 @@ lib_deps = [env:native] platform = native +test_framework = googletest build_flags = -std=c++17 -I src -I test/mocks test_build_src = yes +test_ignore = test_kiss_modem build_src_filter = -<*> +<../src/Utils.cpp> + +<../src/Packet.cpp> + +<../src/helpers/ConfigSerializer.cpp> +lib_deps = + google/googletest @ 1.17.0 + +[env:native_kiss_modem] +platform = native +test_framework = googletest +build_flags = -std=c++17 + -I test/mocks + -I src + -I examples/kiss_modem +test_build_src = yes +test_filter = test_kiss_modem +build_src_filter = + -<*> + +<../examples/kiss_modem/KissModem.cpp> lib_deps = google/googletest @ 1.17.0 diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index 9d7a11131d..c0610b7f8a 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -66,6 +66,7 @@ uint32_t Dispatcher::getCADFailMaxDuration() const { void Dispatcher::loop() { if (millisHasNowPassed(next_floor_calib_time)) { _radio->triggerNoiseFloorCalibrate(getInterferenceThreshold()); + _radio->setCADEnabled(getCADEnabled()); next_floor_calib_time = futureMillis(NOISE_FLOOR_CALIB_INTERVAL); } _radio->loop(); diff --git a/src/Dispatcher.h b/src/Dispatcher.h index dd032f130d..aad6cba3ec 100644 --- a/src/Dispatcher.h +++ b/src/Dispatcher.h @@ -65,6 +65,8 @@ class Radio { virtual void triggerNoiseFloorCalibrate(int threshold) { } + virtual void setCADEnabled(bool enable) { } + virtual void resetAGC() { } virtual bool isInRecvMode() const = 0; @@ -166,6 +168,7 @@ class Dispatcher { virtual uint32_t getCADFailRetryDelay() const; virtual uint32_t getCADFailMaxDuration() const; virtual int getInterferenceThreshold() const { return 0; } // disabled by default + virtual bool getCADEnabled() const { return false; } // hardware CAD disabled by default virtual int getAGCResetInterval() const { return 0; } // disabled by default virtual unsigned long getDutyCycleWindowMs() const { return 3600000; } diff --git a/src/Identity.cpp b/src/Identity.cpp index ea546274da..25419fd4fe 100644 --- a/src/Identity.cpp +++ b/src/Identity.cpp @@ -4,6 +4,11 @@ #include <ed_25519.h> #include <Ed25519.h> +#ifdef USE_CC310_HW_CRYPTO +#include <Adafruit_nRFCrypto.h> +#include "nrf_cc310/include/crys_ec_edw_api.h" +#endif + namespace mesh { Identity::Identity() { @@ -15,7 +20,20 @@ Identity::Identity(const char* pub_hex) { } bool Identity::verify(const uint8_t* sig, const uint8_t* message, int msg_len) const { -#if 0 +#ifdef USE_CC310_HW_CRYPTO + // nRF52840 CryptoCell CC310 hardware Ed25519 verification. The software + // implementations need ~3KB of stack (which can overflow the Adafruit core's + // 4KB loop task stack from the advert receive path); the hardware path + // needs much less, around 600-700bytes. The CC310 workspace is static, faster, + // should save power at scale as well. + static CRYS_ECEDW_TempBuff_t cc310_tmp; + nRFCrypto.begin(); + CRYSError_t rc = CRYS_ECEDW_Verify((uint8_t*)sig, CRYS_ECEDW_SIGNATURE_BYTES, + (uint8_t*)pub_key, CRYS_ECEDW_MOD_SIZE_IN_BYTES, + (uint8_t*)message, (size_t)msg_len, &cc310_tmp); + nRFCrypto.end(); + return rc == CRYS_OK; +#elif 0 // NOTE: memory corruption bug was found in this function!! return ed25519_verify(sig, message, msg_len, pub_key); #else diff --git a/src/Mesh.cpp b/src/Mesh.cpp index 87ad61af2e..c11f37cacf 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -55,7 +55,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { uint16_t offset = (uint16_t)pkt->path_len << path_sz; if (offset >= len) { // TRACE has reached end of given path onTraceRecv(pkt, trace_tag, auth_code, flags, pkt->path, &pkt->payload[i], len); - } else if (self_id.isHashMatch(&pkt->payload[i + offset], 1 << path_sz) && allowPacketForward(pkt) && !_tables->hasSeen(pkt)) { + } else if (self_id.isHashMatch(&pkt->payload[i + offset], 1 << path_sz) && allowPacketForward(pkt) && !_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); // append SNR (Not hash!) pkt->path[pkt->path_len++] = (int8_t) (pkt->getSNR()*4); @@ -89,14 +90,16 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { if (pkt->getPayloadType() == PAYLOAD_TYPE_MULTIPART) { return forwardMultipartDirect(pkt); } else if (pkt->getPayloadType() == PAYLOAD_TYPE_ACK) { - if (!_tables->hasSeen(pkt)) { // don't retransmit! + if (!_tables->wasSeen(pkt)) { // don't retransmit! + _tables->markSeen(pkt); removeSelfFromPath(pkt); routeDirectRecvAcks(pkt, 0); } return ACTION_RELEASE; } - if (!_tables->hasSeen(pkt)) { + if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); removeSelfFromPath(pkt); uint32_t d = getDirectRetransmitDelay(pkt); @@ -117,7 +120,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { memcpy(&ack_crc, &pkt->payload[i], 4); i += 4; if (i > pkt->payload_len) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): incomplete ACK packet", getLogDateTime()); - } else if (!_tables->hasSeen(pkt)) { + } else if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); onAckRecv(pkt, ack_crc); action = routeRecvPacket(pkt); } @@ -134,7 +138,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { uint8_t* macAndData = &pkt->payload[i]; // MAC + encrypted data if (i + CIPHER_MAC_SIZE >= pkt->payload_len) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): incomplete data packet", getLogDateTime()); - } else if (!_tables->hasSeen(pkt)) { + } else if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); // NOTE: this is a 'first packet wins' impl. When receiving from multiple paths, the first to arrive wins. // For flood mode, the path may not be the 'best' in terms of hops. // FUTURE: could send back multiple paths, using createPathReturn(), and let sender choose which to use(?) @@ -155,6 +160,10 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { if (pkt->getPayloadType() == PAYLOAD_TYPE_PATH) { int k = 0; uint8_t path_len = data[k++]; + if (!Packet::isValidPathLen(path_len)) { + MESH_DEBUG_PRINTLN("%s PAYLOAD_TYPE_PATH, bad path_len: %u", getLogDateTime(), (uint32_t)path_len); + break; // reject bad encoding + } uint8_t hash_size = (path_len >> 6) + 1; uint8_t hash_count = path_len & 63; uint8_t* path = &data[k]; k += hash_size*hash_count; @@ -193,7 +202,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { uint8_t* macAndData = &pkt->payload[i]; // MAC + encrypted data if (i + 2 >= pkt->payload_len) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): incomplete data packet", getLogDateTime()); - } else if (!_tables->hasSeen(pkt)) { + } else if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); if (self_id.isHashMatch(&dest_hash)) { Identity sender(sender_pub_key); @@ -220,7 +230,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { uint8_t* macAndData = &pkt->payload[i]; // MAC + encrypted data if (i + 2 >= pkt->payload_len) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): incomplete data packet", getLogDateTime()); - } else if (!_tables->hasSeen(pkt)) { + } else if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); // scan channels DB, for all matching hashes of 'channel_hash' (max 4 matches supported ATM) GroupChannel channels[4]; int num = searchChannelsByHash(&channel_hash, channels, 4); @@ -251,7 +262,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): incomplete advertisement packet", getLogDateTime()); } else if (self_id.matches(id.pub_key)) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): receiving SELF advert packet", getLogDateTime()); - } else if (!_tables->hasSeen(pkt)) { + } else if (!_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); uint8_t* app_data = &pkt->payload[i]; int app_data_len = pkt->payload_len - i; if (app_data_len > MAX_ADVERT_DATA_SIZE) { app_data_len = MAX_ADVERT_DATA_SIZE; } @@ -278,7 +290,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { break; } case PAYLOAD_TYPE_RAW_CUSTOM: { - if (pkt->isRouteDirect() && !_tables->hasSeen(pkt)) { + if (pkt->isRouteDirect() && !_tables->wasSeen(pkt)) { + _tables->markSeen(pkt); onRawDataRecv(pkt); //action = routeRecvPacket(pkt); don't flood route these (yet) } @@ -296,7 +309,8 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { tmp.payload_len = pkt->payload_len - 1; memcpy(tmp.payload, &pkt->payload[1], tmp.payload_len); - if (!_tables->hasSeen(&tmp)) { + if (!_tables->wasSeen(&tmp)) { + _tables->markSeen(&tmp); uint32_t ack_crc; memcpy(&ack_crc, tmp.payload, 4); @@ -353,7 +367,8 @@ DispatcherAction Mesh::forwardMultipartDirect(Packet* pkt) { tmp.payload_len = pkt->payload_len - 1; memcpy(tmp.payload, &pkt->payload[1], tmp.payload_len); - if (!_tables->hasSeen(&tmp)) { // don't retransmit! + if (!_tables->wasSeen(&tmp)) { // don't retransmit! + _tables->markSeen(&tmp); removeSelfFromPath(&tmp); routeDirectRecvAcks(&tmp, ((uint32_t)remaining + 1) * 300); // expect multipart ACKs 300ms apart (x2) } @@ -633,7 +648,7 @@ void Mesh::sendFlood(Packet* packet, uint32_t delay_millis, uint8_t path_hash_si packet->header |= ROUTE_TYPE_FLOOD; packet->setPathHashSizeAndCount(path_hash_size, 0); - _tables->hasSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us + _tables->markSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us uint8_t pri; if (packet->getPayloadType() == PAYLOAD_TYPE_PATH) { @@ -662,7 +677,7 @@ void Mesh::sendFlood(Packet* packet, uint16_t* transport_codes, uint32_t delay_m packet->transport_codes[1] = transport_codes[1]; packet->setPathHashSizeAndCount(path_hash_size, 0); - _tables->hasSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us + _tables->markSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us uint8_t pri; if (packet->getPayloadType() == PAYLOAD_TYPE_PATH) { @@ -695,7 +710,7 @@ void Mesh::sendDirect(Packet* packet, const uint8_t* path, uint8_t path_len, uin pri = 0; } } - _tables->hasSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us + _tables->markSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us sendPacket(packet, pri, delay_millis); } @@ -705,7 +720,7 @@ void Mesh::sendZeroHop(Packet* packet, uint32_t delay_millis) { packet->path_len = 0; // path_len of zero means Zero Hop - _tables->hasSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us + _tables->markSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us sendPacket(packet, 0, delay_millis); } @@ -718,7 +733,7 @@ void Mesh::sendZeroHop(Packet* packet, uint16_t* transport_codes, uint32_t delay packet->path_len = 0; // path_len of zero means Zero Hop - _tables->hasSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us + _tables->markSeen(packet); // mark this packet as already sent in case it is rebroadcast back to us sendPacket(packet, 0, delay_millis); } diff --git a/src/Mesh.h b/src/Mesh.h index 2302d6b5b7..49a299a6a4 100644 --- a/src/Mesh.h +++ b/src/Mesh.h @@ -15,8 +15,9 @@ class GroupChannel { */ class MeshTables { public: - virtual bool hasSeen(const Packet* packet) = 0; - virtual void clear(const Packet* packet) = 0; // remove this packet hash from table + virtual bool wasSeen(const Packet* packet) = 0; + virtual void markSeen(const Packet* packet) = 0; + virtual void clear(const Packet* packet) = 0; // remove this packet hash from table }; /** @@ -100,7 +101,7 @@ class Mesh : public Dispatcher { * \param auth_code a code to authenticate the packet * \param flags zero for now * \param path_snrs single byte SNR*4 for each hop in the path - * \param path_hashes hashes if each repeater in the path + * \param path_hashes hashes of each repeater in the path * \param path_len length of the path_snrs[] and path_hashes[] arrays */ virtual void onTraceRecv(Packet* packet, uint32_t tag, uint32_t auth_code, uint8_t flags, const uint8_t* path_snrs, const uint8_t* path_hashes, uint8_t path_len) { } diff --git a/src/MeshCore.h b/src/MeshCore.h index cfa33cf90b..89e60b1f7e 100644 --- a/src/MeshCore.h +++ b/src/MeshCore.h @@ -64,6 +64,9 @@ class MainBoard { virtual uint8_t getStartupReason() const = 0; virtual bool getBootloaderVersion(char* version, size_t max_len) { return false; } virtual bool startOTAUpdate(const char* id, char reply[]) { return false; } // not supported + virtual bool setLoRaFemLnaEnabled(bool enable) { return false; } + virtual bool canControlLoRaFemLna() const { return false; } + virtual bool isLoRaFemLnaEnabled() const { return false; } // Power management interface (boards with power management override these) virtual bool isExternalPowered() { return false; } diff --git a/src/Packet.h b/src/Packet.h index 0886a06c4e..c19d9e9d8f 100644 --- a/src/Packet.h +++ b/src/Packet.h @@ -25,7 +25,7 @@ namespace mesh { #define PAYLOAD_TYPE_GRP_DATA 0x06 // an (unverified) group datagram (prefixed with channel hash, MAC) (enc data: data_type(uint16), data_len, blob) #define PAYLOAD_TYPE_ANON_REQ 0x07 // generic request (prefixed with dest_hash, ephemeral pub_key, MAC) (enc data: ...) #define PAYLOAD_TYPE_PATH 0x08 // returned path (prefixed with dest/src hashes, MAC) (enc data: path, extra) -#define PAYLOAD_TYPE_TRACE 0x09 // trace a path, collecting SNI for each hop +#define PAYLOAD_TYPE_TRACE 0x09 // trace a path, collecting SNR for each hop #define PAYLOAD_TYPE_MULTIPART 0x0A // packet is one of a set of packets #define PAYLOAD_TYPE_CONTROL 0x0B // a control/discovery packet //... diff --git a/src/Utils.cpp b/src/Utils.cpp index 186c8720a2..d4bc8c4502 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -2,6 +2,13 @@ #include <AES.h> #include <SHA256.h> +#ifdef USE_CC310_HW_CRYPTO +#include <Adafruit_nRFCrypto.h> +#include "nrf_cc310/include/crys_hash.h" +#include "nrf_cc310/include/crys_hmac.h" +#include "nrf_cc310/include/ssi_aes.h" +#endif + #ifdef ARDUINO #include <Arduino.h> #endif @@ -15,19 +22,58 @@ uint32_t RNG::nextInt(uint32_t _min, uint32_t _max) { } void Utils::sha256(uint8_t *hash, size_t hash_len, const uint8_t* msg, int msg_len) { +#ifdef USE_CC310_HW_CRYPTO + static CRYS_HASH_Result_t result; + nRFCrypto.begin(); + CRYS_HASH(CRYS_HASH_SHA256_mode, (uint8_t*)msg, (size_t)msg_len, result); + nRFCrypto.end(); + memcpy(hash, result, hash_len); +#else SHA256 sha; sha.update(msg, msg_len); sha.finalize(hash, hash_len); +#endif } void Utils::sha256(uint8_t *hash, size_t hash_len, const uint8_t* frag1, int frag1_len, const uint8_t* frag2, int frag2_len) { +#ifdef USE_CC310_HW_CRYPTO + static CRYS_HASHUserContext_t ctx; + static CRYS_HASH_Result_t result; + nRFCrypto.begin(); + CRYS_HASH_Init(&ctx, CRYS_HASH_SHA256_mode); + CRYS_HASH_Update(&ctx, (uint8_t*)frag1, (size_t)frag1_len); + CRYS_HASH_Update(&ctx, (uint8_t*)frag2, (size_t)frag2_len); + CRYS_HASH_Finish(&ctx, result); + nRFCrypto.end(); + memcpy(hash, result, hash_len); +#else SHA256 sha; sha.update(frag1, frag1_len); sha.update(frag2, frag2_len); sha.finalize(hash, hash_len); +#endif } int Utils::decrypt(const uint8_t* shared_secret, uint8_t* dest, const uint8_t* src, int src_len) { +#ifdef USE_CC310_HW_CRYPTO + static SaSiAesUserContext_t ctx; + SaSiAesUserKeyData_t keyData = { (uint8_t*)shared_secret, CIPHER_KEY_SIZE }; + uint8_t* dp = dest; + const uint8_t* sp = src; + size_t dummy_out = 0; + + nRFCrypto.begin(); + SaSi_AesInit(&ctx, SASI_AES_DECRYPT, SASI_AES_MODE_ECB, SASI_AES_PADDING_NONE); + SaSi_AesSetKey(&ctx, SASI_AES_USER_KEY, &keyData, sizeof(keyData)); + while (sp - src < src_len) { + SaSi_AesBlock(&ctx, (uint8_t*)sp, 16, dp); + dp += 16; sp += 16; + } + SaSi_AesFinish(&ctx, 0, NULL, 0, NULL, &dummy_out); + SaSi_AesFree(&ctx); + nRFCrypto.end(); + return sp - src; +#else AES128 aes; uint8_t* dp = dest; const uint8_t* sp = src; @@ -39,9 +85,34 @@ int Utils::decrypt(const uint8_t* shared_secret, uint8_t* dest, const uint8_t* s } return sp - src; // will always be multiple of 16 +#endif } int Utils::encrypt(const uint8_t* shared_secret, uint8_t* dest, const uint8_t* src, int src_len) { +#ifdef USE_CC310_HW_CRYPTO + static SaSiAesUserContext_t ctx; + SaSiAesUserKeyData_t keyData = { (uint8_t*)shared_secret, CIPHER_KEY_SIZE }; + uint8_t* dp = dest; + size_t dummy_out = 0; + + nRFCrypto.begin(); + SaSi_AesInit(&ctx, SASI_AES_ENCRYPT, SASI_AES_MODE_ECB, SASI_AES_PADDING_NONE); + SaSi_AesSetKey(&ctx, SASI_AES_USER_KEY, &keyData, sizeof(keyData)); + while (src_len >= 16) { + SaSi_AesBlock(&ctx, (uint8_t*)src, 16, dp); + dp += 16; src += 16; src_len -= 16; + } + if (src_len > 0) { // remaining partial block — zero-pad to 16 bytes + uint8_t tmp[16] = {}; + memcpy(tmp, src, src_len); + SaSi_AesBlock(&ctx, tmp, 16, dp); + dp += 16; + } + SaSi_AesFinish(&ctx, 0, NULL, 0, NULL, &dummy_out); + SaSi_AesFree(&ctx); + nRFCrypto.end(); + return dp - dest; +#else AES128 aes; uint8_t* dp = dest; @@ -58,15 +129,27 @@ int Utils::encrypt(const uint8_t* shared_secret, uint8_t* dest, const uint8_t* s dp += 16; } return dp - dest; // will always be multiple of 16 +#endif } int Utils::encryptThenMAC(const uint8_t* shared_secret, uint8_t* dest, const uint8_t* src, int src_len) { int enc_len = encrypt(shared_secret, dest + CIPHER_MAC_SIZE, src, src_len); +#ifdef USE_CC310_HW_CRYPTO + static CRYS_HMACUserContext_t hmac_ctx; + static CRYS_HASH_Result_t hmac_result; + nRFCrypto.begin(); + CRYS_HMAC_Init(&hmac_ctx, CRYS_HASH_SHA256_mode, (uint8_t*)shared_secret, PUB_KEY_SIZE); + CRYS_HMAC_Update(&hmac_ctx, dest + CIPHER_MAC_SIZE, enc_len); + CRYS_HMAC_Finish(&hmac_ctx, hmac_result); + nRFCrypto.end(); + memcpy(dest, hmac_result, CIPHER_MAC_SIZE); +#else SHA256 sha; sha.resetHMAC(shared_secret, PUB_KEY_SIZE); sha.update(dest + CIPHER_MAC_SIZE, enc_len); sha.finalizeHMAC(shared_secret, PUB_KEY_SIZE, dest, CIPHER_MAC_SIZE); +#endif return CIPHER_MAC_SIZE + enc_len; } @@ -75,12 +158,25 @@ int Utils::MACThenDecrypt(const uint8_t* shared_secret, uint8_t* dest, const uin if (src_len <= CIPHER_MAC_SIZE) return 0; // invalid src bytes uint8_t hmac[CIPHER_MAC_SIZE]; +#ifdef USE_CC310_HW_CRYPTO + { + static CRYS_HMACUserContext_t hmac_ctx; + static CRYS_HASH_Result_t hmac_result; + nRFCrypto.begin(); + CRYS_HMAC_Init(&hmac_ctx, CRYS_HASH_SHA256_mode, (uint8_t*)shared_secret, PUB_KEY_SIZE); + CRYS_HMAC_Update(&hmac_ctx, (uint8_t*)(src + CIPHER_MAC_SIZE), src_len - CIPHER_MAC_SIZE); + CRYS_HMAC_Finish(&hmac_ctx, hmac_result); + nRFCrypto.end(); + memcpy(hmac, hmac_result, CIPHER_MAC_SIZE); + } +#else { SHA256 sha; sha.resetHMAC(shared_secret, PUB_KEY_SIZE); sha.update(src + CIPHER_MAC_SIZE, src_len - CIPHER_MAC_SIZE); sha.finalizeHMAC(shared_secret, PUB_KEY_SIZE, hmac, CIPHER_MAC_SIZE); } +#endif if (memcmp(hmac, src, CIPHER_MAC_SIZE) == 0) { return decrypt(shared_secret, dest, src + CIPHER_MAC_SIZE, src_len - CIPHER_MAC_SIZE); } @@ -150,4 +246,4 @@ int Utils::parseTextParts(char* text, const char* parts[], int max_num, char sep return num; } -} \ No newline at end of file +} diff --git a/src/helpers/AdvertDataHelpers.cpp b/src/helpers/AdvertDataHelpers.cpp index 0e05620ec2..998733ae04 100644 --- a/src/helpers/AdvertDataHelpers.cpp +++ b/src/helpers/AdvertDataHelpers.cpp @@ -1,4 +1,5 @@ #include <helpers/AdvertDataHelpers.h> +#include <helpers/UTF8Helpers.h> uint8_t AdvertDataBuilder::encodeTo(uint8_t app_data[]) { app_data[0] = _type; @@ -16,11 +17,12 @@ app_data[0] |= ADV_FEAT2_MASK; memcpy(&app_data[i], &_extra2, 2); i += 2; } - if (_name && *_name != 0) { - app_data[0] |= ADV_NAME_MASK; - const char* sp = _name; - while (*sp && i < MAX_ADVERT_DATA_SIZE) { - app_data[i++] = *sp++; + if (_name && *_name != 0) { + size_t name_len = mesh::validUtf8PrefixLength(_name, MAX_ADVERT_DATA_SIZE - i); + if (name_len > 0) { + app_data[0] |= ADV_NAME_MASK; + memcpy(&app_data[i], _name, name_len); + i += name_len; } } return i; @@ -84,4 +86,4 @@ void AdvertTimeHelper::formatRelativeTimeDiff(char dest[], int32_t seconds_from_ } } } -} \ No newline at end of file +} diff --git a/src/helpers/AutoDiscoverRTCClock.cpp b/src/helpers/AutoDiscoverRTCClock.cpp index a310539bc7..af08fddb03 100644 --- a/src/helpers/AutoDiscoverRTCClock.cpp +++ b/src/helpers/AutoDiscoverRTCClock.cpp @@ -42,6 +42,7 @@ void AutoDiscoverRTCClock::begin(TwoWire& wire) { } if (i2c_probe(wire, PCF8563_ADDRESS)) { + MESH_DEBUG_PRINTLN("PCF8563: Found"); rtc_8563_success = rtc_8563.begin(&wire); } diff --git a/src/helpers/BaseChatMesh.cpp b/src/helpers/BaseChatMesh.cpp index d3ef034e67..972a97e9e6 100644 --- a/src/helpers/BaseChatMesh.cpp +++ b/src/helpers/BaseChatMesh.cpp @@ -68,29 +68,36 @@ void BaseChatMesh::bootstrapRTCfromContacts() { } ContactInfo* BaseChatMesh::allocateContactSlot(bool transient_only) { - if (num_contacts < MAX_CONTACTS) { - return &contacts[num_contacts++]; - } else if (transient_only || shouldOverwriteWhenFull()) { - // Find oldest non-favourite contact by oldest lastmod timestamp - int oldest_idx = -1; - uint32_t oldest_lastmod = 0xFFFFFFFF; - for (int i = 0; i < num_contacts; i++) { - if (transient_only) { - if (contacts[i].type == ADV_TYPE_NONE && contacts[i].lastmod < oldest_lastmod) { - oldest_lastmod = contacts[i].lastmod; - oldest_idx = i; - } - } else { + int oldest_idx = -1; + uint32_t oldest_lastmod = 0xFFFFFFFF; + if (transient_only) { + // only allocate from first N + for (int i = 0; i < MAX_ANON_CONTACTS; i++) { + if (contacts[i].type == ADV_TYPE_NONE && contacts[i].lastmod < oldest_lastmod) { + oldest_lastmod = contacts[i].lastmod; + oldest_idx = i; + } + } + if (oldest_idx >= 0) { + // NOTE: do NOT call onContactOverwrite() + return &contacts[oldest_idx]; + } + } else { + if (num_contacts < MAX_ANON_CONTACTS+MAX_CONTACTS) { + return &contacts[num_contacts++]; + } else if (shouldOverwriteWhenFull()) { + // Find oldest non-favourite contact by oldest lastmod timestamp + for (int i = MAX_ANON_CONTACTS; i < num_contacts; i++) { bool is_favourite = (contacts[i].flags & 0x01) != 0; - if (!is_favourite && contacts[i].lastmod < oldest_lastmod && contacts[i].type != ADV_TYPE_NONE) { + if (!is_favourite && contacts[i].lastmod < oldest_lastmod) { oldest_lastmod = contacts[i].lastmod; oldest_idx = i; } } - } - if (oldest_idx >= 0) { - onContactOverwrite(contacts[oldest_idx].id.pub_key); - return &contacts[oldest_idx]; + if (oldest_idx >= 0) { + onContactOverwrite(contacts[oldest_idx].id.pub_key); + return &contacts[oldest_idx]; + } } } return NULL; // no space, no overwrite or all contacts are all favourites @@ -139,6 +146,11 @@ void BaseChatMesh::onAdvertRecv(mesh::Packet* packet, const mesh::Identity& id, packet->header = save; } + if (from && from->type == ADV_TYPE_NONE) { // already in contacts, but from a temporary ANON_REQ ? + memset(from, 0, sizeof(*from)); // clear the anon/temp slot + from = NULL; // do normal 'add' flow + } + bool is_new = false; // true = not in contacts[], false = exists in contacts[] if (from == NULL) { if (!shouldAutoAddContactType(parser.getType())) { @@ -930,11 +942,11 @@ bool BaseChatMesh::getContactByIdx(uint32_t idx, ContactInfo& contact) { } ContactsIterator BaseChatMesh::startContactsIterator() { - return ContactsIterator(); + return ContactsIterator(MAX_ANON_CONTACTS); // start at offset, skip the anon entries } bool ContactsIterator::hasNext(const BaseChatMesh* mesh, ContactInfo& dest) { - if (next_idx >= mesh->getNumContacts()) return false; + if (next_idx >= mesh->getTotalContactSlots()) return false; dest = mesh->contacts[next_idx++]; return true; diff --git a/src/helpers/BaseChatMesh.h b/src/helpers/BaseChatMesh.h index c04bfda38c..d987854709 100644 --- a/src/helpers/BaseChatMesh.h +++ b/src/helpers/BaseChatMesh.h @@ -28,8 +28,9 @@ class ContactVisitor { class BaseChatMesh; class ContactsIterator { - int next_idx = 0; + int next_idx; public: + ContactsIterator(int start) { next_idx = start; } bool hasNext(const BaseChatMesh* mesh, ContactInfo& dest); }; @@ -79,8 +80,9 @@ class BaseChatMesh : public mesh::Mesh { protected: BaseChatMesh(mesh::Radio& radio, mesh::MillisecondClock& ms, mesh::RNG& rng, mesh::RTCClock& rtc, mesh::PacketManager& mgr, mesh::MeshTables& tables) : mesh::Mesh(radio, ms, rng, rtc, mgr, tables) - { - num_contacts = 0; + { + resetContacts(); + #ifdef MAX_GROUP_CHANNELS memset(channels, 0, sizeof(channels)); num_channels = 0; @@ -91,7 +93,11 @@ class BaseChatMesh : public mesh::Mesh { } void bootstrapRTCfromContacts(); - void resetContacts() { num_contacts = 0; } + + void resetContacts() { + memset(contacts, 0, sizeof(contacts[0])*MAX_ANON_CONTACTS); // set all to have type = ADV_TYPE_NONE(0) + num_contacts = MAX_ANON_CONTACTS; // seed the first contacts for anon requests + } void populateContactFromAdvert(ContactInfo& ci, const mesh::Identity& id, const AdvertDataParser& parser, uint32_t timestamp); ContactInfo* allocateContactSlot(bool transient_only=false); // helper to find slot for new contact @@ -166,7 +172,8 @@ class BaseChatMesh : public mesh::Mesh { ContactInfo* lookupContactByPubKey(const uint8_t* pub_key, int prefix_len); bool removeContact(ContactInfo& contact); bool addContact(const ContactInfo& contact); - int getNumContacts() const { return num_contacts; } + int getTotalContactSlots() const { return num_contacts; } + int getNumContacts() const { return num_contacts - MAX_ANON_CONTACTS; } // don't include the reserved slots at start bool getContactByIdx(uint32_t idx, ContactInfo& contact); ContactsIterator startContactsIterator(); ChannelDetails* addChannel(const char* name, const char* psk_base64); diff --git a/src/helpers/BaseSerialInterface.h b/src/helpers/BaseSerialInterface.h index e9a3f2ab46..23933fcb4b 100644 --- a/src/helpers/BaseSerialInterface.h +++ b/src/helpers/BaseSerialInterface.h @@ -14,6 +14,7 @@ class BaseSerialInterface { virtual bool isEnabled() const = 0; virtual bool isConnected() const = 0; + virtual void loop() {}; virtual bool isWriteBusy() const = 0; virtual size_t writeFrame(const uint8_t src[], size_t len) = 0; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index b78ad6ebd6..07181e16ad 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -28,16 +28,25 @@ static bool isValidName(const char *n) { } void CommonCLI::loadPrefs(FILESYSTEM* fs) { - if (fs->exists("/com_prefs")) { - loadPrefsInt(fs, "/com_prefs"); // new filename - } else if (fs->exists("/node_prefs")) { - loadPrefsInt(fs, "/node_prefs"); - savePrefs(fs); // save to new filename - fs->remove("/node_prefs"); // remove old + if (fs->exists("/prefs.json")) { +#if defined(RP2040_PLATFORM) + File file = fs->open("/prefs.json", "r"); +#else + File file = fs->open("/prefs.json"); +#endif + if (file) { + _prefs->loadSerial(file); // new Serial prefs + file.close(); + } + } else if (fs->exists("/com_prefs")) { + loadPrefsInt(fs, "/com_prefs"); + if (savePrefs(fs)) { // save to new Serial prefs + // fs->remove("/com_prefs"); // remove old + } } } -void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { +void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { // Legacy prefs loader #if defined(RP2040_PLATFORM) File file = fs->open(filename, "r"); #else @@ -88,10 +97,12 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { file.read((uint8_t *)&_prefs->discovery_mod_timestamp, sizeof(_prefs->discovery_mod_timestamp)); // 162 file.read((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 - file.read((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290 - file.read((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291 - file.read((uint8_t *)&_prefs->flood_max_advert, sizeof(_prefs->flood_max_advert)); // 292 - // next: 293 + file.read((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290 + file.read((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291 + file.read((uint8_t *)&_prefs->flood_max_advert, sizeof(_prefs->flood_max_advert)); // 292 + file.read((uint8_t *)&_prefs->radio_fem_rxgain, sizeof(_prefs->radio_fem_rxgain)); // 293 + file.read((uint8_t *)&_prefs->cad_enabled, sizeof(_prefs->cad_enabled)); // 294 + // next: 295 // sanitise bad pref values _prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f); @@ -121,73 +132,28 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { // sanitise settings _prefs->rx_boosted_gain = constrain(_prefs->rx_boosted_gain, 0, 1); // boolean + _prefs->radio_fem_rxgain = constrain(_prefs->radio_fem_rxgain, 0, 1); // boolean + _prefs->cad_enabled = constrain(_prefs->cad_enabled, 0, 1); // boolean file.close(); } } -void CommonCLI::savePrefs(FILESYSTEM* fs) { +bool CommonCLI::savePrefs(FILESYSTEM* fs) { #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) - fs->remove("/com_prefs"); - File file = fs->open("/com_prefs", FILE_O_WRITE); + fs->remove("/prefs.json"); + File file = fs->open("/prefs.json", FILE_O_WRITE); #elif defined(RP2040_PLATFORM) - File file = fs->open("/com_prefs", "w"); + File file = fs->open("/prefs.json", "w"); #else - File file = fs->open("/com_prefs", "w", true); + File file = fs->open("/prefs.json", "w", true); #endif if (file) { - uint8_t pad[8]; - memset(pad, 0, sizeof(pad)); - - file.write((uint8_t *)&_prefs->airtime_factor, sizeof(_prefs->airtime_factor)); // 0 - file.write((uint8_t *)&_prefs->node_name, sizeof(_prefs->node_name)); // 4 - file.write(pad, 4); // 36 - file.write((uint8_t *)&_prefs->node_lat, sizeof(_prefs->node_lat)); // 40 - file.write((uint8_t *)&_prefs->node_lon, sizeof(_prefs->node_lon)); // 48 - file.write((uint8_t *)&_prefs->password[0], sizeof(_prefs->password)); // 56 - file.write((uint8_t *)&_prefs->freq, sizeof(_prefs->freq)); // 72 - file.write((uint8_t *)&_prefs->tx_power_dbm, sizeof(_prefs->tx_power_dbm)); // 76 - file.write((uint8_t *)&_prefs->disable_fwd, sizeof(_prefs->disable_fwd)); // 77 - file.write((uint8_t *)&_prefs->advert_interval, sizeof(_prefs->advert_interval)); // 78 - file.write(pad, 1); // 79 : 1 byte unused (rx_boosted_gain moved to end) - file.write((uint8_t *)&_prefs->rx_delay_base, sizeof(_prefs->rx_delay_base)); // 80 - file.write((uint8_t *)&_prefs->tx_delay_factor, sizeof(_prefs->tx_delay_factor)); // 84 - file.write((uint8_t *)&_prefs->guest_password[0], sizeof(_prefs->guest_password)); // 88 - file.write((uint8_t *)&_prefs->direct_tx_delay_factor, sizeof(_prefs->direct_tx_delay_factor)); // 104 - file.write(pad, 4); // 108 : 4 byte unused - file.write((uint8_t *)&_prefs->sf, sizeof(_prefs->sf)); // 112 - file.write((uint8_t *)&_prefs->cr, sizeof(_prefs->cr)); // 113 - file.write((uint8_t *)&_prefs->allow_read_only, sizeof(_prefs->allow_read_only)); // 114 - file.write((uint8_t *)&_prefs->multi_acks, sizeof(_prefs->multi_acks)); // 115 - file.write((uint8_t *)&_prefs->bw, sizeof(_prefs->bw)); // 116 - file.write((uint8_t *)&_prefs->agc_reset_interval, sizeof(_prefs->agc_reset_interval)); // 120 - file.write((uint8_t *)&_prefs->path_hash_mode, sizeof(_prefs->path_hash_mode)); // 121 - file.write((uint8_t *)&_prefs->loop_detect, sizeof(_prefs->loop_detect)); // 122 - file.write(pad, 1); // 123 - file.write((uint8_t *)&_prefs->flood_max, sizeof(_prefs->flood_max)); // 124 - file.write((uint8_t *)&_prefs->flood_advert_interval, sizeof(_prefs->flood_advert_interval)); // 125 - file.write((uint8_t *)&_prefs->interference_threshold, sizeof(_prefs->interference_threshold)); // 126 - file.write((uint8_t *)&_prefs->bridge_enabled, sizeof(_prefs->bridge_enabled)); // 127 - file.write((uint8_t *)&_prefs->bridge_delay, sizeof(_prefs->bridge_delay)); // 128 - file.write((uint8_t *)&_prefs->bridge_pkt_src, sizeof(_prefs->bridge_pkt_src)); // 130 - file.write((uint8_t *)&_prefs->bridge_baud, sizeof(_prefs->bridge_baud)); // 131 - file.write((uint8_t *)&_prefs->bridge_channel, sizeof(_prefs->bridge_channel)); // 135 - file.write((uint8_t *)&_prefs->bridge_secret, sizeof(_prefs->bridge_secret)); // 136 - file.write((uint8_t *)&_prefs->powersaving_enabled, sizeof(_prefs->powersaving_enabled)); // 152 - file.write(pad, 3); // 153 - file.write((uint8_t *)&_prefs->gps_enabled, sizeof(_prefs->gps_enabled)); // 156 - file.write((uint8_t *)&_prefs->gps_interval, sizeof(_prefs->gps_interval)); // 157 - file.write((uint8_t *)&_prefs->advert_loc_policy, sizeof(_prefs->advert_loc_policy)); // 161 - file.write((uint8_t *)&_prefs->discovery_mod_timestamp, sizeof(_prefs->discovery_mod_timestamp)); // 162 - file.write((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier)); // 166 - file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170 - file.write((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290 - file.write((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291 - file.write((uint8_t *)&_prefs->flood_max_advert, sizeof(_prefs->flood_max_advert)); // 292 - // next: 293 - + bool success = _prefs->saveSerial(file); file.close(); + return success; } + return false; } #define MIN_LOCAL_ADVERT_INTERVAL 60 @@ -500,6 +466,10 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep _prefs->interference_threshold = atoi(&config[11]); savePrefs(); strcpy(reply, "OK"); + } else if (memcmp(config, "cad ", 4) == 0) { + _prefs->cad_enabled = memcmp(&config[4], "on", 2) == 0; + savePrefs(); + strcpy(reply, "OK"); } else if (memcmp(config, "agc.reset.interval ", 19) == 0) { _prefs->agc_reset_interval = atoi(&config[19]) / 4; savePrefs(); @@ -561,13 +531,37 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep _prefs->disable_fwd = memcmp(&config[7], "off", 3) == 0; savePrefs(); strcpy(reply, _prefs->disable_fwd ? "OK - repeat is now OFF" : "OK - repeat is now ON"); -#if defined(USE_SX1262) || defined(USE_SX1268) || defined(USE_LR1110) } else if (memcmp(config, "radio.rxgain ", 13) == 0) { - _prefs->rx_boosted_gain = memcmp(&config[13], "on", 2) == 0; - strcpy(reply, "OK"); + bool enabled = memcmp(&config[13], "on", 2) == 0; + _prefs->rx_boosted_gain = enabled; savePrefs(); - _callbacks->setRxBoostedGain(_prefs->rx_boosted_gain); -#endif + if (_callbacks->setRxBoostedGain(enabled)) { + strcpy(reply, "OK"); + } else { + strcpy(reply, "Error: unsupported"); + } + } else if (memcmp(config, "radio.fem.rxgain ", 17) == 0) { + if (!_board->canControlLoRaFemLna()) { + strcpy(reply, "Error: unsupported"); + } else if (memcmp(&config[17], "on", 2) == 0) { + if (_board->setLoRaFemLnaEnabled(true)) { + _prefs->radio_fem_rxgain = 1; + savePrefs(); + strcpy(reply, "OK - LoRa FEM RX gain on"); + } else { + strcpy(reply, "Error: failed to apply LoRa FEM RX gain"); + } + } else if (memcmp(&config[17], "off", 3) == 0) { + if (_board->setLoRaFemLnaEnabled(false)) { + _prefs->radio_fem_rxgain = 0; + savePrefs(); + strcpy(reply, "OK - LoRa FEM RX gain off"); + } else { + strcpy(reply, "Error: failed to apply LoRa FEM RX gain"); + } + } else { + strcpy(reply, "Error: state must be on or off"); + } } else if (memcmp(config, "radio ", 6) == 0) { strcpy(tmp, &config[6]); const char *parts[4]; @@ -757,8 +751,30 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep } } else { _prefs->adc_multiplier = 0.0f; - strcpy(reply, "Error: unsupported by this board"); + strcpy(reply, "Error: unsupported"); }; + #if defined(USE_LR2021) + } else if (memcmp(config, "extra.sf ", 9) == 0) { + strcpy(tmp, &config[9]); + const char *parts[4]; + uint8_t sideDetSFs[4]; + int num = mesh::Utils::parseTextParts(tmp, parts, 4); + if (num > 3) { + sprintf(reply, "Invalid extra SF config"); + } else { + for (int i = 0; i < num; i++) { + sideDetSFs[i] = atoi(parts[i]); + } + sideDetSFs[num] = 0; + if (_callbacks->configSideDetectors(sideDetSFs, num, _prefs->bw)) { + for (int i = 0; i <= num; i++) _prefs->extra_sf[i] = sideDetSFs[i]; + savePrefs(); + sprintf(reply, "OK - extra SFs set"); + } else { + sprintf(reply, "Invalid extra SF config"); + } + } + #endif } else { strcpy(reply, "unknown config: "); StrHelper::strncpy(&reply[16], config, 160-17); @@ -776,6 +792,8 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep sprintf(reply, "> %s", StrHelper::ftoa(_prefs->airtime_factor)); } else if (memcmp(config, "int.thresh", 10) == 0) { sprintf(reply, "> %d", (uint32_t) _prefs->interference_threshold); + } else if (memcmp(config, "cad", 3) == 0) { + sprintf(reply, "> %s", _prefs->cad_enabled ? "on" : "off"); } else if (memcmp(config, "agc.reset.interval", 18) == 0) { sprintf(reply, "> %d", ((uint32_t) _prefs->agc_reset_interval) * 4); } else if (memcmp(config, "multi.acks", 10) == 0) { @@ -801,10 +819,14 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep sprintf(reply, "> %s", StrHelper::ftoa(_prefs->node_lat)); } else if (memcmp(config, "lon", 3) == 0) { sprintf(reply, "> %s", StrHelper::ftoa(_prefs->node_lon)); -#if defined(USE_SX1262) || defined(USE_SX1268) || defined(USE_LR1110) } else if (memcmp(config, "radio.rxgain", 12) == 0) { sprintf(reply, "> %s", _prefs->rx_boosted_gain ? "on" : "off"); -#endif + } else if (memcmp(config, "radio.fem.rxgain", 16) == 0) { + if (!_board->canControlLoRaFemLna()) { + strcpy(reply, "Error: unsupported"); + } else { + sprintf(reply, "> %s", _board->isLoRaFemLnaEnabled() ? "on" : "off"); + } } else if (memcmp(config, "radio", 5) == 0) { char freq[16], bw[16]; strcpy(freq, StrHelper::ftoa(_prefs->freq)); @@ -890,12 +912,12 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep strcpy(reply, "> unknown"); } #else - strcpy(reply, "ERROR: unsupported"); + strcpy(reply, "Error: unsupported"); #endif } else if (memcmp(config, "adc.multiplier", 14) == 0) { float adc_mult = _board->getAdcMultiplier(); if (adc_mult == 0.0f) { - strcpy(reply, "Error: unsupported by this board"); + strcpy(reply, "Error: unsupported"); } else { sprintf(reply, "> %.3f", adc_mult); } @@ -913,19 +935,23 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep strcpy(reply, "ERROR: Power management not supported"); #endif } else if (memcmp(config, "pwrmgt.bootreason", 17) == 0) { -#ifdef NRF52_POWER_MANAGEMENT sprintf(reply, "> Reset: %s; Shutdown: %s", _board->getResetReasonString(_board->getResetReason()), _board->getShutdownReasonString(_board->getShutdownReason())); -#else - strcpy(reply, "ERROR: Power management not supported"); -#endif } else if (memcmp(config, "pwrmgt.bootmv", 13) == 0) { #ifdef NRF52_POWER_MANAGEMENT sprintf(reply, "> %u mV", _board->getBootVoltage()); #else strcpy(reply, "ERROR: Power management not supported"); #endif + } else if (memcmp(config, "extra.sf", 8) == 0) { + char* tmp = reply; + for (int i = 0; i < 3 && _prefs->extra_sf[i] != 0; i++) { + tmp += sprintf(tmp, "%s%d", (i == 0) ? "" : ",", _prefs->extra_sf[i]); + } + if (tmp == reply) { + sprintf(reply, "No extra SF configured"); + } } else { sprintf(reply, "??: %s", config); } diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index b509c2b31a..2a9ec43bcb 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -5,6 +5,7 @@ #include <helpers/SensorManager.h> #include <helpers/ClientACL.h> #include <helpers/RegionMap.h> +#include <helpers/ConfigSerializer.h> #if defined(WITH_RS232_BRIDGE) || defined(WITH_ESPNOW_BRIDGE) #define WITH_BRIDGE @@ -19,50 +20,176 @@ #define LOOP_DETECT_MODERATE 2 #define LOOP_DETECT_STRICT 3 -struct NodePrefs { // persisted to file - float airtime_factor; +class NodePrefs : public ConfigSerializer { +public: + // in-memory backing data + float airtime_factor = 0; char node_name[32]; - double node_lat, node_lon; + double node_lat = 0, node_lon = 0; char password[16]; - float freq; - int8_t tx_power_dbm; - uint8_t disable_fwd; - uint8_t advert_interval; // minutes / 2 - uint8_t flood_advert_interval; // hours - float rx_delay_base; - float tx_delay_factor; + float freq = 0; + int8_t tx_power_dbm = 0; + uint8_t disable_fwd = 0; + uint8_t advert_interval = 0; // minutes / 2 + uint8_t flood_advert_interval = 0; // hours + float rx_delay_base = 0; + float tx_delay_factor = 0; char guest_password[16]; - float direct_tx_delay_factor; + float direct_tx_delay_factor = 0; uint32_t guard; - uint8_t sf; - uint8_t cr; - uint8_t allow_read_only; - uint8_t multi_acks; - float bw; - uint8_t flood_max; - uint8_t flood_max_unscoped; - uint8_t flood_max_advert; - uint8_t interference_threshold; - uint8_t agc_reset_interval; // secs / 4 + uint8_t sf = 0; + uint8_t cr = 0; + uint8_t allow_read_only = 0; + uint8_t multi_acks = 0; + float bw = 0; + uint8_t flood_max = 0; + uint8_t flood_max_unscoped = 0; + uint8_t flood_max_advert = 0; + uint8_t interference_threshold = 0; + uint8_t agc_reset_interval = 0; // secs / 4 // Bridge settings - uint8_t bridge_enabled; // boolean - uint16_t bridge_delay; // milliseconds (default 500 ms) - uint8_t bridge_pkt_src; // 0 = logTx, 1 = logRx (default logTx) - uint32_t bridge_baud; // 9600, 19200, 38400, 57600, 115200 (default 115200) - uint8_t bridge_channel; // 1-14 (ESP-NOW only) + uint8_t bridge_enabled = 0; // boolean + uint16_t bridge_delay = 0; // milliseconds (default 500 ms) + uint8_t bridge_pkt_src = 0; // 0 = logTx, 1 = logRx (default logTx) + uint32_t bridge_baud = 0; // 9600, 19200, 38400, 57600, 115200 (default 115200) + uint8_t bridge_channel = 0; // 1-14 (ESP-NOW only) char bridge_secret[16]; // for XOR encryption of bridge packets (ESP-NOW only) // Power setting - uint8_t powersaving_enabled; // boolean + uint8_t powersaving_enabled = 0; // boolean // Gps settings - uint8_t gps_enabled; - uint32_t gps_interval; // in seconds - uint8_t advert_loc_policy; - uint32_t discovery_mod_timestamp; - float adc_multiplier; + uint8_t gps_enabled = 0; + uint32_t gps_interval = 0; // in seconds + uint8_t advert_loc_policy = 0; + uint32_t discovery_mod_timestamp = 0; + float adc_multiplier = 0; char owner_info[120]; - uint8_t rx_boosted_gain; // power settings - uint8_t path_hash_mode; // which path mode to use when sending - uint8_t loop_detect; + uint8_t rx_boosted_gain = 0; // power settings + uint8_t radio_fem_rxgain = 0; // LoRa FEM RX gain setting + uint8_t path_hash_mode = 0; // which path mode to use when sending + uint8_t loop_detect = 0; + uint8_t cad_enabled = 0; // hardware Channel Activity Detection before TX (boolean) + uint8_t extra_sf[4]; + +private: + class RadioPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("freq", _parent->freq); + def("bw", _parent->bw); + def("sf", _parent->sf); + def("cr", _parent->cr); + def("cad", _parent->cad_enabled); + def("int_thr", _parent->interference_threshold); + def("rxgain", _parent->rx_boosted_gain); + def("fem_rxgain", _parent->rx_boosted_gain); + def("tx", _parent->tx_power_dbm); + def("af", _parent->airtime_factor); + def("rxdelay", _parent->rx_delay_base); + def("f_txdelay", _parent->tx_delay_factor); + def("d_txdelay", _parent->direct_tx_delay_factor); + def("agc_int", _parent->agc_reset_interval); + def("hash_mode", _parent->path_hash_mode); + def("multi_ack", _parent->multi_acks); + } + public: + RadioPrefs(NodePrefs* parent) : _parent(parent) { } + }; + RadioPrefs radio; + + class BridgePrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("en", _parent->bridge_enabled); // boolean + def("delay", _parent->bridge_delay); // milliseconds (default 500 ms) + def("src", _parent->bridge_pkt_src); // 0 = logTx, 1 = logRx (default logTx) + def("baud", _parent->bridge_baud); // 9600, 19200, 38400, 57600, 115200 (default 115200) + def("ch", _parent->bridge_channel); // 1-14 (ESP-NOW only) + def("secret", _parent->bridge_secret, sizeof(_parent->bridge_secret)); // for XOR encryption of bridge packets (ESP-NOW only) + } + public: + BridgePrefs(NodePrefs* parent) : _parent(parent) { } + }; + BridgePrefs bridge; + + class GPSPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("en", _parent->gps_enabled); // boolean + def("int", _parent->gps_interval); // interval in seconds + def("adv_loc", _parent->advert_loc_policy); + } + public: + GPSPrefs(NodePrefs* parent) : _parent(parent) { } + }; + GPSPrefs gps; + + class PowerPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("adc_mult", _parent->adc_multiplier); + def("pwr_sav_en", _parent->powersaving_enabled); + } + public: + PowerPrefs(NodePrefs* parent) : _parent(parent) { } + }; + PowerPrefs power; + + class RepeatPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("disable", _parent->disable_fwd); + def("f_max", _parent->flood_max); + def("f_max_uns", _parent->flood_max_unscoped); + def("f_max_adv", _parent->flood_max_advert); + def("loop", _parent->loop_detect); + } + public: + RepeatPrefs(NodePrefs* parent) : _parent(parent) { } + }; + RepeatPrefs repeat; + + class RoomPrefs : public ConfigSerializer { + NodePrefs* _parent; + protected: + void structure() override { + def("rd_only", _parent->allow_read_only); + } + public: + RoomPrefs(NodePrefs* parent) : _parent(parent) { } + }; + RoomPrefs room; + +protected: + void structure() override { + def("name", node_name, sizeof(node_name)); + def("pass", password, sizeof(password)); + def("guest", guest_password, sizeof(guest_password)); + def("owner", owner_info, sizeof(owner_info)); + def("adv_int", advert_interval); + def("f_adv_int", flood_advert_interval); + def("lat", node_lat); + def("lon", node_lon); + def("radio", radio); + def("bridge", bridge); + def("gps", gps); + def("repeat", repeat); + def("room", room); + def("power", power); + } + +public: + NodePrefs() : ConfigSerializer(), bridge(this), gps(this), radio(this), power(this), repeat(this), room(this) { + node_name[0] = 0; + password[0] = 0; + guest_password[0] = 0; + bridge_secret[0] = 0; + owner_info[0] = 0; + } }; class CommonCLICallbacks { @@ -109,9 +236,15 @@ class CommonCLICallbacks { // no op by default }; - virtual void setRxBoostedGain(bool enable) { - // no op by default + virtual bool setRxBoostedGain(bool enable) { + return false; // CommonCLI reports unsupported if not overridden by wrapper }; + + #if defined(USE_LR2021) + virtual bool configSideDetectors(const uint8_t sideDetSFs[], uint8_t num, float bw) { + return false; // Override in wrapper + } + #endif }; class CommonCLI { @@ -137,7 +270,7 @@ class CommonCLI { : _board(&board), _rtc(&rtc), _sensors(&sensors), _region_map(®ion_map), _acl(&acl), _prefs(prefs), _callbacks(callbacks) { } void loadPrefs(FILESYSTEM* _fs); - void savePrefs(FILESYSTEM* _fs); + bool savePrefs(FILESYSTEM* _fs); void handleCommand(uint32_t sender_timestamp, char* command, char* reply); uint8_t buildAdvertData(uint8_t node_type, uint8_t* app_data); }; diff --git a/src/helpers/ConfigSerializer.cpp b/src/helpers/ConfigSerializer.cpp new file mode 100644 index 0000000000..adff147f47 --- /dev/null +++ b/src/helpers/ConfigSerializer.cpp @@ -0,0 +1,331 @@ +#include "ConfigSerializer.h" + +bool ConfigSerializer::saveSerial(Stream& s) { + Context context(&s, OP::WRITE); + _context = &context; // set the context for structure() call + s.print("{"); // root object + _first = true; + structure(); + if (s.print("}") != 1) context.success = false; // failure detect + _context = NULL; + return context.success; +} + +#define TOK_ERROR -1 +#define TOK_EOF 0 +#define TOK_KEY 1 +#define TOK_VALUE 2 +#define TOK_START_OBJ 3 +#define TOK_END_OBJ 4 +#define TOK_WHITESPACE 5 + +static bool is_whitespace(char c) { + return c == ' ' || c == '\t' || c == '\r' || c == '\n'; +} +static bool is_key_char(char c) { + return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '_'; +} +static bool is_value_char(char c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || c == '-' || c == '.'; +} + +#define EXPECT_OPEN_BRACE 0 +#define EXPECT_KEY 1 +#define EXPECT_VAL_OR_OBJ 2 +#define EXPECT_STRING_VAL 3 +#define EXPECT_STRING_ESCAPE 4 +#define EXPECT_COMMA_OR_CLOSE 5 +#define EXPECT_COMMA_OR_KEY 6 +#define EXPECT_COMMA_OR_KEY_OR_CLOSE 7 + +int ConfigSerializer::Context::readNext() { + char c; + if (pending) { + c = pending; + pending = 0; + } else { + if (_f->available() == 0) return TOK_EOF; + + int n = _f->read(); + if (n < 0) return TOK_EOF; + c = (char)n; + } + + switch (rd_mode) { + case EXPECT_OPEN_BRACE: + if (c == '{') { rd_mode = EXPECT_KEY; return TOK_START_OBJ; } + if (is_whitespace(c)) return TOK_WHITESPACE; + return TOK_ERROR; + + case EXPECT_COMMA_OR_KEY_OR_CLOSE: + if (c == '}') { rd_mode = EXPECT_COMMA_OR_KEY_OR_CLOSE; return TOK_END_OBJ; } + case EXPECT_COMMA_OR_KEY: + if (c == ',') { rd_mode = EXPECT_KEY; return TOK_WHITESPACE; } + case EXPECT_KEY: + if (rd_len > 0 && c == ':') { rd_buf[rd_len] = 0; rd_len = 0; rd_mode = EXPECT_VAL_OR_OBJ; return TOK_KEY; } + if (rd_len == 0 && is_whitespace(c)) return TOK_WHITESPACE; + if (rd_len < CONFIG_MAX_KEYLEN-1 && is_key_char(c)) { rd_buf[rd_len++] = c; return TOK_WHITESPACE; } + return TOK_ERROR; + + case EXPECT_VAL_OR_OBJ: + if (rd_len == 0 && is_whitespace(c)) return TOK_WHITESPACE; + if (rd_len == 0 && c == '"') { rd_mode = EXPECT_STRING_VAL; return TOK_WHITESPACE; } + if (rd_len == 0 && c == '{') { rd_mode = EXPECT_KEY; return TOK_START_OBJ; } + if (is_value_char(c) && rd_len < CONFIG_MAX_TOKEN_LEN-1) { rd_buf[rd_len++] = c; return TOK_WHITESPACE; } + if (rd_len > 0 && (c == ',' || c == '}' || is_whitespace(c))) { pending = c; rd_buf[rd_len] = 0; rd_len = 0; rd_mode = EXPECT_COMMA_OR_CLOSE; return TOK_VALUE; } + return TOK_ERROR; + + case EXPECT_STRING_ESCAPE: + if ((c == 'n') && rd_len < CONFIG_MAX_TOKEN_LEN-1) { rd_buf[rd_len++] = '\n'; rd_mode = EXPECT_STRING_VAL; return TOK_WHITESPACE; } + if ((c == 'r') && rd_len < CONFIG_MAX_TOKEN_LEN-1) { rd_buf[rd_len++] = '\r'; rd_mode = EXPECT_STRING_VAL; return TOK_WHITESPACE; } + if ((c == '"' || c == '\\' || c == '/') && rd_len < CONFIG_MAX_TOKEN_LEN-1) { rd_buf[rd_len++] = c; rd_mode = EXPECT_STRING_VAL; return TOK_WHITESPACE; } + return TOK_ERROR; // unsupport escape + + case EXPECT_STRING_VAL: + if (c == '"') { rd_buf[rd_len] = 0; rd_len = 0; rd_mode = EXPECT_COMMA_OR_CLOSE; return TOK_VALUE; } + if (c == '\\') { rd_mode = EXPECT_STRING_ESCAPE; return TOK_WHITESPACE; } + if (rd_len < CONFIG_MAX_TOKEN_LEN-1) { rd_buf[rd_len++] = c; return TOK_WHITESPACE; } + return TOK_ERROR; + + case EXPECT_COMMA_OR_CLOSE: + if (c == ',') { rd_mode = EXPECT_KEY; return TOK_WHITESPACE; } + if (c == '}') { rd_mode = EXPECT_COMMA_OR_KEY_OR_CLOSE; return TOK_END_OBJ; } + if (is_whitespace(c)) return TOK_WHITESPACE; + return TOK_ERROR; + } + return TOK_ERROR; // unknown mode +} + +bool ConfigSerializer::loadSerial(Stream& s) { + Context context(&s, OP::READ); + _context = &context; // set the context for structure() call + uint8_t sp = 0; // object nesting stack pointer + int next_tok; + + // parse the Json file + while ((next_tok = context.readNext()) > TOK_EOF) { + if (next_tok == TOK_KEY) { + context.setKey(sp, context.getToken()); + } else if (next_tok == TOK_VALUE) { + _depth = 1; // re-run the structure() hierarchy again (looking for specific key, at specific depth) + structure(); + } else if (next_tok == TOK_START_OBJ) { + if (sp < CONFIG_MAX_DEPTH - 1) { + sp++; + } else { + //Serial.printf("Error: max nesting reached"); // TODO: debug logging + context.success = false; + break; + } + } else if (next_tok == TOK_END_OBJ) { + if (sp > 0) { + sp--; + } else { + //Serial.printf("Error: too many closing '}'"); // TODO: debug logging + context.success = false; + break; + } + } + } + if (sp != 0 || next_tok == TOK_ERROR) { + context.success = false; // unmatched { }, or other parse error + } + _context = NULL; + return context.success; +} + +void ConfigSerializer::writeComma() { + if (_first) { + _first = false; + } else { + _context->file()->print(","); // comma separated properties + } +} + +#include <Utils.h> + +void ConfigSerializer::def(const char* key, void* value, size_t len) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":\""); + mesh::Utils::printHex(*_context->file(), (uint8_t*) value, len); + _context->file()->print("\""); + } else { + if (_context->keyMatch(_depth, key)) { + memset(value, 0, len); + mesh::Utils::fromHex((uint8_t *)value, len, _context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, char* value, size_t max_len) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":\""); + char c; + while ((c = *value++) != 0) { // TODO: handle UTF-8 encoding + if (c == '"') { + _context->file()->print("\\\""); + } else if (c == '\\') { + _context->file()->print("\\\\"); + } else if (c == '\n') { + _context->file()->print("\\n"); + } else if (c == '\r') { + _context->file()->print("\\r"); + } else { + _context->file()->print(c); + } + } + _context->file()->print("\""); + } else { + if (_context->keyMatch(_depth, key)) { + strncpy(value, _context->getToken(), max_len - 1); + value[max_len - 1] = 0; + } + } +} + +void ConfigSerializer::def(const char* key, int32_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print(value); + } else { + if (_context->keyMatch(_depth, key)) { + value = atol(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, uint32_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print(value); + } else { + if (_context->keyMatch(_depth, key)) { + value = atol(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, int16_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print((int32_t) value, 10); + } else { + if (_context->keyMatch(_depth, key)) { + value = atol(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, uint16_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print((uint32_t) value, 10); + } else { + if (_context->keyMatch(_depth, key)) { + value = atoi(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, uint8_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print((uint32_t) value, 10); + } else { + if (_context->keyMatch(_depth, key)) { + value = atoi(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, int8_t& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print((int32_t) value, 10); + } else { + if (_context->keyMatch(_depth, key)) { + value = atoi(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, bool& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + _context->file()->print(value ? "true" : "false"); + } else { + if (_context->keyMatch(_depth, key)) { + value = strcmp(_context->getToken(), "true") == 0 || atoi(_context->getToken()) != 0; // 'true' or a non-zero number + } + } +} + +void ConfigSerializer::def(const char* key, double& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + if (value == 0.0) { + _context->file()->print("0"); // shorter encoding + } else { + _context->file()->print(value, 6); // REVISIT: how many dec places? + } + } else { + if (_context->keyMatch(_depth, key)) { + value = atof(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, float& value) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":"); + if (value == 0.0f) { + _context->file()->print("0"); // shorter encoding + } else { + _context->file()->print(value, 4); // REVISIT: how many dec places? + } + } else { + if (_context->keyMatch(_depth, key)) { + value = (float) atof(_context->getToken()); + } + } +} + +void ConfigSerializer::def(const char* key, ConfigSerializer& sub_obj) { + if (_context->op() == OP::WRITE) { + writeComma(); + _context->file()->print(key); + _context->file()->print(":{"); + sub_obj._context = _context; // inherit the Context + sub_obj._first = true; + sub_obj.structure(); // recurse into sub object + if (_context->file()->print("}") != 1) _context->success = false; // failure detect + } else { + if (_context->keyMatch(_depth, key)) { + sub_obj._context = _context; // inherit the Context + sub_obj._depth = _depth + 1; + sub_obj.structure(); // recurse into sub object + } + } +} diff --git a/src/helpers/ConfigSerializer.h b/src/helpers/ConfigSerializer.h new file mode 100644 index 0000000000..7e6d6f2a69 --- /dev/null +++ b/src/helpers/ConfigSerializer.h @@ -0,0 +1,68 @@ +#pragma once + +#include <Arduino.h> + +#ifndef CONFIG_MAX_DEPTH + #define CONFIG_MAX_DEPTH 8 +#endif + +#ifndef CONFIG_MAX_KEYLEN + #define CONFIG_MAX_KEYLEN 16 +#endif + +#ifndef CONFIG_MAX_TOKEN_LEN + #define CONFIG_MAX_TOKEN_LEN 128 +#endif + +class ConfigSerializer { + bool _first; + int8_t _depth; + + enum OP { READ, WRITE }; + + class Context { + Stream* _f; + OP _op; + uint8_t rd_len; + uint8_t rd_mode; + char pending; + char rd_buf[CONFIG_MAX_TOKEN_LEN]; + char _keys[CONFIG_MAX_DEPTH][CONFIG_MAX_KEYLEN]; + + public: + bool success = true; + Context(Stream* f, OP op) : _f(f), _op(op) { rd_buf[rd_len = 0] = 0; rd_mode = 0; pending = 0; } + OP op() const { return _op; } + Stream* file() const { return _f; } + int readNext(); + const char* getToken() const { return rd_buf; } + bool keyMatch(int8_t depth, const char* key) { return strcmp(key, _keys[depth]) == 0; } + void setKey(uint8_t depth, const char* key) { strcpy(_keys[depth], key); } + }; + + Context* _context = NULL; + + void writeComma(); + +protected: + ConfigSerializer() { } + + void def(const char* key, char* value, size_t max_len); // max_len inclusive of null + void def(const char* key, void* value, size_t len); // binary blob (encoded in hex) + void def(const char* key, int32_t& value); + void def(const char* key, int16_t& value); + void def(const char* key, int8_t& value); + void def(const char* key, uint32_t& value); + void def(const char* key, uint16_t& value); + void def(const char* key, uint8_t& value); + void def(const char* key, float& value); + void def(const char* key, double& value); + void def(const char* key, bool& value); + void def(const char* key, ConfigSerializer& sub_obj); + + virtual void structure() = 0; + +public: + bool loadSerial(Stream& s); + bool saveSerial(Stream& s); +}; diff --git a/src/helpers/ESP32Board.cpp b/src/helpers/ESP32Board.cpp index e0ca1d0eeb..a55abb264e 100644 --- a/src/helpers/ESP32Board.cpp +++ b/src/helpers/ESP32Board.cpp @@ -1,6 +1,7 @@ #ifdef ESP_PLATFORM #include "ESP32Board.h" +#include <target.h> #if defined(ADMIN_PASSWORD) && !defined(DISABLE_WIFI_OTA) // Repeater or Room Server only #include <WiFi.h> @@ -44,4 +45,45 @@ bool ESP32Board::startOTAUpdate(const char* id, char reply[]) { } #endif +void ESP32Board::powerOff() { + enterDeepSleep(0); // Do not wakeup +} + +void ESP32Board::enterDeepSleep(uint32_t secs) { + // Power off the display if any +#ifdef DISPLAY_CLASS + display.turnOff(); +#endif + + // Power off LoRa + radio_driver.powerOff(); + + // Keep LoRa inactive during deepsleep + digitalWrite(P_LORA_NSS, HIGH); +#if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) + gpio_hold_en((gpio_num_t)P_LORA_NSS); +#else + rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); +#endif + + // Power off GPS if any + if (sensors.getLocationProvider() != NULL) { + sensors.getLocationProvider()->stop(); + } + + // Flush serial buffers + Serial.flush(); + delay(100); + + // Clear stale wakeup sources to avoid ghost wakeup + // This is required when Power Management and automatic lightsleep are enabled + esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL); + + if (secs > 0) { + esp_sleep_enable_timer_wakeup(secs * 1000000ULL); + } + + // Finally set ESP32 into deepsleep + esp_deep_sleep_start(); // CPU halts here and never returns! +} #endif diff --git a/src/helpers/ESP32Board.h b/src/helpers/ESP32Board.h index a4cbf2a980..d7eb5fee26 100644 --- a/src/helpers/ESP32Board.h +++ b/src/helpers/ESP32Board.h @@ -14,6 +14,7 @@ #include <Wire.h> #include "soc/rtc.h" #include "esp_system.h" +#include <driver/rtc_io.h> class ESP32Board : public mesh::MainBoard { protected: @@ -62,6 +63,9 @@ class ESP32Board : public mesh::MainBoard { return raw / 4; } + virtual void powerOff() override; + void enterDeepSleep(uint32_t secs); + uint32_t getIRQGpio() override { return P_LORA_DIO_1; // default for SX1262 } @@ -155,6 +159,42 @@ class ESP32Board : public mesh::MainBoard { void setInhibitSleep(bool inhibit) { inhibit_sleep = inhibit; } + + uint32_t getResetReason() const override { + return esp_reset_reason(); + } + + // https://docs.espressif.com/projects/esp-idf/en/v4.4.7/esp32/api-reference/system/system.html + const char* getResetReasonString(uint32_t reason) { + switch (reason) { + case ESP_RST_UNKNOWN: + return "Unknown or first boot"; + case ESP_RST_POWERON: + return "Power-on reset"; + case ESP_RST_EXT: + return "External reset"; + case ESP_RST_SW: + return "Software reset"; + case ESP_RST_PANIC: + return "Panic / exception reset"; + case ESP_RST_INT_WDT: + return "Interrupt watchdog reset"; + case ESP_RST_TASK_WDT: + return "Task watchdog reset"; + case ESP_RST_WDT: + return "Other watchdog reset"; + case ESP_RST_DEEPSLEEP: + return "Wake from deep sleep"; + case ESP_RST_BROWNOUT: + return "Brownout (low voltage)"; + case ESP_RST_SDIO: + return "SDIO reset"; + default: + static char buf[40]; + snprintf(buf, sizeof(buf), "Unknown reset reason (%d)", reason); + return buf; + } + } }; class ESP32RTCClock : public mesh::RTCClock { diff --git a/src/helpers/ExternalWatchdogManager.h b/src/helpers/ExternalWatchdogManager.h new file mode 100644 index 0000000000..cb4f492360 --- /dev/null +++ b/src/helpers/ExternalWatchdogManager.h @@ -0,0 +1,12 @@ +#pragma once + +class ExternalWatchdogManager { +protected: + unsigned long last_feed_watchdog; +public: + ExternalWatchdogManager() { last_feed_watchdog = 0; } + virtual bool begin() { return false; } + virtual void loop() { } + virtual unsigned long getIntervalMs() const { return 0; } + virtual void feed() { } +}; diff --git a/src/helpers/MeshadventurerBoard.h b/src/helpers/MeshadventurerBoard.h index 65e1110294..0325161d5d 100644 --- a/src/helpers/MeshadventurerBoard.h +++ b/src/helpers/MeshadventurerBoard.h @@ -15,8 +15,6 @@ #include "ESP32Board.h" -#include <driver/rtc_io.h> - class MeshadventurerBoard : public ESP32Board { public: @@ -35,34 +33,6 @@ class MeshadventurerBoard : public ESP32Board { } } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are held on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void powerOff() override { - // TODO: re-enable this when there is a definite wake-up source pin: - // enterDeepSleep(0); - } - uint16_t getBattMilliVolts() override { analogReadResolution(12); diff --git a/src/helpers/MultiSerialInterface.h b/src/helpers/MultiSerialInterface.h new file mode 100644 index 0000000000..f7742b24c3 --- /dev/null +++ b/src/helpers/MultiSerialInterface.h @@ -0,0 +1,200 @@ +#pragma once + +#include "BaseSerialInterface.h" + +#ifndef MAX_INTERFACES + // ble, usb, wifi, ethernet + #define MAX_INTERFACES 4 +#endif + +enum class InterfaceType : uint8_t { + NONE, + Bluetooth, + USB, + WiFi, + Ethernet, + HardwareSerial +}; + +class MultiSerialInterface : public BaseSerialInterface { +private: + + struct RegisteredInterface { + InterfaceType type = InterfaceType::NONE; + BaseSerialInterface* instance = nullptr; + }; + + bool _enabled = false; + RegisteredInterface _interfaces[MAX_INTERFACES] = {}; + +public: + bool addInterface(InterfaceType type, BaseSerialInterface* iface) { + // make sure an interface was provided + if(iface == nullptr){ + return false; + } + + // put it in the first free slot + for(int i = 0; i < MAX_INTERFACES; i++){ + if(_interfaces[i].instance == nullptr){ + _interfaces[i].instance = iface; + _interfaces[i].type = type; + return true; + } + } + + // no free slots available + return false; + } + + bool removeInterface(BaseSerialInterface* iface) { + // make sure an interface was provided + if(iface == nullptr){ + return false; + } + + // find and remove interface + for(int i = 0; i < MAX_INTERFACES; i++){ + if(_interfaces[i].instance == iface){ + _interfaces[i] = {}; + return true; + } + } + + // interface not found + return false; + } + + void enableBluetooth() { + for(auto iface : _interfaces){ + if(iface.instance && iface.type == InterfaceType::Bluetooth){ + iface.instance->enable(); + } + } + } + + void disableBluetooth() { + for(auto iface : _interfaces){ + if(iface.instance && iface.type == InterfaceType::Bluetooth){ + iface.instance->disable(); + } + } + } + + bool isBluetoothEnabled() { + for(auto iface : _interfaces){ + if(iface.instance && iface.type == InterfaceType::Bluetooth){ + return iface.instance->isEnabled(); + } + } + return false; + } + + // enable all interfaces + void enable() override { + _enabled = true; + for(auto iface : _interfaces){ + if(iface.instance){ + iface.instance->enable(); + } + } + } + + // disable all interfaces + void disable() override { + _enabled = false; + for(auto iface : _interfaces){ + if(iface.instance){ + iface.instance->disable(); + } + } + } + + bool isEnabled() const override { + return _enabled; + } + + bool isConnected() const override { + // not connected when disabled + if(!_enabled){ + return false; + } + + // check if any interface is connected + for(auto iface : _interfaces){ + if(iface.instance && iface.instance->isConnected()) { + return true; + } + } + + // nothing connected + return false; + } + + // loop all interfaces + void loop() override { + for(auto iface : _interfaces){ + if(iface.instance){ + iface.instance->loop(); + } + } + } + + bool isWriteBusy() const override { + // not busy when disabled + if(!_enabled){ + return false; + } + + // check if any interface is busy + for(auto iface : _interfaces){ + if(iface.instance && iface.instance->isEnabled() && iface.instance->isWriteBusy()){ + return true; + } + } + + // nothing busy + return false; + } + + size_t writeFrame(const uint8_t src[], size_t len) override { + // don't write when disabled or nothing provided + if(!_enabled || len == 0){ + return 0; + } + + // write frame to all enabled interfaces + bool allSuccessful = true; + for(auto iface : _interfaces){ + if(iface.instance && iface.instance->isEnabled()){ + if(iface.instance->writeFrame(src, len) != len){ + allSuccessful = false; + } + } + } + + // report success if all writes completed successfully + return allSuccessful ? len : 0; + } + + size_t checkRecvFrame(uint8_t dest[]) override { + // don't read when disabled + if(!_enabled){ + return 0; + } + + // try to read a frame from any enabled interface + for(auto iface : _interfaces){ + if(iface.instance && iface.instance->isEnabled()){ + size_t frameSize = iface.instance->checkRecvFrame(dest); + if(frameSize > 0){ + return frameSize; + } + } + } + + // no frame received + return 0; + } + +}; diff --git a/src/helpers/NRF52Board.cpp b/src/helpers/NRF52Board.cpp index 17265f0455..b6c8fec56c 100644 --- a/src/helpers/NRF52Board.cpp +++ b/src/helpers/NRF52Board.cpp @@ -1,5 +1,6 @@ #if defined(NRF52_PLATFORM) #include "NRF52Board.h" +#include <target.h> #include <bluefruit.h> #include <nrf_soc.h> @@ -279,16 +280,29 @@ void NRF52Board::sleep(uint32_t secs) { // Temperature from NRF52 MCU float NRF52Board::getMCUTemperature() { - NRF_TEMP->TASKS_START = 1; // Start temperature measurement - - long startTime = millis(); - while (NRF_TEMP->EVENTS_DATARDY == 0) { // Wait for completion. Should complete in 50us - if(millis() - startTime > 5) { // To wait 5ms just in case - NRF_TEMP->TASKS_STOP = 1; + uint8_t sd_enabled = 0; + sd_softdevice_is_enabled(&sd_enabled); + if (sd_enabled) { + uint32_t err_code; + int32_t temp; + err_code = sd_temp_get(&temp); + if (err_code == NRF_SUCCESS) { + return (float)temp * 0.25f; + } else { return NAN; } + } else { + NRF_TEMP->TASKS_START = 1; // Start temperature measurement + + long startTime = millis(); + while (NRF_TEMP->EVENTS_DATARDY == 0) { // Wait for completion. Should complete in 50us + if(millis() - startTime > 5) { // To wait 5ms just in case + NRF_TEMP->TASKS_STOP = 1; + return NAN; + } + } } - + NRF_TEMP->EVENTS_DATARDY = 0; // Clear event flag int32_t temp = NRF_TEMP->TEMP; // In 0.25 *C units @@ -297,6 +311,65 @@ float NRF52Board::getMCUTemperature() { return temp * 0.25f; // Convert to *C } +void NRF52Board::shutdownPeripherals() { + // Power off the display if any +#ifdef DISPLAY_CLASS + if (display.isOn()) { + display.turnOff(); + } +#endif + // Prep LoRa radio for power down + #ifdef P_LORA_RESET + digitalWrite(P_LORA_RESET, HIGH); // preload OUT latch so pinMode can't glitch NRESET low + pinMode(P_LORA_RESET, OUTPUT); + digitalWrite(P_LORA_RESET, LOW); // deliberate hardware reset (datasheet: >=100us) + delayMicroseconds(200); + digitalWrite(P_LORA_RESET, HIGH); + #endif + #if defined(P_LORA_SCLK) && defined(P_LORA_MISO) && defined(P_LORA_MOSI) + SPI.setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI); + SPI.begin(); // SPI may not be started on some shutdown paths, need it to shut down radio + #endif + #ifdef P_LORA_BUSY + pinMode(P_LORA_BUSY, INPUT); + uint32_t started_at = millis(); + while (digitalRead(P_LORA_BUSY) && millis() - started_at < 10) {} //wait for radio to be ready + #endif + #ifdef P_LORA_NSS + pinMode(P_LORA_NSS, OUTPUT); + digitalWrite(P_LORA_NSS, HIGH); + #endif + // Power off LoRa + radio_driver.powerOff(); + + // Keep LoRa inactive during deepsleep + #ifdef P_LORA_NSS + digitalWrite(P_LORA_NSS, HIGH); + #endif + + // Power off GPS if any + if(sensors.getLocationProvider() != NULL) { + sensors.getLocationProvider()->stop(); + } + + // Flush serial buffers + Serial.flush(); + delay(100); +} + +void NRF52Board::powerOff() { + shutdownPeripherals(); + + // Enter SYSTEMOFF + uint8_t sd_enabled = 0; + sd_softdevice_is_enabled(&sd_enabled); + if (sd_enabled) { // SoftDevice is enabled + sd_power_system_off(); + } else { // SoftDevice is not enable + NRF_POWER->SYSTEMOFF = POWER_SYSTEMOFF_SYSTEMOFF_Enter; + } +} + bool NRF52Board::getBootloaderVersion(char* out, size_t max_len) { static const char BOOTLOADER_MARKER[] = "UF2 Bootloader "; const uint8_t* flash = (const uint8_t*)0x000FB000; // earliest known info.txt location is 0xFB90B, latest is 0xFCC4B @@ -323,7 +396,8 @@ bool NRF52Board::startOTAUpdate(const char *id, char reply[]) { Bluefruit.configPrphBandwidth(BANDWIDTH_MAX); Bluefruit.configPrphConn(92, BLE_GAP_EVENT_LENGTH_MIN, 16, 16); - Bluefruit.begin(1, 0); + if (!Bluefruit.begin(1, 0)) return false; + // Set max power. Accepted values are: -40, -30, -20, -16, -12, -8, -4, 0, 4 Bluefruit.setTxPower(4); // Set the BLE device name diff --git a/src/helpers/NRF52Board.h b/src/helpers/NRF52Board.h index 17065cf443..dba15f974e 100644 --- a/src/helpers/NRF52Board.h +++ b/src/helpers/NRF52Board.h @@ -50,6 +50,8 @@ class NRF52Board : public mesh::MainBoard { virtual uint8_t getStartupReason() const override { return startup_reason; } virtual float getMCUTemperature() override; virtual void reboot() override { NVIC_SystemReset(); } + virtual void shutdownPeripherals(); + virtual void powerOff() override; virtual bool getBootloaderVersion(char* version, size_t max_len) override; virtual bool startOTAUpdate(const char *id, char reply[]) override; virtual void sleep(uint32_t secs) override; diff --git a/src/helpers/RegionMap.cpp b/src/helpers/RegionMap.cpp index 7b8399e260..4667e0038e 100644 --- a/src/helpers/RegionMap.cpp +++ b/src/helpers/RegionMap.cpp @@ -93,13 +93,15 @@ bool RegionMap::load(FILESYSTEM* _fs, const char* path) { while (num_regions < MAX_REGION_ENTRIES) { auto r = ®ions[num_regions]; - success = file.read((uint8_t *) &r->id, sizeof(r->id)) == sizeof(r->id); + int n = file.read((uint8_t *) &r->id, sizeof(r->id)); + if (n == 0) break; // clean EOF + success = (n == sizeof(r->id)); success = success && file.read((uint8_t *) &r->parent, sizeof(r->parent)) == sizeof(r->parent); success = success && file.read((uint8_t *) r->name, sizeof(r->name)) == sizeof(r->name); success = success && file.read((uint8_t *) &r->flags, sizeof(r->flags)) == sizeof(r->flags); success = success && file.read(pad, sizeof(pad)) == sizeof(pad); - if (!success) break; // EOF + if (!success) break; // partial read or corruption if (r->id >= next_id) { // make sure next_id is valid next_id = r->id + 1; @@ -108,7 +110,7 @@ bool RegionMap::load(FILESYSTEM* _fs, const char* path) { } } file.close(); - return true; + return success; } } return false; // failed @@ -139,7 +141,7 @@ bool RegionMap::save(FILESYSTEM* _fs, const char* path) { } } file.close(); - return true; + return success; } return false; // failed } diff --git a/src/helpers/SimpleMeshTables.h b/src/helpers/SimpleMeshTables.h index 0b79cfb422..956f36faa6 100644 --- a/src/helpers/SimpleMeshTables.h +++ b/src/helpers/SimpleMeshTables.h @@ -31,27 +31,31 @@ class SimpleMeshTables : public mesh::MeshTables { } #endif - bool hasSeen(const mesh::Packet* packet) override { + bool wasSeen(const mesh::Packet* packet) override { uint8_t hash[MAX_HASH_SIZE]; packet->calculatePacketHash(hash); const uint8_t* sp = _hashes; for (int i = 0; i < MAX_PACKET_HASHES; i++, sp += MAX_HASH_SIZE) { - if (memcmp(hash, sp, MAX_HASH_SIZE) == 0) { + if (memcmp(hash, sp, MAX_HASH_SIZE) == 0) { if (packet->isRouteDirect()) { - _direct_dups++; // keep some stats + _direct_dups++; } else { _flood_dups++; } return true; } } - - memcpy(&_hashes[_next_idx*MAX_HASH_SIZE], hash, MAX_HASH_SIZE); - _next_idx = (_next_idx + 1) % MAX_PACKET_HASHES; // cyclic table return false; } + void markSeen(const mesh::Packet* packet) override { + uint8_t hash[MAX_HASH_SIZE]; + packet->calculatePacketHash(hash); + memcpy(&_hashes[_next_idx * MAX_HASH_SIZE], hash, MAX_HASH_SIZE); + _next_idx = (_next_idx + 1) % MAX_PACKET_HASHES; + } + void clear(const mesh::Packet* packet) override { uint8_t hash[MAX_HASH_SIZE]; packet->calculatePacketHash(hash); diff --git a/src/helpers/UTF8Helpers.h b/src/helpers/UTF8Helpers.h new file mode 100644 index 0000000000..e06cf4a62c --- /dev/null +++ b/src/helpers/UTF8Helpers.h @@ -0,0 +1,56 @@ +#pragma once + +#include <stddef.h> +#include <stdint.h> + +namespace mesh { + +inline bool isUtf8Continuation(uint8_t byte) { + return (byte & 0xC0) == 0x80; +} + +inline size_t validUtf8PrefixLength(const char* text, size_t max_bytes) { + if (text == nullptr) return 0; + + size_t offset = 0; + while (text[offset] != '\0') { + const uint8_t first = static_cast<uint8_t>(text[offset]); + size_t sequence_length = 0; + + if (first <= 0x7F) { + sequence_length = 1; + } else if (first >= 0xC2 && first <= 0xDF) { + sequence_length = 2; + } else if (first >= 0xE0 && first <= 0xEF) { + sequence_length = 3; + } else if (first >= 0xF0 && first <= 0xF4) { + sequence_length = 4; + } else { + break; + } + + if (offset + sequence_length > max_bytes) break; + + bool complete = true; + for (size_t i = 1; i < sequence_length; i++) { + if (text[offset + i] == '\0' || !isUtf8Continuation(static_cast<uint8_t>(text[offset + i]))) { + complete = false; + break; + } + } + if (!complete) break; + + if (sequence_length == 3) { + const uint8_t second = static_cast<uint8_t>(text[offset + 1]); + if ((first == 0xE0 && second < 0xA0) || (first == 0xED && second > 0x9F)) break; + } else if (sequence_length == 4) { + const uint8_t second = static_cast<uint8_t>(text[offset + 1]); + if ((first == 0xF0 && second < 0x90) || (first == 0xF4 && second > 0x8F)) break; + } + + offset += sequence_length; + } + return offset; +} + +} // namespace mesh diff --git a/src/helpers/bridges/BridgeBase.cpp b/src/helpers/bridges/BridgeBase.cpp index d2e2e5e007..8093d3cb5b 100644 --- a/src/helpers/bridges/BridgeBase.cpp +++ b/src/helpers/bridges/BridgeBase.cpp @@ -39,7 +39,8 @@ void BridgeBase::handleReceivedPacket(mesh::Packet *packet) { return; } - if (!_seen_packets.hasSeen(packet)) { + if (!_seen_packets.wasSeen(packet)) { + _seen_packets.markSeen(packet); // bridge_delay provides a buffer to prevent immediate processing conflicts in the mesh network. _mgr->queueInbound(packet, millis() + _prefs->bridge_delay); } else { diff --git a/src/helpers/bridges/BridgeBase.h b/src/helpers/bridges/BridgeBase.h index 04c1564bd4..8bbe646678 100644 --- a/src/helpers/bridges/BridgeBase.h +++ b/src/helpers/bridges/BridgeBase.h @@ -110,7 +110,7 @@ class BridgeBase : public AbstractBridge { * @brief Common packet handling for received packets * * Implements the standard pattern used by all bridges: - * - Check if packet was seen before using _seen_packets.hasSeen() + * - Check if packet was seen before using _seen_packets.wasSeen() * - Queue packet for mesh processing if not seen before * - Free packet if already seen to prevent duplicates * diff --git a/src/helpers/bridges/ESPNowBridge.cpp b/src/helpers/bridges/ESPNowBridge.cpp index b9eb1c105c..3c094e7c90 100644 --- a/src/helpers/bridges/ESPNowBridge.cpp +++ b/src/helpers/bridges/ESPNowBridge.cpp @@ -32,7 +32,7 @@ void ESPNowBridge::begin() { // Initialize WiFi in station mode WiFi.mode(WIFI_STA); - // Set wifi channel + // Set Wi-Fi channel if (esp_wifi_set_channel(_prefs->bridge_channel, WIFI_SECOND_CHAN_NONE) != ESP_OK) { BRIDGE_DEBUG_PRINTLN("Error setting WIFI channel to %d\n", _prefs->bridge_channel); return; @@ -167,7 +167,8 @@ void ESPNowBridge::sendPacket(mesh::Packet *packet) { return; } - if (!_seen_packets.hasSeen(packet)) { + if (!_seen_packets.wasSeen(packet)) { + _seen_packets.markSeen(packet); // Create a temporary buffer just for size calculation and reuse for actual writing uint8_t sizingBuffer[MAX_PAYLOAD_SIZE]; uint16_t meshPacketLen = packet->writeTo(sizingBuffer); diff --git a/src/helpers/bridges/RS232Bridge.cpp b/src/helpers/bridges/RS232Bridge.cpp index 0024f6f2f2..f719d342e4 100644 --- a/src/helpers/bridges/RS232Bridge.cpp +++ b/src/helpers/bridges/RS232Bridge.cpp @@ -115,7 +115,8 @@ void RS232Bridge::sendPacket(mesh::Packet *packet) { return; } - if (!_seen_packets.hasSeen(packet)) { + if (!_seen_packets.wasSeen(packet)) { + _seen_packets.markSeen(packet); uint8_t buffer[MAX_SERIAL_PACKET_SIZE]; uint16_t len = packet->writeTo(buffer + 4); diff --git a/src/helpers/esp32/ESPNOWRadio.h b/src/helpers/esp32/ESPNOWRadio.h index 67b1448e89..f474215a15 100644 --- a/src/helpers/esp32/ESPNOWRadio.h +++ b/src/helpers/esp32/ESPNOWRadio.h @@ -38,7 +38,7 @@ class ESPNOWRadio : public mesh::Radio { * These two functions do nothing for ESP-NOW, but are needed for the * Radio interface. */ - virtual void setRxBoostedGainMode(bool) { } + virtual bool setRxBoostedGainMode(bool) { } virtual bool getRxBoostedGainMode() const { return false; } uint32_t intID(); diff --git a/src/helpers/esp32/SerialBLEInterface.cpp b/src/helpers/esp32/SerialBLEInterface.cpp index dcfa0e1e34..6371cf3353 100644 --- a/src/helpers/esp32/SerialBLEInterface.cpp +++ b/src/helpers/esp32/SerialBLEInterface.cpp @@ -103,10 +103,9 @@ void SerialBLEInterface::onMtuChanged(BLEServer* pServer, esp_ble_gatts_cb_param void SerialBLEInterface::onDisconnect(BLEServer* pServer) { BLE_DEBUG_PRINTLN("onDisconnect()"); + deviceConnected = false; if (_isEnabled) { adv_restart_time = millis() + ADVERT_RESTART_DELAY; - - // loop() will detect this on next loop, and set deviceConnected to false } } @@ -118,17 +117,24 @@ void SerialBLEInterface::onWrite(BLECharacteristic* pCharacteristic, esp_ble_gat if (len > MAX_FRAME_SIZE) { BLE_DEBUG_PRINTLN("ERROR: onWrite(), frame too big, len=%d", len); - } else if (recv_queue_len >= FRAME_QUEUE_SIZE) { - BLE_DEBUG_PRINTLN("ERROR: onWrite(), recv_queue is full!"); } else { - recv_queue[recv_queue_len].len = len; - memcpy(recv_queue[recv_queue_len].buf, rxValue, len); - recv_queue_len++; + Frame frame = {}; + frame.len = len; + memcpy(frame.buf, rxValue, len); + + if (xQueueSend(recv_queue, &frame, 0) != pdTRUE) { + BLE_DEBUG_PRINTLN("ERROR: onWrite(), recv_queue is full!"); + } } } // ---------- public methods +void SerialBLEInterface::clearBuffers() { + xQueueReset(recv_queue); + send_queue_len = 0; +} + void SerialBLEInterface::enable() { if (_isEnabled) return; @@ -202,21 +208,13 @@ size_t SerialBLEInterface::checkRecvFrame(uint8_t dest[]) { } } - if (recv_queue_len > 0) { // check recv queue - size_t len = recv_queue[0].len; // take from top of queue - memcpy(dest, recv_queue[0].buf, len); - - BLE_DEBUG_PRINTLN("readBytes: sz=%d, hdr=%d", len, (uint32_t) dest[0]); - - recv_queue_len--; - for (int i = 0; i < recv_queue_len; i++) { // delete top item from queue - recv_queue[i] = recv_queue[i + 1]; - } - return len; + Frame frame; + if (xQueueReceive(recv_queue, &frame, 0) == pdTRUE) { + memcpy(dest, frame.buf, frame.len); + BLE_DEBUG_PRINTLN("readBytes: sz=%d, hdr=%d", (uint32_t) frame.len, (uint32_t) dest[0]); + return frame.len; } - if (pServer->getConnectedCount() == 0) deviceConnected = false; - if (deviceConnected != oldDeviceConnected) { if (!deviceConnected) { // disconnecting clearBuffers(); diff --git a/src/helpers/esp32/SerialBLEInterface.h b/src/helpers/esp32/SerialBLEInterface.h index 965e90fd19..9fb6adba94 100644 --- a/src/helpers/esp32/SerialBLEInterface.h +++ b/src/helpers/esp32/SerialBLEInterface.h @@ -5,6 +5,8 @@ #include <BLEServer.h> #include <BLEUtils.h> #include <BLE2902.h> +#include <freertos/FreeRTOS.h> +#include <freertos/queue.h> class SerialBLEInterface : public BaseSerialInterface, BLESecurityCallbacks, BLEServerCallbacks, BLECharacteristicCallbacks { BLEServer *pServer; @@ -24,12 +26,13 @@ class SerialBLEInterface : public BaseSerialInterface, BLESecurityCallbacks, BLE }; #define FRAME_QUEUE_SIZE 4 - int recv_queue_len; - Frame recv_queue[FRAME_QUEUE_SIZE]; + StaticQueue_t recv_queue_state; + uint8_t recv_queue_storage[FRAME_QUEUE_SIZE * sizeof(Frame)]; + QueueHandle_t recv_queue; int send_queue_len; Frame send_queue[FRAME_QUEUE_SIZE]; - void clearBuffers() { recv_queue_len = 0; send_queue_len = 0; } + void clearBuffers(); protected: // BLESecurityCallbacks methods @@ -58,7 +61,10 @@ class SerialBLEInterface : public BaseSerialInterface, BLESecurityCallbacks, BLE _isEnabled = false; _last_write = 0; last_conn_id = 0; - send_queue_len = recv_queue_len = 0; + recv_queue = xQueueCreateStatic( + FRAME_QUEUE_SIZE, sizeof(Frame), recv_queue_storage, &recv_queue_state + ); + send_queue_len = 0; } /** diff --git a/src/helpers/esp32/TBeamBoard.cpp b/src/helpers/esp32/TBeamBoard.cpp index 5f708d71d9..d9f6e02275 100644 --- a/src/helpers/esp32/TBeamBoard.cpp +++ b/src/helpers/esp32/TBeamBoard.cpp @@ -16,6 +16,16 @@ void TBeamBoard::begin() { ESP32Board::begin(); +#ifdef TBEAM_SUPREME_SX1262 + // On the T-Beam S3 Supreme the PMU + RTC sit on Wire1 (GPIO 42/41, brought + // up by XPowersLib), while the SH1106 OLED and the BME280/QMC6310 sensors + // sit on the primary bus, Wire (GPIO PIN_BOARD_SDA/PIN_BOARD_SCL). Nothing + // else initialises Wire on this board, so the display driver would + // otherwise talk on the wrong (default) pins and display.begin() fails, + // leaving the screen blank. Bring the OLED bus up here. + Wire.begin(PIN_BOARD_SDA, PIN_BOARD_SCL); +#endif + power_init(); //Configure user button diff --git a/src/helpers/ethernet/EthernetInterface.h b/src/helpers/ethernet/EthernetInterface.h new file mode 100644 index 0000000000..4e1f9176a6 --- /dev/null +++ b/src/helpers/ethernet/EthernetInterface.h @@ -0,0 +1,11 @@ +#pragma once + +#if defined(ETHERNET_ENABLED) + #if defined(ETHERNET_USE_CH390) + #include "helpers/ethernet/ch390/CH390EthernetInterface.h" + #elif defined(ETHERNET_USE_RAK13800) + #include "helpers/ethernet/RAK13800/RAK13800EthernetInterface.h" + #else + #error "ETHERNET_ENABLED is defined, but no specific driver flag (e.g. ETHERNET_USE_CH390) was provided!" + #endif +#endif diff --git a/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.cpp b/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.cpp new file mode 100644 index 0000000000..027581e303 --- /dev/null +++ b/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.cpp @@ -0,0 +1,109 @@ +#include "RAK13800EthernetInterface.h" +#include "../../nrf52/EthernetMac.h" +#include <SPI.h> +#include <EthernetUdp.h> + +#define PIN_SPI1_MISO (29) // (0 + 29) +#define PIN_SPI1_MOSI (30) // (0 + 30) +#define PIN_SPI1_SCK (3) // (0 + 3) + +SPIClass ETHERNET_SPI_PORT(NRF_SPIM1, PIN_SPI1_MISO, PIN_SPI1_SCK, PIN_SPI1_MOSI); + +#define PIN_ETHERNET_POWER_EN WB_IO2 // output, high to enable +#define PIN_ETHERNET_RESET 21 +#define PIN_ETHERNET_SS 26 + +bool RAK13800EthernetInterface::begin() { + + // WB_IO2 (power enable) is already driven HIGH by early constructor + // in RAK4631Board.cpp to support POE boot. + // Skip hardware reset — the W5100S comes out of power-on reset cleanly, + // and toggling reset kills the PHY link which breaks POE power. +#ifdef PIN_ETHERNET_RESET + pinMode(PIN_ETHERNET_RESET, OUTPUT); + digitalWrite(PIN_ETHERNET_RESET, HIGH); +#endif + + // generate mac address + uint8_t mac[6]; + generateEthernetMac(mac); + ETHERNET_DEBUG_PRINTLN( + "Ethernet MAC: %02X:%02X:%02X:%02X:%02X:%02X", + mac[0], + mac[1], + mac[2], + mac[3], + mac[4], + mac[5]); + ETHERNET_SPI_PORT.begin(); + Ethernet.init(ETHERNET_SPI_PORT, PIN_ETHERNET_SS); + + // Use static IP if build flags are defined, otherwise DHCP + #if defined(ETHERNET_STATIC_IP) && defined(ETHERNET_STATIC_GATEWAY) && defined(ETHERNET_STATIC_SUBNET) && defined(ETHERNET_STATIC_DNS) + IPAddress ip(ETHERNET_STATIC_IP); + IPAddress gateway(ETHERNET_STATIC_GATEWAY); + IPAddress subnet(ETHERNET_STATIC_SUBNET); + IPAddress dns(ETHERNET_STATIC_DNS); + Ethernet.begin(mac, ip, dns, gateway, subnet); + #else + if (Ethernet.begin(mac) == 0) { + ETHERNET_DEBUG_PRINTLN("Failed to initialize RAK13800 hardware."); + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + ETHERNET_DEBUG_PRINTLN("Ethernet hardware not found."); + } else if (Ethernet.linkStatus() == LinkOFF) { + ETHERNET_DEBUG_PRINTLN("Ethernet cable not connected."); + } else { + ETHERNET_DEBUG_PRINTLN("DHCP failed for unknown reason."); + } + return false; + } + #endif + + ETHERNET_DEBUG_PRINTLN("Ethernet begin complete"); + ETHERNET_DEBUG_PRINT_IP("IP Address", Ethernet.localIP()); + ETHERNET_DEBUG_PRINT_IP("Subnet Mask", Ethernet.subnetMask()); + ETHERNET_DEBUG_PRINT_IP("Gateway", Ethernet.gatewayIP()); + ETHERNET_DEBUG_PRINT_IP("DNS", Ethernet.dnsServerIP()); + + server.begin(); + ETHERNET_DEBUG_PRINTLN("listening on TCP port: %d", ETHERNET_TCP_PORT); + + return true; +} + +int RAK13800EthernetInterface::available() { + return client.available(); +} + +int RAK13800EthernetInterface::read() { + return client.read(); +} + +size_t RAK13800EthernetInterface::write(const uint8_t *buf, size_t size) { + return client.write(buf, size); +} + +bool RAK13800EthernetInterface::isConnected() const { + return _isConnected; +} + +void RAK13800EthernetInterface::loop() { + + Ethernet.maintain(); + + auto newClient = server.accept(); + if (newClient) { + IPAddress remoteIp = newClient.remoteIP(); + uint16_t remotePort = newClient.remotePort(); + ETHERNET_DEBUG_PRINTLN("New client accepted %u.%u.%u.%u:%u", remoteIp[0], remoteIp[1], remoteIp[2], remoteIp[3], remotePort); + if (client) { + ETHERNET_DEBUG_PRINTLN("Closing previous client"); + client.stop(); + } + client = newClient; + onClientConnected(); + } + + _isConnected = client.connected(); + +} diff --git a/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.h b/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.h new file mode 100644 index 0000000000..34bb758777 --- /dev/null +++ b/src/helpers/ethernet/RAK13800/RAK13800EthernetInterface.h @@ -0,0 +1,27 @@ +#pragma once + +#include "../SerialEthernetInterface.h" +#include <SPI.h> +#include <RAK13800_W5100S.h> + +class RAK13800EthernetInterface : public SerialEthernetInterface { + + bool _isConnected; + EthernetServer server; + EthernetClient client; + + public: + RAK13800EthernetInterface() : server(EthernetServer(ETHERNET_TCP_PORT)) { + _isConnected = false; + } + + bool begin(); + void loop() override; + + // BaseSerialInterface methods + bool isConnected() const override; + + int available() override; + int read() override; + size_t write(const uint8_t *buf, size_t size) override; +}; diff --git a/src/helpers/ethernet/SerialEthernetInterface.cpp b/src/helpers/ethernet/SerialEthernetInterface.cpp new file mode 100644 index 0000000000..22bcabc10b --- /dev/null +++ b/src/helpers/ethernet/SerialEthernetInterface.cpp @@ -0,0 +1,140 @@ +#include "SerialEthernetInterface.h" + +#define RECV_STATE_IDLE 0 +#define RECV_STATE_HDR_FOUND 1 +#define RECV_STATE_LEN1_FOUND 2 +#define RECV_STATE_LEN2_FOUND 3 + +bool SerialEthernetInterface::begin() { + return true; +} + +void SerialEthernetInterface::enable() { + if (_isEnabled) return; + _isEnabled = true; + clearBuffers(); +} + +void SerialEthernetInterface::disable() { + _isEnabled = false; +} + +size_t SerialEthernetInterface::writeFrame(const uint8_t src[], size_t len) { + if (len > MAX_FRAME_SIZE) { + ETHERNET_DEBUG_PRINTLN("writeFrame(), frame too big, len=%d\n", len); + return 0; + } + + if (isConnected() && len > 0) { + if (send_queue_len >= FRAME_QUEUE_SIZE) { + ETHERNET_DEBUG_PRINTLN("writeFrame(), send_queue is full!"); + return 0; + } + + send_queue[send_queue_len].len = len; // add to send queue + memcpy(send_queue[send_queue_len].buf, src, len); + send_queue_len++; + + return len; + } + return 0; +} + +bool SerialEthernetInterface::isWriteBusy() const { + return false; +} + +void SerialEthernetInterface::onClientConnected() { + _state = RECV_STATE_IDLE; + _frame_len = 0; + _rx_len = 0; +} + +size_t SerialEthernetInterface::checkRecvFrame(uint8_t dest[]) { + + if (isConnected()) { + if (send_queue_len > 0) { // first, check send queue + + _last_write = millis(); + int len = send_queue[0].len; + +#if ETHERNET_RAW_LINE + ETHERNET_DEBUG_PRINTLN("TX line len=%d", len); + client.write(send_queue[0].buf, len); + client.write("\r\n", 2); +#else + uint8_t pkt[3+len]; // use same header as serial interface so client can delimit frames + pkt[0] = '>'; + pkt[1] = (len & 0xFF); // LSB + pkt[2] = (len >> 8); // MSB + memcpy(&pkt[3], send_queue[0].buf, send_queue[0].len); + ETHERNET_DEBUG_PRINTLN("Sending frame len=%d", len); + #if ETHERNET_DEBUG_LOGGING && ARDUINO + ETHERNET_DEBUG_PRINTLN("TX frame len=%d", len); + #endif + write(pkt, 3 + len); +#endif + send_queue_len--; + for (int i = 0; i < send_queue_len; i++) { // delete top item from queue + send_queue[i] = send_queue[i + 1]; + } + } else { + while (available()) { + int c = read(); + if (c < 0) break; + +#if ETHERNET_RAW_LINE + if (c == '\r' || c == '\n') { + if (_rx_len == 0) { + continue; + } + uint16_t out_len = _rx_len; + if (out_len > MAX_FRAME_SIZE) out_len = MAX_FRAME_SIZE; + memcpy(dest, _rx_buf, out_len); + _rx_len = 0; + return out_len; + } + if (_rx_len < MAX_FRAME_SIZE) { + _rx_buf[_rx_len] = (uint8_t)c; + _rx_len++; + } +#else + switch (_state) { + case RECV_STATE_IDLE: + if (c == '<') { + _state = RECV_STATE_HDR_FOUND; + } + break; + case RECV_STATE_HDR_FOUND: + _frame_len = (uint8_t)c; + _state = RECV_STATE_LEN1_FOUND; + break; + case RECV_STATE_LEN1_FOUND: + _frame_len |= ((uint16_t)c) << 8; + _rx_len = 0; + _state = _frame_len > 0 ? RECV_STATE_LEN2_FOUND : RECV_STATE_IDLE; + break; + default: + if (_rx_len < MAX_FRAME_SIZE) { + _rx_buf[_rx_len] = (uint8_t)c; + } + _rx_len++; + if (_rx_len >= _frame_len) { + if (_frame_len > MAX_FRAME_SIZE) { + _frame_len = MAX_FRAME_SIZE; + } + #if ETHERNET_DEBUG_LOGGING && ARDUINO + ETHERNET_DEBUG_PRINTLN("RX frame len=%d", _frame_len); + #endif + memcpy(dest, _rx_buf, _frame_len); + _state = RECV_STATE_IDLE; + return _frame_len; + } + } +#endif + } + } + } + + return 0; +} diff --git a/src/helpers/ethernet/SerialEthernetInterface.h b/src/helpers/ethernet/SerialEthernetInterface.h new file mode 100644 index 0000000000..46789f7106 --- /dev/null +++ b/src/helpers/ethernet/SerialEthernetInterface.h @@ -0,0 +1,75 @@ +#pragma once + +#include "../BaseSerialInterface.h" + +#ifndef ETHERNET_TCP_PORT + #define ETHERNET_TCP_PORT 5000 +#endif +// define ETHERNET_RAW_LINE=1 to use raw line-based CLI instead of framed packets + +class SerialEthernetInterface : public BaseSerialInterface { + bool _isEnabled; + unsigned long _last_write; + uint8_t _state; + uint16_t _frame_len; + uint16_t _rx_len; + uint8_t _rx_buf[MAX_FRAME_SIZE]; + + struct Frame { + uint8_t len; + uint8_t buf[MAX_FRAME_SIZE]; + }; + + #define FRAME_QUEUE_SIZE 4 + int send_queue_len; + Frame send_queue[FRAME_QUEUE_SIZE]; + + void clearBuffers() { + send_queue_len = 0; + _state = 0; + _frame_len = 0; + _rx_len = 0; + } + + protected: + + public: + SerialEthernetInterface() { + _isEnabled = false; + _last_write = 0; + send_queue_len = 0; + _state = 0; + _frame_len = 0; + _rx_len = 0; + } + bool begin(); + + void onClientConnected(); + + // BaseSerialInterface methods + void enable() override; + void disable() override; + bool isEnabled() const override { return _isEnabled; } + + bool isConnected() const override; + bool isWriteBusy() const override; + + size_t writeFrame(const uint8_t src[], size_t len) override; + size_t checkRecvFrame(uint8_t dest[]) override; + + virtual int available() = 0; + virtual int read() = 0; + virtual size_t write(const uint8_t *buf, size_t size) = 0; +}; + + +#if ETHERNET_DEBUG_LOGGING && ARDUINO + #include <Arduino.h> + #define ETHERNET_DEBUG_PRINT(F, ...) Serial.printf("ETH: " F, ##__VA_ARGS__) + #define ETHERNET_DEBUG_PRINTLN(F, ...) Serial.printf("ETH: " F "\n", ##__VA_ARGS__) + #define ETHERNET_DEBUG_PRINT_IP(name, ip) Serial.printf("ETH: " name ": %u.%u.%u.%u" "\n", ip[0], ip[1], ip[2], ip[3]) +#else + #define ETHERNET_DEBUG_PRINT(...) {} + #define ETHERNET_DEBUG_PRINTLN(...) {} + #define ETHERNET_DEBUG_PRINT_IP(...) {} +#endif diff --git a/src/helpers/ethernet/ch390/CH390EthernetInterface.cpp b/src/helpers/ethernet/ch390/CH390EthernetInterface.cpp new file mode 100644 index 0000000000..7f6962453b --- /dev/null +++ b/src/helpers/ethernet/ch390/CH390EthernetInterface.cpp @@ -0,0 +1,94 @@ +#include "CH390EthernetInterface.h" + +void onWiFiEvent(WiFiEvent_t event) { + switch(event){ + case ARDUINO_EVENT_ETH_START: + ETHERNET_DEBUG_PRINTLN("Ethernet Started"); + break; + case ARDUINO_EVENT_ETH_CONNECTED: + ETHERNET_DEBUG_PRINTLN("Ethernet Connected"); + break; + case ARDUINO_EVENT_ETH_DISCONNECTED: + ETHERNET_DEBUG_PRINTLN("Ethernet Disconnected"); + break; + case ARDUINO_EVENT_ETH_GOT_IP: + ETHERNET_DEBUG_PRINTLN("Ethernet Got IP"); + ETHERNET_DEBUG_PRINT_IP("IP Address", CH390.localIP()); + ETHERNET_DEBUG_PRINT_IP("Subnet Mask", CH390.subnetMask()); + ETHERNET_DEBUG_PRINT_IP("Gateway", CH390.gatewayIP()); + ETHERNET_DEBUG_PRINT_IP("DNS", CH390.dnsIP()); + ETHERNET_DEBUG_PRINTLN("MAC Address: %s", CH390.macAddress().c_str()); + break; + default: + break; + } +} + +bool CH390EthernetInterface::begin() { + + // listen to ethernet events + WiFi.onEvent(onWiFiEvent); + + // Init CH390 + ch390_config_t config = CH390_DEFAULT_CONFIG(); + config.spi_miso_gpio = ETH_MISO_PIN; + config.spi_mosi_gpio = ETH_MOSI_PIN; + config.spi_sck_gpio = ETH_SCLK_PIN; + config.spi_cs_gpio = ETH_CS_PIN; + config.int_gpio = ETH_INT_PIN; + if (!CH390.begin(config)) { + ETHERNET_DEBUG_PRINTLN("Failed to initialize CH390 hardware."); + return false; + } + + // Setup Static IP if build flags are present + #if defined(ETHERNET_STATIC_IP) && defined(ETHERNET_STATIC_GATEWAY) && defined(ETHERNET_STATIC_SUBNET) + IPAddress ip(ETHERNET_STATIC_IP); + IPAddress gw(ETHERNET_STATIC_GATEWAY); + IPAddress sn(ETHERNET_STATIC_SUBNET); + CH390.config(ip, gw, sn); + #endif + + // Start Server + server.begin(ETHERNET_TCP_PORT); + ETHERNET_DEBUG_PRINTLN("listening on TCP port: %d", ETHERNET_TCP_PORT); + + return true; +} + +int CH390EthernetInterface::available() { + return client.available(); +} + +int CH390EthernetInterface::read() { + return client.read(); +} + +size_t CH390EthernetInterface::write(const uint8_t *buf, size_t size) { + return client.write(buf, size); +} + +bool CH390EthernetInterface::isConnected() const { + return _isConnected; +} + +void CH390EthernetInterface::loop() { + + if (server.hasClient()) { + auto newClient = server.available(); + if (newClient) { + IPAddress remoteIp = newClient.remoteIP(); + uint16_t remotePort = newClient.remotePort(); + ETHERNET_DEBUG_PRINTLN("New client accepted %u.%u.%u.%u:%u", remoteIp[0], remoteIp[1], remoteIp[2], remoteIp[3], remotePort); + if (client) { + ETHERNET_DEBUG_PRINTLN("Closing previous client"); + client.stop(); + } + client = newClient; + onClientConnected(); + } + } + + _isConnected = client.connected(); + +} diff --git a/src/helpers/ethernet/ch390/CH390EthernetInterface.h b/src/helpers/ethernet/ch390/CH390EthernetInterface.h new file mode 100644 index 0000000000..09c3fc23d4 --- /dev/null +++ b/src/helpers/ethernet/ch390/CH390EthernetInterface.h @@ -0,0 +1,30 @@ +#pragma once + +#include "../SerialEthernetInterface.h" +#include <SPI.h> +#include <WiFi.h> +#include <WiFiServer.h> +#include <WiFiClient.h> +#include <ESP32_CH390.h> + +class CH390EthernetInterface : public SerialEthernetInterface { + + bool _isConnected; + WiFiServer server; + WiFiClient client; + + public: + CH390EthernetInterface(){ + _isConnected = false; + } + + bool begin(); + void loop() override; + + // BaseSerialInterface methods + bool isConnected() const override; + + int available() override; + int read() override; + size_t write(const uint8_t *buf, size_t size) override; +}; diff --git a/src/helpers/nrf52/EthernetCLI.h b/src/helpers/nrf52/EthernetCLI.h new file mode 100644 index 0000000000..34802e567a --- /dev/null +++ b/src/helpers/nrf52/EthernetCLI.h @@ -0,0 +1,157 @@ +#pragma once + +#ifdef ETHERNET_ENABLED + +#include <Arduino.h> +#include <SPI.h> +#include <RAK13800_W5100S.h> +#include <helpers/nrf52/EthernetMac.h> + +#define PIN_SPI1_MISO (29) +#define PIN_SPI1_MOSI (30) +#define PIN_SPI1_SCK (3) + +static SPIClass ETHERNET_SPI_PORT(NRF_SPIM1, PIN_SPI1_MISO, PIN_SPI1_SCK, PIN_SPI1_MOSI); + +#define PIN_ETHERNET_POWER_EN WB_IO2 +#define PIN_ETHERNET_RESET 21 +#define PIN_ETHERNET_SS 26 + +#ifndef ETHERNET_TCP_PORT + #define ETHERNET_TCP_PORT 23 // telnet port for CLI access +#endif + +#ifndef ETHERNET_CLI_BANNER + #define ETHERNET_CLI_BANNER "MeshCore CLI" +#endif + +#define ETHERNET_RETRY_INTERVAL_MS 30000 + +static EthernetServer ethernet_server(ETHERNET_TCP_PORT); +static EthernetClient ethernet_client; +static volatile bool ethernet_running = false; + +// FreeRTOS task: handles hw init, DHCP, and retries in the background +static void ethernet_task(void* param) { + (void)param; + + Serial.println("ETH: Initializing hardware"); + // WB_IO2 (power enable) is already driven HIGH by early constructor + // in RAK4631Board.cpp to support POE boot. + // Skip hardware reset — the W5100S comes out of power-on reset cleanly, + // and toggling reset kills the PHY link which breaks POE power. + pinMode(PIN_ETHERNET_RESET, OUTPUT); + digitalWrite(PIN_ETHERNET_RESET, HIGH); + + ETHERNET_SPI_PORT.begin(); + Ethernet.init(ETHERNET_SPI_PORT, PIN_ETHERNET_SS); + + uint8_t mac[6]; + generateEthernetMac(mac); + Serial.printf("ETH: MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + // Retry loop: keep trying until we get an IP + while (!ethernet_running) { + Serial.println("ETH: Attempting DHCP..."); + if (Ethernet.begin(mac, 10000, 2000) == 0) { + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("ETH: Hardware not found, giving up"); + vTaskDelete(NULL); + return; + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("ETH: Cable not connected, will retry"); + } else { + Serial.println("ETH: DHCP failed, will retry"); + } + vTaskDelay(pdMS_TO_TICKS(ETHERNET_RETRY_INTERVAL_MS)); + continue; + } + + IPAddress ip = Ethernet.localIP(); + Serial.printf("ETH: IP: %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]); + Serial.printf("ETH: Listening on TCP port %d\n", ETHERNET_TCP_PORT); + ethernet_server.begin(); + ethernet_running = true; + } + + // DHCP succeeded, task is done + vTaskDelete(NULL); +} + +static void ethernet_start_task() { + xTaskCreate(ethernet_task, "eth_init", 1024, NULL, 1, NULL); +} + +// Format ethernet status into reply buffer. Returns true if command was handled. +static bool ethernet_handle_command(const char* command, char* reply) { + if (strcmp(command, "eth.status") == 0) { + if (!ethernet_running) { + strcpy(reply, "ETH: not connected"); + } else { + IPAddress ip = Ethernet.localIP(); + sprintf(reply, "ETH: %u.%u.%u.%u:%d", ip[0], ip[1], ip[2], ip[3], ETHERNET_TCP_PORT); + } + return true; + } + return false; +} + +// Check for new TCP client connections, replacing any existing connection. +// Use accept() (not available()) so we only see newly-accepted sockets; +// available() also returns existing connected sockets that have data, which +// would force us to disambiguate every inbound packet from a real new client. +static void ethernet_check_client() { + auto newClient = ethernet_server.accept(); + if (newClient) { + if (ethernet_client) ethernet_client.stop(); + ethernet_client = newClient; + IPAddress ip = ethernet_client.remoteIP(); + Serial.printf("ETH: Client connected from %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]); + ethernet_client.println(ETHERNET_CLI_BANNER); + } +} + +// Call from loop() to maintain DHCP and check for new clients +static void ethernet_loop_maintain() { + if (ethernet_running) { + ethernet_check_client(); + Ethernet.maintain(); + } +} + +// Read a line from the Ethernet client into the command buffer. +// Returns true when a complete line is ready to process (command is null-terminated). +// The caller should process the command and then reset ethernet_command[0] = 0. +static bool ethernet_read_line(char* ethernet_command, size_t buf_size) { + if (!ethernet_running || !ethernet_client || !ethernet_client.connected()) return false; + + int elen = strlen(ethernet_command); + while (ethernet_client.available() && elen < (int)buf_size - 1) { + char c = ethernet_client.read(); + if (c == '\n' && elen == 0) continue; // ignore leading LF (from CR+LF) + if (c == '\r' || c == '\n') { ethernet_command[elen++] = '\r'; break; } + ethernet_command[elen++] = c; + ethernet_command[elen] = 0; + } + if (elen == (int)buf_size - 1) { + ethernet_command[buf_size - 1] = '\r'; + } + + if (elen > 0 && ethernet_command[elen - 1] == '\r') { + ethernet_command[elen - 1] = 0; + ethernet_client.println(); + return true; + } + return false; +} + +// Send a reply to the Ethernet client +static void ethernet_send_reply(const char* reply) { + if (reply[0]) { + ethernet_client.print(" -> "); ethernet_client.println(reply); + } +} + +#endif // ETHERNET_ENABLED diff --git a/src/helpers/nrf52/EthernetMac.h b/src/helpers/nrf52/EthernetMac.h new file mode 100644 index 0000000000..0ee2ac06f5 --- /dev/null +++ b/src/helpers/nrf52/EthernetMac.h @@ -0,0 +1,13 @@ +#pragma once + +#include <Arduino.h> + +static inline void generateEthernetMac(uint8_t mac[6]) { + uint32_t device_id = NRF_FICR->DEVICEID[0]; + mac[0] = 0x02; + mac[1] = 0x92; + mac[2] = 0x1F; + mac[3] = (device_id >> 16) & 0xFF; + mac[4] = (device_id >> 8) & 0xFF; + mac[5] = device_id & 0xFF; +} diff --git a/src/helpers/radiolib/CustomLLCC68.h b/src/helpers/radiolib/CustomLLCC68.h index 82f886c324..1dcd916fa1 100644 --- a/src/helpers/radiolib/CustomLLCC68.h +++ b/src/helpers/radiolib/CustomLLCC68.h @@ -2,10 +2,12 @@ #include <RadioLib.h> -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received -#define SX126X_IRQ_PREAMBLE_DETECTED 0x04 - class CustomLLCC68 : public LLCC68 { + uint32_t _preambleMillis = 66; + uint32_t _maxPayloadMillis = 3934; + uint32_t _activityAt = 0; + bool _headerSeen = false; + public: CustomLLCC68(Module *mod) : LLCC68(mod) { } @@ -66,11 +68,11 @@ class CustomLLCC68 : public LLCC68 { setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN); #endif #if defined(SX126X_RXEN) || defined(SX126X_TXEN) - #ifndef SX1262X_RXEN - #define SX1262X_RXEN RADIOLIB_NC + #ifndef SX126X_RXEN + #define SX126X_RXEN RADIOLIB_NC #endif - #ifndef SX1262X_TXEN - #define SX1262X_TXEN RADIOLIB_NC + #ifndef SX126X_TXEN + #define SX126X_TXEN RADIOLIB_NC #endif setRfSwitchPins(SX126X_RXEN, SX126X_TXEN); #endif @@ -78,10 +80,61 @@ class CustomLLCC68 : public LLCC68 { return true; // success } + int16_t startReceive() override { + // include the PREAMBLE_DETECTED irq bit in reported flags + return LLCC68::startReceive(RADIOLIB_SX126X_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0); + } + bool isReceiving() { - uint16_t irq = getIrqFlags(); - bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); - return detected; + uint32_t irq = getIrqFlags(); + bool preamble = irq & RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED; // bit 2 + bool header = irq & RADIOLIB_SX126X_IRQ_HEADER_VALID; // bit 4 + bool hdrErr = irq & RADIOLIB_SX126X_IRQ_HEADER_ERR; // bit 5 + uint32_t now = millis(); + if (hdrErr) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; + _headerSeen = false; + return false; + } + if (!header && _headerSeen) { + // something cleared the header flag, reset our state. + _activityAt = 0; _headerSeen = false; + return false; + } + + if (header) { + if (!_headerSeen) { _headerSeen = true; _activityAt = now; }; + if (now - _activityAt > _maxPayloadMillis) { + MESH_DEBUG_PRINTLN("Clearing header IRQ after %ums", _maxPayloadMillis); + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; _headerSeen = false; + return false; + } + return true; + } + if (preamble) { + if (_activityAt == 0) _activityAt = now; + if (now - _activityAt > _preambleMillis) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED); + _activityAt = 0; + MESH_DEBUG_PRINTLN("Clearing preamble IRQ after %ums", _preambleMillis); + + return false; + } + return true; + } + _activityAt = 0; _headerSeen = false; + return false; + } + + void setPreambleMillis(uint32_t preambleMillis) { + _preambleMillis = preambleMillis; + MESH_DEBUG_PRINTLN("Set _preambleMillis=%u", _preambleMillis); + } + void setMaxPayloadMillis(uint32_t payloadMillis) { + _maxPayloadMillis = payloadMillis; + MESH_DEBUG_PRINTLN("Set _maxPayloadMillis=%u", _maxPayloadMillis); } bool getRxBoostedGainMode() { diff --git a/src/helpers/radiolib/CustomLLCC68Wrapper.h b/src/helpers/radiolib/CustomLLCC68Wrapper.h index 8861f76d24..ae0fe0a253 100644 --- a/src/helpers/radiolib/CustomLLCC68Wrapper.h +++ b/src/helpers/radiolib/CustomLLCC68Wrapper.h @@ -14,6 +14,10 @@ class CustomLLCC68Wrapper : public RadioLibWrapper { ((CustomLLCC68 *)_radio)->setBandwidth(bw); ((CustomLLCC68 *)_radio)->setCodingRate(cr); updatePreamble(sf); + PacketMillis pm = calcMaxPacketMillis(sf, bw, cr, preambleLengthForSF(sf)); + ((CustomLLCC68 *)_radio)->setPreambleMillis(pm.preambleMillis); + ((CustomLLCC68 *)_radio)->setMaxPayloadMillis(pm.payloadMillis); + } bool isReceivingPacket() override { @@ -33,8 +37,8 @@ class CustomLLCC68Wrapper : public RadioLibWrapper { void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); } - void setRxBoostedGainMode(bool en) override { - ((CustomLLCC68 *)_radio)->setRxBoostedGainMode(en); + bool setRxBoostedGainMode(bool en) override { + return ((CustomLLCC68 *)_radio)->setRxBoostedGainMode(en) == RADIOLIB_ERR_NONE; } bool getRxBoostedGainMode() const override { return ((CustomLLCC68 *)_radio)->getRxBoostedGainMode(); diff --git a/src/helpers/radiolib/CustomLR1110.h b/src/helpers/radiolib/CustomLR1110.h index 4061c6b1a6..75674a1dfd 100644 --- a/src/helpers/radiolib/CustomLR1110.h +++ b/src/helpers/radiolib/CustomLR1110.h @@ -4,6 +4,10 @@ #include "MeshCore.h" class CustomLR1110 : public LR1110 { + uint32_t _preambleMillis = 66; + uint32_t _maxPayloadMillis = 3934; + uint32_t _activityAt = 0; + bool _headerSeen = false; bool _rx_boosted = false; public: @@ -31,11 +35,61 @@ class CustomLR1110 : public LR1110 { bool getRxBoostedGainMode() const { return _rx_boosted; } + int16_t startReceive() override { + // include the PREAMBLE_DETECTED irq bit in reported flags. + return LR1110::startReceive(RADIOLIB_LR11X0_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0); + } + bool isReceiving() { - uint16_t irq = getIrqStatus(); - bool detected = ((irq & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID) || (irq & RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED)); - return detected; + uint32_t irq = getIrqStatus(); + bool preamble = irq & RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED; // bit 4 + bool header = irq & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID; // bit 5 + bool hdrErr = irq & RADIOLIB_LR11X0_IRQ_HEADER_ERR; // bit 6 + uint32_t now = millis(); + if (hdrErr) { + clearIrqState(RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED | RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID | RADIOLIB_LR11X0_IRQ_HEADER_ERR); + _activityAt = 0; + _headerSeen = false; + return false; + } + if (!header && _headerSeen) { + // something cleared the header flag, reset our state. + _activityAt = 0; _headerSeen = false; + return false; + } + if (header) { + if (!_headerSeen) { _headerSeen = true; _activityAt = now; }; + if (now - _activityAt > _maxPayloadMillis) { + MESH_DEBUG_PRINTLN("Clearing header IRQ after %ums", _maxPayloadMillis); + clearIrqState(RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED | RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID | RADIOLIB_LR11X0_IRQ_HEADER_ERR); + _activityAt = 0; _headerSeen = false; + return false; + } + return true; + } + if (preamble) { + if (_activityAt == 0) _activityAt = now; + if (now - _activityAt > _preambleMillis) { + clearIrqState(RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED); + _activityAt = 0; + MESH_DEBUG_PRINTLN("Clearing preamble IRQ after %ums", _preambleMillis); + + return false; + } + return true; + } + _activityAt = 0; _headerSeen = false; + return false; + } + + void setPreambleMillis(uint32_t preambleMillis) { + _preambleMillis = preambleMillis; + MESH_DEBUG_PRINTLN("Set _preambleMillis=%u", _preambleMillis); + } + void setMaxPayloadMillis(uint32_t payloadMillis) { + _maxPayloadMillis = payloadMillis; + MESH_DEBUG_PRINTLN("Set _maxPayloadMillis=%u", _maxPayloadMillis); } uint8_t getSpreadingFactor() const { return spreadingFactor; } -}; \ No newline at end of file +}; diff --git a/src/helpers/radiolib/CustomLR1110Wrapper.h b/src/helpers/radiolib/CustomLR1110Wrapper.h index 13efd25b57..44230c61c3 100644 --- a/src/helpers/radiolib/CustomLR1110Wrapper.h +++ b/src/helpers/radiolib/CustomLR1110Wrapper.h @@ -14,6 +14,9 @@ class CustomLR1110Wrapper : public RadioLibWrapper { ((CustomLR1110 *)_radio)->setBandwidth(bw); ((CustomLR1110 *)_radio)->setCodingRate(cr); updatePreamble(sf); + PacketMillis pm = calcMaxPacketMillis(sf, bw, cr, preambleLengthForSF(sf)); + ((CustomLR1110 *)_radio)->setPreambleMillis(pm.preambleMillis); + ((CustomLR1110 *)_radio)->setMaxPayloadMillis(pm.payloadMillis); } void doResetAGC() override { lr11x0ResetAGC((LR11x0 *)_radio, ((CustomLR1110 *)_radio)->getFreqMHz()); } @@ -26,6 +29,11 @@ class CustomLR1110Wrapper : public RadioLibWrapper { return rssi; } + uint32_t getEstAirtimeFor(int len_bytes) override { + auto airtime = RadioLibWrapper::getEstAirtimeFor(len_bytes); + return airtime < 200 ? 200 : airtime; // at least 200 millis + } + void onSendFinished() override { RadioLibWrapper::onSendFinished(); _radio->setPreambleLength(preambleLengthForSF(getSpreadingFactor())); // overcomes weird issues with small and big pkts @@ -36,8 +44,8 @@ class CustomLR1110Wrapper : public RadioLibWrapper { uint8_t getSpreadingFactor() const override { return ((CustomLR1110 *)_radio)->getSpreadingFactor(); } - void setRxBoostedGainMode(bool en) override { - ((CustomLR1110 *)_radio)->setRxBoostedGainMode(en); + bool setRxBoostedGainMode(bool en) override { + return ((CustomLR1110 *)_radio)->setRxBoostedGainMode(en) == RADIOLIB_ERR_NONE; } bool getRxBoostedGainMode() const override { return ((CustomLR1110 *)_radio)->getRxBoostedGainMode(); diff --git a/src/helpers/radiolib/CustomLR2021.h b/src/helpers/radiolib/CustomLR2021.h new file mode 100644 index 0000000000..17944ef006 --- /dev/null +++ b/src/helpers/radiolib/CustomLR2021.h @@ -0,0 +1,76 @@ +#pragma once + +#include <RadioLib.h> +#include "MeshCore.h" + +class CustomLR2021 : public LR2021 { + bool _rx_boosted = false; + + public: + CustomLR2021(Module *mod) : LR2021(mod) { irqDioNum = LR2021_IRQ_DIO; } + + bool std_init(SPIClass* spi = NULL) + { + + #ifdef LR2021_TCXO_VOLTAGE + float tcxo = LR2021_TCXO_VOLTAGE; + #else + float tcxo = 1.6f; + #endif + + #ifdef LORA_CR + uint8_t cr = LORA_CR; + #else + uint8_t cr = 5; + #endif + + #if defined(P_LORA_SCLK) + #ifdef NRF52_PLATFORM + if (spi) { spi->setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI); spi->begin(); } + #elif defined(RP2040_PLATFORM) + if (spi) { + spi->setMISO(P_LORA_MISO); + //spi->setCS(P_LORA_NSS); // Setting CS results in freeze + spi->setSCK(P_LORA_SCLK); + spi->setMOSI(P_LORA_MOSI); + spi->begin(); + } + #else + if (spi) spi->begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI); + #endif + #endif + int status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_LR2021_LORA_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + // if radio init fails with -707/-706, try again with tcxo voltage set to 0.0f + if (status == RADIOLIB_ERR_SPI_CMD_FAILED || status == RADIOLIB_ERR_SPI_CMD_INVALID) { + tcxo = 0.0f; + status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_LR2021_LORA_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + } + if (status != RADIOLIB_ERR_NONE) { + Serial.print("ERROR: radio init failed: "); + Serial.println(status); + return false; // fail + } + + setCRC(2); + explicitHeader(); + + + #ifdef LR2021_RX_BOOSTED_GAIN + setRxBoostedGainMode(LR2021_RX_BOOSTED_GAIN); + #endif + + return true; // success + } + + float getFreqMHz() const { return freqMHz; } + + bool getRxBoostedGainMode() const { return _rx_boosted; } + + bool isReceiving() { + uint32_t irq = getIrqStatus(); + bool detected = ((irq & RADIOLIB_LR2021_IRQ_SYNCWORD_VALID) || (irq & RADIOLIB_LR2021_IRQ_PREAMBLE_DETECTED)); + return detected; + } + + uint8_t getSpreadingFactor() const { return spreadingFactor; } +}; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomLR2021Wrapper.h b/src/helpers/radiolib/CustomLR2021Wrapper.h new file mode 100644 index 0000000000..879898315e --- /dev/null +++ b/src/helpers/radiolib/CustomLR2021Wrapper.h @@ -0,0 +1,107 @@ +#pragma once + +#include "CustomLR2021.h" +#include "RadioLibWrappers.h" + +#ifndef USE_LR2021 +#define USE_LR2021 +#endif + +#ifndef LR2021_RX_BOOST_LEVEL +#define LR2021_RX_BOOST_LEVEL 7 +#endif + +class CustomLR2021Wrapper : public RadioLibWrapper { +public: + CustomLR2021Wrapper(CustomLR2021& radio, mesh::MainBoard& board) : RadioLibWrapper(radio, board) { } + + void setParams(float freq, float bw, uint8_t sf, uint8_t cr) override { + ((CustomLR2021 *)_radio)->setFrequency(freq); + ((CustomLR2021 *)_radio)->setSpreadingFactor(sf); + ((CustomLR2021 *)_radio)->setBandwidth(bw); + ((CustomLR2021 *)_radio)->setCodingRate(cr); + updatePreamble(sf); + applySideDetectorConfig(); + } + + bool configSideDetectors(const uint8_t* sideDetSFs, uint8_t num, float bw) override { + LR2021LoRaSideDetector_t tmp[3]; + uint8_t sf = getSpreadingFactor(); + + if (sf >= 10 && num > 1) { return false; } // only 1 side detector allowed when primary SF >= 10 + for (int i = 0; i < num; i++) { + if (sideDetSFs[i] > 12 || sideDetSFs[i] < 5) { return false; } // must be valid SF + if (sideDetSFs[i] <= sf) { return false; } // must be < primary SF + if (sideDetSFs[i] > sf + 4) { return false; } // span must not be > 4 + + tmp[i].sf = sideDetSFs[i]; + float tSym = calcTsym(tmp[i].sf, bw); + if (tSym >= 16.0f) { + tmp[i].ldro = true; + } else { + tmp[i].ldro = false; + } + tmp[i].invertIQ = false; + tmp[i].syncWord = 0x12; + } + int16_t status = ((CustomLR2021 *)_radio)->setSideDetector(tmp, num); + RadioLibWrapper::idle(); // trigger startReceive() + MESH_DEBUG_PRINTLN("setSideDetector() returned %d", status); + + if (status == RADIOLIB_ERR_NONE) { + for (int i = 0; i < num; i++) { _sideDet[i] = tmp[i]; } + _numSideDet = num; + } else { + return false; + } + + return true; + } + + int16_t applySideDetectorConfig() { + int16_t status = ((CustomLR2021 *)_radio)->setSideDetector(_sideDet, _numSideDet); + RadioLibWrapper::idle(); // trigger startReceive() + return status; + } + + float calcTsym(uint8_t sf, float bw) { + float tSym = (float)(uint32_t(1) << sf) / (float)bw; + return tSym; + } + + bool isReceivingPacket() override { + return ((CustomLR2021 *)_radio)->isReceiving(); + } + + float getCurrentRSSI() override { + float rssi = -110; + ((CustomLR2021 *)_radio)->getRssiInst(&rssi); + return rssi; + } + + void onSendFinished() override { + RadioLibWrapper::onSendFinished(); + _radio->setPreambleLength(preambleLengthForSF(getSpreadingFactor())); // overcomes weird issues with small and big pkts + } + + float getLastRSSI() const override { return ((CustomLR2021 *)_radio)->getRSSI(); } + float getLastSNR() const override { return ((CustomLR2021 *)_radio)->getSNR(); } + + uint8_t getSpreadingFactor() const override { return ((CustomLR2021 *)_radio)->getSpreadingFactor(); } + + bool setRxBoostedGainMode(bool en) override { + ((CustomLR2021 *)_radio)->standby(); // LR2021 must be in standby to accept setRxBoostedGainMode + int16_t status = ((CustomLR2021 *)_radio)->setRxBoostedGainMode(en ? LR2021_RX_BOOST_LEVEL: 0); + RadioLibWrapper::idle(); // trigger startReceive() + return status == RADIOLIB_ERR_NONE; + } + + bool getRxBoostedGainMode() const override { + return ((CustomLR2021 *)_radio)->getRxBoostedGainMode(); + } + + protected: + LR2021LoRaSideDetector_t _sideDet[3]; + size_t _numSideDet = 0; + +}; diff --git a/src/helpers/radiolib/CustomSTM32WLx.h b/src/helpers/radiolib/CustomSTM32WLx.h index cbdd5c8c4e..e312a5ee47 100644 --- a/src/helpers/radiolib/CustomSTM32WLx.h +++ b/src/helpers/radiolib/CustomSTM32WLx.h @@ -2,16 +2,70 @@ #include <RadioLib.h> -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received -#define SX126X_IRQ_PREAMBLE_DETECTED 0x04 - class CustomSTM32WLx : public STM32WLx { + uint32_t _preambleMillis = 66; + uint32_t _maxPayloadMillis = 3934; + uint32_t _activityAt = 0; + bool _headerSeen = false; + public: CustomSTM32WLx(STM32WLx_Module *mod) : STM32WLx(mod) { } + int16_t startReceive() override { + // include the PREAMBLE_DETECTED irq bit in reported flags + return STM32WLx::startReceive(RADIOLIB_SX126X_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0); + } + bool isReceiving() { - uint16_t irq = getIrqFlags(); - bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); - return detected; + uint32_t irq = getIrqFlags(); + bool preamble = irq & RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED; // bit 2 + bool header = irq & RADIOLIB_SX126X_IRQ_HEADER_VALID; // bit 4 + bool hdrErr = irq & RADIOLIB_SX126X_IRQ_HEADER_ERR; // bit 5 + uint32_t now = millis(); + if (hdrErr) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; + _headerSeen = false; + return false; + } + if (!header && _headerSeen) { + // something cleared the header flag, reset our state. + _activityAt = 0; _headerSeen = false; + return false; + } + + if (header) { + if (!_headerSeen) { _headerSeen = true; _activityAt = now; }; + if (now - _activityAt > _maxPayloadMillis) { + MESH_DEBUG_PRINTLN("Clearing header IRQ after %ums", _maxPayloadMillis); + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; _headerSeen = false; + return false; + } + return true; + } + if (preamble) { + if (_activityAt == 0) _activityAt = now; + if (now - _activityAt > _preambleMillis) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED); + _activityAt = 0; + MESH_DEBUG_PRINTLN("Clearing preamble IRQ after %ums", _preambleMillis); + + return false; + } + return true; + } + _activityAt = 0; _headerSeen = false; + return false; + } + + void setPreambleMillis(uint32_t preambleMillis) { + _preambleMillis = preambleMillis; + MESH_DEBUG_PRINTLN("Set _preambleMillis=%u", _preambleMillis); } + void setMaxPayloadMillis(uint32_t payloadMillis) { + _maxPayloadMillis = payloadMillis; + MESH_DEBUG_PRINTLN("Set _maxPayloadMillis=%u", _maxPayloadMillis); + } + }; \ No newline at end of file diff --git a/src/helpers/radiolib/CustomSTM32WLxWrapper.h b/src/helpers/radiolib/CustomSTM32WLxWrapper.h index 97bf6820d6..a792a87750 100644 --- a/src/helpers/radiolib/CustomSTM32WLxWrapper.h +++ b/src/helpers/radiolib/CustomSTM32WLxWrapper.h @@ -15,6 +15,9 @@ class CustomSTM32WLxWrapper : public RadioLibWrapper { ((CustomSTM32WLx *)_radio)->setBandwidth(bw); ((CustomSTM32WLx *)_radio)->setCodingRate(cr); updatePreamble(sf); + PacketMillis pm = calcMaxPacketMillis(sf, bw, cr, preambleLengthForSF(sf)); + ((CustomSTM32WLx *)_radio)->setPreambleMillis(pm.preambleMillis); + ((CustomSTM32WLx *)_radio)->setMaxPayloadMillis(pm.payloadMillis); } bool isReceivingPacket() override { diff --git a/src/helpers/radiolib/CustomSX1262.h b/src/helpers/radiolib/CustomSX1262.h index ad20122902..b4ee6c97aa 100644 --- a/src/helpers/radiolib/CustomSX1262.h +++ b/src/helpers/radiolib/CustomSX1262.h @@ -1,11 +1,14 @@ #pragma once #include <RadioLib.h> - -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received -#define SX126X_IRQ_PREAMBLE_DETECTED 0x04 +#include "MeshCore.h" class CustomSX1262 : public SX1262 { + uint32_t _preambleMillis = 66; + uint32_t _maxPayloadMillis = 3934; + uint32_t _activityAt = 0; + bool _headerSeen = false; + public: CustomSX1262(Module *mod) : SX1262(mod) { } @@ -27,6 +30,14 @@ class CustomSX1262 : public SX1262 { uint8_t cr = 5; #endif + #ifdef SX126X_USE_REGULATOR_LDO + constexpr bool useRegulatorLDO = SX126X_USE_REGULATOR_LDO; + #else + constexpr bool useRegulatorLDO = false; + #endif + + MESH_DEBUG_PRINTLN("SX1262 regulator requested: %s", useRegulatorLDO ? "LDO" : "DC-DC"); + #if defined(P_LORA_SCLK) #ifdef NRF52_PLATFORM if (spi) { spi->setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI); spi->begin(); } @@ -42,11 +53,12 @@ class CustomSX1262 : public SX1262 { if (spi) spi->begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI); #endif #endif - int status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + int status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo, useRegulatorLDO); // if radio init fails with -707/-706, try again with tcxo voltage set to 0.0f if (status == RADIOLIB_ERR_SPI_CMD_FAILED || status == RADIOLIB_ERR_SPI_CMD_INVALID) { + MESH_DEBUG_PRINTLN("SX1262 init failed with error %d, retrying with TCXO at 0.0V", status); tcxo = 0.0f; - status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + status = begin(LORA_FREQ, LORA_BW, LORA_SF, cr, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo, useRegulatorLDO); } if (status != RADIOLIB_ERR_NONE) { Serial.print("ERROR: radio init failed: "); @@ -83,13 +95,66 @@ class CustomSX1262 : public SX1262 { writeRegister(0x8B5, &r_data, 1); #endif + MESH_DEBUG_PRINTLN("SX1262 status=0x%02X device_errors=0x%04X", getStatus(), getDeviceErrors()); + return true; // success } + int16_t startReceive() override { + // include the PREAMBLE_DETECTED irq bit in reported flags + return SX1262::startReceive(RADIOLIB_SX126X_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0); + } + bool isReceiving() { - uint16_t irq = getIrqFlags(); - bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); - return detected; + uint32_t irq = getIrqFlags(); + bool preamble = irq & RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED; // bit 2 + bool header = irq & RADIOLIB_SX126X_IRQ_HEADER_VALID; // bit 4 + bool hdrErr = irq & RADIOLIB_SX126X_IRQ_HEADER_ERR; // bit 5 + uint32_t now = millis(); + if (hdrErr) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; + _headerSeen = false; + return false; + } + if (!header && _headerSeen) { + // something cleared the header flag, reset our state. + _activityAt = 0; _headerSeen = false; + return false; + } + + if (header) { + if (!_headerSeen) { _headerSeen = true; _activityAt = now; }; + if (now - _activityAt > _maxPayloadMillis) { + MESH_DEBUG_PRINTLN("Clearing header IRQ after %ums", _maxPayloadMillis); + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; _headerSeen = false; + return false; + } + return true; + } + if (preamble) { + if (_activityAt == 0) _activityAt = now; + if (now - _activityAt > _preambleMillis) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED); + _activityAt = 0; + MESH_DEBUG_PRINTLN("Clearing preamble IRQ after %ums", _preambleMillis); + + return false; + } + return true; + } + _activityAt = 0; _headerSeen = false; + return false; + } + + void setPreambleMillis(uint32_t preambleMillis) { + _preambleMillis = preambleMillis; + MESH_DEBUG_PRINTLN("Set _preambleMillis=%u", _preambleMillis); + } + void setMaxPayloadMillis(uint32_t payloadMillis) { + _maxPayloadMillis = payloadMillis; + MESH_DEBUG_PRINTLN("Set _maxPayloadMillis=%u", _maxPayloadMillis); } bool getRxBoostedGainMode() { diff --git a/src/helpers/radiolib/CustomSX1262Wrapper.h b/src/helpers/radiolib/CustomSX1262Wrapper.h index cc7bb2238b..bfea50ec9c 100644 --- a/src/helpers/radiolib/CustomSX1262Wrapper.h +++ b/src/helpers/radiolib/CustomSX1262Wrapper.h @@ -18,6 +18,9 @@ class CustomSX1262Wrapper : public RadioLibWrapper { ((CustomSX1262 *)_radio)->setBandwidth(bw); ((CustomSX1262 *)_radio)->setCodingRate(cr); updatePreamble(sf); + PacketMillis pm = calcMaxPacketMillis(sf, bw, cr, preambleLengthForSF(sf)); + ((CustomSX1262 *)_radio)->setPreambleMillis(pm.preambleMillis); + ((CustomSX1262 *)_radio)->setMaxPayloadMillis(pm.payloadMillis); } bool isReceivingPacket() override { @@ -40,8 +43,8 @@ class CustomSX1262Wrapper : public RadioLibWrapper { void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); } - void setRxBoostedGainMode(bool en) override { - ((CustomSX1262 *)_radio)->setRxBoostedGainMode(en); + bool setRxBoostedGainMode(bool en) override { + return ((CustomSX1262 *)_radio)->setRxBoostedGainMode(en) == RADIOLIB_ERR_NONE; } bool getRxBoostedGainMode() const override { return ((CustomSX1262 *)_radio)->getRxBoostedGainMode(); diff --git a/src/helpers/radiolib/CustomSX1268.h b/src/helpers/radiolib/CustomSX1268.h index cc541e49f3..f915332dce 100644 --- a/src/helpers/radiolib/CustomSX1268.h +++ b/src/helpers/radiolib/CustomSX1268.h @@ -2,10 +2,12 @@ #include <RadioLib.h> -#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received -#define SX126X_IRQ_PREAMBLE_DETECTED 0x04 - class CustomSX1268 : public SX1268 { + uint32_t _preambleMillis = 66; + uint32_t _maxPayloadMillis = 3934; + uint32_t _activityAt = 0; + bool _headerSeen = false; + public: CustomSX1268(Module *mod) : SX1268(mod) { } @@ -66,11 +68,11 @@ class CustomSX1268 : public SX1268 { setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN); #endif #if defined(SX126X_RXEN) || defined(SX126X_TXEN) - #ifndef SX1262X_RXEN - #define SX1262X_RXEN RADIOLIB_NC + #ifndef SX126X_RXEN + #define SX126X_RXEN RADIOLIB_NC #endif - #ifndef SX1262X_TXEN - #define SX1262X_TXEN RADIOLIB_NC + #ifndef SX126X_TXEN + #define SX126X_TXEN RADIOLIB_NC #endif setRfSwitchPins(SX126X_RXEN, SX126X_TXEN); #endif @@ -78,11 +80,63 @@ class CustomSX1268 : public SX1268 { return true; // success } + int16_t startReceive() override { + // include the PREAMBLE_DETECTED irq bit in reported flags + return SX1268::startReceive(RADIOLIB_SX126X_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0); + } + bool isReceiving() { - uint16_t irq = getIrqFlags(); - bool detected = (irq & SX126X_IRQ_HEADER_VALID) || (irq & SX126X_IRQ_PREAMBLE_DETECTED); - return detected; + uint32_t irq = getIrqFlags(); + bool preamble = irq & RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED; // bit 2 + bool header = irq & RADIOLIB_SX126X_IRQ_HEADER_VALID; // bit 4 + bool hdrErr = irq & RADIOLIB_SX126X_IRQ_HEADER_ERR; // bit 5 + uint32_t now = millis(); + if (hdrErr) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; + _headerSeen = false; + return false; + } + if (!header && _headerSeen) { + // something cleared the header flag, reset our state. + _activityAt = 0; _headerSeen = false; + return false; + } + + if (header) { + if (!_headerSeen) { _headerSeen = true; _activityAt = now; }; + if (now - _activityAt > _maxPayloadMillis) { + MESH_DEBUG_PRINTLN("Clearing header IRQ after %ums", _maxPayloadMillis); + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED | RADIOLIB_SX126X_IRQ_HEADER_VALID | RADIOLIB_SX126X_IRQ_HEADER_ERR | RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID); + _activityAt = 0; _headerSeen = false; + return false; + } + return true; + } + if (preamble) { + if (_activityAt == 0) _activityAt = now; + if (now - _activityAt > _preambleMillis) { + clearIrqFlags(RADIOLIB_SX126X_IRQ_PREAMBLE_DETECTED); + _activityAt = 0; + MESH_DEBUG_PRINTLN("Clearing preamble IRQ after %ums", _preambleMillis); + + return false; + } + return true; + } + _activityAt = 0; _headerSeen = false; + return false; } + + void setPreambleMillis(uint32_t preambleMillis) { + _preambleMillis = preambleMillis; + MESH_DEBUG_PRINTLN("Set _preambleMillis=%u", _preambleMillis); + } + void setMaxPayloadMillis(uint32_t payloadMillis) { + _maxPayloadMillis = payloadMillis; + MESH_DEBUG_PRINTLN("Set _maxPayloadMillis=%u", _maxPayloadMillis); + } + bool getRxBoostedGainMode() { uint8_t rxGain = 0; diff --git a/src/helpers/radiolib/CustomSX1268Wrapper.h b/src/helpers/radiolib/CustomSX1268Wrapper.h index 9ddea78f3f..104ba08b20 100644 --- a/src/helpers/radiolib/CustomSX1268Wrapper.h +++ b/src/helpers/radiolib/CustomSX1268Wrapper.h @@ -18,6 +18,9 @@ class CustomSX1268Wrapper : public RadioLibWrapper { ((CustomSX1268 *)_radio)->setBandwidth(bw); ((CustomSX1268 *)_radio)->setCodingRate(cr); updatePreamble(sf); + PacketMillis pm = calcMaxPacketMillis(sf, bw, cr, preambleLengthForSF(sf)); + ((CustomSX1268 *)_radio)->setPreambleMillis(pm.preambleMillis); + ((CustomSX1268 *)_radio)->setMaxPayloadMillis(pm.payloadMillis); } bool isReceivingPacket() override { @@ -37,8 +40,8 @@ class CustomSX1268Wrapper : public RadioLibWrapper { void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); } - void setRxBoostedGainMode(bool en) override { - ((CustomSX1268 *)_radio)->setRxBoostedGainMode(en); + bool setRxBoostedGainMode(bool en) override { + return ((CustomSX1268 *)_radio)->setRxBoostedGainMode(en) == RADIOLIB_ERR_NONE; } bool getRxBoostedGainMode() const override { return ((CustomSX1268 *)_radio)->getRxBoostedGainMode(); diff --git a/src/helpers/radiolib/CustomSX1276.h b/src/helpers/radiolib/CustomSX1276.h index bee2527431..e6f3270be1 100644 --- a/src/helpers/radiolib/CustomSX1276.h +++ b/src/helpers/radiolib/CustomSX1276.h @@ -50,14 +50,14 @@ class CustomSX1276 : public SX1276 { setCurrentLimit(SX127X_CURRENT_LIMIT); #endif - #if defined(SX176X_RXEN) || defined(SX176X_TXEN) - #ifndef SX176X_RXEN - #define SX176X_RXEN RADIOLIB_NC + #if defined(SX127X_RXEN) || defined(SX127X_TXEN) + #ifndef SX127X_RXEN + #define SX127X_RXEN RADIOLIB_NC #endif - #ifndef SX176X_TXEN - #define SX176X_TXEN RADIOLIB_NC + #ifndef SX127X_TXEN + #define SX127X_TXEN RADIOLIB_NC #endif - setRfSwitchPins(SX176X_RXEN, SX176X_TXEN); + setRfSwitchPins(SX127X_RXEN, SX127X_TXEN); #endif setCRC(1); diff --git a/src/helpers/radiolib/RadioLibWrappers.cpp b/src/helpers/radiolib/RadioLibWrappers.cpp index b6519aefa7..dc851e5cfe 100644 --- a/src/helpers/radiolib/RadioLibWrappers.cpp +++ b/src/helpers/radiolib/RadioLibWrappers.cpp @@ -36,6 +36,7 @@ void RadioLibWrapper::begin() { _noise_floor = 0; _threshold = 0; + _cad_enabled = false; // start average out some samples _num_floor_samples = 0; @@ -104,6 +105,9 @@ void RadioLibWrapper::loop() { } void RadioLibWrapper::startRecv() { + #if defined(USE_LR2021) + _radio->standby(); // without this LR2021 can throw -706 when calling startReceive after hardware CAD when side detectors are enabled + #endif int err = _radio->startReceive(); if (err == RADIOLIB_ERR_NONE) { state = STATE_RX; @@ -132,7 +136,11 @@ int RadioLibWrapper::recvRaw(uint8_t* bytes, int sz) { n_recv++; } } + #if defined(USE_LR2021) + state = STATE_RX; // LR2021 stays in Rx after readData, calling startReceive while still in Rx throws -706 errors + #else state = STATE_IDLE; // need another startReceive() + #endif } if (state != STATE_RX) { @@ -178,10 +186,26 @@ void RadioLibWrapper::onSendFinished() { state = STATE_IDLE; } +int16_t RadioLibWrapper::performChannelScan() { + return _radio->scanChannel(); +} + bool RadioLibWrapper::isChannelActive() { - return _threshold == 0 - ? false // interference check is disabled - : getCurrentRSSI() > _noise_floor + _threshold; + // int.thresh: RSSI-based interference detection (relative to noise floor) + if (_threshold != 0 && getCurrentRSSI() > _noise_floor + _threshold) return true; + + // cad: hardware channel activity detection + if (_cad_enabled) { + int16_t result = performChannelScan(); + // scanChannel() triggers DIO interrupt (CAD done) which sets STATE_INT_READY + // via setFlag() ISR. Clear it before restarting RX so recvRaw() doesn't + // try to read a non-existent packet and count a spurious recv error. + state = STATE_IDLE; + startRecv(); + if (result != RADIOLIB_CHANNEL_FREE) return true; + } + + return false; } float RadioLibWrapper::getLastRSSI() const { @@ -211,3 +235,21 @@ float RadioLibWrapper::packetScoreInt(float snr, int sf, int packet_len) { return max(0.0, min(1.0, success_rate_based_on_snr * collision_penalty)); } + +PacketMillis RadioLibWrapper::calcMaxPacketMillis(uint8_t sf, float bw, uint8_t cr, uint8_t preambleSymbols) { + // based on RadioLib's calculateTimeOnAir() + uint32_t tsym_us = ((uint32_t)10000 << sf) / (bw * 10); + uint32_t sfCoeff1_x4 = (sf == 5 || sf == 6) ? 25 : 17; // 6.25 : 4.25, semtech magic numbers to account for sync word + sfd + + // preamble + syncword + sfd + header + uint32_t preamble_us = (((preambleSymbols + 8) * 4 + sfCoeff1_x4) * tsym_us) / 4; + + // airtime for max packet at current radio settings + uint32_t total_us = _radio->getTimeOnAir(MAX_TRANS_UNIT); + // airtime for payload only (no preamble, header or SOF) + uint32_t payload_us = total_us > preamble_us ? total_us - preamble_us : 4000 - preamble_us; // fallback to 4 secs at worst case + // rescale payload_us for max possible CR + if (cr >= 5 && cr < 8) { payload_us = (payload_us * 8) / cr; } + + return PacketMillis {(preamble_us + 999) / 1000, (payload_us + 999) / 1000}; +} \ No newline at end of file diff --git a/src/helpers/radiolib/RadioLibWrappers.h b/src/helpers/radiolib/RadioLibWrappers.h index efd3e17931..99f5ebbd8e 100644 --- a/src/helpers/radiolib/RadioLibWrappers.h +++ b/src/helpers/radiolib/RadioLibWrappers.h @@ -3,12 +3,21 @@ #include <Mesh.h> #include <RadioLib.h> +#ifdef USE_CC310_HW_CRYPTO +#include <Adafruit_nRFCrypto.h> +#endif +struct PacketMillis { + uint32_t preambleMillis; // preamble-detect -> header-valid deadline + uint32_t payloadMillis; // header-valid -> rx-done deadline +}; + class RadioLibWrapper : public mesh::Radio { protected: PhysicalLayer* _radio; mesh::MainBoard* _board; uint32_t n_recv, n_sent, n_recv_errors; int16_t _noise_floor, _threshold; + bool _cad_enabled; uint16_t _num_floor_samples; int32_t _floor_sample_sum; uint8_t _preamble_sf; @@ -32,7 +41,7 @@ class RadioLibWrapper : public mesh::Radio { bool isInRecvMode() const override; bool isChannelActive(); - bool isReceiving() override { + bool isReceiving() override { if (isReceivingPacket()) return true; return isChannelActive(); @@ -46,9 +55,12 @@ class RadioLibWrapper : public mesh::Radio { virtual uint8_t getSpreadingFactor() const { return LORA_SF; } static uint16_t preambleLengthForSF(uint8_t sf) { return sf <= 8 ? 32 : 16; } void updatePreamble(uint8_t sf) { _preamble_sf = sf; _radio->setPreambleLength(preambleLengthForSF(sf)); } + PacketMillis calcMaxPacketMillis(uint8_t sf, float bw, uint8_t cr, uint8_t preambleSymbols); + virtual int16_t performChannelScan(); int getNoiseFloor() const override { return _noise_floor; } void triggerNoiseFloorCalibrate(int threshold) override; + void setCADEnabled(bool enable) override { _cad_enabled = enable; } void resetAGC() override; void loop() override; @@ -63,8 +75,10 @@ class RadioLibWrapper : public mesh::Radio { float packetScore(float snr, int packet_len) override { return packetScoreInt(snr, 10, packet_len); } // assume sf=10 - virtual void setRxBoostedGainMode(bool) { } + virtual bool setRxBoostedGainMode(bool) { return false; } virtual bool getRxBoostedGainMode() const { return false; } + + virtual bool configSideDetectors(const uint8_t sideDetSFs[], uint8_t num, float bw) { return false; } }; /** @@ -77,8 +91,15 @@ class RadioNoiseListener : public mesh::RNG { RadioNoiseListener(PhysicalLayer& radio): _radio(&radio) { } void random(uint8_t* dest, size_t sz) override { +#ifdef USE_CC310_HW_CRYPTO + // CC310 TRNG is higher quality and environment-independent vs radio RSSI noise. + nRFCrypto.begin(); + nRFCrypto.Random.generate(dest, (uint16_t)sz); + nRFCrypto.end(); +#else for (int i = 0; i < sz; i++) { dest[i] = _radio->randomByte() ^ (::random(0, 256) & 0xFF); } +#endif } }; diff --git a/src/helpers/sensors/EnvironmentSensorManager.cpp b/src/helpers/sensors/EnvironmentSensorManager.cpp index 73842d9eeb..e2f0d33e72 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.cpp +++ b/src/helpers/sensors/EnvironmentSensorManager.cpp @@ -807,6 +807,13 @@ void EnvironmentSensorManager::rakGPSInit(){ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin){ + #if defined(ETHERNET_ENABLED) && defined(RAK_BOARD) + if (ioPin == WB_IO2) { + // WB_IO2 powers the Ethernet module on RAK baseboards. + return false; + } + #endif + //set initial waking state pinMode(ioPin,OUTPUT); digitalWrite(ioPin,LOW); @@ -889,11 +896,11 @@ void EnvironmentSensorManager::stop_gps() { void EnvironmentSensorManager::loop() { #if ENV_INCLUDE_GPS - static long next_gps_update = 0; + static unsigned long next_gps_update = 0; if (gps_active) { _location->loop(); } - if (millis() > next_gps_update) { + if ((long)(millis() - next_gps_update) > 0) { if(gps_active){ #ifdef RAK_WISBLOCK_GPS diff --git a/src/helpers/sensors/LPPDataHelpers.h b/src/helpers/sensors/LPPDataHelpers.h index 37b50f3f12..70a036c493 100644 --- a/src/helpers/sensors/LPPDataHelpers.h +++ b/src/helpers/sensors/LPPDataHelpers.h @@ -142,7 +142,7 @@ class LPPReader { case LPP_GPS: _pos += 9; break; case LPP_POLYLINE: - _pos += 8; break; // TODO: this is MINIMIUM + _pos += 8; break; // TODO: this is MINIMUM case LPP_GYROMETER: case LPP_ACCELEROMETER: _pos += 6; break; diff --git a/src/helpers/sensors/MicroNMEALocationProvider.h b/src/helpers/sensors/MicroNMEALocationProvider.h index eec466d3aa..b66cb11458 100644 --- a/src/helpers/sensors/MicroNMEALocationProvider.h +++ b/src/helpers/sensors/MicroNMEALocationProvider.h @@ -13,8 +13,12 @@ #endif #endif -#ifndef PIN_GPS_EN_ACTIVE - #define PIN_GPS_EN_ACTIVE HIGH +#ifndef GPS_EN_ACTIVE + #ifdef PIN_GPS_EN_ACTIVE + #define GPS_EN_ACTIVE PIN_GPS_EN_ACTIVE + #else + #define GPS_EN_ACTIVE HIGH + #endif #endif #ifndef GPS_RESET @@ -25,11 +29,11 @@ #endif #endif -#ifndef GPS_RESET_FORCE +#ifndef GPS_RESET_ACTIVE #ifdef PIN_GPS_RESET_ACTIVE - #define GPS_RESET_FORCE PIN_GPS_RESET_ACTIVE + #define GPS_RESET_ACTIVE PIN_GPS_RESET_ACTIVE #else - #define GPS_RESET_FORCE LOW + #define GPS_RESET_ACTIVE LOW #endif #endif @@ -42,29 +46,27 @@ class MicroNMEALocationProvider : public LocationProvider { int8_t _claims = 0; int _pin_reset; int _pin_en; - long next_check = 0; + unsigned long next_check = 0; long time_valid = 0; unsigned long _last_time_sync = 0; static const unsigned long TIME_SYNC_INTERVAL = 1800000; // Re-sync every 30 minutes public : MicroNMEALocationProvider(Stream& ser, mesh::RTCClock* clock = NULL, int pin_reset = GPS_RESET, int pin_en = GPS_EN,RefCountedDigitalPin* peripher_power=NULL) : - _gps_serial(&ser), nmea(_nmeaBuffer, sizeof(_nmeaBuffer)), _pin_reset(pin_reset), _pin_en(pin_en), _clock(clock), _peripher_power(peripher_power) { + nmea(_nmeaBuffer, sizeof(_nmeaBuffer)), _clock(clock), _gps_serial(&ser), _peripher_power(peripher_power), _pin_reset(pin_reset), _pin_en(pin_en) { if (_pin_reset != -1) { pinMode(_pin_reset, OUTPUT); - digitalWrite(_pin_reset, GPS_RESET_FORCE); + digitalWrite(_pin_reset, GPS_RESET_ACTIVE); } if (_pin_en != -1) { pinMode(_pin_en, OUTPUT); - digitalWrite(_pin_en, LOW); + digitalWrite(_pin_en, !GPS_EN_ACTIVE); } } void claim() { _claims++; - if (_claims > 0) { - if (_peripher_power) _peripher_power->claim(); - } + if (_peripher_power) _peripher_power->claim(); } void release() { @@ -76,27 +78,27 @@ public : void begin() override { claim(); if (_pin_en != -1) { - digitalWrite(_pin_en, PIN_GPS_EN_ACTIVE); + digitalWrite(_pin_en, GPS_EN_ACTIVE); } if (_pin_reset != -1) { - digitalWrite(_pin_reset, !GPS_RESET_FORCE); + digitalWrite(_pin_reset, !GPS_RESET_ACTIVE); } } void reset() override { if (_pin_reset != -1) { - digitalWrite(_pin_reset, GPS_RESET_FORCE); + digitalWrite(_pin_reset, GPS_RESET_ACTIVE); delay(10); - digitalWrite(_pin_reset, !GPS_RESET_FORCE); + digitalWrite(_pin_reset, !GPS_RESET_ACTIVE); } } void stop() override { if (_pin_en != -1) { - digitalWrite(_pin_en, !PIN_GPS_EN_ACTIVE); + digitalWrite(_pin_en, !GPS_EN_ACTIVE); } if (_pin_reset != -1) { - digitalWrite(_pin_reset, GPS_RESET_FORCE); + digitalWrite(_pin_reset, GPS_RESET_ACTIVE); } release(); } @@ -105,7 +107,7 @@ public : // directly read the enable pin if present as gps can be // activated/deactivated outside of here ... if (_pin_en != -1) { - return digitalRead(_pin_en) == PIN_GPS_EN_ACTIVE; + return digitalRead(_pin_en) == GPS_EN_ACTIVE; } else { return true; // no enable so must be active } @@ -143,7 +145,7 @@ public : if (!isValid()) time_valid = 0; - if (millis() > next_check) { + if ((long)(millis() - next_check) > 0) { next_check = millis() + 1000; // Re-enable time sync periodically when GPS has valid fix if (!_time_sync_needed && _clock != NULL && (millis() - _last_time_sync) > TIME_SYNC_INTERVAL) { diff --git a/src/helpers/stm32/InternalFileSystem.cpp b/src/helpers/stm32/InternalFileSystem.cpp index dc032eb968..6a7d7064ed 100644 --- a/src/helpers/stm32/InternalFileSystem.cpp +++ b/src/helpers/stm32/InternalFileSystem.cpp @@ -37,7 +37,7 @@ static int _internal_flash_read(const struct lfs_config *c, lfs_block_t block, l } // Program a region in a block. The block must have previously -// been erased. Negative error codes are propogated to the user. +// been erased. Negative error codes are propagated to the user. // May return LFS_ERR_CORRUPT if the block should be considered bad. static int _internal_flash_prog(const struct lfs_config *c, lfs_block_t block, lfs_off_t off, const void *buffer, lfs_size_t size) { @@ -62,7 +62,7 @@ static int _internal_flash_prog(const struct lfs_config *c, lfs_block_t block, l // Erase a block. A block must be erased before being programmed. // The state of an erased block is undefined. Negative error codes -// are propogated to the user. +// are propagated to the user. // May return LFS_ERR_CORRUPT if the block should be considered bad. static int _internal_flash_erase(const struct lfs_config *c, lfs_block_t block) { @@ -87,7 +87,7 @@ static int _internal_flash_erase(const struct lfs_config *c, lfs_block_t block) } // Sync the state of the underlying block device. Negative error codes -// are propogated to the user. +// are propagated to the user. static int _internal_flash_sync(const struct lfs_config *c) { return LFS_ERR_OK; // don't need sync diff --git a/src/helpers/ui/DRV2605Vibration.cpp b/src/helpers/ui/DRV2605Vibration.cpp new file mode 100644 index 0000000000..3a42bb8842 --- /dev/null +++ b/src/helpers/ui/DRV2605Vibration.cpp @@ -0,0 +1,47 @@ +#ifdef HAS_DRV2605 + +#include "DRV2605Vibration.h" +#include <Wire.h> + +void DRV2605Vibration::begin() { +#ifdef PIN_DRV_EN + pinMode(PIN_DRV_EN, OUTPUT); + digitalWrite(PIN_DRV_EN, HIGH); // power up the haptic driver + delay(10); +#endif + if (!drv.begin(&Wire)) { + return; // no haptic driver found, stay silent + } +#ifdef DRV2605_USE_LRA + // LRA mode: 4x brake factor, medium loop gain, back-EMF gain 2 + drv.writeRegister8(DRV2605_REG_FEEDBACK, 0xB6); +#endif + drv.selectLibrary(1); + drv.setMode(DRV2605_MODE_INTTRIG); + _ready = true; +} + +void DRV2605Vibration::trigger(bool force) { + if (!_ready || _quiet) return; + unsigned long now = millis(); + if (!force && _last_trigger != 0 && now - _last_trigger < VIBRATION_TIMEOUT) return; + _last_trigger = now; + drv.setWaveform(0, DRV2605_EFFECT); + drv.setWaveform(1, 0); // pause + drv.setWaveform(2, DRV2605_EFFECT); + drv.setWaveform(3, 0); // end of sequence + drv.go(); +} + +void DRV2605Vibration::loop() { +} + +bool DRV2605Vibration::isVibrating() { + return false; // effects are short, treat as instantaneous +} + +void DRV2605Vibration::stop() { + if (_ready) drv.stop(); +} + +#endif // ifdef HAS_DRV2605 diff --git a/src/helpers/ui/DRV2605Vibration.h b/src/helpers/ui/DRV2605Vibration.h new file mode 100644 index 0000000000..a40894be11 --- /dev/null +++ b/src/helpers/ui/DRV2605Vibration.h @@ -0,0 +1,39 @@ +#pragma once + +#ifdef HAS_DRV2605 + +#include <Arduino.h> +#include <Adafruit_DRV2605.h> + +/* + * Vibration control class for boards where the motor is behind a + * DRV2605 haptic driver on I2C (e.g. Seeed SenseCAP MeshTracker X1). + * Same interface as GenericVibration. + */ + +#ifndef VIBRATION_TIMEOUT +#define VIBRATION_TIMEOUT 5000 // cooldown between vibrations +#endif + +#ifndef DRV2605_EFFECT +#define DRV2605_EFFECT 16 // "1000 ms alert" from the DRV2605 effect library +#endif + +class DRV2605Vibration { +public: + void begin(); // power up and init the DRV2605 + void trigger(bool force = false); // trigger vibration; force skips the cooldown + void loop(); // no-op, the DRV2605 plays effects autonomously + bool isVibrating(); + void stop(); // stop vibration immediately + void quiet(bool q) { _quiet = q; } + bool isQuiet() const { return _quiet; } + +private: + Adafruit_DRV2605 drv; + bool _ready = false; + bool _quiet = false; + unsigned long _last_trigger = 0; +}; + +#endif // ifdef HAS_DRV2605 diff --git a/src/helpers/ui/DisplayDriver.h b/src/helpers/ui/DisplayDriver.h index dcc5fe0318..b76a1b6ca0 100644 --- a/src/helpers/ui/DisplayDriver.h +++ b/src/helpers/ui/DisplayDriver.h @@ -3,12 +3,20 @@ #include <stdint.h> #include <string.h> +using ColorVal = uint16_t; + +class UIColor { +public: + // color definitions (by element _type_) + static ColorVal window_bkg, title_bkg, title_txt, primary_txt, secondary_txt, warning_txt, popup_bkg, popup_txt, corp_blue; +}; + class DisplayDriver { int _w, _h; protected: DisplayDriver(int w, int h) { _w = w; _h = h; } public: - enum Color { DARK=0, LIGHT, RED, GREEN, BLUE, YELLOW, ORANGE }; // on b/w screen, colors will be !=0 synonym of light + //enum Color { DARK=0, LIGHT, RED, GREEN, BLUE, YELLOW, ORANGE }; // on b/w screen, colors will be !=0 synonym of light int width() const { return _w; } int height() const { return _h; } @@ -18,9 +26,9 @@ class DisplayDriver { virtual void turnOn() = 0; virtual void turnOff() = 0; virtual void clear() = 0; - virtual void startFrame(Color bkg = DARK) = 0; + virtual void startFrame(ColorVal bkg = UIColor::window_bkg) = 0; virtual void setTextSize(int sz) = 0; - virtual void setColor(Color c) = 0; + virtual void setColor(ColorVal c) = 0; virtual void setCursor(int x, int y) = 0; virtual void print(const char* str) = 0; virtual void printWordWrap(const char* str, int max_width) { print(str); } // fallback to basic print() if no override diff --git a/src/helpers/ui/E213Display.cpp b/src/helpers/ui/E213Display.cpp index 814693a06b..daf26989be 100644 --- a/src/helpers/ui/E213Display.cpp +++ b/src/helpers/ui/E213Display.cpp @@ -2,6 +2,17 @@ #include "../../MeshCore.h" +// Color scheme +ColorVal UIColor::window_bkg = WHITE; +ColorVal UIColor::title_bkg = WHITE; +ColorVal UIColor::title_txt = BLACK; +ColorVal UIColor::primary_txt = BLACK; +ColorVal UIColor::secondary_txt = BLACK; +ColorVal UIColor::warning_txt = BLACK; +ColorVal UIColor::popup_bkg = WHITE; +ColorVal UIColor::popup_txt = BLACK; +ColorVal UIColor::corp_blue = BLACK; + BaseDisplay* E213Display::detectEInk() { // Test 1: Logic of BUSY pin @@ -108,16 +119,18 @@ void E213Display::clear() { display->clear(); } -void E213Display::startFrame(Color bkg) { +void E213Display::startFrame(ColorVal bkg) { display_crc.reset(); // Fill screen with white first to ensure clean background display->fillRect(0, 0, width(), height(), WHITE); - if (bkg == LIGHT) { + if (bkg == 0) { // Fill with black if light background requested (inverted for e-ink) display->fillRect(0, 0, width(), height(), BLACK); } + _color = UIColor::primary_txt; + display->setTextColor(_color); } void E213Display::setTextSize(int sz) { @@ -126,9 +139,10 @@ void E213Display::setTextSize(int sz) { display->setTextSize(sz); } -void E213Display::setColor(Color c) { - display_crc.update<Color>(c); - // implemented in individual display methods +void E213Display::setColor(ColorVal c) { + _color = c; + display_crc.update<ColorVal>(c); + display->setTextColor(_color); } void E213Display::setCursor(int x, int y) { @@ -147,7 +161,7 @@ void E213Display::fillRect(int x, int y, int w, int h) { display_crc.update<int>(y); display_crc.update<int>(w); display_crc.update<int>(h); - display->fillRect(x, y, w, h, BLACK); + display->fillRect(x, y, w, h, _color); } void E213Display::drawRect(int x, int y, int w, int h) { @@ -155,7 +169,7 @@ void E213Display::drawRect(int x, int y, int w, int h) { display_crc.update<int>(y); display_crc.update<int>(w); display_crc.update<int>(h); - display->drawRect(x, y, w, h, BLACK); + display->drawRect(x, y, w, h, _color); } void E213Display::drawXbm(int x, int y, const uint8_t *bits, int w, int h) { @@ -179,7 +193,7 @@ void E213Display::drawXbm(int x, int y, const uint8_t *bits, int w, int h) { // If the bit is set, draw the pixel if (bitSet) { - display->drawPixel(x + bx, y + by, BLACK); + display->drawPixel(x + bx, y + by, _color); } } } diff --git a/src/helpers/ui/E213Display.h b/src/helpers/ui/E213Display.h index add8f11b35..32567a79ac 100644 --- a/src/helpers/ui/E213Display.h +++ b/src/helpers/ui/E213Display.h @@ -16,6 +16,7 @@ class E213Display : public DisplayDriver { RefCountedDigitalPin* _periph_power; CRC32 display_crc; uint32_t last_display_crc_value = 0; + uint16_t _color; public: E213Display(RefCountedDigitalPin* periph_power = NULL) : DisplayDriver(250, 122), _periph_power(periph_power) {} @@ -30,9 +31,9 @@ class E213Display : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char *str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/E290Display.cpp b/src/helpers/ui/E290Display.cpp index ef4df05ed7..34bbcdbc53 100644 --- a/src/helpers/ui/E290Display.cpp +++ b/src/helpers/ui/E290Display.cpp @@ -2,6 +2,17 @@ #include "../../MeshCore.h" +// Color scheme +ColorVal UIColor::window_bkg = WHITE; +ColorVal UIColor::title_bkg = WHITE; +ColorVal UIColor::title_txt = BLACK; +ColorVal UIColor::primary_txt = BLACK; +ColorVal UIColor::secondary_txt = BLACK; +ColorVal UIColor::warning_txt = BLACK; +ColorVal UIColor::popup_bkg = WHITE; +ColorVal UIColor::popup_txt = BLACK; +ColorVal UIColor::corp_blue = BLACK; + bool E290Display::begin() { if (_init) return true; @@ -62,15 +73,17 @@ void E290Display::clear() { display.clear(); } -void E290Display::startFrame(Color bkg) { +void E290Display::startFrame(ColorVal bkg) { display_crc.reset(); // Fill screen with white first to ensure clean background display.fillRect(0, 0, width(), height(), WHITE); - if (bkg == LIGHT) { + if (bkg == 0) { // Fill with black if light background requested (inverted for e-ink) display.fillRect(0, 0, width(), height(), BLACK); } + _color = UIColor::primary_txt; + display.setTextColor(_color); } void E290Display::setTextSize(int sz) { @@ -79,9 +92,10 @@ void E290Display::setTextSize(int sz) { display.setTextSize(sz); } -void E290Display::setColor(Color c) { - display_crc.update<Color>(c); - // implemented in individual display methods +void E290Display::setColor(ColorVal c) { + _color = c; + display_crc.update<ColorVal>(c); + display.setTextColor(_color); } void E290Display::setCursor(int x, int y) { @@ -100,7 +114,7 @@ void E290Display::fillRect(int x, int y, int w, int h) { display_crc.update<int>(y); display_crc.update<int>(w); display_crc.update<int>(h); - display.fillRect(x, y, w, h, BLACK); + display.fillRect(x, y, w, h, _color); } void E290Display::drawRect(int x, int y, int w, int h) { @@ -108,7 +122,7 @@ void E290Display::drawRect(int x, int y, int w, int h) { display_crc.update<int>(y); display_crc.update<int>(w); display_crc.update<int>(h); - display.drawRect(x, y, w, h, BLACK); + display.drawRect(x, y, w, h, _color); } void E290Display::drawXbm(int x, int y, const uint8_t *bits, int w, int h) { @@ -132,7 +146,7 @@ void E290Display::drawXbm(int x, int y, const uint8_t *bits, int w, int h) { // If the bit is set, draw the pixel if (bitSet) { - display.drawPixel(x + bx, y + by, BLACK); + display.drawPixel(x + bx, y + by, _color); } } } diff --git a/src/helpers/ui/E290Display.h b/src/helpers/ui/E290Display.h index 88bf34ff17..bf6296bb72 100644 --- a/src/helpers/ui/E290Display.h +++ b/src/helpers/ui/E290Display.h @@ -16,6 +16,7 @@ class E290Display : public DisplayDriver { RefCountedDigitalPin* _periph_power; CRC32 display_crc; uint32_t last_display_crc_value = 0; + uint16_t _color; public: E290Display(RefCountedDigitalPin* periph_power = NULL) : DisplayDriver(296, 128), _periph_power(periph_power) {} @@ -26,9 +27,9 @@ class E290Display : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char *str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/GxEPDDisplay.cpp b/src/helpers/ui/GxEPDDisplay.cpp index ad47754bf9..13dafa3455 100644 --- a/src/helpers/ui/GxEPDDisplay.cpp +++ b/src/helpers/ui/GxEPDDisplay.cpp @@ -14,6 +14,18 @@ SPIClass SPI1 = SPIClass(FSPI); #endif +// Color scheme +ColorVal UIColor::window_bkg = GxEPD_WHITE; +ColorVal UIColor::title_bkg = GxEPD_WHITE; +ColorVal UIColor::title_txt = GxEPD_BLACK; +ColorVal UIColor::primary_txt = GxEPD_BLACK; +ColorVal UIColor::secondary_txt = GxEPD_BLACK; +ColorVal UIColor::warning_txt = GxEPD_BLACK; +ColorVal UIColor::popup_bkg = GxEPD_WHITE; +ColorVal UIColor::popup_txt = GxEPD_BLACK; +ColorVal UIColor::corp_blue = GxEPD_BLACK; + + bool GxEPDDisplay::begin() { display.epd2.selectSPI(SPI1, SPISettings(4000000, MSBFIRST, SPI_MODE0)); #ifdef ESP32 @@ -61,9 +73,9 @@ void GxEPDDisplay::clear() { display_crc.reset(); } -void GxEPDDisplay::startFrame(Color bkg) { - display.fillScreen(GxEPD_WHITE); - display.setTextColor(_curr_color = GxEPD_BLACK); +void GxEPDDisplay::startFrame(ColorVal bkg) { + display.fillScreen(bkg); + display.setTextColor(_curr_color = UIColor::primary_txt); display_crc.reset(); } @@ -85,14 +97,9 @@ void GxEPDDisplay::setTextSize(int sz) { } } -void GxEPDDisplay::setColor(Color c) { - display_crc.update<Color> (c); - // colours need to be inverted for epaper displays - if (c == DARK) { - display.setTextColor(_curr_color = GxEPD_WHITE); - } else { - display.setTextColor(_curr_color = GxEPD_BLACK); - } +void GxEPDDisplay::setColor(ColorVal c) { + display_crc.update<ColorVal> (c); + display.setTextColor(_curr_color = c); } void GxEPDDisplay::setCursor(int x, int y) { diff --git a/src/helpers/ui/GxEPDDisplay.h b/src/helpers/ui/GxEPDDisplay.h index 219b607644..c653eac4b4 100644 --- a/src/helpers/ui/GxEPDDisplay.h +++ b/src/helpers/ui/GxEPDDisplay.h @@ -51,9 +51,9 @@ class GxEPDDisplay : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/LGFXDisplay.cpp b/src/helpers/ui/LGFXDisplay.cpp index a53cbc620d..7bdd52a251 100644 --- a/src/helpers/ui/LGFXDisplay.cpp +++ b/src/helpers/ui/LGFXDisplay.cpp @@ -1,5 +1,16 @@ #include "LGFXDisplay.h" +// Color scheme +ColorVal UIColor::window_bkg = 0xFFFF; +ColorVal UIColor::title_bkg = 0x001F; +ColorVal UIColor::title_txt = 0xFFFF; +ColorVal UIColor::primary_txt = 0x0000; +ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray +ColorVal UIColor::warning_txt = 0xFD20; +ColorVal UIColor::popup_bkg = 0x07FF; // CYAN +ColorVal UIColor::popup_txt = 0x0000; +ColorVal UIColor::corp_blue = 0x001A; + bool LGFXDisplay::begin() { turnOn(); display->init(); @@ -35,45 +46,20 @@ void LGFXDisplay::clear() { buffer.clearDisplay(); } -void LGFXDisplay::startFrame(Color bkg) { +void LGFXDisplay::startFrame(ColorVal bkg) { // display->startWrite(); // display->getScanLine(); - buffer.clearDisplay(); - buffer.setTextColor(TFT_WHITE); + _color = bkg; + buffer.fillScreen(_color); + buffer.setTextColor(_color = UIColor::primary_txt); } void LGFXDisplay::setTextSize(int sz) { buffer.setTextSize(sz); } -void LGFXDisplay::setColor(Color c) { - // _color = (c != 0) ? ILI9342_WHITE : ILI9342_BLACK; - switch (c) { - case DARK: - _color = TFT_BLACK; - break; - case LIGHT: - _color = TFT_WHITE; - break; - case RED: - _color = TFT_RED; - break; - case GREEN: - _color = TFT_GREEN; - break; - case BLUE: - _color = TFT_BLUE; - break; - case YELLOW: - _color = TFT_YELLOW; - break; - case ORANGE: - _color = TFT_ORANGE; - break; - default: - _color = TFT_WHITE; - } - buffer.setTextColor(_color); +void LGFXDisplay::setColor(ColorVal c) { + buffer.setTextColor(_color = c); } void LGFXDisplay::setCursor(int x, int y) { diff --git a/src/helpers/ui/LGFXDisplay.h b/src/helpers/ui/LGFXDisplay.h index ad7212ecf6..a2d660b22e 100644 --- a/src/helpers/ui/LGFXDisplay.h +++ b/src/helpers/ui/LGFXDisplay.h @@ -25,9 +25,9 @@ class LGFXDisplay : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/NV3001BDisplay.cpp b/src/helpers/ui/NV3001BDisplay.cpp new file mode 100644 index 0000000000..1ff7765cbb --- /dev/null +++ b/src/helpers/ui/NV3001BDisplay.cpp @@ -0,0 +1,551 @@ +#include "NV3001BDisplay.h" +#include <Arduino.h> +#include <string.h> + +#ifndef SPI_FREQUENCY + #define SPI_FREQUENCY 8000000 +#endif + +#ifndef PIN_TFT_SCL + #error "PIN_TFT_SCL must be defined" +#endif + +#ifndef PIN_TFT_SDA + #error "PIN_TFT_SDA must be defined" +#endif + +#ifndef PIN_TFT_CS + #error "PIN_TFT_CS must be defined" +#endif + +#ifndef PIN_TFT_DC + #error "PIN_TFT_DC must be defined" +#endif + +#ifndef PIN_TFT_MISO + #define PIN_TFT_MISO -1 +#endif + +#ifndef PIN_TFT_RST + #define PIN_TFT_RST -1 +#endif + +#ifndef PIN_TFT_EN + #define PIN_TFT_EN -1 +#endif + +#ifndef PIN_TFT_BL + #define PIN_TFT_BL -1 +#endif + +#ifndef PIN_TFT_EN_ACTIVE + #define PIN_TFT_EN_ACTIVE LOW +#endif + +#ifndef PIN_TFT_BL_ACTIVE + #define PIN_TFT_BL_ACTIVE HIGH +#endif + +#ifndef DISPLAY_ROTATION + #define DISPLAY_ROTATION 0 +#endif + +#ifndef NV3001B_SCREEN_WIDTH + #define NV3001B_SCREEN_WIDTH 220 +#endif + +#ifndef NV3001B_SCREEN_HEIGHT + #define NV3001B_SCREEN_HEIGHT 128 +#endif + +#ifndef DISPLAY_SCALE_X + #define DISPLAY_SCALE_X ((float)NV3001B_SCREEN_WIDTH / NV3001B_LOGICAL_WIDTH) +#endif + +#ifndef DISPLAY_SCALE_Y + #define DISPLAY_SCALE_Y ((float)NV3001B_SCREEN_HEIGHT / NV3001B_LOGICAL_HEIGHT) +#endif + +#define NV3001B_SWRESET 0x01 +#define NV3001B_SLPOUT 0x11 +#define NV3001B_DISPON 0x29 +#define NV3001B_CASET 0x2A +#define NV3001B_RASET 0x2B +#define NV3001B_RAMWR 0x2C +#define NV3001B_MADCTL 0x36 +#define NV3001B_COLMOD 0x3A + +#define NV3001B_MADCTL_MY 0x80 +#define NV3001B_MADCTL_MX 0x40 +#define NV3001B_MADCTL_MV 0x20 +#define NV3001B_MADCTL_RGB 0x00 + +#ifndef NV3001B_TEXT_SIZE1_SCALE_X + #define NV3001B_TEXT_SIZE1_SCALE_X 1 +#endif + +#ifndef NV3001B_TEXT_SIZE1_SCALE_Y + #define NV3001B_TEXT_SIZE1_SCALE_Y 2 +#endif + +#ifndef NV3001B_TEXT_SIZE2_SCALE_X + #define NV3001B_TEXT_SIZE2_SCALE_X 2 +#endif + +#ifndef NV3001B_TEXT_SIZE2_SCALE_Y + #define NV3001B_TEXT_SIZE2_SCALE_Y 3 +#endif + +// Color scheme +ColorVal UIColor::window_bkg = 0xFFFF; +ColorVal UIColor::title_bkg = 0x001F; +ColorVal UIColor::title_txt = 0xFFFF; +ColorVal UIColor::primary_txt = 0x0000; +ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray +ColorVal UIColor::warning_txt = 0xFD20; +ColorVal UIColor::popup_bkg = 0x07FF; // CYAN +ColorVal UIColor::popup_txt = 0x0000; +ColorVal UIColor::corp_blue = 0x001A; + +static int scaleX(int x) { + return (int)(x * DISPLAY_SCALE_X); +} + +static int scaleY(int y) { + return (int)(y * DISPLAY_SCALE_Y); +} + +static int scaleWidth(int x, int w) { + if (w <= 0) return 0; + int scaled = scaleX(x + w) - scaleX(x); + return scaled > 0 ? scaled : 1; +} + +static int scaleHeight(int y, int h) { + if (h <= 0) return 0; + int scaled = scaleY(y + h) - scaleY(y); + return scaled > 0 ? scaled : 1; +} + +static uint8_t nv3001bMADCTL(uint8_t rotation) { + uint8_t madctl; + switch (rotation & 3) { + case 0: + madctl = NV3001B_MADCTL_MY | NV3001B_MADCTL_MV | NV3001B_MADCTL_RGB; + break; + case 1: + madctl = NV3001B_MADCTL_MY | NV3001B_MADCTL_MX | NV3001B_MADCTL_RGB; + break; + case 2: + madctl = NV3001B_MADCTL_RGB; + break; + default: + madctl = NV3001B_MADCTL_MX | NV3001B_MADCTL_MV | NV3001B_MADCTL_RGB; + break; + } + return madctl; +} + +static const uint8_t font5x7[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, + 0x7f, 0x14, 0x7f, 0x14, 0x24, 0x2a, 0x7f, 0x2a, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, + 0x55, 0x22, 0x50, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, + 0x1c, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x50, 0x30, 0x00, + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x42, 0x61, 0x51, 0x49, 0x46, 0x21, + 0x41, 0x45, 0x4b, 0x31, 0x18, 0x14, 0x12, 0x7f, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3c, 0x4a, + 0x49, 0x49, 0x30, 0x01, 0x71, 0x09, 0x05, 0x03, 0x36, 0x49, 0x49, 0x49, 0x36, 0x06, 0x49, 0x49, + 0x29, 0x1e, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, + 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x51, 0x09, 0x06, + 0x32, 0x49, 0x79, 0x41, 0x3e, 0x7e, 0x11, 0x11, 0x11, 0x7e, 0x7f, 0x49, 0x49, 0x49, 0x36, 0x3e, + 0x41, 0x41, 0x41, 0x22, 0x7f, 0x41, 0x41, 0x22, 0x1c, 0x7f, 0x49, 0x49, 0x49, 0x41, 0x7f, 0x09, + 0x09, 0x09, 0x01, 0x3e, 0x41, 0x49, 0x49, 0x7a, 0x7f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x41, 0x7f, + 0x41, 0x00, 0x20, 0x40, 0x41, 0x3f, 0x01, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x7f, 0x40, 0x40, 0x40, + 0x40, 0x7f, 0x02, 0x0c, 0x02, 0x7f, 0x7f, 0x04, 0x08, 0x10, 0x7f, 0x3e, 0x41, 0x41, 0x41, 0x3e, + 0x7f, 0x09, 0x09, 0x09, 0x06, 0x3e, 0x41, 0x51, 0x21, 0x5e, 0x7f, 0x09, 0x19, 0x29, 0x46, 0x46, + 0x49, 0x49, 0x49, 0x31, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x3f, 0x1f, 0x20, + 0x40, 0x20, 0x1f, 0x3f, 0x40, 0x38, 0x40, 0x3f, 0x63, 0x14, 0x08, 0x14, 0x63, 0x07, 0x08, 0x70, + 0x08, 0x07, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x7f, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, + 0x20, 0x00, 0x41, 0x41, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x01, 0x02, 0x04, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78, 0x7f, 0x48, 0x44, 0x44, 0x38, 0x38, + 0x44, 0x44, 0x44, 0x20, 0x38, 0x44, 0x44, 0x48, 0x7f, 0x38, 0x54, 0x54, 0x54, 0x18, 0x08, 0x7e, + 0x09, 0x01, 0x02, 0x0c, 0x52, 0x52, 0x52, 0x3e, 0x7f, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7d, + 0x40, 0x00, 0x20, 0x40, 0x44, 0x3d, 0x00, 0x7f, 0x10, 0x28, 0x44, 0x00, 0x00, 0x41, 0x7f, 0x40, + 0x00, 0x7c, 0x04, 0x18, 0x04, 0x78, 0x7c, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, + 0x7c, 0x14, 0x14, 0x14, 0x08, 0x08, 0x14, 0x14, 0x18, 0x7c, 0x7c, 0x08, 0x04, 0x04, 0x08, 0x48, + 0x54, 0x54, 0x54, 0x20, 0x04, 0x3f, 0x44, 0x40, 0x20, 0x3c, 0x40, 0x40, 0x20, 0x7c, 0x1c, 0x20, + 0x40, 0x20, 0x1c, 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x44, 0x28, 0x10, 0x28, 0x44, 0x0c, 0x50, 0x50, + 0x50, 0x3c, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00, 0x06, 0x09, 0x09, 0x06 +}; + +static int textPixelScaleX(uint8_t size) { + return size <= 1 ? NV3001B_TEXT_SIZE1_SCALE_X : NV3001B_TEXT_SIZE2_SCALE_X; +} + +static int textPixelScaleY(uint8_t size) { + return size <= 1 ? NV3001B_TEXT_SIZE1_SCALE_Y : NV3001B_TEXT_SIZE2_SCALE_Y; +} + +static void setupOptionalOutput(int pin, int level) { + if (pin < 0) return; + + pinMode(pin, OUTPUT); + digitalWrite(pin, level); +} + +static void writeOptionalPin(int pin, int level) { + if (pin < 0) return; + + digitalWrite(pin, level); +} + +void NV3001BDisplay::writeCommand(uint8_t cmd) { + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + digitalWrite(PIN_TFT_DC, LOW); + digitalWrite(PIN_TFT_CS, LOW); + spi.transfer(cmd); + digitalWrite(PIN_TFT_CS, HIGH); + spi.endTransaction(); +} + +void NV3001BDisplay::writeBytes(const uint8_t* data, size_t len) { + if (!data || len == 0) return; + + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + digitalWrite(PIN_TFT_DC, HIGH); + digitalWrite(PIN_TFT_CS, LOW); + for (size_t i = 0; i < len; i++) { + spi.transfer(data[i]); + } + digitalWrite(PIN_TFT_CS, HIGH); + spi.endTransaction(); +} + +void NV3001BDisplay::writeCommandData(uint8_t cmd, const uint8_t* data, size_t len) { + writeCommand(cmd); + writeBytes(data, len); +} + +void NV3001BDisplay::setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + uint16_t x2 = x + w - 1; + uint16_t y2 = y + h - 1; + uint8_t data[4]; + + data[0] = x >> 8; + data[1] = x & 0xff; + data[2] = x2 >> 8; + data[3] = x2 & 0xff; + writeCommandData(NV3001B_CASET, data, sizeof(data)); + + data[0] = y >> 8; + data[1] = y & 0xff; + data[2] = y2 >> 8; + data[3] = y2 & 0xff; + writeCommandData(NV3001B_RASET, data, sizeof(data)); + + writeCommand(NV3001B_RAMWR); +} + +void NV3001BDisplay::writeColor(uint16_t rgb, uint32_t count) { + uint8_t hi = rgb >> 8; + uint8_t lo = rgb & 0xff; + + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + digitalWrite(PIN_TFT_DC, HIGH); + digitalWrite(PIN_TFT_CS, LOW); + while (count--) { + spi.transfer(hi); + spi.transfer(lo); + } + digitalWrite(PIN_TFT_CS, HIGH); + spi.endTransaction(); +} + +void NV3001BDisplay::initPanel() { +#define CMD0(C) do { writeCommand(C); } while (0) +#define CMD1(C, A) do { const uint8_t d[] = { A }; writeCommandData(C, d, sizeof(d)); } while (0) +#define CMD2(C, A, B) do { const uint8_t d[] = { A, B }; writeCommandData(C, d, sizeof(d)); } while (0) + + CMD0(NV3001B_SWRESET); + delay(120); + CMD1(0xFF, 0xA5); + CMD1(0x41, 0x00); + CMD1(0x50, 0x02); + CMD1(0x52, 0x6E); + CMD1(0x57, 0x02); + CMD1(0x46, 0x11); + CMD2(0x47, 0x00, 0x01); + CMD2(0x8F, 0x22, 0x03); + CMD1(0x9A, 0x78); + CMD1(0x9B, 0x78); + CMD1(0x9C, 0xA0); + CMD1(0x9D, 0x17); + CMD1(0x9E, 0xC1); + CMD1(0x83, 0x5A); + CMD1(0x84, 0xB6); + CMD1(0xFF, 0xA5); + CMD1(0x85, 0x5F); + CMD1(0x6E, 0x0F); + CMD1(0x7E, 0x0F); + CMD1(0x60, 0x00); + CMD1(0x70, 0x00); + CMD1(0x6D, 0x33); + CMD1(0x7D, 0x37); + CMD1(0x61, 0x09); + CMD1(0x71, 0x0A); + CMD1(0x6C, 0x2A); + CMD1(0x7C, 0x36); + CMD1(0x62, 0x11); + CMD1(0x72, 0x10); + CMD1(0x68, 0x4E); + CMD1(0x78, 0x4E); + CMD1(0x66, 0x36); + CMD1(0x76, 0x3C); + CMD1(0x1A, 0x1C); + CMD1(0x7B, 0x14); + CMD1(0x63, 0x0D); + CMD1(0x73, 0x0A); + CMD1(0x6A, 0x16); + CMD1(0x7A, 0x12); + CMD1(0x64, 0x0B); + CMD1(0x74, 0x0A); + CMD1(0x69, 0x08); + CMD1(0x79, 0x0A); + CMD1(0x65, 0x06); + CMD1(0x75, 0x07); + CMD1(0x67, 0x23); + CMD1(0x77, 0x44); + CMD1(0xE0, 0x00); + CMD1(0xE9, 0x30); + CMD1(0xEB, 0xB7); + CMD1(0xEC, 0x00); + CMD1(0xED, 0x11); + CMD1(0xF0, 0xB7); + CMD1(0x53, 0x04); + CMD1(0x54, 0x04); + CMD1(0x55, 0x40); + CMD1(0x56, 0x40); + CMD2(0xA0, 0x60, 0x01); + CMD1(0xA1, 0x84); + CMD1(0xA2, 0x85); + CMD2(0xAB, 0x00, 0x02); + CMD2(0xAC, 0x00, 0x06); + CMD2(0xAD, 0x00, 0x03); + CMD2(0xAE, 0x00, 0x07); + CMD1(0xC7, 0x01); + CMD1(0xB9, 0x82); + CMD1(0xBA, 0x83); + CMD1(0xBB, 0x00); + CMD1(0xBC, 0x81); + CMD1(0xBD, 0x02); + CMD1(0xBE, 0x01); + CMD1(0xBF, 0x04); + CMD1(0xC0, 0x03); + CMD1(0xC8, 0x55); + CMD1(0xC9, 0xC9); + CMD1(0xCA, 0xC8); + CMD1(0xCB, 0xCB); + CMD1(0xCC, 0xCA); + CMD1(0xCD, 0x55); + CMD1(0xCE, 0xCE); + CMD1(0xCF, 0xCD); + CMD1(0xD0, 0xD0); + CMD1(0xD1, 0xCF); + CMD1(0xF2, 0x46); + CMD1(0xA8, 0x04); + CMD1(0xA9, 0xB0); + CMD1(0xAA, 0xA3); + CMD1(0xB6, 0x00); + CMD1(0xB7, 0xB0); + CMD1(0xB8, 0xA3); + CMD1(0xC4, 0x03); + CMD1(0xC5, 0xB0); + CMD1(0xC6, 0xA3); + CMD1(0x80, 0x10); + CMD1(0xFF, 0x00); + CMD1(0x35, 0x00); + CMD0(NV3001B_SLPOUT); + delay(120); + CMD1(NV3001B_COLMOD, 0x05); + CMD1(NV3001B_MADCTL, nv3001bMADCTL(DISPLAY_ROTATION)); + CMD0(NV3001B_DISPON); + delay(10); + +#undef CMD0 +#undef CMD1 +#undef CMD2 +} + +void NV3001BDisplay::fillPhysicalRect(int x, int y, int w, int h) { + if (!is_on || w <= 0 || h <= 0) return; + + if (x < 0) { + w += x; + x = 0; + } + if (y < 0) { + h += y; + y = 0; + } + if (x + w > NV3001B_SCREEN_WIDTH) w = NV3001B_SCREEN_WIDTH - x; + if (y + h > NV3001B_SCREEN_HEIGHT) h = NV3001B_SCREEN_HEIGHT - y; + if (w <= 0 || h <= 0) return; + + setAddrWindow(x, y, w, h); + writeColor(color, (uint32_t)w * h); +} + +void NV3001BDisplay::drawChar(int x, int y, char ch) { + if (ch < 32 || ch > 127) ch = '?'; + + uint16_t index = (uint16_t)(ch - 32) * 5; + int scale_x = textPixelScaleX(text_size); + int scale_y = textPixelScaleY(text_size); + for (int col = 0; col < 5; col++) { + uint8_t line = pgm_read_byte(font5x7 + index + col); + for (int row = 0; row < 7; row++) { + if (line & (1 << row)) { + fillPhysicalRect(x + col * scale_x, y + row * scale_y, scale_x, scale_y); + } + } + } +} + +bool NV3001BDisplay::begin() { + if (is_on) return true; + + if (periph_power) periph_power->claim(); + + setupOptionalOutput(PIN_TFT_EN, PIN_TFT_EN_ACTIVE); + setupOptionalOutput(PIN_TFT_BL, !PIN_TFT_BL_ACTIVE); + pinMode(PIN_TFT_CS, OUTPUT); + pinMode(PIN_TFT_DC, OUTPUT); + digitalWrite(PIN_TFT_CS, HIGH); + digitalWrite(PIN_TFT_DC, HIGH); + delay(20); + + spi.begin(PIN_TFT_SCL, PIN_TFT_MISO, PIN_TFT_SDA, PIN_TFT_CS); + if (PIN_TFT_RST >= 0) { + pinMode(PIN_TFT_RST, OUTPUT); + digitalWrite(PIN_TFT_RST, HIGH); + delay(10); + digitalWrite(PIN_TFT_RST, LOW); + delay(20); + digitalWrite(PIN_TFT_RST, HIGH); + delay(120); + } + + initPanel(); + is_on = true; + color = 0x0000; + fillPhysicalRect(0, 0, NV3001B_SCREEN_WIDTH, NV3001B_SCREEN_HEIGHT); + color = 0xffff; + text_size = 1; + cursor_x = 0; + cursor_y = 0; + writeOptionalPin(PIN_TFT_BL, PIN_TFT_BL_ACTIVE); + return true; +} + +void NV3001BDisplay::turnOn() { + begin(); +} + +void NV3001BDisplay::turnOff() { + if (!is_on) return; + + writeOptionalPin(PIN_TFT_BL, !PIN_TFT_BL_ACTIVE); + writeOptionalPin(PIN_TFT_EN, !PIN_TFT_EN_ACTIVE); + is_on = false; + if (periph_power) periph_power->release(); +} + +void NV3001BDisplay::clear() { + uint16_t saved = color; + color = UIColor::window_bkg; + fillPhysicalRect(0, 0, NV3001B_SCREEN_WIDTH, NV3001B_SCREEN_HEIGHT); + color = saved; +} + +void NV3001BDisplay::startFrame(ColorVal bkg) { + color = bkg; + fillPhysicalRect(0, 0, NV3001B_SCREEN_WIDTH, NV3001B_SCREEN_HEIGHT); + color = UIColor::primary_txt; + text_size = 1; + cursor_x = 0; + cursor_y = 0; +} + +void NV3001BDisplay::setTextSize(int sz) { + text_size = sz < 1 ? 1 : sz; +} + +void NV3001BDisplay::setColor(ColorVal c) { + color = c; +} + +void NV3001BDisplay::setCursor(int x, int y) { + cursor_x = scaleX(x); + cursor_y = scaleY(y); +} + +void NV3001BDisplay::print(const char* str) { + if (!str || !is_on) return; + + int scale_x = textPixelScaleX(text_size); + int scale_y = textPixelScaleY(text_size); + while (*str) { + if (*str == '\n') { + cursor_x = 0; + cursor_y += 8 * scale_y; + } else if (*str == '\r') { + cursor_x = 0; + } else { + drawChar(cursor_x, cursor_y, *str); + cursor_x += 6 * scale_x; + } + str++; + } +} + +void NV3001BDisplay::fillRect(int x, int y, int w, int h) { + fillPhysicalRect(scaleX(x), scaleY(y), scaleWidth(x, w), scaleHeight(y, h)); +} + +void NV3001BDisplay::drawRect(int x, int y, int w, int h) { + int x1 = scaleX(x); + int y1 = scaleY(y); + int sw = scaleWidth(x, w); + int sh = scaleHeight(y, h); + + fillPhysicalRect(x1, y1, sw, 1); + fillPhysicalRect(x1, y1 + sh - 1, sw, 1); + fillPhysicalRect(x1, y1, 1, sh); + fillPhysicalRect(x1 + sw - 1, y1, 1, sh); +} + +void NV3001BDisplay::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { + if (!bits || !is_on) return; + + int byte_width = (w + 7) / 8; + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + uint8_t byte = pgm_read_byte(bits + j * byte_width + i / 8); + if (byte & (0x80 >> (i & 7))) { + fillPhysicalRect(scaleX(x + i), scaleY(y + j), scaleWidth(x + i, 1), scaleHeight(y + j, 1)); + } + } + } +} + +uint16_t NV3001BDisplay::getTextWidth(const char* str) { + if (!str) return 0; + + uint16_t len = 0; + while (str[len] && str[len] != '\n' && str[len] != '\r') len++; + return (uint16_t)((len * 6 * textPixelScaleX(text_size)) / DISPLAY_SCALE_X); +} + +void NV3001BDisplay::endFrame() { +} diff --git a/src/helpers/ui/NV3001BDisplay.h b/src/helpers/ui/NV3001BDisplay.h new file mode 100644 index 0000000000..76505b5d26 --- /dev/null +++ b/src/helpers/ui/NV3001BDisplay.h @@ -0,0 +1,68 @@ +#pragma once + +#include "DisplayDriver.h" +#include <SPI.h> +#include <helpers/RefCountedDigitalPin.h> + +#ifndef NV3001B_LOGICAL_WIDTH + #define NV3001B_LOGICAL_WIDTH 128 +#endif + +#ifndef NV3001B_LOGICAL_HEIGHT + #define NV3001B_LOGICAL_HEIGHT 64 +#endif + +#ifndef NV3001B_PANEL_WIDTH + #define NV3001B_PANEL_WIDTH 128 +#endif + +#ifndef NV3001B_PANEL_HEIGHT + #define NV3001B_PANEL_HEIGHT 220 +#endif + +#ifndef NV3001B_SPI_HOST + #define NV3001B_SPI_HOST HSPI +#endif + +class NV3001BDisplay : public DisplayDriver { + SPIClass spi; + RefCountedDigitalPin* periph_power; + bool is_on = false; + uint16_t color = 0xffff; + uint8_t text_size = 1; + int cursor_x = 0; + int cursor_y = 0; + + void writeCommand(uint8_t cmd); + void writeBytes(const uint8_t* data, size_t len); + void writeCommandData(uint8_t cmd, const uint8_t* data, size_t len); + void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h); + void writeColor(uint16_t rgb, uint32_t count); + void fillPhysicalRect(int x, int y, int w, int h); + void initPanel(); + void drawChar(int x, int y, char ch); + +public: + NV3001BDisplay(RefCountedDigitalPin* power = nullptr) : + DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), spi(NV3001B_SPI_HOST), periph_power(power) { } + + bool begin(); + static const char* driverName() { return "NV3001B"; } + static uint16_t physicalWidth() { return NV3001B_PANEL_WIDTH; } + static uint16_t physicalHeight() { return NV3001B_PANEL_HEIGHT; } + + bool isOn() override { return is_on; } + void turnOn() override; + void turnOff() override; + void clear() override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; + void setTextSize(int sz) override; + void setColor(ColorVal c) override; + void setCursor(int x, int y) override; + void print(const char* str) override; + void fillRect(int x, int y, int w, int h) override; + void drawRect(int x, int y, int w, int h) override; + void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; + uint16_t getTextWidth(const char* str) override; + void endFrame() override; +}; diff --git a/src/helpers/ui/NullDisplayDriver.cpp b/src/helpers/ui/NullDisplayDriver.cpp new file mode 100644 index 0000000000..1500f5c1b0 --- /dev/null +++ b/src/helpers/ui/NullDisplayDriver.cpp @@ -0,0 +1,11 @@ +#include "NullDisplayDriver.h" + +ColorVal UIColor::window_bkg = 0; +ColorVal UIColor::title_bkg = 0; +ColorVal UIColor::title_txt = 0; +ColorVal UIColor::primary_txt = 0; +ColorVal UIColor::secondary_txt = 0; +ColorVal UIColor::warning_txt = 0; +ColorVal UIColor::popup_bkg = 0; +ColorVal UIColor::popup_txt = 0; +ColorVal UIColor::corp_blue = 0; diff --git a/src/helpers/ui/NullDisplayDriver.h b/src/helpers/ui/NullDisplayDriver.h index 2a9670bd24..ff214c883b 100644 --- a/src/helpers/ui/NullDisplayDriver.h +++ b/src/helpers/ui/NullDisplayDriver.h @@ -11,9 +11,9 @@ class NullDisplayDriver : public DisplayDriver { void turnOn() override { } void turnOff() override { } void clear() override { } - void startFrame(Color bkg = DARK) override { } + void startFrame(ColorVal bkg = UIColor::window_bkg) override { } void setTextSize(int sz) override { } - void setColor(Color c) override { } + void setColor(ColorVal c) override { } void setCursor(int x, int y) override { } void print(const char* str) override { } void fillRect(int x, int y, int w, int h) override { } diff --git a/src/helpers/ui/OLEDDisplay.cpp b/src/helpers/ui/OLEDDisplay.cpp index a5d647a7fd..be4912a530 100644 --- a/src/helpers/ui/OLEDDisplay.cpp +++ b/src/helpers/ui/OLEDDisplay.cpp @@ -1166,7 +1166,7 @@ char DefaultFontTableLookup(const uint8_t ch) { uint8_t last = LASTCHAR; // get last char LASTCHAR = ch; - switch (last) { // conversion depnding on first UTF8-character + switch (last) { // conversion depending on first UTF8-character case 0xC2: return (uint8_t) ch; case 0xC3: return (uint8_t) (ch | 0xC0); case 0x82: if (ch == 0xAC) return (uint8_t) 0x80; // special case Euro-symbol diff --git a/src/helpers/ui/RotaryInput.h b/src/helpers/ui/RotaryInput.h new file mode 100644 index 0000000000..2dda695be1 --- /dev/null +++ b/src/helpers/ui/RotaryInput.h @@ -0,0 +1,18 @@ +#pragma once + +#include <Arduino.h> + +enum class RotaryInputEvent : uint8_t { + None, + Next, + Prev, +}; + +class RotaryInput { +public: + virtual ~RotaryInput() = default; + + virtual bool begin() = 0; + virtual RotaryInputEvent poll() = 0; + virtual bool isReady() const = 0; +}; diff --git a/src/helpers/ui/SH1106Display.cpp b/src/helpers/ui/SH1106Display.cpp index f383bb005d..c3840c02af 100644 --- a/src/helpers/ui/SH1106Display.cpp +++ b/src/helpers/ui/SH1106Display.cpp @@ -9,9 +9,23 @@ bool SH1106Display::i2c_probe(TwoWire &wire, uint8_t addr) return (error == 0); } +// Color scheme +ColorVal UIColor::window_bkg = SH110X_BLACK; +ColorVal UIColor::title_bkg = SH110X_BLACK; +ColorVal UIColor::title_txt = SH110X_WHITE; +ColorVal UIColor::primary_txt = SH110X_WHITE; +ColorVal UIColor::secondary_txt = SH110X_WHITE; +ColorVal UIColor::warning_txt = SH110X_WHITE; +ColorVal UIColor::popup_bkg = SH110X_BLACK; +ColorVal UIColor::popup_txt = SH110X_WHITE; +ColorVal UIColor::corp_blue = SH110X_WHITE; + bool SH1106Display::begin() { - return display.begin(DISPLAY_ADDRESS, true) && i2c_probe(Wire, DISPLAY_ADDRESS); + // Wire must already be initialised by board.begin() before this is called. + // Boards with non-standard SH1106 addresses should define DISPLAY_ADDRESS + // in their variant/platformio configuration. + return i2c_probe(Wire, DISPLAY_ADDRESS) && display.begin(DISPLAY_ADDRESS, true); } void SH1106Display::turnOn() @@ -32,7 +46,7 @@ void SH1106Display::clear() display.display(); } -void SH1106Display::startFrame(Color bkg) +void SH1106Display::startFrame(ColorVal bkg) { display.clearDisplay(); // TODO: apply 'bkg' _color = SH110X_WHITE; @@ -46,9 +60,9 @@ void SH1106Display::setTextSize(int sz) display.setTextSize(sz); } -void SH1106Display::setColor(Color c) +void SH1106Display::setColor(ColorVal c) { - _color = (c != 0) ? SH110X_WHITE : SH110X_BLACK; + _color = c; display.setTextColor(_color); } @@ -74,7 +88,7 @@ void SH1106Display::drawRect(int x, int y, int w, int h) void SH1106Display::drawXbm(int x, int y, const uint8_t *bits, int w, int h) { - display.drawBitmap(x, y, bits, w, h, SH110X_WHITE); + display.drawBitmap(x, y, bits, w, h, _color); } uint16_t SH1106Display::getTextWidth(const char *str) diff --git a/src/helpers/ui/SH1106Display.h b/src/helpers/ui/SH1106Display.h index b52a6adfb3..4e269d5ea5 100644 --- a/src/helpers/ui/SH1106Display.h +++ b/src/helpers/ui/SH1106Display.h @@ -30,9 +30,9 @@ class SH1106Display : public DisplayDriver void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char *str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/SSD1306Display.cpp b/src/helpers/ui/SSD1306Display.cpp index 464b2642a0..ab2d77fbc3 100644 --- a/src/helpers/ui/SSD1306Display.cpp +++ b/src/helpers/ui/SSD1306Display.cpp @@ -6,6 +6,17 @@ bool SSD1306Display::i2c_probe(TwoWire& wire, uint8_t addr) { return (error == 0); } +// Color scheme +ColorVal UIColor::window_bkg = SSD1306_BLACK; +ColorVal UIColor::title_bkg = SSD1306_BLACK; +ColorVal UIColor::title_txt = SSD1306_WHITE; +ColorVal UIColor::primary_txt = SSD1306_WHITE; +ColorVal UIColor::secondary_txt = SSD1306_WHITE; +ColorVal UIColor::warning_txt = SSD1306_WHITE; +ColorVal UIColor::popup_bkg = SSD1306_BLACK; +ColorVal UIColor::popup_txt = SSD1306_WHITE; +ColorVal UIColor::corp_blue = SSD1306_WHITE; + bool SSD1306Display::begin() { if (!_isOn) { if (_peripher_power) _peripher_power->claim(); @@ -44,7 +55,7 @@ void SSD1306Display::clear() { display.display(); } -void SSD1306Display::startFrame(Color bkg) { +void SSD1306Display::startFrame(ColorVal bkg) { display.clearDisplay(); // TODO: apply 'bkg' _color = SSD1306_WHITE; display.setTextColor(_color); @@ -56,8 +67,8 @@ void SSD1306Display::setTextSize(int sz) { display.setTextSize(sz); } -void SSD1306Display::setColor(Color c) { - _color = (c != 0) ? SSD1306_WHITE : SSD1306_BLACK; +void SSD1306Display::setColor(ColorVal c) { + _color = c; display.setTextColor(_color); } @@ -78,7 +89,7 @@ void SSD1306Display::drawRect(int x, int y, int w, int h) { } void SSD1306Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { - display.drawBitmap(x, y, bits, w, h, SSD1306_WHITE); + display.drawBitmap(x, y, bits, w, h, _color); } uint16_t SSD1306Display::getTextWidth(const char* str) { diff --git a/src/helpers/ui/SSD1306Display.h b/src/helpers/ui/SSD1306Display.h index d843da85b2..5dabbc58c0 100644 --- a/src/helpers/ui/SSD1306Display.h +++ b/src/helpers/ui/SSD1306Display.h @@ -35,9 +35,9 @@ class SSD1306Display : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/ST7735Display.cpp b/src/helpers/ui/ST7735Display.cpp index a6087dd813..344f5b1d9d 100644 --- a/src/helpers/ui/ST7735Display.cpp +++ b/src/helpers/ui/ST7735Display.cpp @@ -1,12 +1,409 @@ #include "ST7735Display.h" -#ifndef DISPLAY_ROTATION - #define DISPLAY_ROTATION 2 +//#include <Fonts/GFXFF/FreeSans9pt7b.h> + +// Optimised ST7735 display driver, derived from Adafruit_ST7735 library. + +#define ST_CMD_DELAY 0x80 // special signifier for command lists + +#define ST77XX_NOP 0x00 +#define ST77XX_SWRESET 0x01 +#define ST77XX_RDDID 0x04 +#define ST77XX_RDDST 0x09 + +#define ST77XX_SLPIN 0x10 +#define ST77XX_SLPOUT 0x11 +#define ST77XX_PTLON 0x12 +#define ST77XX_NORON 0x13 + +#define ST77XX_INVOFF 0x20 +#define ST77XX_INVON 0x21 +#define ST77XX_DISPOFF 0x28 +#define ST77XX_DISPON 0x29 +#define ST77XX_CASET 0x2A +#define ST77XX_RASET 0x2B +#define ST77XX_RAMWR 0x2C +#define ST77XX_RAMRD 0x2E + +#define ST77XX_PTLAR 0x30 +#define ST77XX_TEOFF 0x34 +#define ST77XX_TEON 0x35 +#define ST77XX_MADCTL 0x36 +#define ST77XX_COLMOD 0x3A + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 + +#define ST77XX_RDID1 0xDA +#define ST77XX_RDID2 0xDB +#define ST77XX_RDID3 0xDC +#define ST77XX_RDID4 0xDD + +// Some ready-made 16-bit ('565') color settings: +#define ST77XX_BLACK 0x0000 +#define ST77XX_WHITE 0xFFFF +#define ST77XX_RED 0xF800 +#define ST77XX_GREEN 0x07E0 +#define ST77XX_BLUE 0x001F +#define ST77XX_CYAN 0x07FF +#define ST77XX_MAGENTA 0xF81F +#define ST77XX_YELLOW 0xFFE0 +#define ST77XX_ORANGE 0xFC00 + + +// some flags for initR() :( +#define INITR_GREENTAB 0x00 +#define INITR_REDTAB 0x01 +#define INITR_BLACKTAB 0x02 +#define INITR_18GREENTAB INITR_GREENTAB +#define INITR_18REDTAB INITR_REDTAB +#define INITR_18BLACKTAB INITR_BLACKTAB +#define INITR_144GREENTAB 0x01 +#define INITR_MINI160x80 0x04 +#define INITR_HALLOWING 0x05 +#define INITR_MINI160x80_PLUGIN 0x06 + +// Some register settings +#define ST7735_MADCTL_BGR 0x08 +#define ST7735_MADCTL_MH 0x04 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +// Some ready-made 16-bit ('565') color settings: +#define ST7735_BLACK ST77XX_BLACK +#define ST7735_WHITE ST77XX_WHITE +#define ST7735_RED ST77XX_RED +#define ST7735_GREEN ST77XX_GREEN +#define ST7735_BLUE ST77XX_BLUE +#define ST7735_CYAN ST77XX_CYAN +#define ST7735_MAGENTA ST77XX_MAGENTA +#define ST7735_YELLOW ST77XX_YELLOW +#define ST7735_ORANGE ST77XX_ORANGE + +static TFT_eSPI lcd = TFT_eSPI(160, 80); +static uint32_t curr_color; + +#if defined(HELTEC_LORA_V3) || defined(HELTEC_TRACKER_V2) + static SPIClass tft_spi(HSPI); + #define _spi (&tft_spi) +#else + #define _spi (&SPI1) #endif +SPISettings _spiSettings = SPISettings(40000000, MSBFIRST, SPI_MODE0); + +// clang-format off +static const uint8_t PROGMEM + Bcmd[] = { // Init commands for 7735B screens + 18, // 18 commands in list: + ST77XX_SWRESET, ST_CMD_DELAY, // 1: Software reset, no args, w/delay + 50, // 50 ms delay + ST77XX_SLPOUT, ST_CMD_DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = max (500 ms) delay + ST77XX_COLMOD, 1+ST_CMD_DELAY, // 3: Set color mode, 1 arg + delay: + 0x05, // 16-bit color + 10, // 10 ms delay + ST7735_FRMCTR1, 3+ST_CMD_DELAY, // 4: Frame rate control, 3 args + delay: + 0x00, // fastest refresh + 0x06, // 6 lines front porch + 0x03, // 3 lines back porch + 10, // 10 ms delay + ST77XX_MADCTL, 1, // 5: Mem access ctl (directions), 1 arg: + 0x08, // Row/col addr, bottom-top refresh + ST7735_DISSET5, 2, // 6: Display settings #5, 2 args: + 0x15, // 1 clk cycle nonoverlap, 2 cycle gate + // rise, 3 cycle osc equalize + 0x02, // Fix on VTL + ST7735_INVCTR, 1, // 7: Display inversion control, 1 arg: + 0x0, // Line inversion + ST7735_PWCTR1, 2+ST_CMD_DELAY, // 8: Power control, 2 args + delay: + 0x02, // GVDD = 4.7V + 0x70, // 1.0uA + 10, // 10 ms delay + ST7735_PWCTR2, 1, // 9: Power control, 1 arg, no delay: + 0x05, // VGH = 14.7V, VGL = -7.35V + ST7735_PWCTR3, 2, // 10: Power control, 2 args, no delay: + 0x01, // Opamp current small + 0x02, // Boost frequency + ST7735_VMCTR1, 2+ST_CMD_DELAY, // 11: Power control, 2 args + delay: + 0x3C, // VCOMH = 4V + 0x38, // VCOML = -1.1V + 10, // 10 ms delay + ST7735_PWCTR6, 2, // 12: Power control, 2 args, no delay: + 0x11, 0x15, + ST7735_GMCTRP1,16, // 13: Gamma Adjustments (pos. polarity), 16 args + delay: + 0x09, 0x16, 0x09, 0x20, // (Not entirely necessary, but provides + 0x21, 0x1B, 0x13, 0x19, // accurate colors) + 0x17, 0x15, 0x1E, 0x2B, + 0x04, 0x05, 0x02, 0x0E, + ST7735_GMCTRN1,16+ST_CMD_DELAY, // 14: Gamma Adjustments (neg. polarity), 16 args + delay: + 0x0B, 0x14, 0x08, 0x1E, // (Not entirely necessary, but provides + 0x22, 0x1D, 0x18, 0x1E, // accurate colors) + 0x1B, 0x1A, 0x24, 0x2B, + 0x06, 0x06, 0x02, 0x0F, + 10, // 10 ms delay + ST77XX_CASET, 4, // 15: Column addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 2 + 0x00, 0x81, // XEND = 129 + ST77XX_RASET, 4, // 16: Row addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 1 + 0x00, 0x81, // XEND = 160 + ST77XX_NORON, ST_CMD_DELAY, // 17: Normal display on, no args, w/delay + 10, // 10 ms delay + ST77XX_DISPON, ST_CMD_DELAY, // 18: Main screen turn on, no args, delay + 255 }, // 255 = max (500 ms) delay + + Rcmd1[] = { // 7735R init, part 1 (red or green tab) + 14, // 14 commands in list: + /*ST77XX_SWRESET, ST_CMD_DELAY, // 1: Software reset, 0 args, w/delay + 150, */ // 150 ms delay + ST77XX_SLPOUT, ST_CMD_DELAY, // 2: Out of sleep mode, 0 args, w/delay + 120, // 120 ms delay + ST7735_FRMCTR1, 3, // 3: Framerate ctrl - normal mode, 3 arg: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR2, 3, // 4: Framerate ctrl - idle mode, 3 args: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR3, 6, // 5: Framerate - partial mode, 6 args: + 0x01, 0x2C, 0x2D, // Dot inversion mode + 0x01, 0x2C, 0x2D, // Line inversion mode + ST7735_INVCTR, 1, // 6: Display inversion ctrl, 1 arg: + 0x07, // No inversion + ST7735_PWCTR1, 3, // 7: Power control, 3 args, no delay: + 0xA2, + 0x02, // -4.6V + 0x84, // AUTO mode + ST7735_PWCTR2, 1, // 8: Power control, 1 arg, no delay: + 0xC5, // VGH25=2.4C VGSEL=-10 VGH=3 * AVDD + ST7735_PWCTR3, 2, // 9: Power control, 2 args, no delay: + 0x0A, // Opamp current small + 0x00, // Boost frequency + ST7735_PWCTR4, 2, // 10: Power control, 2 args, no delay: + 0x8A, // BCLK/2, + 0x2A, // opamp current small & medium low + ST7735_PWCTR5, 2, // 11: Power control, 2 args, no delay: + 0x8A, 0xEE, + ST7735_VMCTR1, 1, // 12: Power control, 1 arg, no delay: + 0x0E, + ST77XX_INVOFF, 0, // 13: Don't invert display, no args + ST77XX_MADCTL, 1, // 14: Mem access ctl (directions), 1 arg: + 0xC8, // row/col addr, bottom-top refresh + ST77XX_COLMOD, 1, // 15: set color mode, 1 arg, no delay: + 0x05 }, // 16-bit color + + Rcmd2green[] = { // 7735R init, part 2 (green tab only) + 2, // 2 commands in list: + ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 0 + 0x00, 0x7F+0x02, // XEND = 127 + ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: + 0x00, 0x01, // XSTART = 0 + 0x00, 0x9F+0x01 }, // XEND = 159 + + Rcmd2red[] = { // 7735R init, part 2 (red tab only) + 2, // 2 commands in list: + ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F, // XEND = 127 + ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x9F }, // XEND = 159 + + Rcmd2green144[] = { // 7735R init, part 2 (green 1.44 tab) + 2, // 2 commands in list: + ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F, // XEND = 127 + ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F }, // XEND = 127 + + Rcmd2green160x80[] = { // 7735R init, part 2 (mini 160x80) + 2, // 2 commands in list: + ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x4F, // XEND = 79 + ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x9F }, // XEND = 159 + + Rcmd2green160x80plugin[] = { // 7735R init, part 2 (mini 160x80 with plugin FPC) + 3, // 3 commands in list: + ST77XX_INVON, 0, // 1: Display is inverted + ST77XX_CASET, 4, // 2: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x4F, // XEND = 79 + ST77XX_RASET, 4, // 3: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x9F }, // XEND = 159 + + Rcmd2invert[] = { // Tracker V1, part 2 + 1, // 1 command in list: + ST77XX_INVON, 0 }, // 1: Display is inverted + + Rcmd3[] = { // 7735R init, part 3 (red or green tab) + 2, // 2 commands in list: + ST7735_GMCTRP1, 16 , // 1: Gamma Adjustments (pos. polarity), 16 args + delay: + 0x02, 0x1c, 0x07, 0x12, // (Not entirely necessary, but provides + 0x37, 0x32, 0x29, 0x2d, // accurate colors) + 0x29, 0x25, 0x2B, 0x39, + 0x00, 0x01, 0x03, 0x10, + ST7735_GMCTRN1, 16 , // 2: Gamma Adjustments (neg. polarity), 16 args + delay: + 0x03, 0x1d, 0x07, 0x06, // (Not entirely necessary, but provides + 0x2E, 0x2C, 0x29, 0x2D, // accurate colors) + 0x2E, 0x2E, 0x37, 0x3F, + 0x00, 0x00, 0x02, 0x10 }; // 100 ms delay + +static int16_t _xstart = 0; ///< Internal framebuffer X offset +static int16_t _ystart = 0; ///< Internal framebuffer Y offset +static uint8_t _colstart = 0; ///< Some displays need this changed to offset +static uint8_t _rowstart = 0; ///< Some displays need this changed to offset +static uint8_t rotation = 0; +static int16_t _width = 0; ///< Display width as modified by current rotation +static int16_t _height = 0; ///< Display height as modified by current rotation + +static void set_CS(uint8_t level) { + //if (_cs != (uint8_t) -1) { + digitalWrite(PIN_TFT_CS, level); + //} +} +static void sendCommand(uint8_t com) { + set_CS(HIGH); + digitalWrite(PIN_TFT_DC, LOW); + set_CS(LOW); + _spi->beginTransaction(_spiSettings); + _spi->transfer(com); + _spi->endTransaction(); + set_CS(HIGH); + digitalWrite(PIN_TFT_DC, HIGH); +} + +static void WriteData(uint8_t data) { + digitalWrite(PIN_TFT_CS, LOW); + _spi->beginTransaction(_spiSettings); + _spi->transfer(data); + _spi->endTransaction(); + digitalWrite(PIN_TFT_CS, HIGH); +} +static void SPI_WRITE32(uint32_t l) { + _spi->transfer(l >> 24); + _spi->transfer(l >> 16); + _spi->transfer(l >> 8); + _spi->transfer(l); +} +static void writeCommand(uint8_t cmd) { + digitalWrite(PIN_TFT_DC, LOW); + _spi->transfer(cmd); + digitalWrite(PIN_TFT_DC, HIGH); +} + +static void displayInit(const uint8_t *addr) { + uint8_t numCommands, cmd, numArgs; + uint16_t ms; + + numCommands = pgm_read_byte(addr++); // Number of commands to follow + while (numCommands--) { // For each command... + cmd = pgm_read_byte(addr++); // Read command + numArgs = pgm_read_byte(addr++); // Number of args to follow + ms = numArgs & ST_CMD_DELAY; // If hibit set, delay follows args + numArgs &= ~ST_CMD_DELAY; // Mask out delay bit + sendCommand(cmd); + for (int k = 0; k < numArgs; k++) { + WriteData(addr[k]); + } + addr += numArgs; + + if (ms) { + ms = pgm_read_byte(addr++); // Read post-command delay time (ms) + if (ms == 255) + ms = 500; // If 255, delay for 500 ms + delay(ms); + } + } +} + +static void setRotation(uint8_t m) { + uint8_t madctl = 0; + + rotation = m & 3; // can't be higher than 3 + + switch (rotation) { + case 0: + madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST7735_MADCTL_BGR; + + _height = 160; + _width = 80; + _xstart = _colstart; + _ystart = _rowstart; + break; + case 1: + madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV | ST7735_MADCTL_BGR; + + _width = 160; + _height = 80; + _ystart = _colstart; + _xstart = _rowstart; + break; + case 2: + madctl = ST7735_MADCTL_BGR; + + _height = 160; + _width = 80; + _xstart = _colstart; + _ystart = _rowstart; + break; + case 3: + madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST7735_MADCTL_BGR; + + _width = 160; + _height = 80; + _ystart = _colstart; + _xstart = _rowstart; + break; + } + + sendCommand(ST77XX_MADCTL); + WriteData(madctl); +} + +static void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + x += _xstart; + y += _ystart; + uint32_t xa = ((uint32_t)x << 16) | (x + w - 1); + uint32_t ya = ((uint32_t)y << 16) | (y + h - 1); + + writeCommand(ST77XX_CASET); // Column addr set + SPI_WRITE32(xa); + + writeCommand(ST77XX_RASET); // Row addr set + SPI_WRITE32(ya); + + writeCommand(ST77XX_RAMWR); // write to RAM +} + #define SCALE_X 1.25f // 160 / 128 #define SCALE_Y 1.25f // 80 / 64 +static TFT_eSprite *sprite = NULL; + bool ST7735Display::i2c_probe(TwoWire& wire, uint8_t addr) { return true; /* @@ -16,53 +413,121 @@ bool ST7735Display::i2c_probe(TwoWire& wire, uint8_t addr) { */ } +#ifndef PIN_TFT_LEDA_CTL_ACTIVE + #define PIN_TFT_LEDA_CTL_ACTIVE HIGH +#endif + +// Color scheme +ColorVal UIColor::window_bkg = ST77XX_WHITE; +ColorVal UIColor::title_bkg = ST77XX_BLUE; +ColorVal UIColor::title_txt = ST77XX_WHITE; +ColorVal UIColor::primary_txt = ST77XX_BLACK; +ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray +ColorVal UIColor::warning_txt = ST77XX_ORANGE; +ColorVal UIColor::popup_bkg = ST77XX_CYAN; +ColorVal UIColor::popup_txt = ST77XX_BLACK; +ColorVal UIColor::corp_blue = 0x001A; + bool ST7735Display::begin() { + if (!sprite) { + // alloc offscreen canvas + sprite = new TFT_eSprite(&lcd); + if (sprite) { + if (sprite->createSprite(160, 80)) { + sprite->fillScreen(ST77XX_BLACK); + sprite->setTextColor(curr_color = ST77XX_WHITE); + } else { + Serial.printf("ST7735Display: failed to alloc canvas pixels"); + } + } else { + Serial.printf("ST7735Display: failed to alloc canvas"); + } + } + if (!_isOn) { if (_peripher_power) _peripher_power->claim(); + delay(100); // TEMP!! + pinMode(PIN_TFT_RST, OUTPUT); + pinMode(PIN_TFT_CS, OUTPUT); + pinMode(PIN_TFT_DC, OUTPUT); pinMode(PIN_TFT_LEDA_CTL, OUTPUT); -#if defined(PIN_TFT_LEDA_CTL_ACTIVE) - digitalWrite(PIN_TFT_LEDA_CTL, PIN_TFT_LEDA_CTL_ACTIVE); + +#ifdef ESP_PLATFORM + _spi->begin(PIN_TFT_SCL, -1 /* _miso */, PIN_TFT_SDA /* _mosi */, -1); #else - digitalWrite(PIN_TFT_LEDA_CTL, HIGH); + _spi->begin(); #endif - digitalWrite(PIN_TFT_RST, HIGH); + _spi->setClockDivider(SPI_CLOCK_DIV2); -#if defined(HELTEC_T1) - display.initR(INITR_MINI160x80); - display.setRotation(DISPLAY_ROTATION); -#elif defined(HELTEC_TRACKER_V2) || defined(HELTEC_T096) - display.initR(INITR_MINI160x80); - display.setRotation(DISPLAY_ROTATION); - uint8_t madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST7735_MADCTL_BGR;//Adjust color to BGR - display.sendCommand(ST77XX_MADCTL, &madctl, 1); + _height = 80; + _width = 160; +#if defined(HELTEC_LORA_V3) // Tracker v1 + _colstart = 26; + _rowstart = 1; #else - display.initR(INITR_MINI160x80_PLUGIN); - display.setRotation(DISPLAY_ROTATION); + _colstart = 24; + _rowstart = 0; #endif - display.setSPISpeed(40000000); - display.fillScreen(ST77XX_BLACK); - display.setTextColor(ST77XX_WHITE); - display.setTextSize(2); - display.cp437(true); // Use full 256 char 'Code Page 437' font + + _resetAndInit(); + + sendCommand(ST77XX_DISPON); _isOn = true; } return true; } +void ST7735Display::_resetAndInit() { + // Pulse Reset low for 10ms + digitalWrite(PIN_TFT_RST, HIGH); + delay(2); + digitalWrite(PIN_TFT_RST, LOW); + delay(10); + digitalWrite(PIN_TFT_RST, HIGH); + delay(2); + + // run init commands + displayInit(Rcmd1); +#if defined(HELTEC_TRACKER_V2) || defined(HELTEC_T096) + displayInit(Rcmd2green160x80); + //uint8_t madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST7735_MADCTL_BGR;//Adjust color to BGR + //display.sendCommand(ST77XX_MADCTL, &madctl, 1); +#elif defined(HELTEC_LORA_V3) // Tracker v1 + displayInit(Rcmd2invert); // invert RGB +#endif + displayInit(Rcmd3); + setRotation(DISPLAY_ROTATION); + + // clear the buffer before display on + sprite->fillScreen(ST77XX_BLACK); + endFrame(); + + // turn on backlight + digitalWrite(PIN_TFT_LEDA_CTL, PIN_TFT_LEDA_CTL_ACTIVE); + +} + void ST7735Display::turnOn() { - ST7735Display::begin(); + if (!_isOn) { + if (_peripher_power) _peripher_power->claim(); + _resetAndInit(); + sendCommand(ST77XX_DISPON); + + // Now turn on the backlight + // digitalWrite(PIN_TFT_LEDA_CTL, PIN_TFT_LEDA_CTL_ACTIVE); + _isOn = true; + } } void ST7735Display::turnOff() { if (_isOn) { - digitalWrite(PIN_TFT_RST, LOW); -#if defined(PIN_TFT_LEDA_CTL_ACTIVE) + sendCommand(ST77XX_DISPOFF); + + //digitalWrite(PIN_TFT_RST, LOW); + // Now turn off the backlight digitalWrite(PIN_TFT_LEDA_CTL, !PIN_TFT_LEDA_CTL_ACTIVE); -#else - digitalWrite(PIN_TFT_LEDA_CTL, LOW); -#endif _isOn = false; if (_peripher_power) _peripher_power->release(); @@ -70,78 +535,65 @@ void ST7735Display::turnOff() { } void ST7735Display::clear() { - //Serial.println("DBG: display.Clear"); - display.fillScreen(ST77XX_BLACK); + sprite->fillScreen(ST77XX_BLACK); } -void ST7735Display::startFrame(Color bkg) { - display.fillScreen(0x00); - display.setTextColor(ST77XX_WHITE); - display.setTextSize(1); // This one affects size of Please wait... message - display.cp437(true); // Use full 256 char 'Code Page 437' font +void ST7735Display::startFrame(ColorVal bkg) { + sprite->fillScreen(bkg); + sprite->setTextColor(curr_color = UIColor::primary_txt); + sprite->setFreeFont(); + sprite->setTextSize(1); // This one affects size of Please wait... message + //sprite->cp437(true); // Use full 256 char 'Code Page 437' font } void ST7735Display::setTextSize(int sz) { - display.setTextSize(sz); -} - -void ST7735Display::setColor(Color c) { - switch (c) { - case DisplayDriver::DARK : - _color = ST77XX_BLACK; - break; - case DisplayDriver::LIGHT : - _color = ST77XX_WHITE; - break; - case DisplayDriver::RED : - _color = ST77XX_RED; - break; - case DisplayDriver::GREEN : - _color = ST77XX_GREEN; - break; - case DisplayDriver::BLUE : - _color = ST77XX_BLUE; - break; - case DisplayDriver::YELLOW : - _color = ST77XX_YELLOW; - break; - case DisplayDriver::ORANGE : - _color = ST77XX_ORANGE; - break; - default: - _color = ST77XX_WHITE; - break; - } - display.setTextColor(_color); + sprite->setTextSize(sz); +} + +void ST7735Display::setColor(ColorVal c) { + curr_color = c; + sprite->setTextColor(curr_color); } void ST7735Display::setCursor(int x, int y) { - display.setCursor(x*SCALE_X, y*SCALE_Y); + sprite->setCursor(x*SCALE_X, y*SCALE_Y); } void ST7735Display::print(const char* str) { - display.print(str); + sprite->print(str); } void ST7735Display::fillRect(int x, int y, int w, int h) { - display.fillRect(x*SCALE_X, y*SCALE_Y, w*SCALE_X, h*SCALE_Y, _color); + sprite->fillRect(x*SCALE_X, y*SCALE_Y, w*SCALE_X, h*SCALE_Y, curr_color); } void ST7735Display::drawRect(int x, int y, int w, int h) { - display.drawRect(x*SCALE_X, y*SCALE_Y, w*SCALE_X, h*SCALE_Y, _color); + sprite->drawRect(x*SCALE_X, y*SCALE_Y, w*SCALE_X, h*SCALE_Y, curr_color); } void ST7735Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { - display.drawBitmap(x*SCALE_X, y*SCALE_Y, bits, w, h, _color); + sprite->drawBitmap(x*SCALE_X, y*SCALE_Y, bits, w, h, curr_color); } uint16_t ST7735Display::getTextWidth(const char* str) { - int16_t x1, y1; - uint16_t w, h; - display.getTextBounds(str, 0, 0, &x1, &y1, &w, &h); - return w / SCALE_X; + return sprite->textWidth(str) / SCALE_X; } void ST7735Display::endFrame() { - // display.display(); + // blit the canvas buffer to LCD + set_CS(LOW); + _spi->beginTransaction(_spiSettings); + uint16_t x, y; + uint16_t* pixels = (uint16_t *) ((TFT_eSprite *) sprite)->getPointer(); + for (y = 0; y < 80; y++, pixels += 160) { + setAddrWindow(0, y, 160, 1); +#ifdef ESP_PLATFORM + _spi->transferBytes((uint8_t *)pixels, NULL, 2 * 160); +#else + _spi->transfer(pixels, NULL, 2 * 160); +#endif + } + + _spi->endTransaction(); + set_CS(HIGH); } diff --git a/src/helpers/ui/ST7735Display.h b/src/helpers/ui/ST7735Display.h index 94797503f1..6e289b2193 100644 --- a/src/helpers/ui/ST7735Display.h +++ b/src/helpers/ui/ST7735Display.h @@ -3,28 +3,25 @@ #include "DisplayDriver.h" #include <Wire.h> #include <SPI.h> -#include <Adafruit_GFX.h> -#include <Adafruit_ST7735.h> +#include "TFT_eSPI.h" #include <helpers/RefCountedDigitalPin.h> class ST7735Display : public DisplayDriver { - Adafruit_ST7735 display; bool _isOn; - uint16_t _color; RefCountedDigitalPin* _peripher_power; bool i2c_probe(TwoWire& wire, uint8_t addr); public: #ifdef USE_PIN_TFT ST7735Display(RefCountedDigitalPin* peripher_power=NULL) : DisplayDriver(128, 64), - display(PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_SDA, PIN_TFT_SCL, PIN_TFT_RST), + // display(PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_SDA, PIN_TFT_SCL, PIN_TFT_RST), _peripher_power(peripher_power) { _isOn = false; } #else ST7735Display(RefCountedDigitalPin* peripher_power=NULL) : DisplayDriver(128, 64), - display(&SPI1, PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_RST), + // display(&SPI1, PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_RST), _peripher_power(peripher_power) { _isOn = false; @@ -36,9 +33,9 @@ class ST7735Display : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void fillRect(int x, int y, int w, int h) override; @@ -46,4 +43,7 @@ class ST7735Display : public DisplayDriver { void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; uint16_t getTextWidth(const char* str) override; void endFrame() override; + +protected: + void _resetAndInit(); }; diff --git a/src/helpers/ui/ST7789Display.cpp b/src/helpers/ui/ST7789Display.cpp index f7d20b8ab7..7d039a131a 100644 --- a/src/helpers/ui/ST7789Display.cpp +++ b/src/helpers/ui/ST7789Display.cpp @@ -18,6 +18,25 @@ #define SCALE_Y 2.109375f // 135 / 64 #endif +#ifdef DISPLAY_SCALE_X + #define SCALE_X DISPLAY_SCALE_X +#endif + +#ifdef DISPLAY_SCALE_Y + #define SCALE_Y DISPLAY_SCALE_Y +#endif + +// Color scheme +ColorVal UIColor::window_bkg = OLEDDISPLAY_COLOR::BLACK; +ColorVal UIColor::title_bkg = OLEDDISPLAY_COLOR::BLACK; +ColorVal UIColor::title_txt = OLEDDISPLAY_COLOR::WHITE; +ColorVal UIColor::primary_txt = OLEDDISPLAY_COLOR::WHITE; +ColorVal UIColor::secondary_txt = OLEDDISPLAY_COLOR::WHITE; +ColorVal UIColor::warning_txt = OLEDDISPLAY_COLOR::WHITE; +ColorVal UIColor::popup_bkg = OLEDDISPLAY_COLOR::BLACK; +ColorVal UIColor::popup_txt = OLEDDISPLAY_COLOR::WHITE; +ColorVal UIColor::corp_blue = OLEDDISPLAY_COLOR::WHITE; + bool ST7789Display::begin() { if(!_isOn) { pinMode(PIN_TFT_VDD_CTL, OUTPUT); @@ -32,6 +51,9 @@ bool ST7789Display::begin() { display.init(); display.landscapeScreen(); + #ifdef DISPLAY_FLIP_VERTICALLY + display.flipScreenVertically(); + #endif display.displayOn(); setCursor(0,0); @@ -49,6 +71,9 @@ void ST7789Display::turnOn() { // Re-initialize the display display.init(); display.displayOn(); + #ifdef DISPLAY_FLIP_VERTICALLY + display.flipScreenVertically(); + #endif delay(20); // Now turn on the backlight @@ -76,10 +101,9 @@ void ST7789Display::clear() { display.clear(); } -void ST7789Display::startFrame(Color bkg) { - display.clear(); - _color = ST77XX_WHITE; - display.setRGB(_color); +void ST7789Display::startFrame(ColorVal bkg) { + display.clear(); // TODO: use bkg + setColor(UIColor::primary_txt); display.setFont(ArialMT_Plain_16); } @@ -96,38 +120,10 @@ void ST7789Display::setTextSize(int sz) { } } -void ST7789Display::setColor(Color c) { - switch (c) { - case DisplayDriver::DARK : - _color = ST77XX_BLACK; - display.setColor(OLEDDISPLAY_COLOR::BLACK); - break; -#if 0 - case DisplayDriver::LIGHT : - _color = ST77XX_WHITE; - break; - case DisplayDriver::RED : - _color = ST77XX_RED; - break; - case DisplayDriver::GREEN : - _color = ST77XX_GREEN; - break; - case DisplayDriver::BLUE : - _color = ST77XX_BLUE; - break; - case DisplayDriver::YELLOW : - _color = ST77XX_YELLOW; - break; - case DisplayDriver::ORANGE : - _color = ST77XX_ORANGE; - break; -#endif - default: - _color = ST77XX_WHITE; - display.setColor(OLEDDISPLAY_COLOR::WHITE); - break; - } - display.setRGB(_color); +void ST7789Display::setColor(ColorVal c) { + _color = c; + display.setColor((OLEDDISPLAY_COLOR)_color); + display.setRGB(_color == OLEDDISPLAY_COLOR::WHITE ? ST77XX_WHITE : ST77XX_BLACK); } void ST7789Display::setCursor(int x, int y) { diff --git a/src/helpers/ui/ST7789Display.h b/src/helpers/ui/ST7789Display.h index cb56ff8a79..580ad463f6 100644 --- a/src/helpers/ui/ST7789Display.h +++ b/src/helpers/ui/ST7789Display.h @@ -14,8 +14,10 @@ class ST7789Display : public DisplayDriver { bool i2c_probe(TwoWire& wire, uint8_t addr); public: -#ifdef HELTEC_VISION_MASTER_T190 +#if defined(HELTEC_VISION_MASTER_T190) ST7789Display() : DisplayDriver(128, 64), display(&SPI, PIN_TFT_RST, PIN_TFT_DC, PIN_TFT_CS, GEOMETRY_RAWMODE, 320, 170,PIN_TFT_SDA,-1,PIN_TFT_SCL) {_isOn = false;} +#elif defined(THINKNODE_M9) + ST7789Display() : DisplayDriver(128, 64), display(&SPI, ST7789_RESET, ST7789_RS, ST7789_CS, GEOMETRY_RAWMODE, 320, 240, ST7789_SDA, ST7789_MISO, ST7789_SCK) {_isOn = false;} #else ST7789Display() : DisplayDriver(128, 64), display(&SPI1, PIN_TFT_RST, PIN_TFT_DC, PIN_TFT_CS, GEOMETRY_RAWMODE, 240, 135) {_isOn = false;} #endif @@ -25,9 +27,9 @@ class ST7789Display : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void printWordWrap(const char* str, int max_width) override; diff --git a/src/helpers/ui/ST7789LCDDisplay.cpp b/src/helpers/ui/ST7789LCDDisplay.cpp index dc75e96310..a9f30dd56a 100644 --- a/src/helpers/ui/ST7789LCDDisplay.cpp +++ b/src/helpers/ui/ST7789LCDDisplay.cpp @@ -1,5 +1,9 @@ #include "ST7789LCDDisplay.h" +#ifndef PIN_TFT_MISO + #define PIN_TFT_MISO -1 +#endif + #ifndef DISPLAY_ROTATION #define DISPLAY_ROTATION 3 #endif @@ -19,6 +23,17 @@ bool ST7789LCDDisplay::i2c_probe(TwoWire& wire, uint8_t addr) { return true; } +// Color scheme +ColorVal UIColor::window_bkg = ST77XX_WHITE; +ColorVal UIColor::title_bkg = ST77XX_BLUE; +ColorVal UIColor::title_txt = ST77XX_WHITE; +ColorVal UIColor::primary_txt = ST77XX_BLACK; +ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray +ColorVal UIColor::warning_txt = ST77XX_ORANGE; +ColorVal UIColor::popup_bkg = ST77XX_CYAN; +ColorVal UIColor::popup_txt = ST77XX_BLACK; +ColorVal UIColor::corp_blue = 0x001A; + bool ST7789LCDDisplay::begin() { if (!_isOn) { if (_peripher_power) _peripher_power->claim(); @@ -29,8 +44,8 @@ bool ST7789LCDDisplay::begin() { } // Im not sure if this is just a t-deck problem or not, if your display is slow try this. - #if defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) - displaySPI.begin(PIN_TFT_SCL, -1, PIN_TFT_SDA, PIN_TFT_CS); + #if defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) || defined(HELTEC_V4_R8_TFT) + displaySPI.begin(PIN_TFT_SCL, PIN_TFT_MISO, PIN_TFT_SDA, PIN_TFT_CS); #endif display.init(DISPLAY_WIDTH, DISPLAY_HEIGHT); @@ -74,9 +89,9 @@ void ST7789LCDDisplay::clear() { display.fillScreen(ST77XX_BLACK); } -void ST7789LCDDisplay::startFrame(Color bkg) { - display.fillScreen(ST77XX_BLACK); - display.setTextColor(ST77XX_WHITE); +void ST7789LCDDisplay::startFrame(ColorVal bkg) { + display.fillScreen(bkg); + display.setTextColor(_color = UIColor::primary_txt); display.setTextSize(1 * DISPLAY_SCALE_X); // This one affects size of Please wait... message display.cp437(true); // Use full 256 char 'Code Page 437' font } @@ -85,34 +100,8 @@ void ST7789LCDDisplay::setTextSize(int sz) { display.setTextSize(sz * DISPLAY_SCALE_X); } -void ST7789LCDDisplay::setColor(Color c) { - switch (c) { - case DisplayDriver::DARK : - _color = ST77XX_BLACK; - break; - case DisplayDriver::LIGHT : - _color = ST77XX_WHITE; - break; - case DisplayDriver::RED : - _color = ST77XX_RED; - break; - case DisplayDriver::GREEN : - _color = ST77XX_GREEN; - break; - case DisplayDriver::BLUE : - _color = ST77XX_BLUE; - break; - case DisplayDriver::YELLOW : - _color = ST77XX_YELLOW; - break; - case DisplayDriver::ORANGE : - _color = ST77XX_ORANGE; - break; - default: - _color = ST77XX_WHITE; - break; - } - display.setTextColor(_color); +void ST7789LCDDisplay::setColor(ColorVal c) { + display.setTextColor(_color = c); } void ST7789LCDDisplay::setCursor(int x, int y) { diff --git a/src/helpers/ui/ST7789LCDDisplay.h b/src/helpers/ui/ST7789LCDDisplay.h index 5b960ca198..b5127d3503 100644 --- a/src/helpers/ui/ST7789LCDDisplay.h +++ b/src/helpers/ui/ST7789LCDDisplay.h @@ -8,7 +8,7 @@ #include <helpers/RefCountedDigitalPin.h> class ST7789LCDDisplay : public DisplayDriver { - #if defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) + #if defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) || defined(HELTEC_V4_R8_TFT) SPIClass displaySPI; #endif Adafruit_ST7789 display; @@ -25,7 +25,7 @@ class ST7789LCDDisplay : public DisplayDriver { { _isOn = false; } -#elif defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) +#elif defined(LILYGO_TDECK) || defined(HELTEC_LORA_V4_TFT) || defined(HELTEC_V4_R8_TFT) ST7789LCDDisplay(RefCountedDigitalPin* peripher_power=NULL) : DisplayDriver(128, 64), displaySPI(HSPI), display(&displaySPI, PIN_TFT_CS, PIN_TFT_DC, PIN_TFT_RST), @@ -47,9 +47,9 @@ class ST7789LCDDisplay : public DisplayDriver { void turnOn() override; void turnOff() override; void clear() override; - void startFrame(Color bkg = DARK) override; + void startFrame(ColorVal bkg = UIColor::window_bkg) override; void setTextSize(int sz) override; - void setColor(Color c) override; + void setColor(ColorVal c) override; void setCursor(int x, int y) override; void print(const char* str) override; void fillRect(int x, int y, int w, int h) override; diff --git a/src/helpers/ui/U8g2Display.cpp b/src/helpers/ui/U8g2Display.cpp new file mode 100644 index 0000000000..e8d7fe2f10 --- /dev/null +++ b/src/helpers/ui/U8g2Display.cpp @@ -0,0 +1,12 @@ +#include "U8g2Display.h" + +// Color scheme +ColorVal UIColor::window_bkg = 0; +ColorVal UIColor::title_bkg = 0; +ColorVal UIColor::title_txt = 1; +ColorVal UIColor::primary_txt = 1; +ColorVal UIColor::secondary_txt = 1; +ColorVal UIColor::warning_txt = 1; +ColorVal UIColor::popup_bkg = 0; +ColorVal UIColor::popup_txt = 1; +ColorVal UIColor::corp_blue = 1; diff --git a/src/helpers/ui/U8g2Display.h b/src/helpers/ui/U8g2Display.h index 73c5893633..a87ee19b3e 100644 --- a/src/helpers/ui/U8g2Display.h +++ b/src/helpers/ui/U8g2Display.h @@ -72,10 +72,10 @@ class U8g2Display : public DisplayDriver { _u8g2.sendBuffer(); } - void startFrame(Color bkg = DARK) override { - _u8g2.clearBuffer(); - _drawColor = 1; - _u8g2.setDrawColor(1); + void startFrame(ColorVal bkg = UIColor::window_bkg) override { + _u8g2.clearBuffer(); // TODO: apply 'bkg' color + _drawColor = UIColor::primary_txt; + _u8g2.setDrawColor(_drawColor); applyFont(1); } @@ -83,8 +83,8 @@ class U8g2Display : public DisplayDriver { applyFont(sz); } - void setColor(Color c) override { - _drawColor = (c != DARK) ? 1 : 0; + void setColor(ColorVal c) override { + _drawColor = c; _u8g2.setDrawColor(_drawColor); } @@ -94,22 +94,18 @@ class U8g2Display : public DisplayDriver { } void print(const char* str) override { - _u8g2.setDrawColor(_drawColor); _u8g2.drawStr(_cursorX, _cursorY, str); } void fillRect(int x, int y, int w, int h) override { - _u8g2.setDrawColor(_drawColor); _u8g2.drawBox(x, y, w, h); } void drawRect(int x, int y, int w, int h) override { - _u8g2.setDrawColor(_drawColor); _u8g2.drawFrame(x, y, w, h); } void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override { - _u8g2.setDrawColor(1); _u8g2.drawXBM(x, y, w, h, bits); } diff --git a/test/mocks/Arduino.h b/test/mocks/Arduino.h new file mode 100644 index 0000000000..77499fe414 --- /dev/null +++ b/test/mocks/Arduino.h @@ -0,0 +1,17 @@ +#pragma once + +#include <cstdint> +#include <cmath> +#include "Stream.h" + +inline uint32_t g_mock_millis = 0; + +using std::isnan; + +inline uint32_t millis() { + return g_mock_millis; +} + +inline void delay(uint32_t ms) { + g_mock_millis += ms; +} diff --git a/test/mocks/CayenneLPP.h b/test/mocks/CayenneLPP.h new file mode 100644 index 0000000000..9d51c0fcfc --- /dev/null +++ b/test/mocks/CayenneLPP.h @@ -0,0 +1,11 @@ +#pragma once + +#include <cstddef> +#include <cstdint> + +class CayenneLPP { +public: + explicit CayenneLPP(size_t) {} + const uint8_t* getBuffer() const { return nullptr; } + uint16_t getSize() const { return 0; } +}; diff --git a/test/mocks/Identity.h b/test/mocks/Identity.h new file mode 100644 index 0000000000..5c3d25e94e --- /dev/null +++ b/test/mocks/Identity.h @@ -0,0 +1,39 @@ +#pragma once + +#include <cstdint> +#include <cstring> +#include "Utils.h" + +namespace mesh { + +class Identity { +public: + uint8_t pub_key[PUB_KEY_SIZE]; + + Identity() { + std::memset(pub_key, 0, sizeof(pub_key)); + } + + explicit Identity(const uint8_t* src) { + std::memcpy(pub_key, src, PUB_KEY_SIZE); + } + + bool verify(const uint8_t*, const uint8_t*, int) const { + return true; + } +}; + +class LocalIdentity : public Identity { +public: + LocalIdentity() : Identity() {} + + void sign(uint8_t* sig, const uint8_t*, int) const { + std::memset(sig, 0x5A, SIGNATURE_SIZE); + } + + void calcSharedSecret(uint8_t* secret, const uint8_t*) const { + std::memset(secret, 0x11, PUB_KEY_SIZE); + } +}; + +} diff --git a/test/mocks/Mesh.h b/test/mocks/Mesh.h new file mode 100644 index 0000000000..b6c263c199 --- /dev/null +++ b/test/mocks/Mesh.h @@ -0,0 +1,27 @@ +#pragma once + +#include <cstdint> + +namespace mesh { + +class Radio { +public: + virtual ~Radio() = default; + virtual bool isReceiving() { return false; } + virtual uint32_t getEstAirtimeFor(uint16_t) { return 10; } + virtual bool startSendRaw(const uint8_t*, uint16_t) { return true; } + virtual bool isSendComplete() { return true; } + virtual void onSendFinished() {} + virtual int16_t getNoiseFloor() { return -120; } +}; + +class MainBoard { +public: + virtual ~MainBoard() = default; + virtual uint16_t getBattMilliVolts() { return 4200; } + virtual float getMCUTemperature() { return 25.0f; } + virtual const char* getManufacturerName() { return "mock-board"; } + virtual void reboot() {} +}; + +} diff --git a/test/mocks/SHA256.h b/test/mocks/SHA256.h index b6e551a077..0cefe5c6e3 100644 --- a/test/mocks/SHA256.h +++ b/test/mocks/SHA256.h @@ -3,12 +3,33 @@ #include <stdint.h> #include <stddef.h> -// Mock SHA256 class for testing -// Provides minimal interface to allow Utils.cpp to compile +// Mock SHA256 for native testing — deterministic but not cryptographic. +// finalize() writes real (non-garbage) output so calculatePacketHash() produces +// distinguishable results for packets with different payloads. +#include <string.h> + class SHA256 { + uint8_t _state[32]; + size_t _len; public: - void update(const uint8_t* data, size_t len) {} - void finalize(uint8_t* hash, size_t hashLen) {} + SHA256() : _len(0) { memset(_state, 0, sizeof(_state)); } + + void update(const void* data, size_t len) { + const uint8_t* bytes = static_cast<const uint8_t*>(data); + for (size_t i = 0; i < len; i++) { + uint8_t b = bytes[i]; + _state[_len % 32] ^= b; + _state[(_len + 1) % 32] += (uint8_t)((b >> 1) | (b << 7)); + _len++; + } + } + + void finalize(uint8_t* hash, size_t hashLen) { + for (size_t i = 0; i < hashLen; i++) { + hash[i] = _state[i % 32]; + } + } + void resetHMAC(const uint8_t* key, size_t keyLen) {} void finalizeHMAC(const uint8_t* key, size_t keyLen, uint8_t* hash, size_t hashLen) {} }; diff --git a/test/mocks/Stream.h b/test/mocks/Stream.h index 195a302973..56675607e1 100644 --- a/test/mocks/Stream.h +++ b/test/mocks/Stream.h @@ -1,10 +1,73 @@ #pragma once +#include <stddef.h> +#include <stdint.h> +#include <string.h> + // Mock Stream class for native testing // Provides minimal interface needed by Utils.h -class Stream { +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ public: - virtual void print(char c) {} - virtual void print(const char* str) {} + virtual size_t write(uint8_t b) { return 1; } + size_t write(const char *str) + { + if(str == NULL) { + return 0; + } + return write((const uint8_t *) str, strlen(str)); + } + virtual size_t write(const uint8_t *buffer, size_t size) { + size_t t = 0; + for (int i = 0; i < size; i++) { t += write(buffer[i]); } + return t; + } + size_t write(const char *buffer, size_t size) + { + return write((const uint8_t *) buffer, size); + } + + virtual size_t print(unsigned char b, int r = DEC) { return 0; } + virtual size_t print(int v, int r = DEC) { return 0; } + virtual size_t print(unsigned int v, int r = DEC) { return 0; } + virtual size_t print(long v, int r = DEC) { return 0; } + virtual size_t print(unsigned long v, int r = DEC) { return 0; } + virtual size_t print(long long v, int r = DEC) { return 0; } + virtual size_t print(unsigned long long v, int r = DEC) { return 0; } + virtual size_t print(double v, int p = 2) { return 0; } + + size_t print(char c) { return write(c); } + size_t print(const char* str) { return write(str); } + + //size_t println(void) { return 0; } + + virtual void flush() { /* Empty implementation for backward compatibility */ } }; + +class Stream: public Print +{ +public: + virtual ~Stream() = default; + virtual int available() { return 0; } + virtual int availableForWrite() { return 0; } + virtual int read() { return -1; } + virtual int peek() { return 0; } + + virtual size_t readBytes(char *buffer, size_t length) { + size_t i = 0; + while (i < length && available()) { + buffer[i++] = read(); + } + return i; + } + virtual size_t readBytes(uint8_t *buffer, size_t length) + { + return readBytes((char *) buffer, length); + } +}; \ No newline at end of file diff --git a/test/mocks/Utils.h b/test/mocks/Utils.h new file mode 100644 index 0000000000..9bb6b060b0 --- /dev/null +++ b/test/mocks/Utils.h @@ -0,0 +1,44 @@ +#pragma once + +#include <cstddef> +#include <cstdint> +#include <cstring> +#include <algorithm> + +#define PUB_KEY_SIZE 32 +#define PRV_KEY_SIZE 64 +#define SIGNATURE_SIZE 64 +#define CIPHER_MAC_SIZE 16 + +namespace mesh { + +class RNG { +public: + virtual ~RNG() = default; + virtual void random(uint8_t* dest, size_t sz) = 0; +}; + +class Utils { +public: + static void sha256(uint8_t* hash, size_t hash_len, const uint8_t*, int) { + std::memset(hash, 0, hash_len); + } + + static int encryptThenMAC(const uint8_t*, uint8_t* dest, const uint8_t* src, int src_len) { + int out_len = src_len + CIPHER_MAC_SIZE; + std::memset(dest, 0xAA, CIPHER_MAC_SIZE); + std::memcpy(dest + CIPHER_MAC_SIZE, src, src_len); + return out_len; + } + + static int MACThenDecrypt(const uint8_t*, uint8_t* dest, const uint8_t* src, int src_len) { + if (src_len < CIPHER_MAC_SIZE) { + return 0; + } + int out_len = src_len - CIPHER_MAC_SIZE; + std::memcpy(dest, src + CIPHER_MAC_SIZE, out_len); + return out_len; + } +}; + +} diff --git a/test/mocks/helpers/SensorManager.h b/test/mocks/helpers/SensorManager.h new file mode 100644 index 0000000000..d1a41cb5df --- /dev/null +++ b/test/mocks/helpers/SensorManager.h @@ -0,0 +1,10 @@ +#pragma once + +#include <cstdint> +#include "CayenneLPP.h" + +class SensorManager { +public: + virtual ~SensorManager() = default; + virtual bool querySensors(uint8_t, CayenneLPP&) { return false; } +}; diff --git a/test/test_config_serializer/test_config_serializer.cpp b/test/test_config_serializer/test_config_serializer.cpp new file mode 100644 index 0000000000..7a13f487e2 --- /dev/null +++ b/test/test_config_serializer/test_config_serializer.cpp @@ -0,0 +1,180 @@ +#include <gtest/gtest.h> +#include "helpers/ConfigSerializer.h" + +#define TEST_INT_S "56" +#define TEST_INT 56 +#define TEST_FLOAT_S "-6.123" +#define TEST_FLOAT -6.1230f +#define TEST_DOUBLE_S "12.123456" +#define TEST_DOUBLE 12.123456 + +class MockInputStream : public Stream { + const char* _text; + int pos, len; +public: + MockInputStream(const char* text) : _text(text) { pos = 0; len = strlen(text); } + int available() override { return len - pos; } + int read() override { if (pos < len) { return _text[pos++]; } return -1; } + int peek() override { if (pos < len) { return _text[pos]; } return -1; } +}; + +class MockPrintStream : public Stream { + int len = 0; + uint8_t _buf[1024]; +public: + size_t write(uint8_t b) override { + if (len < sizeof(_buf)) { + _buf[len++] = b; + return 1; + } + return 0; + } + + size_t print(unsigned char b, int r) override { if (b == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(int v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(unsigned int v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(long v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(unsigned long v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(long long v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(unsigned long long v, int r) override { if (v == TEST_INT) return Print::print(TEST_INT_S); return 0; } + size_t print(double v, int p = 2) override { + if (p == 6) return Print::print(TEST_DOUBLE_S); + if (p == 4) return Print::print(TEST_FLOAT_S); + return 0; + } + + int getLength() const { return len; } + const uint8_t* getBytes() const { return _buf; } +}; + +class TestStruct : public ConfigSerializer { + protected: + void structure() override { + def("age", age); + def("flags", flags); + def("name", name, sizeof(name)); + } + public: + int32_t age; + char name[16]; + uint8_t flags; +}; + +// ── saveSerial: basic ─────────────────────────────────────────────────────── + +TEST(ConfigSerializer, SaveSerial_Basic) { + MockPrintStream s; + TestStruct data; + + data.age = TEST_INT; + data.flags = TEST_INT; + strcpy(data.name, "Scott"); + + bool success = data.saveSerial(s); + EXPECT_TRUE(success); + + auto l = s.getLength(); + const char* expect = "{age:" TEST_INT_S ",flags:" TEST_INT_S ",name:\"Scott\"}"; + EXPECT_EQ(strlen(expect), l); + + bool match = memcmp(s.getBytes(), expect, l) == 0; + EXPECT_TRUE(match); +} + + +TEST(ConfigSerializer, SaveSerial_EscChars) { + MockPrintStream s; + TestStruct data; + + data.age = TEST_INT; + data.flags = TEST_INT; + strcpy(data.name, "\"Scott\"\n"); + + bool success = data.saveSerial(s); + EXPECT_TRUE(success); + + auto l = s.getLength(); + const char* expect = "{age:" TEST_INT_S ",flags:" TEST_INT_S ",name:\"\\\"Scott\\\"\\n\"}"; + EXPECT_EQ(strlen(expect), l); + + bool match = memcmp(s.getBytes(), expect, l) == 0; + EXPECT_TRUE(match); +} + +// ── loadSerial: basic ─────────────────────────────────────────────────────── + +TEST(ConfigSerializer, LoadSerial_Basic) { + MockInputStream s("{age:" TEST_INT_S ",flags:" TEST_INT_S ",name:\"Scott\"}"); + TestStruct data; + + bool success = data.loadSerial(s); + EXPECT_TRUE(success); + + EXPECT_EQ(TEST_INT, data.age); + EXPECT_EQ(TEST_INT, data.flags); + bool match = strcmp("Scott", data.name) == 0; + EXPECT_TRUE(match); +} + +TEST(ConfigSerializer, LoadSerial_HandleWhitespace) { + MockInputStream s(" { age: " TEST_INT_S " , flags: " TEST_INT_S " , name: \"Scott\" } "); + TestStruct data; + + bool success = data.loadSerial(s); + EXPECT_TRUE(success); + + EXPECT_EQ(TEST_INT, data.age); + EXPECT_EQ(TEST_INT, data.flags); + bool match = strcmp("Scott", data.name) == 0; + EXPECT_TRUE(match); +} + +TEST(ConfigSerializer, LoadSerial_EscChars) { + MockInputStream s("{age:" TEST_INT_S ",flags:" TEST_INT_S ",name:\"\\\"Scott\\\"\\n\"}"); + TestStruct data; + + bool success = data.loadSerial(s); + EXPECT_TRUE(success); + + bool match = strcmp("\"Scott\"\n", data.name) == 0; + EXPECT_TRUE(match); +} + +TEST(ConfigSerializer, LoadSerial_UnmatchedBraces) { + MockInputStream s("{age:" TEST_INT_S ",flags:" TEST_INT_S ",name:\"Scott\""); + TestStruct data; + + bool success = data.loadSerial(s); + EXPECT_FALSE(success); +} + +TEST(ConfigSerializer, LoadSerial_MissingCommas) { + MockInputStream s("{age:" TEST_INT_S " flags:" TEST_INT_S " name:\"Scott\"}"); + TestStruct data; + + bool success = data.loadSerial(s); + EXPECT_FALSE(success); +} + +TEST(ConfigSerializer, LoadSerial_IgnoreUnknowns) { + MockInputStream s("{age:" TEST_INT_S ",xxx:" TEST_INT_S ",name:\"Scott\"}"); + TestStruct data; + data.flags = 1; + + // should ignore the 'xxx' property + bool success = data.loadSerial(s); + EXPECT_TRUE(success); + + EXPECT_EQ(TEST_INT, data.age); + EXPECT_EQ(1, data.flags); // flags should be unmodified + bool match = strcmp("Scott", data.name) == 0; + EXPECT_TRUE(match); +} + + +// ── main ─────────────────────────────────────────────────────── + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/test/test_kiss_modem/test_tx_backpressure.cpp b/test/test_kiss_modem/test_tx_backpressure.cpp new file mode 100644 index 0000000000..39a5e3b742 --- /dev/null +++ b/test/test_kiss_modem/test_tx_backpressure.cpp @@ -0,0 +1,294 @@ +#include <gtest/gtest.h> + +#include <atomic> +#include <cstddef> +#include <condition_variable> +#include <future> +#include <mutex> +#include <queue> +#include <vector> + +#include "KissModem.h" + +static constexpr int TEST_TX_AVAILABLE_BYTES = 4096; +static constexpr size_t TEST_DEFAULT_MAX_WRITE_CHUNK = SIZE_MAX; +static constexpr size_t TEST_PARTIAL_WRITE_CHUNK = 2; +static constexpr int TEST_PARTIAL_WRITE_FLUSH_LOOPS = 3; +static constexpr uint8_t TEST_SNR = 8; +static constexpr uint8_t TEST_RSSI = 200; + +class BlockingStream : public Stream { +public: + void pushRx(const std::vector<uint8_t>& bytes) { + std::lock_guard<std::mutex> lock(_mutex); + for (uint8_t b : bytes) { + _rx.push(b); + } + } + + void setBlockWrites(bool blocked) { + { + std::lock_guard<std::mutex> lock(_mutex); + _block_writes = blocked; + } + _cv.notify_all(); + } + + bool isWriteBlocked() const { + return _entered_block.load(); + } + + size_t writesCount() const { + std::lock_guard<std::mutex> lock(_mutex); + return _writes.size(); + } + + std::vector<uint8_t> writesSnapshot() const { + std::lock_guard<std::mutex> lock(_mutex); + return _writes; + } + + int availableForWrite() override { + std::lock_guard<std::mutex> lock(_mutex); + return _block_writes ? 0 : TEST_TX_AVAILABLE_BYTES; + } + + void setMaxWriteChunk(size_t chunk) { + std::lock_guard<std::mutex> lock(_mutex); + _max_write_chunk = chunk; + } + + size_t write(const uint8_t* buffer, size_t size) override { + std::unique_lock<std::mutex> lock(_mutex); + while (_block_writes) { + _entered_block.store(true); + _cv.wait(lock); + } + const size_t chunk = (size < _max_write_chunk) ? size : _max_write_chunk; + for (size_t i = 0; i < chunk; i++) { + _writes.push_back(buffer[i]); + } + return chunk; + } + + size_t write(uint8_t b) override { + return write(&b, 1); + } + + int available() override { + std::lock_guard<std::mutex> lock(_mutex); + return static_cast<int>(_rx.size()); + } + + int read() override { + std::lock_guard<std::mutex> lock(_mutex); + if (_rx.empty()) { + return -1; + } + int b = _rx.front(); + _rx.pop(); + return b; + } + +private: + mutable std::mutex _mutex; + std::condition_variable _cv; + std::queue<uint8_t> _rx; + std::vector<uint8_t> _writes; + bool _block_writes = false; + std::atomic<bool> _entered_block = false; + size_t _max_write_chunk = TEST_DEFAULT_MAX_WRITE_CHUNK; +}; + +class FakeRNG : public mesh::RNG { +public: + void random(uint8_t* dest, size_t sz) override { + for (size_t i = 0; i < sz; i++) { + dest[i] = 0; + } + } +}; + +class FakeRadio : public mesh::Radio { +public: + bool isReceiving() override { return false; } + uint32_t getEstAirtimeFor(uint16_t) override { return 10; } + bool startSendRaw(const uint8_t*, uint16_t) override { + _start_send_count++; + return _start_send_result; + } + bool isSendComplete() override { return _send_complete; } + void onSendFinished() override { _send_finished_count++; } + int16_t getNoiseFloor() override { return -120; } + + void setStartSendResult(bool result) { _start_send_result = result; } + void setSendComplete(bool complete) { _send_complete = complete; } + int startSendCount() const { return _start_send_count; } + int sendFinishedCount() const { return _send_finished_count; } + +private: + bool _start_send_result = true; + bool _send_complete = true; + int _start_send_count = 0; + int _send_finished_count = 0; +}; + +class FakeBoard : public mesh::MainBoard { +public: + uint16_t getBattMilliVolts() override { return 4200; } + float getMCUTemperature() override { return 24.0f; } + const char* getManufacturerName() override { return "test-board"; } + void reboot() override {} +}; + +class FakeSensors : public SensorManager { +public: + bool querySensors(uint8_t, CayenneLPP&) override { return false; } +}; + +class KissModemFixture : public ::testing::Test { +protected: + BlockingStream serial; + mesh::LocalIdentity identity; + FakeRNG rng; + FakeRadio radio; + FakeBoard board; + FakeSensors sensors; + KissModem modem; + + KissModemFixture() + : modem(serial, identity, rng, radio, board, sensors) { + modem.begin(); + } + + static std::vector<uint8_t> dataFrame(const std::vector<uint8_t>& packet) { + std::vector<uint8_t> frame = {KISS_FEND, KISS_CMD_DATA}; + frame.insert(frame.end(), packet.begin(), packet.end()); + frame.push_back(KISS_FEND); + return frame; + } + + void advanceToTxSending() { + modem.loop(); + modem.loop(); + delay((uint32_t)KISS_DEFAULT_TXDELAY * 10); + modem.loop(); + } +}; + +TEST_F(KissModemFixture, PingResponseShouldNotStallLoopUnderTxBackpressure) { + serial.setBlockWrites(true); + serial.pushRx({KISS_FEND, KISS_CMD_SETHARDWARE, HW_CMD_PING, KISS_FEND}); + + auto future = std::async(std::launch::async, [this]() { + modem.loop(); + }); + + auto status = future.wait_for(std::chrono::milliseconds(100)); + EXPECT_EQ(status, std::future_status::ready) << "KissModem::loop blocked in serial write under TX backpressure"; + EXPECT_FALSE(serial.isWriteBlocked()) << "KissModem entered blocking write path"; + + serial.setBlockWrites(false); + future.wait(); + modem.loop(); + EXPECT_GT(serial.writesCount(), 0U) << "KissModem did not flush queued response after backpressure cleared"; +} + +TEST_F(KissModemFixture, PingResponseKeepsStandardKissFraming) { + serial.pushRx({KISS_FEND, KISS_CMD_SETHARDWARE, HW_CMD_PING, KISS_FEND}); + modem.loop(); + + const std::vector<uint8_t> expected = {KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP(HW_CMD_PING), KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +TEST_F(KissModemFixture, PingResponseKeepsFramingWithPartialBulkWrites) { + serial.setMaxWriteChunk(TEST_PARTIAL_WRITE_CHUNK); + serial.pushRx({KISS_FEND, KISS_CMD_SETHARDWARE, HW_CMD_PING, KISS_FEND}); + for (int i = 0; i < TEST_PARTIAL_WRITE_FLUSH_LOOPS; i++) { + modem.loop(); + } + + const std::vector<uint8_t> expected = {KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP(HW_CMD_PING), KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +TEST_F(KissModemFixture, PacketAndMetaAreQueuedTogetherUnderBackpressure) { + static constexpr uint8_t TEST_PACKET[] = {0x01, 0x02, 0x03}; + + serial.setBlockWrites(true); + modem.onPacketReceived((int8_t)TEST_SNR, (int8_t)TEST_RSSI, TEST_PACKET, sizeof(TEST_PACKET)); + serial.setBlockWrites(false); + modem.loop(); + modem.loop(); + + const std::vector<uint8_t> expected = { + KISS_FEND, KISS_CMD_DATA, TEST_PACKET[0], TEST_PACKET[1], TEST_PACKET[2], KISS_FEND, + KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_RX_META, TEST_SNR, TEST_RSSI, KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +TEST_F(KissModemFixture, RadioTxCompletionAdvancesWhileHostOutputIsBackedUp) { + serial.pushRx(dataFrame({0x42})); + advanceToTxSending(); + ASSERT_EQ(radio.startSendCount(), 1); + + serial.setBlockWrites(true); + modem.loop(); + EXPECT_EQ(radio.sendFinishedCount(), 1); + EXPECT_TRUE(modem.isTxBusy()); + + serial.setBlockWrites(false); + modem.loop(); + + const std::vector<uint8_t> expected = {KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_TX_DONE, 0x01, KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); + EXPECT_FALSE(modem.isTxBusy()); +} + +TEST_F(KissModemFixture, QueueFullReportsBusyWithoutDroppingQueuedFrames) { + static constexpr uint8_t TEST_PACKET_ONE[] = {0x11, 0x12}; + static constexpr uint8_t TEST_PACKET_TWO[] = {0x21, 0x22}; + + serial.setBlockWrites(true); + modem.onPacketReceived((int8_t)TEST_SNR, (int8_t)TEST_RSSI, TEST_PACKET_ONE, sizeof(TEST_PACKET_ONE)); + modem.onPacketReceived((int8_t)TEST_SNR, (int8_t)TEST_RSSI, TEST_PACKET_TWO, sizeof(TEST_PACKET_TWO)); + serial.setBlockWrites(false); + modem.loop(); + + const std::vector<uint8_t> expected = { + KISS_FEND, KISS_CMD_DATA, TEST_PACKET_ONE[0], TEST_PACKET_ONE[1], KISS_FEND, + KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_RX_META, TEST_SNR, TEST_RSSI, KISS_FEND, + KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_ERROR, HW_ERR_TX_BUSY, KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +TEST_F(KissModemFixture, QueuedEncoderEscapesKissSpecialBytes) { + static constexpr uint8_t TEST_PACKET[] = {KISS_FEND, KISS_FESC, 0x01}; + + modem.onPacketReceived((int8_t)TEST_SNR, (int8_t)TEST_RSSI, TEST_PACKET, sizeof(TEST_PACKET)); + + const std::vector<uint8_t> expected = { + KISS_FEND, KISS_CMD_DATA, KISS_FESC, KISS_TFEND, KISS_FESC, KISS_TFESC, 0x01, KISS_FEND, + KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_RX_META, TEST_SNR, TEST_RSSI, KISS_FEND}; + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +TEST_F(KissModemFixture, MaxPacketWorstCaseEscapingFitsQueuedFrame) { + std::vector<uint8_t> packet(KISS_MAX_PACKET_SIZE, KISS_FEND); + std::vector<uint8_t> expected = {KISS_FEND, KISS_CMD_DATA}; + for (size_t i = 0; i < packet.size(); i++) { + expected.push_back(KISS_FESC); + expected.push_back(KISS_TFEND); + } + expected.push_back(KISS_FEND); + expected.insert(expected.end(), {KISS_FEND, KISS_CMD_SETHARDWARE, HW_RESP_RX_META, TEST_SNR, TEST_RSSI, KISS_FEND}); + + modem.onPacketReceived((int8_t)TEST_SNR, (int8_t)TEST_RSSI, packet.data(), packet.size()); + EXPECT_EQ(serial.writesSnapshot(), expected); +} + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/test/test_mesh_tables/test_simple_mesh_tables.cpp b/test/test_mesh_tables/test_simple_mesh_tables.cpp new file mode 100644 index 0000000000..46b477d944 --- /dev/null +++ b/test/test_mesh_tables/test_simple_mesh_tables.cpp @@ -0,0 +1,103 @@ +#include <gtest/gtest.h> +#include "helpers/SimpleMeshTables.h" + +using namespace mesh; + +// Build a packet that calculatePacketHash() distinguishes by payload content. +// header selects ROUTE_TYPE_FLOOD so isRouteDirect() returns false. +static Packet makeFloodPacket(uint8_t seed) { + Packet p; + p.header = ROUTE_TYPE_FLOOD | (PAYLOAD_TYPE_ACK << PH_TYPE_SHIFT); + p.payload[0] = seed; + p.payload_len = 1; + p.path_len = 0; + return p; +} + +static Packet makeDirectPacket(uint8_t seed) { + Packet p; + p.header = ROUTE_TYPE_DIRECT | (PAYLOAD_TYPE_ACK << PH_TYPE_SHIFT); + p.payload[0] = seed; + p.payload_len = 1; + p.path_len = 0; + return p; +} + +// ── wasSeen: pure query ─────────────────────────────────────────────────────── + +TEST(SimpleMeshTables, WasSeen_ReturnsFalseForUnseen) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + EXPECT_FALSE(t.wasSeen(&p)); +} + +// wasSeen shouldn't change state +TEST(SimpleMeshTables, WasSeen_IsPureQuery_DoesNotInsert) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + EXPECT_FALSE(t.wasSeen(&p)); + EXPECT_FALSE(t.wasSeen(&p)); +} + +// ── markSeen + wasSeen ─────────────────────────────────────────────────────── + +TEST(SimpleMeshTables, MarkSeen_MakesWasSeenReturnTrue) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + t.markSeen(&p); + EXPECT_TRUE(t.wasSeen(&p)); +} + +TEST(SimpleMeshTables, MarkSeen_DoesNotAffectOtherPackets) { + SimpleMeshTables t; + Packet p1 = makeFloodPacket(0x01); + Packet p2 = makeFloodPacket(0x02); + t.markSeen(&p1); + EXPECT_FALSE(t.wasSeen(&p2)); +} + +// Canonical pattern used at every onRecvPacket call site: +// if (!wasSeen(pkt)) { markSeen(pkt); process(pkt); } +TEST(SimpleMeshTables, QueryThenMark_WorksCorrectly) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + EXPECT_FALSE(t.wasSeen(&p)); + t.markSeen(&p); + EXPECT_TRUE(t.wasSeen(&p)); +} + +// ── dup stats ──────────────────────────────────────────────────────────────── + +TEST(SimpleMeshTables, WasSeen_IncrementsFloodDupStat) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + t.markSeen(&p); + t.wasSeen(&p); + EXPECT_EQ(1u, t.getNumFloodDups()); + EXPECT_EQ(0u, t.getNumDirectDups()); +} + +TEST(SimpleMeshTables, WasSeen_IncrementsDirectDupStat) { + SimpleMeshTables t; + Packet p = makeDirectPacket(0x01); + t.markSeen(&p); + t.wasSeen(&p); + EXPECT_EQ(0u, t.getNumFloodDups()); + EXPECT_EQ(1u, t.getNumDirectDups()); +} + +// ── clear ──────────────────────────────────────────────────────────────────── + +TEST(SimpleMeshTables, Clear_RemovesSeenPacket) { + SimpleMeshTables t; + Packet p = makeFloodPacket(0x01); + t.markSeen(&p); + ASSERT_TRUE(t.wasSeen(&p)); + t.clear(&p); + EXPECT_FALSE(t.wasSeen(&p)); +} + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/test/test_utf8_helpers/test_utf8_helpers.cpp b/test/test_utf8_helpers/test_utf8_helpers.cpp new file mode 100644 index 0000000000..ee95352207 --- /dev/null +++ b/test/test_utf8_helpers/test_utf8_helpers.cpp @@ -0,0 +1,38 @@ +#include <gtest/gtest.h> + +#include <helpers/UTF8Helpers.h> + +TEST(UTF8Helpers, KeepsCompleteNameWithinLimit) { + const char* name = "Example RPT 🔋🇵🇱"; + + EXPECT_EQ(24u, mesh::validUtf8PrefixLength(name, 24)); +} + +TEST(UTF8Helpers, StopsBeforeCodePointCrossingLimit) { + const char* name = "Example RPT 🔋🇵🇱"; + + EXPECT_EQ(20u, mesh::validUtf8PrefixLength(name, 23)); +} + +TEST(UTF8Helpers, RejectsMalformedAndTruncatedSequences) { + const char overlong[] = {'A', static_cast<char>(0xC0), static_cast<char>(0xAF), 0}; + const char surrogate[] = {'A', static_cast<char>(0xED), static_cast<char>(0xA0), static_cast<char>(0x80), 0}; + const char out_of_range[] = {'A', static_cast<char>(0xF4), static_cast<char>(0x90), static_cast<char>(0x80), static_cast<char>(0x80), 0}; + const char truncated[] = {'A', static_cast<char>(0xF0), static_cast<char>(0x9F), 0}; + + EXPECT_EQ(1u, mesh::validUtf8PrefixLength(overlong, sizeof(overlong))); + EXPECT_EQ(1u, mesh::validUtf8PrefixLength(surrogate, sizeof(surrogate))); + EXPECT_EQ(1u, mesh::validUtf8PrefixLength(out_of_range, sizeof(out_of_range))); + EXPECT_EQ(1u, mesh::validUtf8PrefixLength(truncated, sizeof(truncated))); +} + +TEST(UTF8Helpers, RejectsUnexpectedContinuationByte) { + const char invalid[] = {'A', static_cast<char>(0x80), 'B', 0}; + + EXPECT_EQ(1u, mesh::validUtf8PrefixLength(invalid, sizeof(invalid))); +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/variants/ebyte_eora_s3/platformio.ini b/variants/ebyte_eora_s3/platformio.ini index 15fe761ba5..1ab3d3fb1b 100644 --- a/variants/ebyte_eora_s3/platformio.ini +++ b/variants/ebyte_eora_s3/platformio.ini @@ -102,6 +102,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Ebyte_EoRa-S3.build_src_filter} diff --git a/variants/gat562_30s_mesh_kit/GAT56230SMeshKitBoard.h b/variants/gat562_30s_mesh_kit/GAT56230SMeshKitBoard.h index ab7ecc2451..0b0f701c26 100644 --- a/variants/gat562_30s_mesh_kit/GAT56230SMeshKitBoard.h +++ b/variants/gat562_30s_mesh_kit/GAT56230SMeshKitBoard.h @@ -47,7 +47,7 @@ class GAT56230SMeshKitBoard : public NRF52BoardDCDC { uint32_t button_pin = PIN_BUTTON1; nrf_gpio_cfg_input(button_pin, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_sense_set(button_pin, NRF_GPIO_PIN_SENSE_LOW); - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/gat562_30s_mesh_kit/platformio.ini b/variants/gat562_30s_mesh_kit/platformio.ini index 2baac2561b..89276a49a7 100644 --- a/variants/gat562_30s_mesh_kit/platformio.ini +++ b/variants/gat562_30s_mesh_kit/platformio.ini @@ -75,6 +75,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${GAT562_30S_Mesh_Kit.build_src_filter} diff --git a/variants/gat562_mesh_evb_pro/GAT562EVBProBoard.h b/variants/gat562_mesh_evb_pro/GAT562EVBProBoard.h index 33c3d05fc5..66c770994d 100644 --- a/variants/gat562_mesh_evb_pro/GAT562EVBProBoard.h +++ b/variants/gat562_mesh_evb_pro/GAT562EVBProBoard.h @@ -47,7 +47,7 @@ class GAT562EVBProBoard : public NRF52BoardDCDC { uint32_t button_pin = PIN_BUTTON1; nrf_gpio_cfg_input(button_pin, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_sense_set(button_pin, NRF_GPIO_PIN_SENSE_LOW); - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/gat562_mesh_tracker_pro/GAT562MeshTrackerProBoard.h b/variants/gat562_mesh_tracker_pro/GAT562MeshTrackerProBoard.h index aa1772e4c8..39b55911a1 100644 --- a/variants/gat562_mesh_tracker_pro/GAT562MeshTrackerProBoard.h +++ b/variants/gat562_mesh_tracker_pro/GAT562MeshTrackerProBoard.h @@ -47,7 +47,7 @@ class GAT562MeshTrackerProBoard : public NRF52BoardDCDC { uint32_t button_pin = PIN_BUTTON1; nrf_gpio_cfg_input(button_pin, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_sense_set(button_pin, NRF_GPIO_PIN_SENSE_LOW); - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/gat562_mesh_tracker_pro/platformio.ini b/variants/gat562_mesh_tracker_pro/platformio.ini index af153b8fc2..142cfe4b8f 100644 --- a/variants/gat562_mesh_tracker_pro/platformio.ini +++ b/variants/gat562_mesh_tracker_pro/platformio.ini @@ -71,6 +71,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${GAT562_Mesh_Tracker_Pro.build_src_filter} diff --git a/variants/gat562_mesh_watch13/GAT56MeshWatch13Board.h b/variants/gat562_mesh_watch13/GAT56MeshWatch13Board.h index da792b78b1..805ca67f24 100644 --- a/variants/gat562_mesh_watch13/GAT56MeshWatch13Board.h +++ b/variants/gat562_mesh_watch13/GAT56MeshWatch13Board.h @@ -38,7 +38,7 @@ class GAT56MeshWatch13Board : public NRF52BoardDCDC { uint32_t button_pin = PIN_BUTTON1; nrf_gpio_cfg_input(button_pin, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_sense_set(button_pin, NRF_GPIO_PIN_SENSE_LOW); - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/heltec_ct62/platformio.ini b/variants/heltec_ct62/platformio.ini index 0179d9658c..401a30d231 100644 --- a/variants/heltec_ct62/platformio.ini +++ b/variants/heltec_ct62/platformio.ini @@ -101,6 +101,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_ct62.build_src_filter} diff --git a/variants/heltec_e213/HeltecE213Board.cpp b/variants/heltec_e213/HeltecE213Board.cpp index af11531821..88737c4d53 100644 --- a/variants/heltec_e213/HeltecE213Board.cpp +++ b/variants/heltec_e213/HeltecE213Board.cpp @@ -20,33 +20,6 @@ void HeltecE213Board::begin() { } } - void HeltecE213Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void HeltecE213Board::powerOff() { - enterDeepSleep(0); - } - uint16_t HeltecE213Board::getBattMilliVolts() { analogReadResolution(10); digitalWrite(PIN_ADC_CTRL, HIGH); diff --git a/variants/heltec_e213/HeltecE213Board.h b/variants/heltec_e213/HeltecE213Board.h index 2192c14104..fadc038f94 100644 --- a/variants/heltec_e213/HeltecE213Board.h +++ b/variants/heltec_e213/HeltecE213Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> class HeltecE213Board : public ESP32Board { @@ -13,8 +12,6 @@ class HeltecE213Board : public ESP32Board { HeltecE213Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { } void begin(); - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); - void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; }; diff --git a/variants/heltec_e213/platformio.ini b/variants/heltec_e213/platformio.ini index 123edd91c4..0219381905 100644 --- a/variants/heltec_e213/platformio.ini +++ b/variants/heltec_e213/platformio.ini @@ -73,6 +73,7 @@ build_flags = -D DISPLAY_CLASS=E213Display -D AUTO_OFF_MILLIS=0 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${Heltec_E213_base.build_src_filter} +<helpers/ui/E213Display.cpp> +<helpers/esp32/*.cpp> diff --git a/variants/heltec_e290/HeltecE290Board.cpp b/variants/heltec_e290/HeltecE290Board.cpp index 3994a20616..96ec59c9bd 100644 --- a/variants/heltec_e290/HeltecE290Board.cpp +++ b/variants/heltec_e290/HeltecE290Board.cpp @@ -20,33 +20,6 @@ void HeltecE290Board::begin() { } } - void HeltecE290Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void HeltecE290Board::powerOff() { - enterDeepSleep(0); - } - uint16_t HeltecE290Board::getBattMilliVolts() { analogReadResolution(10); digitalWrite(PIN_ADC_CTRL, HIGH); diff --git a/variants/heltec_e290/HeltecE290Board.h b/variants/heltec_e290/HeltecE290Board.h index 645ec3481a..f287227c6e 100644 --- a/variants/heltec_e290/HeltecE290Board.h +++ b/variants/heltec_e290/HeltecE290Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> class HeltecE290Board : public ESP32Board { @@ -13,8 +12,6 @@ class HeltecE290Board : public ESP32Board { HeltecE290Board() : periph_power(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE) { } void begin(); - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); - void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; diff --git a/variants/heltec_mesh_solar/platformio.ini b/variants/heltec_mesh_solar/platformio.ini index 92d641a357..17f8ba2170 100644 --- a/variants/heltec_mesh_solar/platformio.ini +++ b/variants/heltec_mesh_solar/platformio.ini @@ -1,7 +1,6 @@ [Heltec_mesh_solar] extends = nrf52_base board = heltec_mesh_solar -platform_packages = framework-arduinoadafruitnrf52 board_build.ldscript = boards/nrf52840_s140_v6.ld build_flags = ${nrf52_base.build_flags} -I src/helpers/nrf52 @@ -14,6 +13,11 @@ build_flags = ${nrf52_base.build_flags} -D LORA_TX_POWER=22 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 + -D HAS_EXTERNAL_WATCHDOG + -D EXTERNAL_WATCHDOG_DONE_PIN=9 + -D EXTERNAL_WATCHDOG_WAKE_PIN=10 + -D EXTERNAL_WATCHDOG_FEED_INTERVAL_MS=480000 ; 8 minute feed interval, safely inside the hardware watchdog timeout + build_src_filter = ${nrf52_base.build_src_filter} +<helpers/*.cpp> +<../variants/heltec_mesh_solar> @@ -83,6 +87,7 @@ build_flags = ${Heltec_mesh_solar.build_flags} -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 diff --git a/variants/heltec_mesh_solar/target.cpp b/variants/heltec_mesh_solar/target.cpp index d140864cd1..94e2684c12 100644 --- a/variants/heltec_mesh_solar/target.cpp +++ b/variants/heltec_mesh_solar/target.cpp @@ -13,6 +13,7 @@ VolatileRTCClock fallback_clock; AutoDiscoverRTCClock rtc_clock(fallback_clock); MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); SolarSensorManager sensors = SolarSensorManager(nmea); +SolarExternalWatchdog external_watchdog; #ifdef DISPLAY_CLASS DISPLAY_CLASS display; @@ -106,3 +107,34 @@ bool SolarSensorManager::setSettingValue(const char* name, const char* value) { } return false; // not supported } + +bool SolarExternalWatchdog::begin() { + last_feed_watchdog = 0; + pinMode(EXTERNAL_WATCHDOG_WAKE_PIN, INPUT); + pinMode(EXTERNAL_WATCHDOG_DONE_PIN, OUTPUT); + delay(1); + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW); + delay(1); + feed(); + return true; +} +void SolarExternalWatchdog::loop() { + if (millis() - last_feed_watchdog >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) { + feed(); + } +} + +unsigned long SolarExternalWatchdog::getIntervalMs() const { + unsigned long elapsed_ms = millis() - last_feed_watchdog; + if (elapsed_ms >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) { + return 0; + } + return EXTERNAL_WATCHDOG_FEED_INTERVAL_MS - elapsed_ms; +} + +void SolarExternalWatchdog::feed() { + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, HIGH); + delay(1); + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW); + last_feed_watchdog = millis(); +} diff --git a/variants/heltec_mesh_solar/target.h b/variants/heltec_mesh_solar/target.h index 1956f50ebd..8e13a9601c 100644 --- a/variants/heltec_mesh_solar/target.h +++ b/variants/heltec_mesh_solar/target.h @@ -8,6 +8,7 @@ #include <helpers/AutoDiscoverRTCClock.h> #include <helpers/SensorManager.h> #include <helpers/sensors/LocationProvider.h> +#include <helpers/ExternalWatchdogManager.h> #ifdef DISPLAY_CLASS #include <helpers/ui/ST7789Display.h> #endif @@ -30,10 +31,20 @@ class SolarSensorManager : public SensorManager { bool setSettingValue(const char* name, const char* value) override; }; +class SolarExternalWatchdog : public ExternalWatchdogManager { +public: + SolarExternalWatchdog() {} + bool begin() override; + void loop() override; + unsigned long getIntervalMs() const override; + void feed() override; +}; + extern MeshSolarBoard board; extern WRAPPER_CLASS radio_driver; extern AutoDiscoverRTCClock rtc_clock; extern SolarSensorManager sensors; +extern SolarExternalWatchdog external_watchdog; #ifdef DISPLAY_CLASS extern DISPLAY_CLASS display; diff --git a/variants/heltec_mesh_solar/variant.h b/variants/heltec_mesh_solar/variant.h index 14956619f0..3c1b378dfa 100644 --- a/variants/heltec_mesh_solar/variant.h +++ b/variants/heltec_mesh_solar/variant.h @@ -34,8 +34,8 @@ #define PIN_SERIAL1_RX (37) #define PIN_SERIAL1_TX (39) -#define PIN_SERIAL2_RX (9) -#define PIN_SERIAL2_TX (10) +#define PIN_SERIAL2_RX (-1) +#define PIN_SERIAL2_TX (-1) //////////////////////////////////////////////////////////////////////////////// // I2C pin definition diff --git a/variants/heltec_rc32/HeltecRC32Board.cpp b/variants/heltec_rc32/HeltecRC32Board.cpp new file mode 100644 index 0000000000..59920d238f --- /dev/null +++ b/variants/heltec_rc32/HeltecRC32Board.cpp @@ -0,0 +1,68 @@ +#include "HeltecRC32Board.h" + +void HeltecRC32Board::begin() { + ESP32Board::begin(); + + pinMode(PIN_ADC_CTRL, OUTPUT); + digitalWrite(PIN_ADC_CTRL, !ADC_CTRL_ENABLED); + +#ifdef SENSOR_RST_PIN + pinMode(SENSOR_RST_PIN, OUTPUT); + digitalWrite(SENSOR_RST_PIN, HIGH); +#endif + +#ifdef LED_POWER + pinMode(LED_POWER, OUTPUT); + digitalWrite(LED_POWER, LOW); +#endif + + periph_power.begin(); + periph_power.claim(); + + esp_reset_reason_t reason = esp_reset_reason(); + if (reason == ESP_RST_DEEPSLEEP) { + long wakeup_source = esp_sleep_get_ext1_wakeup_status(); + if (wakeup_source & (1L << P_LORA_DIO_1)) { + startup_reason = BD_STARTUP_RX_PACKET; + } + + rtc_gpio_hold_dis((gpio_num_t)P_LORA_NSS); + rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_1); + } +} + +void HeltecRC32Board::powerOff() { + enterDeepSleep(0); +} + +void HeltecRC32Board::onBeforeTransmit() { + digitalWrite(P_LORA_TX_LED, HIGH); +} + +void HeltecRC32Board::onAfterTransmit() { + digitalWrite(P_LORA_TX_LED, LOW); +} + +uint16_t HeltecRC32Board::getBattMilliVolts() { + analogReadResolution(12); + analogSetAttenuation(ADC_2_5db); + digitalWrite(PIN_ADC_CTRL, ADC_CTRL_ENABLED); + delay(10); + uint32_t raw = 0; + for (int i = 0; i < 8; i++) { + raw += analogReadMilliVolts(PIN_VBAT_READ); + } + raw = raw / 8; + digitalWrite(PIN_ADC_CTRL, !ADC_CTRL_ENABLED); + + return (adc_mult * raw); +} + +bool HeltecRC32Board::setAdcMultiplier(float multiplier) { + adc_mult = multiplier == 0.0f ? ADC_MULTIPLIER : multiplier; + return true; +} + +const char* HeltecRC32Board::getManufacturerName() const { + return "Heltec RC32"; +} diff --git a/variants/heltec_rc32/HeltecRC32Board.h b/variants/heltec_rc32/HeltecRC32Board.h new file mode 100644 index 0000000000..5b2093c8f6 --- /dev/null +++ b/variants/heltec_rc32/HeltecRC32Board.h @@ -0,0 +1,29 @@ +#pragma once + +#include <Arduino.h> +#include <driver/rtc_io.h> +#include <helpers/ESP32Board.h> +#include <helpers/RefCountedDigitalPin.h> + +#ifndef ADC_MULTIPLIER + #define ADC_MULTIPLIER 4.9f +#endif + +class HeltecRC32Board : public ESP32Board { +protected: + float adc_mult = ADC_MULTIPLIER; + +public: + RefCountedDigitalPin periph_power; + + HeltecRC32Board() : periph_power(SENSOR_POWER_CTRL_PIN, SENSOR_POWER_ON){} + + void begin(); + void onBeforeTransmit() override; + void onAfterTransmit() override; + void powerOff() override; + uint16_t getBattMilliVolts() override; + bool setAdcMultiplier(float multiplier) override; + float getAdcMultiplier() const override { return adc_mult; } + const char* getManufacturerName() const override; +}; diff --git a/variants/heltec_rc32/HeltecRC32RotaryInput.cpp b/variants/heltec_rc32/HeltecRC32RotaryInput.cpp new file mode 100644 index 0000000000..e8b282ff55 --- /dev/null +++ b/variants/heltec_rc32/HeltecRC32RotaryInput.cpp @@ -0,0 +1,122 @@ +#include "HeltecRC32RotaryInput.h" + +#include <Wire.h> + +namespace { +constexpr uint8_t TCA6408_ADDR = 0x20; +constexpr uint8_t TCA6408_INPUT_REG = 0x00; +constexpr uint8_t TCA6408_POLARITY_REG = 0x02; +constexpr uint8_t TCA6408_CONFIG_REG = 0x03; +constexpr uint8_t TCA6408_ROTARY_A_MASK = 0x01; +constexpr uint8_t TCA6408_ROTARY_B_MASK = 0x02; +constexpr uint8_t TCA6408_ROTARY_MASK = TCA6408_ROTARY_A_MASK | TCA6408_ROTARY_B_MASK; +constexpr uint32_t TCA6408_DEBOUNCE_MS = 5; +} + +bool HeltecRC32RotaryInput::begin() { + initialized = true; + ready = false; + input_state = TCA6408_ROTARY_MASK; + active_low_phase = false; + + if (periph_power && !power_claimed) { + periph_power->claim(); + power_claimed = true; + delay(12); + } + + if (!writeRegister(TCA6408_POLARITY_REG, 0x00) || !writeRegister(TCA6408_CONFIG_REG, 0xFF)) { + return false; + } + + uint8_t state = 0; + if (!readInput(state)) { + return false; + } + + input_state = state & TCA6408_ROTARY_MASK; + ready = true; + return true; +} + +RotaryInputEvent HeltecRC32RotaryInput::poll() { + if (!initialized) { + begin(); + return RotaryInputEvent::None; + } + + if (!ready) { + return RotaryInputEvent::None; + } + + uint8_t new_state = 0; + if (!readInput(new_state)) { + return RotaryInputEvent::None; + } + + new_state &= TCA6408_ROTARY_MASK; + RotaryInputEvent event = handleTransition(new_state); + input_state = new_state; + return event; +} + +bool HeltecRC32RotaryInput::writeRegister(uint8_t reg, uint8_t value) { + Wire.beginTransmission(TCA6408_ADDR); + Wire.write(reg); + Wire.write(value); + return Wire.endTransmission() == 0; +} + +bool HeltecRC32RotaryInput::readInput(uint8_t& value) { + Wire.beginTransmission(TCA6408_ADDR); + Wire.write(TCA6408_INPUT_REG); + if (Wire.endTransmission(false) != 0) { + return false; + } + if (Wire.requestFrom(TCA6408_ADDR, static_cast<uint8_t>(1)) != 1) { + return false; + } + + value = Wire.read(); + return true; +} + +RotaryInputEvent HeltecRC32RotaryInput::handleTransition(uint8_t newState) { + uint8_t changed = (input_state ^ newState) & TCA6408_ROTARY_MASK; + RotaryInputEvent event = RotaryInputEvent::None; + bool a_low = (newState & TCA6408_ROTARY_A_MASK) == 0; + bool b_low = (newState & TCA6408_ROTARY_B_MASK) == 0; + + if (!a_low && !b_low) { + active_low_phase = false; + } + + if (!active_low_phase && (changed & TCA6408_ROTARY_A_MASK) && a_low && !b_low) { + event = RotaryInputEvent::Prev; + active_low_phase = true; + } else if (!active_low_phase && (changed & TCA6408_ROTARY_B_MASK) && b_low && !a_low) { + event = RotaryInputEvent::Next; + active_low_phase = true; + } + + if (event == RotaryInputEvent::None && !active_low_phase && (changed & TCA6408_ROTARY_A_MASK)) { + bool a_rising = (newState & TCA6408_ROTARY_A_MASK) != 0; + if (a_rising && b_low) { + event = RotaryInputEvent::Prev; + } + } + + if (event == RotaryInputEvent::None && !active_low_phase && (changed & TCA6408_ROTARY_B_MASK)) { + bool b_rising = (newState & TCA6408_ROTARY_B_MASK) != 0; + if (b_rising && a_low) { + event = RotaryInputEvent::Next; + } + } + + if (event == RotaryInputEvent::None || (millis() - last_event_ms) < TCA6408_DEBOUNCE_MS) { + return RotaryInputEvent::None; + } + + last_event_ms = millis(); + return event; +} diff --git a/variants/heltec_rc32/HeltecRC32RotaryInput.h b/variants/heltec_rc32/HeltecRC32RotaryInput.h new file mode 100644 index 0000000000..36557dca34 --- /dev/null +++ b/variants/heltec_rc32/HeltecRC32RotaryInput.h @@ -0,0 +1,26 @@ +#pragma once + +#include <helpers/RefCountedDigitalPin.h> +#include <helpers/ui/RotaryInput.h> + +class HeltecRC32RotaryInput : public RotaryInput { +public: + explicit HeltecRC32RotaryInput(RefCountedDigitalPin* periphPower = nullptr) : periph_power(periphPower) { } + + bool begin() override; + RotaryInputEvent poll() override; + bool isReady() const override { return ready; } + +private: + bool writeRegister(uint8_t reg, uint8_t value); + bool readInput(uint8_t& value); + RotaryInputEvent handleTransition(uint8_t newState); + + uint8_t input_state = 0x03; + uint32_t last_event_ms = 0; + bool ready = false; + bool initialized = false; + bool power_claimed = false; + bool active_low_phase = false; + RefCountedDigitalPin* periph_power = nullptr; +}; diff --git a/variants/heltec_rc32/pins_arduino.h b/variants/heltec_rc32/pins_arduino.h new file mode 100644 index 0000000000..8ea3a0c15e --- /dev/null +++ b/variants/heltec_rc32/pins_arduino.h @@ -0,0 +1,60 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <stdint.h> + +#define USB_VID 0x303a +#define USB_PID 0x1001 + +static const uint8_t TX = 43; +static const uint8_t RX = 44; + +static const uint8_t SDA = 21; +static const uint8_t SCL = 18; + +static const uint8_t SS = 10; +static const uint8_t MOSI = 12; +static const uint8_t MISO = 13; +static const uint8_t SCK = 11; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 5; +static const uint8_t A5 = 6; +static const uint8_t A6 = 7; +static const uint8_t A7 = 8; +static const uint8_t A8 = 9; +static const uint8_t A9 = 10; +static const uint8_t A10 = 11; +static const uint8_t A11 = 12; +static const uint8_t A12 = 13; +static const uint8_t A13 = 14; +static const uint8_t A14 = 15; +static const uint8_t A15 = 16; +static const uint8_t A16 = 17; +static const uint8_t A17 = 18; +static const uint8_t A18 = 19; +static const uint8_t A19 = 20; + +static const uint8_t T1 = 1; +static const uint8_t T2 = 2; +static const uint8_t T3 = 3; +static const uint8_t T4 = 4; +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T7 = 7; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; +static const uint8_t T10 = 10; +static const uint8_t T11 = 11; +static const uint8_t T12 = 12; +static const uint8_t T13 = 13; +static const uint8_t T14 = 14; + +static const uint8_t RST_LoRa = 9; +static const uint8_t BUSY_LoRa = 1; +static const uint8_t DIO1_LoRa = 14; + +#endif diff --git a/variants/heltec_rc32/platformio.ini b/variants/heltec_rc32/platformio.ini new file mode 100644 index 0000000000..354004f071 --- /dev/null +++ b/variants/heltec_rc32/platformio.ini @@ -0,0 +1,353 @@ +[Heltec_RC32] +extends = esp32_base +board = heltec-rc32 +board_build.partitions = default_16MB.csv +build_flags = + ${esp32_base.build_flags} + ${sensor_base.build_flags} + -I variants/heltec_rc32 + -I src/helpers/ui + -D HELTEC_RC32 + -D USE_SX1262 + -D ESP32_CPU_FREQ=160 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D P_LORA_DIO_1=14 + -D P_LORA_NSS=10 + -D P_LORA_RESET=9 + -D P_LORA_BUSY=1 + -D P_LORA_SCLK=11 + -D P_LORA_MISO=13 + -D P_LORA_MOSI=12 + -D LORA_TX_POWER=22 + -D PIN_USER_BTN=0 + -D PIN_BOARD_SDA=21 + -D PIN_BOARD_SCL=18 + -D SENSOR_POWER_CTRL_PIN=46 + -D SENSOR_POWER_ON=HIGH + -D SENSOR_RST_PIN=2 + -D P_LORA_TX_LED=47 + -D PIN_BUZZER=48 + -D PIN_TFT_SCL=17 + -D PIN_TFT_SDA=38 + -D PIN_TFT_CS=39 + -D PIN_TFT_DC=16 + -D PIN_TFT_RST=4 + -D PIN_TFT_EN=6 + -D PIN_TFT_EN_ACTIVE=LOW + -D PIN_TFT_BL=5 + -D PIN_TFT_BL_ACTIVE=HIGH + -D SPI_FREQUENCY=8000000 + -D PIN_GPS_TX=44 + -D PIN_GPS_RX=43 + -D PIN_GPS_EN=45 + -D PIN_GPS_EN_ACTIVE=HIGH + -D PIN_GPS_RESET=40 + -D PIN_GPS_RESET_ACTIVE=LOW + -D PIN_GPS_PPS=41 + -D GPS_BAUD_RATE=9600 + -D ENV_INCLUDE_GPS=1 + -D PIN_ADC_CTRL=15 + -D PIN_VBAT_READ=7 + -D ADC_CTRL_ENABLED=HIGH + -D ADC_MULTIPLIER=4.9 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 + -D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/heltec_rc32> + +<helpers/sensors> +lib_deps = + ${esp32_base.lib_deps} + ${sensor_base.lib_deps} + +[Heltec_RC32_with_display] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D HELTEC_RC32_WITH_DISPLAY + -D DISPLAY_CLASS=NV3001BDisplay +build_src_filter = ${Heltec_RC32.build_src_filter} + +<helpers/ui/NV3001BDisplay.cpp> + +<helpers/ui/MomentaryButton.cpp> +lib_deps = + ${Heltec_RC32.lib_deps} + +[env:heltec_rc32_without_display_repeater] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D ADVERT_NAME='"Heltec RC32 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<../examples/simple_repeater> +lib_deps = + ${Heltec_RC32.lib_deps} + ${esp32_ota.lib_deps} + bakercp/CRC32 @ ^2.0.0 + +[env:heltec_rc32_without_display_repeater_bridge_espnow] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D ADVERT_NAME='"ESPNow Bridge"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<helpers/bridges/ESPNowBridge.cpp> + +<../examples/simple_repeater> +lib_deps = + ${Heltec_RC32.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_without_display_room_server] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D ADVERT_NAME='"Heltec RC32 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${Heltec_RC32.build_src_filter} + +<../examples/simple_room_server> +lib_deps = + ${Heltec_RC32.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_without_display_companion_radio_usb] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE +build_src_filter = ${Heltec_RC32.build_src_filter} + +<helpers/ui/MomentaryButton.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_without_display_companion_radio_ble] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<helpers/ui/MomentaryButton.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_without_display_companion_radio_wifi] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<helpers/ui/MomentaryButton.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_without_display_sensor] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D ADVERT_NAME='"Heltec RC32 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ENV_PIN_SDA=21 + -D ENV_PIN_SCL=18 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<../examples/simple_sensor> +lib_deps = + ${Heltec_RC32.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_repeater] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -D ADVERT_NAME='"Heltec RC32 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<../examples/simple_repeater> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + ${esp32_ota.lib_deps} + bakercp/CRC32 @ ^2.0.0 + +[env:heltec_rc32_repeater_bridge_espnow] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -D ADVERT_NAME='"ESPNow Bridge"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<helpers/bridges/ESPNowBridge.cpp> + +<../examples/simple_repeater> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_room_server] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -D ADVERT_NAME='"Heltec RC32 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<../examples/simple_room_server> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_terminal_chat] +extends = Heltec_RC32 +build_flags = + ${Heltec_RC32.build_flags} + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Heltec_RC32.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_rc32_companion_radio_usb] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -I examples/companion_radio/ui-new + -D UI_HAS_ROTARY_INPUT + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<helpers/ui/buzzer.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_companion_radio_ble] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -I examples/companion_radio/ui-new + -D UI_HAS_ROTARY_INPUT + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<helpers/ui/buzzer.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_companion_radio_wifi] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -I examples/companion_radio/ui-new + -D UI_HAS_ROTARY_INPUT + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<helpers/ui/buzzer.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_rc32_sensor] +extends = Heltec_RC32_with_display +build_flags = + ${Heltec_RC32_with_display.build_flags} + -D ADVERT_NAME='"Heltec RC32 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ENV_PIN_SDA=21 + -D ENV_PIN_SCL=18 +build_src_filter = ${Heltec_RC32_with_display.build_src_filter} + +<../examples/simple_sensor> +lib_deps = + ${Heltec_RC32_with_display.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_rc32_kiss_modem] +extends = Heltec_RC32 +build_src_filter = ${Heltec_RC32.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/heltec_rc32/target.cpp b/variants/heltec_rc32/target.cpp new file mode 100644 index 0000000000..cc7e4deb74 --- /dev/null +++ b/variants/heltec_rc32/target.cpp @@ -0,0 +1,52 @@ +#include <Arduino.h> +#include "target.h" +#if defined(UI_HAS_ROTARY_INPUT) +#include "HeltecRC32RotaryInput.h" +#endif + +HeltecRC32Board board; + +#if defined(P_LORA_SCLK) + static SPIClass spi(FSPI); + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +#else + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); +#endif + +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#if ENV_INCLUDE_GPS + #include <helpers/sensors/MicroNMEALocationProvider.h> + MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock, PIN_GPS_RESET, PIN_GPS_EN); + EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else + EnvironmentSensorManager sensors; +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display; + MomentaryButton user_btn(PIN_USER_BTN, 1000, true); +#if defined(UI_HAS_ROTARY_INPUT) + static HeltecRC32RotaryInput rotaryInputImpl(&board.periph_power); + RotaryInput& rotary_input = rotaryInputImpl; +#endif +#endif + +bool radio_init() { + fallback_clock.begin(); + rtc_clock.begin(Wire); + +#if defined(P_LORA_SCLK) + return radio.std_init(&spi); +#else + return radio.std_init(); +#endif +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); +} diff --git a/variants/heltec_rc32/target.h b/variants/heltec_rc32/target.h new file mode 100644 index 0000000000..04cb6d94a4 --- /dev/null +++ b/variants/heltec_rc32/target.h @@ -0,0 +1,37 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <HeltecRC32Board.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/radiolib/CustomSX1262Wrapper.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <helpers/sensors/EnvironmentSensorManager.h> + +#ifdef DISPLAY_CLASS +#include <helpers/ui/MomentaryButton.h> +#if defined(UI_HAS_ROTARY_INPUT) +#include <helpers/ui/RotaryInput.h> +#endif +#ifdef HELTEC_RC32_WITH_DISPLAY +#include <helpers/ui/NV3001BDisplay.h> +#else +#include <helpers/ui/NullDisplayDriver.h> +#endif +#endif + +extern HeltecRC32Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +#ifdef DISPLAY_CLASS + extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; +#if defined(UI_HAS_ROTARY_INPUT) + extern RotaryInput& rotary_input; +#endif +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/heltec_rc32/variant.h b/variants/heltec_rc32/variant.h new file mode 100644 index 0000000000..5f7b8d8198 --- /dev/null +++ b/variants/heltec_rc32/variant.h @@ -0,0 +1,29 @@ +#ifndef _VARIANT_HELTEC_RC32_ +#define _VARIANT_HELTEC_RC32_ + +#define BUTTON_PIN 0 + +#define I2C_SCL 18 +#define I2C_SDA 21 +#define SENSOR_INT_PIN 42 +#define PERIPHERAL_WARMUP_MS 100 + +#define LORA_SCK 11 +#define LORA_MISO 13 +#define LORA_MOSI 12 +#define LORA_CS 10 +#define LORA_DIO0 RADIOLIB_NC +#define LORA_DIO1 14 +#define LORA_RESET 9 + +#define SX126X_CS LORA_CS +#define SX126X_DIO1 LORA_DIO1 +#define SX126X_BUSY 1 +#define SX126X_RESET LORA_RESET + +#define BATTERY_PIN 7 +#define ADC_CHANNEL ADC_CHANNEL_6 +#define ADC_CTRL 15 +#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 + +#endif diff --git a/variants/heltec_t096/LoRaFEMControl.h b/variants/heltec_t096/LoRaFEMControl.h index 2c50b74289..0ce60fffd8 100644 --- a/variants/heltec_t096/LoRaFEMControl.h +++ b/variants/heltec_t096/LoRaFEMControl.h @@ -12,8 +12,9 @@ class LoRaFEMControl void setRxModeEnable(void); void setRxModeEnableWhenMCUSleep(void); void setLNAEnable(bool enabled); - bool isLnaCanControl(void) { return lna_can_control; } + bool isLnaCanControl(void) const { return lna_can_control; } void setLnaCanControl(bool can_control) { lna_can_control = can_control; } + bool isLNAEnabled(void) const { return lna_enabled; } private: bool lna_enabled = false; diff --git a/variants/heltec_t096/T096Board.cpp b/variants/heltec_t096/T096Board.cpp index 550131571f..78af529d67 100644 --- a/variants/heltec_t096/T096Board.cpp +++ b/variants/heltec_t096/T096Board.cpp @@ -112,15 +112,29 @@ void T096Board::variant_shutdown() { } void T096Board::powerOff() { -#if ENV_INCLUDE_GPS == 1 - pinMode(PIN_GPS_EN, OUTPUT); - digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); -#endif - loRaFEMControl.setSleepModeEnable(); - variant_shutdown(); - sd_power_system_off(); + loRaFEMControl.setSleepModeEnable(); + nrf_gpio_cfg_default(PIN_GPS_EN); // 363uA down to 39uA + NRF52Board::powerOff(); } const char* T096Board::getManufacturerName() const { return "Heltec T096"; -} \ No newline at end of file +} + +bool T096Board::setLoRaFemLnaEnabled(bool enable) { + if (!loRaFEMControl.isLnaCanControl()) { + return false; + } + + loRaFEMControl.setLNAEnable(enable); + loRaFEMControl.setRxModeEnable(); + return true; +} + +bool T096Board::canControlLoRaFemLna() const { + return loRaFEMControl.isLnaCanControl(); +} + +bool T096Board::isLoRaFemLnaEnabled() const { + return loRaFEMControl.isLNAEnabled(); +} diff --git a/variants/heltec_t096/T096Board.h b/variants/heltec_t096/T096Board.h index d1e3bdfdee..15c7e68b5d 100644 --- a/variants/heltec_t096/T096Board.h +++ b/variants/heltec_t096/T096Board.h @@ -25,4 +25,7 @@ class T096Board : public NRF52BoardDCDC { uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; void powerOff() override; + bool setLoRaFemLnaEnabled(bool enable) override; + bool canControlLoRaFemLna() const override; + bool isLoRaFemLnaEnabled() const override; }; diff --git a/variants/heltec_t096/platformio.ini b/variants/heltec_t096/platformio.ini index e820bf58d3..02e883287e 100644 --- a/variants/heltec_t096/platformio.ini +++ b/variants/heltec_t096/platformio.ini @@ -51,7 +51,7 @@ build_src_filter = ${nrf52_base.build_src_filter} lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} - adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 + bodmer/TFT_eSPI @ ^2.4.31 debug_tool = jlink upload_protocol = nrfutil @@ -152,6 +152,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 diff --git a/variants/heltec_t1/T1Board.cpp b/variants/heltec_t1/T1Board.cpp index 490f86787e..1ef5b766b3 100644 --- a/variants/heltec_t1/T1Board.cpp +++ b/variants/heltec_t1/T1Board.cpp @@ -81,34 +81,6 @@ uint16_t T1Board::getBattMilliVolts() { } void T1Board::variant_shutdown() { - nrf_gpio_cfg_default(PIN_TFT_CS); - nrf_gpio_cfg_default(PIN_TFT_DC); - nrf_gpio_cfg_default(PIN_TFT_SDA); - nrf_gpio_cfg_default(PIN_TFT_SCL); - nrf_gpio_cfg_default(PIN_TFT_RST); - nrf_gpio_cfg_default(PIN_TFT_LEDA_CTL); - nrf_gpio_cfg_default(PIN_TFT_VDD_CTL); - - nrf_gpio_cfg_default(PIN_WIRE_SDA); - nrf_gpio_cfg_default(PIN_WIRE_SCL); - - nrf_gpio_cfg_default(LORA_CS); - nrf_gpio_cfg_default(SX126X_DIO1); - nrf_gpio_cfg_default(SX126X_BUSY); - nrf_gpio_cfg_default(SX126X_RESET); - nrf_gpio_cfg_default(PIN_SPI_MISO); - nrf_gpio_cfg_default(PIN_SPI_MOSI); - nrf_gpio_cfg_default(PIN_SPI_SCK); - - nrf_gpio_cfg_default(PIN_SPI1_MOSI); - nrf_gpio_cfg_default(PIN_SPI1_SCK); - - nrf_gpio_cfg_default(PIN_GPS_RESET); - nrf_gpio_cfg_default(PIN_GPS_EN); - nrf_gpio_cfg_default(PIN_GPS_PPS); - nrf_gpio_cfg_default(PIN_GPS_RX); - nrf_gpio_cfg_default(PIN_GPS_TX); - nrf_gpio_cfg_default(PIN_BUZZER_VOLTAGE_MULTIPLIER_1); nrf_gpio_cfg_default(PIN_BUZZER_VOLTAGE_MULTIPLIER_2); @@ -127,7 +99,7 @@ void T1Board::variant_shutdown() { void T1Board::powerOff() { variant_shutdown(); - sd_power_system_off(); + NRF52Board::powerOff(); } const char* T1Board::getManufacturerName() const { diff --git a/variants/heltec_t1/platformio.ini b/variants/heltec_t1/platformio.ini index d5c3caf189..28ed67edba 100644 --- a/variants/heltec_t1/platformio.ini +++ b/variants/heltec_t1/platformio.ini @@ -23,7 +23,7 @@ build_src_filter = ${nrf52_base.build_src_filter} lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} - adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 + bodmer/TFT_eSPI @ ^2.4.31 debug_tool = jlink upload_protocol = nrfutil @@ -90,6 +90,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_t1.build_src_filter} diff --git a/variants/heltec_t114/T114Board.cpp b/variants/heltec_t114/T114Board.cpp index c03d39afb6..51db72fc87 100644 --- a/variants/heltec_t114/T114Board.cpp +++ b/variants/heltec_t114/T114Board.cpp @@ -33,7 +33,7 @@ void T114Board::initiateShutdown(uint8_t reason) { #endif // NRF52_POWER_MANAGEMENT void T114Board::begin() { - NRF52Board::begin(); + NRF52BoardDCDC::begin(); pinMode(PIN_VBAT_READ, INPUT); diff --git a/variants/heltec_t114/T114Board.h b/variants/heltec_t114/T114Board.h index f27dc291d0..bd76d3de44 100644 --- a/variants/heltec_t114/T114Board.h +++ b/variants/heltec_t114/T114Board.h @@ -50,10 +50,7 @@ class T114Board : public NRF52BoardDCDC { #ifdef LED_PIN digitalWrite(LED_PIN, HIGH); #endif -#if ENV_INCLUDE_GPS == 1 - pinMode(GPS_EN, OUTPUT); - digitalWrite(GPS_EN, LOW); -#endif - sd_power_system_off(); + + NRF52Board::powerOff(); } }; diff --git a/variants/heltec_t114/platformio.ini b/variants/heltec_t114/platformio.ini index 135babb1a2..48fb4b0f52 100644 --- a/variants/heltec_t114/platformio.ini +++ b/variants/heltec_t114/platformio.ini @@ -109,6 +109,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_t114.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> +<helpers/nrf52/SerialBLEInterface.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-new/*.cpp> @@ -126,8 +127,10 @@ build_flags = -D DISPLAY_CLASS=NullDisplayDriver -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE build_src_filter = ${Heltec_t114.build_src_filter} +<helpers/nrf52/*.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-new/*.cpp> lib_deps = @@ -236,6 +239,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 diff --git a/variants/heltec_t114/target.cpp b/variants/heltec_t114/target.cpp index cb8f75db51..90a902f804 100644 --- a/variants/heltec_t114/target.cpp +++ b/variants/heltec_t114/target.cpp @@ -22,7 +22,7 @@ AutoDiscoverRTCClock rtc_clock(fallback_clock); #if ENV_INCLUDE_GPS #include <helpers/sensors/MicroNMEALocationProvider.h> -MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1); +MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); #else EnvironmentSensorManager sensors; diff --git a/variants/heltec_t190/HeltecT190Board.cpp b/variants/heltec_t190/HeltecT190Board.cpp index 4f35be400b..0a16b52b8d 100644 --- a/variants/heltec_t190/HeltecT190Board.cpp +++ b/variants/heltec_t190/HeltecT190Board.cpp @@ -20,33 +20,6 @@ void HeltecT190Board::begin() { } } - void HeltecT190Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void HeltecT190Board::powerOff() { - enterDeepSleep(0); - } - uint16_t HeltecT190Board::getBattMilliVolts() { analogReadResolution(10); digitalWrite(PIN_ADC_CTRL, HIGH); diff --git a/variants/heltec_t190/HeltecT190Board.h b/variants/heltec_t190/HeltecT190Board.h index bc38c1e090..557c070ecd 100644 --- a/variants/heltec_t190/HeltecT190Board.h +++ b/variants/heltec_t190/HeltecT190Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> class HeltecT190Board : public ESP32Board { @@ -13,8 +12,6 @@ class HeltecT190Board : public ESP32Board { HeltecT190Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { } void begin(); - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); - void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; diff --git a/variants/heltec_t190/platformio.ini b/variants/heltec_t190/platformio.ini index 411fee8518..2835539379 100644 --- a/variants/heltec_t190/platformio.ini +++ b/variants/heltec_t190/platformio.ini @@ -74,6 +74,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${Heltec_T190_base.build_src_filter} +<helpers/esp32/*.cpp> +<../examples/companion_radio/*.cpp> diff --git a/variants/heltec_tower_v2/HeltecTowerV2Board.cpp b/variants/heltec_tower_v2/HeltecTowerV2Board.cpp new file mode 100644 index 0000000000..04213bda8c --- /dev/null +++ b/variants/heltec_tower_v2/HeltecTowerV2Board.cpp @@ -0,0 +1,103 @@ +#include "HeltecTowerV2Board.h" + +#include <Arduino.h> +#include <Wire.h> + +extern void variant_shutdown(); + +#ifdef NRF52_POWER_MANAGEMENT +const PowerMgtConfig power_config = { + .lpcomp_ain_channel = PWRMGT_LPCOMP_AIN, + .lpcomp_refsel = PWRMGT_LPCOMP_REFSEL, + .voltage_bootlock = PWRMGT_VOLTAGE_BOOTLOCK +}; + +void HeltecTowerV2Board::initiateShutdown(uint8_t reason) { + pinMode(PIN_GPS_EN, OUTPUT); + digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); + pinMode(PIN_GPS_STANDBY, OUTPUT); + digitalWrite(PIN_GPS_STANDBY, LOW); + pinMode(PIN_GPS_RESET, OUTPUT); + digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); + loRaFEMControl.setSleepModeEnable(); + + bool enable_lpcomp = (reason == SHUTDOWN_REASON_LOW_VOLTAGE || + reason == SHUTDOWN_REASON_BOOT_PROTECT); + pinMode(PIN_BAT_CTL, OUTPUT); + digitalWrite(PIN_BAT_CTL, enable_lpcomp ? HIGH : LOW); + + if (enable_lpcomp) { + configureVoltageWake(power_config.lpcomp_ain_channel, power_config.lpcomp_refsel); + } + + variant_shutdown(); + enterSystemOff(reason); +} +#endif + +void HeltecTowerV2Board::begin() { + NRF52Board::begin(); + + pinMode(P_LORA_TX_LED, OUTPUT); + digitalWrite(P_LORA_TX_LED, !LED_STATE_ON); + + pinMode(PIN_BAT_CTL, OUTPUT); + digitalWrite(PIN_BAT_CTL, LOW); + +#ifdef NRF52_POWER_MANAGEMENT + checkBootVoltage(&power_config); +#endif + + Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); + Wire.begin(); + + pinMode(PIN_GPS_EN, OUTPUT); + digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); + pinMode(PIN_GPS_RESET, OUTPUT); + digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); + pinMode(PIN_GPS_STANDBY, OUTPUT); + digitalWrite(PIN_GPS_STANDBY, HIGH); + loRaFEMControl.init(); +} + +void HeltecTowerV2Board::onBeforeTransmit() { + digitalWrite(P_LORA_TX_LED, LED_STATE_ON); + loRaFEMControl.setTxModeEnable(); +} + +void HeltecTowerV2Board::onAfterTransmit() { + digitalWrite(P_LORA_TX_LED, !LED_STATE_ON); + loRaFEMControl.setRxModeEnable(); +} + +uint16_t HeltecTowerV2Board::getBattMilliVolts() { + analogReadResolution(12); + analogReference(VBAT_AR_INTERNAL); + pinMode(PIN_VBAT_READ, INPUT); + pinMode(PIN_BAT_CTL, OUTPUT); + digitalWrite(PIN_BAT_CTL, HIGH); + + delay(10); + int adcvalue = analogRead(PIN_VBAT_READ); + digitalWrite(PIN_BAT_CTL, LOW); + + return (uint16_t)((float)adcvalue * MV_LSB * ADC_MULTIPLIER); +} + +const char* HeltecTowerV2Board::getManufacturerName() const { + return "Heltec Tower V2"; +} + +void HeltecTowerV2Board::powerOff() { + pinMode(PIN_GPS_EN, OUTPUT); + digitalWrite(PIN_GPS_EN, !PIN_GPS_EN_ACTIVE); + pinMode(PIN_GPS_STANDBY, OUTPUT); + digitalWrite(PIN_GPS_STANDBY, LOW); + pinMode(PIN_GPS_RESET, OUTPUT); + digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); + loRaFEMControl.setSleepModeEnable(); + pinMode(PIN_BAT_CTL, OUTPUT); + digitalWrite(PIN_BAT_CTL, LOW); + variant_shutdown(); + sd_power_system_off(); +} diff --git a/variants/heltec_tower_v2/HeltecTowerV2Board.h b/variants/heltec_tower_v2/HeltecTowerV2Board.h new file mode 100644 index 0000000000..6912acdec7 --- /dev/null +++ b/variants/heltec_tower_v2/HeltecTowerV2Board.h @@ -0,0 +1,24 @@ +#pragma once + +#include <Arduino.h> +#include <MeshCore.h> +#include <helpers/NRF52Board.h> +#include "LoRaFEMControl.h" + +class HeltecTowerV2Board : public NRF52BoardDCDC { +protected: +#ifdef NRF52_POWER_MANAGEMENT + void initiateShutdown(uint8_t reason) override; +#endif + +public: + LoRaFEMControl loRaFEMControl; + + HeltecTowerV2Board() : NRF52Board("TOWER_V2_OTA") {} + void begin(); + void onBeforeTransmit() override; + void onAfterTransmit() override; + uint16_t getBattMilliVolts() override; + const char* getManufacturerName() const override; + void powerOff() override; +}; diff --git a/variants/heltec_tower_v2/LoRaFEMControl.cpp b/variants/heltec_tower_v2/LoRaFEMControl.cpp new file mode 100644 index 0000000000..d87d1849eb --- /dev/null +++ b/variants/heltec_tower_v2/LoRaFEMControl.cpp @@ -0,0 +1,40 @@ +#include "LoRaFEMControl.h" + +#include <Arduino.h> +#include "variant.h" + +static void enableFEMPower() { + bool wasOff = digitalRead(LORA_KCT8103L_EN) != HIGH; + digitalWrite(LORA_KCT8103L_EN, HIGH); + if (wasOff) { + delay(5); + } +} + +void LoRaFEMControl::init() { + pinMode(LORA_KCT8103L_EN, OUTPUT); + digitalWrite(LORA_KCT8103L_EN, HIGH); + delay(1); + pinMode(LORA_KCT8103L_TX_RX, OUTPUT); + digitalWrite(LORA_KCT8103L_TX_RX, LOW); +} + +void LoRaFEMControl::setSleepModeEnable() { + pinMode(LORA_KCT8103L_EN, OUTPUT); + digitalWrite(LORA_KCT8103L_EN, LOW); +} + +void LoRaFEMControl::setTxModeEnable() { + enableFEMPower(); + digitalWrite(LORA_KCT8103L_TX_RX, HIGH); +} + +void LoRaFEMControl::setRxModeEnable() { + enableFEMPower(); + digitalWrite(LORA_KCT8103L_TX_RX, LOW); +} + +void LoRaFEMControl::setRxModeEnableWhenMCUSleep() { + enableFEMPower(); + digitalWrite(LORA_KCT8103L_TX_RX, LOW); +} diff --git a/variants/heltec_tower_v2/LoRaFEMControl.h b/variants/heltec_tower_v2/LoRaFEMControl.h new file mode 100644 index 0000000000..e6c0ad2f11 --- /dev/null +++ b/variants/heltec_tower_v2/LoRaFEMControl.h @@ -0,0 +1,13 @@ +#pragma once + +class LoRaFEMControl { +public: + LoRaFEMControl() {} + virtual ~LoRaFEMControl() {} + + void init(); + void setSleepModeEnable(); + void setTxModeEnable(); + void setRxModeEnable(); + void setRxModeEnableWhenMCUSleep(); +}; diff --git a/variants/heltec_tower_v2/platformio.ini b/variants/heltec_tower_v2/platformio.ini new file mode 100644 index 0000000000..207e0a508d --- /dev/null +++ b/variants/heltec_tower_v2/platformio.ini @@ -0,0 +1,107 @@ +[Heltec_tower_v2] +extends = nrf52_base +board = heltec_tower_v2 +board_build.ldscript = boards/nrf52840_s140_v6.ld +build_flags = ${nrf52_base.build_flags} + -D ENV_INCLUDE_GPS=1 + -I lib/nrf52/s140_nrf52_6.1.1_API/include + -I lib/nrf52/s140_nrf52_6.1.1_API/include/nrf52 + -I variants/heltec_tower_v2 + -D HELTEC_TOWER_V2 + -D NRF52_POWER_MANAGEMENT + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=12 + -D MAX_LORA_TX_POWER=22 ; Max SX1262 output -> ~29dBm at antenna + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52_base.build_src_filter} + +<helpers/*.cpp> + +<helpers/sensors> + +<../variants/heltec_tower_v2> +lib_deps = + ${nrf52_base.lib_deps} + stevemarple/MicroNMEA @ ^2.0.6 +debug_tool = jlink +upload_protocol = nrfutil + +[env:Heltec_tower_v2_repeater] +extends = Heltec_tower_v2 +build_src_filter = ${Heltec_tower_v2.build_src_filter} + +<../examples/simple_repeater> +build_flags = + ${Heltec_tower_v2.build_flags} + -D ADVERT_NAME='"Heltec_Tower_V2 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 + +[env:Heltec_tower_v2_room_server] +extends = Heltec_tower_v2 +build_src_filter = ${Heltec_tower_v2.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${Heltec_tower_v2.build_flags} + -D ADVERT_NAME='"Heltec_Tower_V2 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 + +[env:Heltec_tower_v2_companion_radio_ble] +extends = Heltec_tower_v2 +board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld +board_upload.maximum_size = 712704 +build_flags = + ${Heltec_tower_v2.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 +; -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Heltec_tower_v2.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/nrf52/SerialBLEInterface.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_tower_v2.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_tower_v2_companion_radio_usb] +extends = Heltec_tower_v2 +board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld +board_upload.maximum_size = 712704 +build_flags = + ${Heltec_tower_v2.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE +; -D BLE_PIN_CODE=123456 +; -D BLE_DEBUG_LOGGING=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Heltec_tower_v2.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/nrf52/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_tower_v2.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_tower_v2_kiss_modem] +extends = Heltec_tower_v2 +build_src_filter = ${Heltec_tower_v2.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/heltec_tower_v2/target.cpp b/variants/heltec_tower_v2/target.cpp new file mode 100644 index 0000000000..ec8e7a17da --- /dev/null +++ b/variants/heltec_tower_v2/target.cpp @@ -0,0 +1,64 @@ +#include "target.h" + +#include <Arduino.h> +#include <helpers/ArduinoHelpers.h> +#include <helpers/sensors/MicroNMEALocationProvider.h> + +HeltecTowerV2Board board; + +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); + +WRAPPER_CLASS radio_driver(radio, board); + +VolatileRTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); +MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); +EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +TowerV2ExternalWatchdog external_watchdog; + +#ifdef DISPLAY_CLASS +DISPLAY_CLASS display; +MomentaryButton user_btn(PIN_USER_BTN, 1000, true); +#endif + +bool radio_init() { + rtc_clock.begin(Wire); + return radio.std_init(&SPI); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); +} + +bool TowerV2ExternalWatchdog::begin() { + last_feed_watchdog = 0; + pinMode(EXTERNAL_WATCHDOG_WAKE_PIN, INPUT); + pinMode(EXTERNAL_WATCHDOG_DONE_PIN, OUTPUT); + delay(1); + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW); + delay(1); + feed(); + return true; +} + +void TowerV2ExternalWatchdog::loop() { + if (millis() - last_feed_watchdog >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) { + feed(); + } +} + +unsigned long TowerV2ExternalWatchdog::getIntervalMs() const { + unsigned long elapsed_ms = millis() - last_feed_watchdog; + if (elapsed_ms >= EXTERNAL_WATCHDOG_FEED_INTERVAL_MS) { + return 0; + } + return EXTERNAL_WATCHDOG_FEED_INTERVAL_MS - elapsed_ms; +} + +void TowerV2ExternalWatchdog::feed() { + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, HIGH); + delay(1); + digitalWrite(EXTERNAL_WATCHDOG_DONE_PIN, LOW); + last_feed_watchdog = millis(); +} diff --git a/variants/heltec_tower_v2/target.h b/variants/heltec_tower_v2/target.h new file mode 100644 index 0000000000..0b9de40ca4 --- /dev/null +++ b/variants/heltec_tower_v2/target.h @@ -0,0 +1,39 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <HeltecTowerV2Board.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/radiolib/CustomSX1262Wrapper.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <helpers/sensors/EnvironmentSensorManager.h> +#include <helpers/sensors/LocationProvider.h> +#include <helpers/ExternalWatchdogManager.h> + +#ifdef DISPLAY_CLASS +#include <helpers/ui/MomentaryButton.h> +#include "helpers/ui/NullDisplayDriver.h" +#endif + +class TowerV2ExternalWatchdog : public ExternalWatchdogManager { +public: + TowerV2ExternalWatchdog() {} + bool begin() override; + void loop() override; + unsigned long getIntervalMs() const override; + void feed() override; +}; + +extern HeltecTowerV2Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; +extern TowerV2ExternalWatchdog external_watchdog; + +#ifdef DISPLAY_CLASS +extern DISPLAY_CLASS display; +extern MomentaryButton user_btn; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/heltec_tower_v2/variant.cpp b/variants/heltec_tower_v2/variant.cpp new file mode 100644 index 0000000000..cfb88c4a3e --- /dev/null +++ b/variants/heltec_tower_v2/variant.cpp @@ -0,0 +1,42 @@ +#include "variant.h" + +#include "Arduino.h" +#include "nrf.h" +#include "wiring_constants.h" +#include "wiring_digital.h" + +const uint32_t g_ADigitalPinMap[] = { + 0xff, 0xff, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47 +}; + +void initVariant() +{ + +} + +void variant_shutdown() +{ + nrf_gpio_cfg_default(PIN_GPS_EN); + nrf_gpio_cfg_default(PIN_GPS_PPS); + nrf_gpio_cfg_default(PIN_GPS_RESET); + nrf_gpio_cfg_default(PIN_GPS_STANDBY); + nrf_gpio_cfg_default(GPS_RX_PIN); + nrf_gpio_cfg_default(GPS_TX_PIN); + pinMode(LORA_KCT8103L_EN, OUTPUT); + digitalWrite(LORA_KCT8103L_EN, LOW); + nrf_gpio_cfg_default(LORA_KCT8103L_TX_RX); + nrf_gpio_cfg_default(RF_PA_DETECT_PIN); + nrf_gpio_cfg_default(SX126X_CS); + nrf_gpio_cfg_default(SX126X_DIO1); + nrf_gpio_cfg_default(SX126X_BUSY); + nrf_gpio_cfg_default(SX126X_RESET); + nrf_gpio_cfg_default(PIN_SPI_MISO); + nrf_gpio_cfg_default(PIN_SPI_MOSI); + nrf_gpio_cfg_default(PIN_SPI_SCK); + nrf_gpio_cfg_default(PIN_LED); + detachInterrupt(PIN_GPS_PPS); + detachInterrupt(PIN_BUTTON1); +} diff --git a/variants/heltec_tower_v2/variant.h b/variants/heltec_tower_v2/variant.h new file mode 100644 index 0000000000..14116c6f34 --- /dev/null +++ b/variants/heltec_tower_v2/variant.h @@ -0,0 +1,108 @@ +#pragma once + +#include "WVariant.h" + +#define USE_LFXO +#define VARIANT_MCK (64000000ul) + +#define PINS_COUNT (48) +#define NUM_DIGITAL_PINS (48) +#define NUM_ANALOG_INPUTS (1) +#define NUM_ANALOG_OUTPUTS (0) + +#define WIRE_INTERFACES_COUNT (1) +#define PIN_WIRE_SDA (0 + 30) +#define PIN_WIRE_SCL (0 + 5) +#define PIN_BOARD_SDA PIN_WIRE_SDA +#define PIN_BOARD_SCL PIN_WIRE_SCL + +#define SPI_INTERFACES_COUNT (1) +#define PIN_SPI_MISO (0 + 23) +#define PIN_SPI_MOSI (0 + 22) +#define PIN_SPI_SCK (0 + 19) +#define PIN_SPI_NSS LORA_CS + +#define LED_BUILTIN (32 + 15) +#define PIN_LED LED_BUILTIN +#define LED_RED (-1) +#define LED_GREEN (-1) +#define LED_BLUE (-1) +#define LED_PIN (-1) +#define P_LORA_TX_LED LED_BUILTIN +#define LED_STATE_ON LOW + +#define PIN_BUTTON1 (32 + 10) +#define BUTTON_PIN PIN_BUTTON1 +#define PIN_USER_BTN BUTTON_PIN + +#define USE_SX1262 +#define SX126X_CS (0 + 24) +#define LORA_CS SX126X_CS +#define SX126X_DIO1 (0 + 20) +#define SX126X_BUSY (0 + 17) +#define SX126X_RESET (0 + 25) +#define SX126X_DIO2_AS_RF_SWITCH +#define SX126X_DIO3_TCXO_VOLTAGE 1.8 + +#define P_LORA_NSS LORA_CS +#define P_LORA_DIO_1 SX126X_DIO1 +#define P_LORA_BUSY SX126X_BUSY +#define P_LORA_RESET SX126X_RESET +#define P_LORA_MISO PIN_SPI_MISO +#define P_LORA_MOSI PIN_SPI_MOSI +#define P_LORA_SCLK PIN_SPI_SCK + +#define USE_KCT8103L_PA_ONLY +#define LORA_KCT8103L_EN (0 + 15) +#define LORA_KCT8103L_TX_RX (0 + 16) +#define LORA_PA_POWER LORA_KCT8103L_EN +#define RF_PA_DETECT_PIN (0 + 13) +#define RF_PA_HIGH_POWER_VALUE HIGH + +#define GPS_L76K +#define GPS_RESET_MODE LOW +#define PIN_GPS_RESET (32 + 6) +#define PIN_GPS_RESET_ACTIVE GPS_RESET_MODE +#define PIN_GPS_EN (0 + 7) +#define PIN_GPS_EN_ACTIVE LOW +#define GPS_EN_ACTIVE PIN_GPS_EN_ACTIVE +#define PIN_GPS_STANDBY (32 + 2) +#define PIN_GPS_PPS (32 + 4) +#define GPS_BAUD_RATE 9600 + +// Upstream names are from the GPS perspective. MeshCore's PIN_GPS_TX is the +// CPU RX pin because EnvironmentSensorManager passes it as Serial1 RX. +#define GPS_TX_PIN (32 + 7) +#define GPS_RX_PIN (32 + 5) +#define PIN_GPS_TX GPS_RX_PIN +#define PIN_GPS_RX GPS_TX_PIN + +#define PIN_SERIAL1_RX PIN_GPS_TX +#define PIN_SERIAL1_TX PIN_GPS_RX +#define PIN_SERIAL2_RX (-1) +#define PIN_SERIAL2_TX (-1) + +#define HAS_EXTERNAL_WATCHDOG +#define EXTERNAL_WATCHDOG_DONE_PIN (0 + 9) +#define EXTERNAL_WATCHDOG_WAKE_PIN (0 + 10) +#define EXTERNAL_WATCHDOG_FEED_INTERVAL_MS (8 * 60 * 1000) + +#define SERIAL_PRINT_PORT 0 + +#define PIN_BAT_CTL (0 + 21) +#define ADC_CTRL PIN_BAT_CTL +#define ADC_CTRL_ENABLED HIGH +#define BATTERY_PIN (0 + 4) +#define PIN_VBAT_READ BATTERY_PIN +#define ADC_RESOLUTION 14 +#define BATTERY_SENSE_RESOLUTION_BITS 12 +#define BATTERY_SENSE_RESOLUTION 4096.0 +#define AREF_VOLTAGE 3.0 +#define VBAT_AR_INTERNAL AR_INTERNAL_3_0 +#define ADC_MULTIPLIER (4.916F) +#define MV_LSB (3000.0F / 4096.0F) + +#define NRF52_POWER_MANAGEMENT +#define PWRMGT_VOLTAGE_BOOTLOCK 3100 +#define PWRMGT_LPCOMP_AIN 2 +#define PWRMGT_LPCOMP_REFSEL 1 diff --git a/variants/heltec_tracker/platformio.ini b/variants/heltec_tracker/platformio.ini index 69293d7070..75d1cadf3c 100644 --- a/variants/heltec_tracker/platformio.ini +++ b/variants/heltec_tracker/platformio.ini @@ -47,7 +47,7 @@ build_src_filter = ${esp32_base.build_src_filter} lib_deps = ${esp32_base.lib_deps} stevemarple/MicroNMEA @ ^2.0.6 - adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 + bodmer/TFT_eSPI @ ^2.4.31 [env:Heltec_Wireless_Tracker_companion_radio_usb] extends = Heltec_tracker_base @@ -59,6 +59,7 @@ build_flags = -D DISPLAY_CLASS=ST7735Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D BLE_PIN_CODE=123456 ; HWT will use display for pin ; -D OFFLINE_QUEUE_SIZE=256 ; -D BLE_DEBUG_LOGGING=1 diff --git a/variants/heltec_tracker_v2/HeltecTrackerV2Board.cpp b/variants/heltec_tracker_v2/HeltecTrackerV2Board.cpp index aabfed7967..99b1cdfe08 100644 --- a/variants/heltec_tracker_v2/HeltecTrackerV2Board.cpp +++ b/variants/heltec_tracker_v2/HeltecTrackerV2Board.cpp @@ -35,33 +35,12 @@ void HeltecTrackerV2Board::begin() { loRaFEMControl.setRxModeEnable(); } - void HeltecTrackerV2Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + void HeltecTrackerV2Board::powerOff() { + // Turn off PA + digitalWrite(P_LORA_PA_POWER, LOW); + rtc_gpio_hold_en((gpio_num_t)P_LORA_PA_POWER); - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - loRaFEMControl.setRxModeEnableWhenMCUSleep();//It also needs to be enabled in receive mode - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void HeltecTrackerV2Board::powerOff() { - enterDeepSleep(0); + ESP32Board::powerOff(); } uint16_t HeltecTrackerV2Board::getBattMilliVolts() { @@ -82,3 +61,21 @@ void HeltecTrackerV2Board::begin() { const char* HeltecTrackerV2Board::getManufacturerName() const { return "Heltec Tracker V2"; } + + bool HeltecTrackerV2Board::setLoRaFemLnaEnabled(bool enable) { + if (!loRaFEMControl.isLnaCanControl()) { + return false; + } + + loRaFEMControl.setLNAEnable(enable); + loRaFEMControl.setRxModeEnable(); + return true; + } + + bool HeltecTrackerV2Board::canControlLoRaFemLna() const { + return loRaFEMControl.isLnaCanControl(); + } + + bool HeltecTrackerV2Board::isLoRaFemLnaEnabled() const { + return loRaFEMControl.isLNAEnabled(); + } diff --git a/variants/heltec_tracker_v2/HeltecTrackerV2Board.h b/variants/heltec_tracker_v2/HeltecTrackerV2Board.h index 33c897bc94..2bd6a02544 100644 --- a/variants/heltec_tracker_v2/HeltecTrackerV2Board.h +++ b/variants/heltec_tracker_v2/HeltecTrackerV2Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> #include "LoRaFEMControl.h" class HeltecTrackerV2Board : public ESP32Board { @@ -17,9 +16,11 @@ class HeltecTrackerV2Board : public ESP32Board { void begin(); void onBeforeTransmit(void) override; void onAfterTransmit(void) override; - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; + bool setLoRaFemLnaEnabled(bool enable) override; + bool canControlLoRaFemLna() const override; + bool isLoRaFemLnaEnabled() const override; }; diff --git a/variants/heltec_tracker_v2/LoRaFEMControl.h b/variants/heltec_tracker_v2/LoRaFEMControl.h index 2c50b74289..0ce60fffd8 100644 --- a/variants/heltec_tracker_v2/LoRaFEMControl.h +++ b/variants/heltec_tracker_v2/LoRaFEMControl.h @@ -12,8 +12,9 @@ class LoRaFEMControl void setRxModeEnable(void); void setRxModeEnableWhenMCUSleep(void); void setLNAEnable(bool enabled); - bool isLnaCanControl(void) { return lna_can_control; } + bool isLnaCanControl(void) const { return lna_can_control; } void setLnaCanControl(bool can_control) { lna_can_control = can_control; } + bool isLNAEnabled(void) const { return lna_enabled; } private: bool lna_enabled = false; diff --git a/variants/heltec_tracker_v2/platformio.ini b/variants/heltec_tracker_v2/platformio.ini index d57c2113f0..d040b72f9d 100644 --- a/variants/heltec_tracker_v2/platformio.ini +++ b/variants/heltec_tracker_v2/platformio.ini @@ -55,7 +55,7 @@ build_src_filter = ${esp32_base.build_src_filter} lib_deps = ${esp32_base.lib_deps} ${sensor_base.lib_deps} - adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 + bodmer/TFT_eSPI @ ^2.4.31 [env:heltec_tracker_v2_repeater] extends = Heltec_tracker_v2 @@ -140,6 +140,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=ST7735Display + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_tracker_v2.build_src_filter} diff --git a/variants/heltec_v2/HeltecV2Board.h b/variants/heltec_v2/HeltecV2Board.h index fe800890b8..9b08fe9430 100644 --- a/variants/heltec_v2/HeltecV2Board.h +++ b/variants/heltec_v2/HeltecV2Board.h @@ -7,8 +7,6 @@ #define PIN_VBAT_READ 37 #define PIN_LED_BUILTIN 25 -#include <driver/rtc_io.h> - class HeltecV2Board : public ESP32Board { public: void begin() { @@ -26,29 +24,6 @@ class HeltecV2Board : public ESP32Board { } } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_0, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_0); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_0), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_0) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - uint16_t getBattMilliVolts() override { analogReadResolution(10); diff --git a/variants/heltec_v2/platformio.ini b/variants/heltec_v2/platformio.ini index ba4f869422..78561a14ab 100644 --- a/variants/heltec_v2/platformio.ini +++ b/variants/heltec_v2/platformio.ini @@ -137,6 +137,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=160 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v2.build_src_filter} diff --git a/variants/heltec_v3/HeltecV3Board.h b/variants/heltec_v3/HeltecV3Board.h index ba22a7f2b9..7e7abe313b 100644 --- a/variants/heltec_v3/HeltecV3Board.h +++ b/variants/heltec_v3/HeltecV3Board.h @@ -17,8 +17,6 @@ #define PIN_ADC_CTRL_ACTIVE LOW #define PIN_ADC_CTRL_INACTIVE HIGH -#include <driver/rtc_io.h> - class HeltecV3Board : public ESP32Board { private: bool adc_active_state; @@ -52,33 +50,6 @@ class HeltecV3Board : public ESP32Board { } } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void powerOff() override { - enterDeepSleep(0); - } - uint16_t getBattMilliVolts() override { analogReadResolution(10); digitalWrite(PIN_ADC_CTRL, adc_active_state); diff --git a/variants/heltec_v3/platformio.ini b/variants/heltec_v3/platformio.ini index a70a93a508..65e636eb4e 100644 --- a/variants/heltec_v3/platformio.ini +++ b/variants/heltec_v3/platformio.ini @@ -144,6 +144,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} @@ -326,6 +327,7 @@ build_flags = ${Heltec_lora32_v3.build_flags} -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} diff --git a/variants/heltec_v4/HeltecV4Board.cpp b/variants/heltec_v4/HeltecV4Board.cpp index 8f01379714..3f13f41f6e 100644 --- a/variants/heltec_v4/HeltecV4Board.cpp +++ b/variants/heltec_v4/HeltecV4Board.cpp @@ -32,33 +32,12 @@ void HeltecV4Board::begin() { loRaFEMControl.setRxModeEnable(); } - void HeltecV4Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + void HeltecV4Board::powerOff() { + // Turn off PA + digitalWrite(P_LORA_PA_POWER, LOW); + rtc_gpio_hold_en((gpio_num_t)P_LORA_PA_POWER); - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - loRaFEMControl.setRxModeEnableWhenMCUSleep();//It also needs to be enabled in receive mode - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void HeltecV4Board::powerOff() { - enterDeepSleep(0); + ESP32Board::powerOff(); } uint16_t HeltecV4Board::getBattMilliVolts() { @@ -83,3 +62,21 @@ void HeltecV4Board::begin() { return loRaFEMControl.getFEMType() == KCT8103L_PA ? "Heltec V4.3 OLED" : "Heltec V4 OLED"; #endif } + + bool HeltecV4Board::setLoRaFemLnaEnabled(bool enable) { + if (!loRaFEMControl.isLnaCanControl()) { + return false; + } + + loRaFEMControl.setLNAEnable(enable); + loRaFEMControl.setRxModeEnable(); + return true; + } + + bool HeltecV4Board::canControlLoRaFemLna() const { + return loRaFEMControl.isLnaCanControl(); + } + + bool HeltecV4Board::isLoRaFemLnaEnabled() const { + return loRaFEMControl.isLNAEnabled(); + } diff --git a/variants/heltec_v4/HeltecV4Board.h b/variants/heltec_v4/HeltecV4Board.h index 95def06c95..55166bb37f 100644 --- a/variants/heltec_v4/HeltecV4Board.h +++ b/variants/heltec_v4/HeltecV4Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> #include "LoRaFEMControl.h" #ifndef ADC_MULTIPLIER @@ -23,8 +22,10 @@ class HeltecV4Board : public ESP32Board { void begin(); void onBeforeTransmit(void) override; void onAfterTransmit(void) override; - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); void powerOff() override; + bool setLoRaFemLnaEnabled(bool enable) override; + bool canControlLoRaFemLna() const override; + bool isLoRaFemLnaEnabled() const override; uint16_t getBattMilliVolts() override; bool setAdcMultiplier(float multiplier) override { if (multiplier == 0.0f) { diff --git a/variants/heltec_v4/LoRaFEMControl.h b/variants/heltec_v4/LoRaFEMControl.h index 13225bd56b..d312762d3d 100644 --- a/variants/heltec_v4/LoRaFEMControl.h +++ b/variants/heltec_v4/LoRaFEMControl.h @@ -18,8 +18,9 @@ class LoRaFEMControl void setRxModeEnable(void); void setRxModeEnableWhenMCUSleep(void); void setLNAEnable(bool enabled); - bool isLnaCanControl(void) { return lna_can_control; } + bool isLnaCanControl(void) const { return lna_can_control; } void setLnaCanControl(bool can_control) { lna_can_control = can_control; } + bool isLNAEnabled(void) const { return lna_enabled; } LoRaFEMType getFEMType(void) const { return fem_type; } private: LoRaFEMType fem_type=OTHER_FEM_TYPES; diff --git a/variants/heltec_v4/platformio.ini b/variants/heltec_v4/platformio.ini index fabf38272d..d718c006c4 100644 --- a/variants/heltec_v4/platformio.ini +++ b/variants/heltec_v4/platformio.ini @@ -187,6 +187,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${heltec_v4_oled.build_src_filter} @@ -351,6 +352,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=ST7789LCDDisplay + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${heltec_v4_tft.build_src_filter} @@ -432,5 +434,10 @@ lib_deps = [env:heltec_v4_kiss_modem] extends = Heltec_lora32_v4 +build_unflags = + -DARDUINO_USB_MODE=0 +build_flags = + ${Heltec_lora32_v4.build_flags} + -DARDUINO_USB_MODE=1 build_src_filter = ${Heltec_lora32_v4.build_src_filter} +<../examples/kiss_modem/> diff --git a/variants/heltec_v4_r8/HeltecV4R8Board.cpp b/variants/heltec_v4_r8/HeltecV4R8Board.cpp new file mode 100644 index 0000000000..1fb123b2f6 --- /dev/null +++ b/variants/heltec_v4_r8/HeltecV4R8Board.cpp @@ -0,0 +1,86 @@ +#include "HeltecV4R8Board.h" + +void HeltecV4R8Board::begin() { + ESP32Board::begin(); + + periph_power.begin(); + periph_power.claim(); // R8 VEXT also feeds the LoRa antenna boost rail. + + loRaFEMControl.init(); + +#ifdef PIN_TOUCH_RST + pinMode(PIN_TOUCH_RST, OUTPUT); + digitalWrite(PIN_TOUCH_RST, HIGH); + delay(10); + digitalWrite(PIN_TOUCH_RST, LOW); + delay(100); + digitalWrite(PIN_TOUCH_RST, HIGH); +#endif + + esp_reset_reason_t reason = esp_reset_reason(); + if (reason == ESP_RST_DEEPSLEEP) { + long wakeup_source = esp_sleep_get_ext1_wakeup_status(); + if (wakeup_source & (1 << P_LORA_DIO_1)) { + startup_reason = BD_STARTUP_RX_PACKET; + } + + rtc_gpio_hold_dis((gpio_num_t)P_LORA_NSS); + rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_1); + } +} + +void HeltecV4R8Board::onBeforeTransmit(void) { + digitalWrite(P_LORA_TX_LED, HIGH); + loRaFEMControl.setTxModeEnable(); +} + +void HeltecV4R8Board::onAfterTransmit(void) { + digitalWrite(P_LORA_TX_LED, LOW); + loRaFEMControl.setRxModeEnable(); +} + +void HeltecV4R8Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + + rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); + rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); + + rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); + loRaFEMControl.setRxModeEnableWhenMCUSleep(); + + if (pin_wake_btn < 0) { + esp_sleep_enable_ext1_wakeup((1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); + } else { + esp_sleep_enable_ext1_wakeup((1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); + } + + if (secs > 0) { + esp_sleep_enable_timer_wakeup(secs * 1000000); + } + + esp_deep_sleep_start(); +} + +void HeltecV4R8Board::powerOff() { + enterDeepSleep(0); +} + +uint16_t HeltecV4R8Board::getBattMilliVolts() { + analogReadResolution(12); + + uint32_t raw = 0; + for (int i = 0; i < 8; i++) { + raw += analogReadMilliVolts(PIN_VBAT_READ); + } + raw = raw / 8; + + return (adc_mult * raw); +} + +const char* HeltecV4R8Board::getManufacturerName() const { +#ifdef HELTEC_V4_R8_TFT + return "Heltec V4 R8 TFT"; +#else + return "Heltec V4 R8 OLED"; +#endif +} diff --git a/variants/heltec_v4_r8/HeltecV4R8Board.h b/variants/heltec_v4_r8/HeltecV4R8Board.h new file mode 100644 index 0000000000..20811abb15 --- /dev/null +++ b/variants/heltec_v4_r8/HeltecV4R8Board.h @@ -0,0 +1,39 @@ +#pragma once + +#include <Arduino.h> +#include <driver/rtc_io.h> +#include <helpers/ESP32Board.h> +#include <helpers/RefCountedDigitalPin.h> +#include "LoRaFEMControl.h" + +#ifndef ADC_MULTIPLIER + #define ADC_MULTIPLIER (4.9f * 1.035f) +#endif + +class HeltecV4R8Board : public ESP32Board { +protected: + float adc_mult = ADC_MULTIPLIER; + +public: + RefCountedDigitalPin periph_power; + LoRaFEMControl loRaFEMControl; + + HeltecV4R8Board() : periph_power(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE) { } + + void begin(); + void onBeforeTransmit(void) override; + void onAfterTransmit(void) override; + void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); + void powerOff() override; + uint16_t getBattMilliVolts() override; + bool setAdcMultiplier(float multiplier) override { + if (multiplier == 0.0f) { + adc_mult = ADC_MULTIPLIER; + } else { + adc_mult = multiplier; + } + return true; + } + float getAdcMultiplier() const override { return adc_mult; } + const char* getManufacturerName() const override; +}; diff --git a/variants/heltec_v4_r8/LoRaFEMControl.cpp b/variants/heltec_v4_r8/LoRaFEMControl.cpp new file mode 100644 index 0000000000..bb530de3c6 --- /dev/null +++ b/variants/heltec_v4_r8/LoRaFEMControl.cpp @@ -0,0 +1,52 @@ +#include "LoRaFEMControl.h" + +#include <Arduino.h> +#include <driver/rtc_io.h> +#include <esp_sleep.h> + +void LoRaFEMControl::init(void) { + pinMode(P_LORA_PA_POWER, OUTPUT); + digitalWrite(P_LORA_PA_POWER, HIGH); + rtc_gpio_hold_dis((gpio_num_t)P_LORA_PA_POWER); + + esp_reset_reason_t reason = esp_reset_reason(); + if (reason != ESP_RST_DEEPSLEEP) { + delay(1); + } + + rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CSD); + rtc_gpio_hold_dis((gpio_num_t)P_LORA_KCT8103L_PA_CTX); + + pinMode(P_LORA_KCT8103L_PA_CSD, OUTPUT); + digitalWrite(P_LORA_KCT8103L_PA_CSD, HIGH); + pinMode(P_LORA_KCT8103L_PA_CTX, OUTPUT); + digitalWrite(P_LORA_KCT8103L_PA_CTX, lna_enabled ? LOW : HIGH); +} + +void LoRaFEMControl::setSleepModeEnable(void) { + digitalWrite(P_LORA_KCT8103L_PA_CSD, LOW); +} + +void LoRaFEMControl::setTxModeEnable(void) { + digitalWrite(P_LORA_KCT8103L_PA_CSD, HIGH); + digitalWrite(P_LORA_KCT8103L_PA_CTX, HIGH); +} + +void LoRaFEMControl::setRxModeEnable(void) { + digitalWrite(P_LORA_KCT8103L_PA_CSD, HIGH); + digitalWrite(P_LORA_KCT8103L_PA_CTX, lna_enabled ? LOW : HIGH); +} + +void LoRaFEMControl::setRxModeEnableWhenMCUSleep(void) { + digitalWrite(P_LORA_PA_POWER, HIGH); + rtc_gpio_hold_en((gpio_num_t)P_LORA_PA_POWER); + + digitalWrite(P_LORA_KCT8103L_PA_CSD, HIGH); + rtc_gpio_hold_en((gpio_num_t)P_LORA_KCT8103L_PA_CSD); + digitalWrite(P_LORA_KCT8103L_PA_CTX, lna_enabled ? LOW : HIGH); + rtc_gpio_hold_en((gpio_num_t)P_LORA_KCT8103L_PA_CTX); +} + +void LoRaFEMControl::setLNAEnable(bool enabled) { + lna_enabled = enabled; +} diff --git a/variants/heltec_v4_r8/LoRaFEMControl.h b/variants/heltec_v4_r8/LoRaFEMControl.h new file mode 100644 index 0000000000..961cfd070e --- /dev/null +++ b/variants/heltec_v4_r8/LoRaFEMControl.h @@ -0,0 +1,24 @@ +#pragma once + +typedef enum { + KCT8103L_PA, + OTHER_FEM_TYPES +} LoRaFEMType; + +class LoRaFEMControl { +public: + LoRaFEMControl() { } + virtual ~LoRaFEMControl() { } + void init(void); + void setSleepModeEnable(void); + void setTxModeEnable(void); + void setRxModeEnable(void); + void setRxModeEnableWhenMCUSleep(void); + void setLNAEnable(bool enabled); + bool isLnaCanControl(void) { return true; } + void setLnaCanControl(bool can_control) { } + LoRaFEMType getFEMType(void) const { return KCT8103L_PA; } + +private: + bool lna_enabled = false; +}; diff --git a/variants/heltec_v4_r8/pins_arduino.h b/variants/heltec_v4_r8/pins_arduino.h new file mode 100644 index 0000000000..9e412aac5a --- /dev/null +++ b/variants/heltec_v4_r8/pins_arduino.h @@ -0,0 +1,56 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <stdint.h> + +#define USB_VID 0x303a +#define USB_PID 0x1001 + +static const uint8_t TX = 43; +static const uint8_t RX = 44; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 18; + +static const uint8_t SS = 8; +static const uint8_t MOSI = 10; +static const uint8_t MISO = 11; +static const uint8_t SCK = 9; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 5; +static const uint8_t A5 = 6; +static const uint8_t A6 = 7; +static const uint8_t A7 = 8; +static const uint8_t A8 = 9; +static const uint8_t A9 = 10; +static const uint8_t A10 = 11; +static const uint8_t A11 = 12; +static const uint8_t A12 = 13; +static const uint8_t A13 = 14; +static const uint8_t A14 = 15; +static const uint8_t A15 = 16; +static const uint8_t A16 = 17; +static const uint8_t A17 = 18; +static const uint8_t A18 = 19; +static const uint8_t A19 = 20; + +static const uint8_t T1 = 1; +static const uint8_t T2 = 2; +static const uint8_t T3 = 3; +static const uint8_t T4 = 4; +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T7 = 7; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; +static const uint8_t T10 = 10; +static const uint8_t T11 = 11; +static const uint8_t T12 = 12; +static const uint8_t T13 = 13; +static const uint8_t T14 = 14; + +#endif diff --git a/variants/heltec_v4_r8/platformio.ini b/variants/heltec_v4_r8/platformio.ini new file mode 100644 index 0000000000..f523ebf9b2 --- /dev/null +++ b/variants/heltec_v4_r8/platformio.ini @@ -0,0 +1,344 @@ +[Heltec_v4_r8] +extends = esp32_base +board = heltec_v4_r8 +build_flags = + ${esp32_base.build_flags} + ${sensor_base.build_flags} + -I variants/heltec_v4_r8 + -D HELTEC_V4_R8 + -D USE_SX1262 + -D ESP32_CPU_FREQ=80 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D P_LORA_DIO_1=14 + -D P_LORA_NSS=8 + -D P_LORA_RESET=12 + -D P_LORA_BUSY=13 + -D P_LORA_SCLK=9 + -D P_LORA_MISO=11 + -D P_LORA_MOSI=10 + -D P_LORA_PA_POWER=7 + -D P_LORA_KCT8103L_PA_CSD=2 + -D P_LORA_KCT8103L_PA_CTX=5 + -D P_LORA_TX_LED=46 + -D PIN_USER_BTN=0 + -D PIN_VEXT_EN=40 + -D PIN_VEXT_EN_ACTIVE=LOW + -D ADC_MULTIPLIER=5.0715f + -D PIN_VBAT_READ=1 + -D LORA_TX_POWER=10 + -D MAX_LORA_TX_POWER=22 + -D SX126X_REGISTER_PATCH=1 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 + -D PIN_GPS_RX=38 + -D PIN_GPS_TX=39 + -D PIN_GPS_EN=42 + -D PIN_GPS_EN_ACTIVE=LOW + -D ENV_INCLUDE_GPS=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/heltec_v4_r8> + +<helpers/sensors> +lib_deps = + ${esp32_base.lib_deps} + ${sensor_base.lib_deps} + +[heltec_v4_r8_oled] +extends = Heltec_v4_r8 +build_flags = + ${Heltec_v4_r8.build_flags} + -D HELTEC_V4_R8_OLED + -D PIN_BOARD_SDA=17 + -D PIN_BOARD_SCL=18 + -D PIN_OLED_RESET=21 +build_src_filter = ${Heltec_v4_r8.build_src_filter} +lib_deps = ${Heltec_v4_r8.lib_deps} + +[heltec_v4_r8_tft] +extends = Heltec_v4_r8 +build_flags = + ${Heltec_v4_r8.build_flags} + -D HELTEC_V4_R8_TFT + -D PIN_BOARD_SDA=17 + -D PIN_BOARD_SCL=18 + -D DISPLAY_SCALE_X=2.5 + -D DISPLAY_SCALE_Y=3.75 + -D PIN_TFT_RST=-1 + -D PIN_TFT_VDD_CTL=-1 + -D PIN_TFT_LEDA_CTL=44 + -D PIN_TFT_LEDA_CTL_ACTIVE=HIGH + -D PIN_TFT_CS=47 + -D PIN_TFT_DC=48 + -D PIN_TFT_SCL=16 + -D PIN_TFT_SDA=15 + -D PIN_TFT_MISO=45 + -D PIN_BUZZER=4 + -D PIN_TOUCH_RST=21 +build_src_filter = ${Heltec_v4_r8.build_src_filter} + +<helpers/ui/buzzer.cpp> +lib_deps = + ${Heltec_v4_r8.lib_deps} + adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:heltec_v4_r8_repeater] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec R8 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + ${esp32_ota.lib_deps} + bakercp/CRC32 @ ^2.0.0 + +[env:heltec_v4_r8_room_server] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec R8 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_room_server> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_v4_r8_terminal_chat] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_companion_radio_usb] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=SSD1306Display + -D ENABLE_USB_INTERFACE +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_companion_radio_ble] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=SSD1306Display + -D BLE_PIN_CODE=123456 + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_companion_radio_wifi] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D DISPLAY_CLASS=SSD1306Display + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_sensor] +extends = heltec_v4_r8_oled +build_flags = + ${heltec_v4_r8_oled.build_flags} + -D ADVERT_NAME='"Heltec R8 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D DISPLAY_CLASS=SSD1306Display +build_src_filter = ${heltec_v4_r8_oled.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_sensor> +lib_deps = + ${heltec_v4_r8_oled.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_v4_r8_tft_repeater] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -D DISPLAY_CLASS=ST7789LCDDisplay + -D ADVERT_NAME='"Heltec R8 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<../examples/simple_repeater> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + ${esp32_ota.lib_deps} + bakercp/CRC32 @ ^2.0.0 + +[env:heltec_v4_r8_tft_room_server] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -D DISPLAY_CLASS=ST7789LCDDisplay + -D ADVERT_NAME='"Heltec R8 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<../examples/simple_room_server> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_v4_r8_tft_terminal_chat] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_tft_companion_radio_usb] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=ST7789LCDDisplay + -D ENABLE_USB_INTERFACE +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_tft_companion_radio_ble] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=ST7789LCDDisplay + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_tft_companion_radio_wifi] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D DISPLAY_CLASS=ST7789LCDDisplay + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:heltec_v4_r8_tft_sensor] +extends = heltec_v4_r8_tft +build_flags = + ${heltec_v4_r8_tft.build_flags} + -D ADVERT_NAME='"Heltec R8 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D DISPLAY_CLASS=ST7789LCDDisplay +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<helpers/ui/ST7789LCDDisplay.cpp> + +<../examples/simple_sensor> +lib_deps = + ${heltec_v4_r8_tft.lib_deps} + ${esp32_ota.lib_deps} + +[env:heltec_v4_r8_kiss_modem] +extends = Heltec_v4_r8 +build_src_filter = ${Heltec_v4_r8.build_src_filter} + +<../examples/kiss_modem/> + +[env:heltec_v4_r8_tft_kiss_modem] +extends = heltec_v4_r8_tft +build_src_filter = ${heltec_v4_r8_tft.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/heltec_v4_r8/target.cpp b/variants/heltec_v4_r8/target.cpp new file mode 100644 index 0000000000..0b38531e3c --- /dev/null +++ b/variants/heltec_v4_r8/target.cpp @@ -0,0 +1,45 @@ +#include <Arduino.h> +#include "target.h" + +HeltecV4R8Board board; + +#if defined(P_LORA_SCLK) + static SPIClass spi; + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +#else + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); +#endif + +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#if ENV_INCLUDE_GPS + #include <helpers/sensors/MicroNMEALocationProvider.h> + MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock, GPS_RESET, GPS_EN, &board.periph_power); + EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else + EnvironmentSensorManager sensors; +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display(&board.periph_power); + MomentaryButton user_btn(PIN_USER_BTN, 1000, true); +#endif + +bool radio_init() { + fallback_clock.begin(); + rtc_clock.begin(Wire); + +#if defined(P_LORA_SCLK) + return radio.std_init(&spi); +#else + return radio.std_init(); +#endif +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); +} diff --git a/variants/heltec_v4_r8/target.h b/variants/heltec_v4_r8/target.h new file mode 100644 index 0000000000..2d1d7a5bb4 --- /dev/null +++ b/variants/heltec_v4_r8/target.h @@ -0,0 +1,31 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <HeltecV4R8Board.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/SensorManager.h> +#include <helpers/radiolib/CustomSX1262Wrapper.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <helpers/sensors/EnvironmentSensorManager.h> +#ifdef DISPLAY_CLASS + #ifdef HELTEC_V4_R8_OLED + #include <helpers/ui/SSD1306Display.h> + #elif defined(HELTEC_V4_R8_TFT) + #include <helpers/ui/ST7789LCDDisplay.h> + #endif + #include <helpers/ui/MomentaryButton.h> +#endif + +extern HeltecV4R8Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +#ifdef DISPLAY_CLASS + extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/heltec_wireless_paper/platformio.ini b/variants/heltec_wireless_paper/platformio.ini index 48723d169a..55ed62b34f 100644 --- a/variants/heltec_wireless_paper/platformio.ini +++ b/variants/heltec_wireless_paper/platformio.ini @@ -73,6 +73,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=E213Display -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${Heltec_Wireless_Paper_base.build_src_filter} +<helpers/ui/E213Display.cpp> +<helpers/esp32/*.cpp> diff --git a/variants/ikoka_handheld_nrf/platformio.ini b/variants/ikoka_handheld_nrf/platformio.ini index 51b602e403..1c6f17c24c 100644 --- a/variants/ikoka_handheld_nrf/platformio.ini +++ b/variants/ikoka_handheld_nrf/platformio.ini @@ -74,6 +74,7 @@ extends = ikoka_handheld_nrf board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld build_flags = ${ikoka_handheld_nrf_ssd1306_companion.build_flags} -D LORA_TX_POWER=20 + -D ENABLE_USB_INTERFACE build_src_filter = ${ikoka_handheld_nrf_ssd1306_companion.build_src_filter} [env:ikoka_handheld_nrf_e22_30dbm_096_rotated_companion_radio_usb] @@ -82,6 +83,7 @@ board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld build_flags = ${ikoka_handheld_nrf_ssd1306_companion.build_flags} -D LORA_TX_POWER=20 -D DISPLAY_ROTATION=2 + -D ENABLE_USB_INTERFACE build_src_filter = ${ikoka_handheld_nrf_ssd1306_companion.build_src_filter} [env:ikoka_handheld_nrf_e22_30dbm_repeater] diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index e72f83ce0d..87c6240eec 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -31,6 +31,8 @@ debug_tool = jlink upload_protocol = nrfutil lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} +build_src_filter = ${nrf52_base.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> [ikoka_nano_nrf_e22_22dbm] extends = ikoka_nano_nrf @@ -42,7 +44,6 @@ build_flags = build_src_filter = ${ikoka_nano_nrf.build_src_filter} +<helpers/*.cpp> +<helpers/sensors> - +<helpers/ui/NullDisplayDriver.cpp> +<../variants/ikoka_nano_nrf> [ikoka_nano_nrf_e22_30dbm] @@ -56,7 +57,6 @@ build_flags = build_src_filter = ${ikoka_nano_nrf.build_src_filter} +<helpers/*.cpp> +<helpers/sensors> - +<helpers/ui/NullDisplayDriver.cpp> +<../variants/ikoka_nano_nrf> [ikoka_nano_nrf_e22_33dbm] @@ -70,7 +70,6 @@ build_flags = build_src_filter = ${ikoka_nano_nrf.build_src_filter} +<helpers/*.cpp> +<helpers/sensors> - +<helpers/ui/NullDisplayDriver.cpp> +<../variants/ikoka_nano_nrf> [ikoka_nano_nrf_companion_radio_ble] @@ -106,6 +105,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -I examples/companion_radio/ui-new -D QSPIFLASH=1 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ikoka_nano_nrf.build_src_filter} diff --git a/variants/ikoka_stick_nrf/platformio.ini b/variants/ikoka_stick_nrf/platformio.ini index 06e39e84c3..c8184fc405 100644 --- a/variants/ikoka_stick_nrf/platformio.ini +++ b/variants/ikoka_stick_nrf/platformio.ini @@ -111,6 +111,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -I examples/companion_radio/ui-new -D QSPIFLASH=1 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ikoka_stick_nrf.build_src_filter} diff --git a/variants/keepteen_lt1/KeepteenLT1Board.h b/variants/keepteen_lt1/KeepteenLT1Board.h index 752b27e752..25d4d86762 100644 --- a/variants/keepteen_lt1/KeepteenLT1Board.h +++ b/variants/keepteen_lt1/KeepteenLT1Board.h @@ -37,8 +37,4 @@ class KeepteenLT1Board : public NRF52Board { digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED off } #endif - - void powerOff() override { - sd_power_system_off(); - } }; diff --git a/variants/keepteen_lt1/platformio.ini b/variants/keepteen_lt1/platformio.ini index 27cf809e08..11dc214b09 100644 --- a/variants/keepteen_lt1/platformio.ini +++ b/variants/keepteen_lt1/platformio.ini @@ -66,6 +66,7 @@ build_flags = ${KeepteenLT1.build_flags} -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${KeepteenLT1.build_src_filter} diff --git a/variants/lilygo_t3s3/platformio.ini b/variants/lilygo_t3s3/platformio.ini index 54990117cc..966235c661 100644 --- a/variants/lilygo_t3s3/platformio.ini +++ b/variants/lilygo_t3s3/platformio.ini @@ -140,6 +140,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} diff --git a/variants/lilygo_t3s3_sx1276/platformio.ini b/variants/lilygo_t3s3_sx1276/platformio.ini index 5df632020e..c6497dcb13 100644 --- a/variants/lilygo_t3s3_sx1276/platformio.ini +++ b/variants/lilygo_t3s3_sx1276/platformio.ini @@ -21,8 +21,8 @@ build_flags = -D RADIO_CLASS=CustomSX1276 -D WRAPPER_CLASS=CustomSX1276Wrapper -D SX127X_CURRENT_LIMIT=120 - -D SX176X_RXEN=21 - -D SX176X_TXEN=10 + -D SX127X_RXEN=21 + -D SX127X_TXEN=10 -D LORA_TX_POWER=20 build_src_filter = ${esp32_base.build_src_filter} +<../variants/lilygo_t3s3_sx1276> @@ -138,6 +138,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE build_src_filter = ${LilyGo_T3S3_sx1276.build_src_filter} +<helpers/ui/SSD1306Display.cpp> +<helpers/ui/MomentaryButton.cpp> diff --git a/variants/lilygo_t_impulse_plus/TImpulsePlusBoard.h b/variants/lilygo_t_impulse_plus/TImpulsePlusBoard.h index ea1782cf7a..30bbc3a5cf 100644 --- a/variants/lilygo_t_impulse_plus/TImpulsePlusBoard.h +++ b/variants/lilygo_t_impulse_plus/TImpulsePlusBoard.h @@ -47,13 +47,11 @@ class TImpulsePlusBoard : public NRF52BoardDCDC { return "LilyGo T-Impulse-Plus"; } - void powerOff() override { + void shutdownPeripherals() override { + // power off system + NRF52Board::shutdownPeripherals(); // turn off 3.3v digitalWrite(RT9080_EN, LOW); - - // power off system - sd_power_system_off(); - } }; diff --git a/variants/lilygo_tbeam_1w/platformio.ini b/variants/lilygo_tbeam_1w/platformio.ini index c7a595520e..0f604fac40 100644 --- a/variants/lilygo_tbeam_1w/platformio.ini +++ b/variants/lilygo_tbeam_1w/platformio.ini @@ -114,6 +114,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D PERSISTANT_GPS=1 -D ENV_SKIP_GPS_DETECT=1 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TBeam_1W.build_src_filter} diff --git a/variants/lilygo_tbeam_SX1276/platformio.ini b/variants/lilygo_tbeam_SX1276/platformio.ini index cb25903ce9..f5f490479c 100644 --- a/variants/lilygo_tbeam_SX1276/platformio.ini +++ b/variants/lilygo_tbeam_SX1276/platformio.ini @@ -45,7 +45,7 @@ build_flags = ${LilyGo_TBeam_SX1276.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=160 - -D MAX_GROUP_CHANNELS=8 + -D MAX_GROUP_CHANNELS=40 -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 -D OFFLINE_QUEUE_SIZE=128 diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index 0294615651..8bfc4093ac 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -18,6 +18,7 @@ build_flags = -D RADIO_CLASS=CustomSX1262 -D WRAPPER_CLASS=CustomSX1262Wrapper -D DISPLAY_CLASS=SH1106Display + -D DISPLAY_ADDRESS=0x3D -D LORA_TX_POWER=22 -D P_LORA_TX_LED=6 -D PIN_BOARD_SDA=17 diff --git a/variants/lilygo_tdeck/TDeckBoard.h b/variants/lilygo_tdeck/TDeckBoard.h index 7ed007af9c..e2844360df 100644 --- a/variants/lilygo_tdeck/TDeckBoard.h +++ b/variants/lilygo_tdeck/TDeckBoard.h @@ -3,7 +3,6 @@ #include <Wire.h> #include <Arduino.h> #include "helpers/ESP32Board.h" -#include <driver/rtc_io.h> #define PIN_VBAT_READ 4 #define BATTERY_SAMPLES 8 @@ -23,29 +22,6 @@ class TDeckBoard : public ESP32Board { } #endif - void enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - uint16_t getBattMilliVolts() { #if defined(PIN_VBAT_READ) && defined(ADC_MULTIPLIER) analogReadResolution(12); diff --git a/variants/lilygo_tdeck/platformio.ini b/variants/lilygo_tdeck/platformio.ini index 745d8ff53d..00571db93b 100644 --- a/variants/lilygo_tdeck/platformio.ini +++ b/variants/lilygo_tdeck/platformio.ini @@ -71,6 +71,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${LilyGo_TDeck.build_src_filter} +<helpers/esp32/*.cpp> +<helpers/ui/MomentaryButton.cpp> diff --git a/variants/lilygo_techo/TechoBoard.h b/variants/lilygo_techo/TechoBoard.h index e560cd14b4..867fc24cf9 100644 --- a/variants/lilygo_techo/TechoBoard.h +++ b/variants/lilygo_techo/TechoBoard.h @@ -23,7 +23,8 @@ class TechoBoard : public NRF52BoardDCDC { return "LilyGo T-Echo"; } - void powerOff() override { + void shutdownPeripherals() override { + NRF52Board::shutdownPeripherals(); #ifdef LED_RED digitalWrite(LED_RED, HIGH); #endif @@ -39,6 +40,5 @@ class TechoBoard : public NRF52BoardDCDC { #ifdef PIN_PWR_EN digitalWrite(PIN_PWR_EN, LOW); #endif - sd_power_system_off(); } }; diff --git a/variants/lilygo_techo/platformio.ini b/variants/lilygo_techo/platformio.ini index 5df77f95cb..81da2e48c3 100644 --- a/variants/lilygo_techo/platformio.ini +++ b/variants/lilygo_techo/platformio.ini @@ -120,6 +120,7 @@ build_flags = -D UI_SENSORS_PAGE=1 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 -D QSPIFLASH=1 + -D ENABLE_USB_INTERFACE build_src_filter = ${LilyGo_T-Echo.build_src_filter} +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-new/*.cpp> diff --git a/variants/lilygo_techo_card/TechoCardBoard.cpp b/variants/lilygo_techo_card/TechoCardBoard.cpp index f0dcef312a..8a3a54b160 100644 --- a/variants/lilygo_techo_card/TechoCardBoard.cpp +++ b/variants/lilygo_techo_card/TechoCardBoard.cpp @@ -87,11 +87,11 @@ void TechoCardBoard::turnOffLeds() { } } -void TechoCardBoard::powerOff() { +void TechoCardBoard::shutdownPeripherals() { nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); turnOffLeds(); digitalWrite(PIN_PWR_EN, LOW); - sd_power_system_off(); + NRF52Board::shutdownPeripherals(); } #endif diff --git a/variants/lilygo_techo_card/TechoCardBoard.h b/variants/lilygo_techo_card/TechoCardBoard.h index 8a2913a63b..a2ee3ea1e8 100644 --- a/variants/lilygo_techo_card/TechoCardBoard.h +++ b/variants/lilygo_techo_card/TechoCardBoard.h @@ -28,7 +28,7 @@ class TechoCardBoard : public NRF52BoardDCDC { return "LilyGo T-Echo Card"; } - void powerOff() override; + void shutdownPeripherals() override; void toggleTorch(); void turnOffLeds(); diff --git a/variants/lilygo_techo_card/platformio.ini b/variants/lilygo_techo_card/platformio.ini index 07bcebfe41..4ebf43da9d 100644 --- a/variants/lilygo_techo_card/platformio.ini +++ b/variants/lilygo_techo_card/platformio.ini @@ -23,7 +23,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<helpers/*.cpp> +<TechoCardBoard.cpp> +<helpers/sensors/EnvironmentSensorManager.cpp> - +<helpers/ui/U8g2Display.h> + +<helpers/ui/U8g2Display.cpp> +<helpers/ui/MomentaryButton.cpp> +<../variants/lilygo_techo_card> lib_deps = @@ -110,6 +110,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 + -D ENABLE_USB_INTERFACE build_src_filter = ${LilyGo_T-Echo_Card.build_src_filter} +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-tiny/*.cpp> diff --git a/variants/lilygo_techo_lite/TechoBoard.cpp b/variants/lilygo_techo_lite/TechoBoard.cpp index a11d31b27c..e0b69f9857 100644 --- a/variants/lilygo_techo_lite/TechoBoard.cpp +++ b/variants/lilygo_techo_lite/TechoBoard.cpp @@ -6,7 +6,7 @@ #ifdef LILYGO_TECHO void TechoBoard::begin() { - NRF52Board::begin(); + NRF52BoardDCDC::begin(); // Configure battery measurement control BEFORE Wire.begin() // to ensure P0.02 is not claimed by another peripheral diff --git a/variants/lilygo_techo_lite/TechoBoard.h b/variants/lilygo_techo_lite/TechoBoard.h index 7a43fd8383..1e5651e78b 100644 --- a/variants/lilygo_techo_lite/TechoBoard.h +++ b/variants/lilygo_techo_lite/TechoBoard.h @@ -21,7 +21,9 @@ class TechoBoard : public NRF52BoardDCDC { return "LilyGo T-Echo Lite"; } - void powerOff() override { + void shutdownPeripherals() override { + NRF52Board::shutdownPeripherals(); + digitalWrite(PIN_VBAT_MEAS_EN, LOW); #ifdef LED_RED digitalWrite(LED_RED, LOW); @@ -38,6 +40,5 @@ class TechoBoard : public NRF52BoardDCDC { #ifdef PIN_PWR_EN digitalWrite(PIN_PWR_EN, LOW); #endif - sd_power_system_off(); } }; \ No newline at end of file diff --git a/variants/lilygo_techo_lite/platformio.ini b/variants/lilygo_techo_lite/platformio.ini index 4b5edf6918..9ec73d59a1 100644 --- a/variants/lilygo_techo_lite/platformio.ini +++ b/variants/lilygo_techo_lite/platformio.ini @@ -15,6 +15,7 @@ build_flags = ${nrf52_base.build_flags} -D SX126X_DIO3_TCXO_VOLTAGE=1.8 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 + -D SX126X_USE_REGULATOR_LDO=1 -D P_LORA_TX_LED=LED_GREEN -D DISABLE_DIAGNOSTIC_OUTPUT -D ENV_INCLUDE_GPS=1 @@ -173,6 +174,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D UI_RECENT_LIST_SIZE=9 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${nrf52_base.build_src_filter} diff --git a/variants/lilygo_teth_elite/platformio.ini b/variants/lilygo_teth_elite/platformio.ini index 97728f8b4c..ee1b987953 100644 --- a/variants/lilygo_teth_elite/platformio.ini +++ b/variants/lilygo_teth_elite/platformio.ini @@ -72,6 +72,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TETH_Elite_sx1262.build_src_filter} diff --git a/variants/lilygo_tlora_v2_1/platformio.ini b/variants/lilygo_tlora_v2_1/platformio.ini index 3673166861..1aea74d285 100644 --- a/variants/lilygo_tlora_v2_1/platformio.ini +++ b/variants/lilygo_tlora_v2_1/platformio.ini @@ -77,6 +77,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=160 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} diff --git a/variants/m5stack_unit_c6l/platformio.ini b/variants/m5stack_unit_c6l/platformio.ini index 94083eb486..ea4d852d65 100644 --- a/variants/m5stack_unit_c6l/platformio.ini +++ b/variants/m5stack_unit_c6l/platformio.ini @@ -2,6 +2,7 @@ extends = esp32c6_base board = esp32-c6-devkitm-1 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit +board_build.flash_mode = dio ; board manifest defaults to qio, which causes a boot crash-loop on this module build_flags = ${esp32c6_base.build_flags} ${sensor_base.build_flags} @@ -97,6 +98,7 @@ build_flags = ${M5Stack_Unit_C6L.build_flags} -D OFFLINE_QUEUE_SIZE=256 -D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_MODE=1 + -D ENABLE_USB_INTERFACE build_src_filter = ${M5Stack_Unit_C6L.build_src_filter} +<helpers/esp32/*.cpp> -<helpers/esp32/ESPNOWRadio.cpp> diff --git a/variants/mesh_pocket/MeshPocket.h b/variants/mesh_pocket/MeshPocket.h index 478bd56d71..e215eb7768 100644 --- a/variants/mesh_pocket/MeshPocket.h +++ b/variants/mesh_pocket/MeshPocket.h @@ -32,8 +32,4 @@ class HeltecMeshPocket : public NRF52BoardDCDC { const char* getManufacturerName() const override { return "Heltec MeshPocket"; } - - void powerOff() override { - sd_power_system_off(); - } }; diff --git a/variants/mesh_pocket/platformio.ini b/variants/mesh_pocket/platformio.ini index 52a0d83523..a6f823dbf7 100644 --- a/variants/mesh_pocket/platformio.ini +++ b/variants/mesh_pocket/platformio.ini @@ -1,7 +1,6 @@ [Mesh_pocket] extends = nrf52_base board = heltec_mesh_pocket -platform_packages = framework-arduinoadafruitnrf52 board_build.ldscript = boards/nrf52840_s140_v6.ld build_flags = ${nrf52_base.build_flags} -I src/helpers/nrf52 @@ -32,7 +31,6 @@ lib_deps = stevemarple/MicroNMEA @ ^2.0.6 zinggjm/GxEPD2 @ 1.6.2 bakercp/CRC32 @ ^2.0.0 - debug_tool = jlink upload_protocol = nrfutil @@ -40,7 +38,6 @@ upload_protocol = nrfutil extends = Mesh_pocket build_src_filter = ${Mesh_pocket.build_src_filter} +<../examples/simple_repeater> - build_flags = ${Mesh_pocket.build_flags} -D ADVERT_NAME='"Heltec_Mesh_Pocket Repeater"' @@ -99,6 +96,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D AUTO_OFF_MILLIS=0 + -D ENABLE_USB_INTERFACE ; -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 diff --git a/variants/meshadventurer/platformio.ini b/variants/meshadventurer/platformio.ini index f85be23885..4af0f7f705 100644 --- a/variants/meshadventurer/platformio.ini +++ b/variants/meshadventurer/platformio.ini @@ -186,6 +186,7 @@ build_flags = -D MAX_CONTACTS=160 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=128 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 lib_deps = @@ -209,8 +210,8 @@ build_flags = -D BLE_PIN_CODE=123456 -D BLE_DEBUG_LOGGING=1 -D OFFLINE_QUEUE_SIZE=128 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 lib_deps = ${Meshadventurer.lib_deps} densaugeo/base64 @ ~1.4.0 @@ -266,6 +267,7 @@ build_flags = -D MAX_CONTACTS=160 -D OFFLINE_QUEUE_SIZE=128 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 lib_deps = @@ -289,8 +291,8 @@ build_flags = -D BLE_PIN_CODE=123456 -D BLE_DEBUG_LOGGING=1 -D OFFLINE_QUEUE_SIZE=128 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 lib_deps = ${Meshadventurer.lib_deps} densaugeo/base64 @ ~1.4.0 diff --git a/variants/meshnology_w12/MeshnologyW12Board.cpp b/variants/meshnology_w12/MeshnologyW12Board.cpp new file mode 100644 index 0000000000..25c0d4f1a8 --- /dev/null +++ b/variants/meshnology_w12/MeshnologyW12Board.cpp @@ -0,0 +1,83 @@ +#include "MeshnologyW12Board.h" + +void MeshnologyW12Board::begin() { + ESP32Board::begin(); + + pinMode(PIN_ADC_CTRL, OUTPUT); + digitalWrite(PIN_ADC_CTRL, LOW); // Disable battery sense until required + + pinMode(P_LORA_LF_PA_POWER, OUTPUT); + digitalWrite(P_LORA_LF_PA_POWER, HIGH); // PA_EN_M — power the GC1109 FEM + + pinMode(P_LORA_HF_PA_POWER, OUTPUT); + digitalWrite(P_LORA_HF_PA_POWER, LOW); // PA_EN_G — disable the 2.4GHz FEM + + delay(100); // give the GC1109 some time to start + + periph_power.begin(); + esp_reset_reason_t reason = esp_reset_reason(); + if (reason == ESP_RST_DEEPSLEEP) { + long wakeup_source = esp_sleep_get_ext1_wakeup_status(); + if (wakeup_source & (1 << P_LORA_DIO_1)) { // received a LoRa packet (while in deep sleep) + startup_reason = BD_STARTUP_RX_PACKET; + } + + rtc_gpio_hold_dis((gpio_num_t)P_LORA_NSS); + rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_1); + } + } + + void MeshnologyW12Board::onBeforeTransmit(void) { + neopixelWrite(NEOPIXEL_LED, NEOPIXEL_BRIGHTNESS, NEOPIXEL_BRIGHTNESS, NEOPIXEL_BRIGHTNESS); // turn TX neopixel on (White) + } + + void MeshnologyW12Board::onAfterTransmit(void) { + neopixelWrite(NEOPIXEL_LED, 0, 0, 0); // turn TX neopixel off + } + + void MeshnologyW12Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + + // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep + rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); + rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); + + rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); + + if (pin_wake_btn < 0) { + esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet + } else { + esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn + } + + if (secs > 0) { + esp_sleep_enable_timer_wakeup(secs * 1000000); + } + + // Finally set ESP32 into sleep + esp_deep_sleep_start(); // CPU halts here and never returns! + } + + void MeshnologyW12Board::powerOff() { + enterDeepSleep(0); + } + + uint16_t MeshnologyW12Board::getBattMilliVolts() { + analogReadResolution(12); + analogSetAttenuation(ADC_11db); + digitalWrite(PIN_ADC_CTRL, HIGH); + delay(10); + uint32_t raw = 0; + for (int i = 0; i < 8; i++) { + raw += analogRead(PIN_VBAT_READ); + } + raw = raw / 8; + + digitalWrite(PIN_ADC_CTRL, LOW); + + return (adc_mult * (3.3 / 4096.0) * raw) * 1000; + } + + const char* MeshnologyW12Board::getManufacturerName() const { + return "Meshnology W12"; + } \ No newline at end of file diff --git a/variants/meshnology_w12/MeshnologyW12Board.h b/variants/meshnology_w12/MeshnologyW12Board.h new file mode 100644 index 0000000000..85bec99041 --- /dev/null +++ b/variants/meshnology_w12/MeshnologyW12Board.h @@ -0,0 +1,37 @@ +#pragma once + +#include <Arduino.h> +#include <helpers/RefCountedDigitalPin.h> +#include <helpers/ESP32Board.h> +#include <driver/rtc_io.h> + +#ifndef ADC_MULTIPLIER + #define ADC_MULTIPLIER 5.42 +#endif + +class MeshnologyW12Board : public ESP32Board { + +protected: + float adc_mult = ADC_MULTIPLIER; + +public: + RefCountedDigitalPin periph_power; + MeshnologyW12Board() : periph_power(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE) { } + + void begin(); + void onBeforeTransmit(void) override; + void onAfterTransmit(void) override; + void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); + void powerOff() override; + uint16_t getBattMilliVolts() override; + bool setAdcMultiplier(float multiplier) override { + if (multiplier == 0.0f) { + adc_mult = ADC_MULTIPLIER; + } else { + adc_mult = multiplier; + } + return true; + } + float getAdcMultiplier() const override { return adc_mult; } + const char* getManufacturerName() const override; +}; diff --git a/variants/meshnology_w12/pins_arduino.h b/variants/meshnology_w12/pins_arduino.h new file mode 100644 index 0000000000..5cfb36970b --- /dev/null +++ b/variants/meshnology_w12/pins_arduino.h @@ -0,0 +1,69 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <stdint.h> + +static const uint8_t LED_BUILTIN = -1; +#define BUILTIN_LED LED_BUILTIN // backward compatibility +#define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN + +static const uint8_t TX = 43; +static const uint8_t RX = 44; + +static const uint8_t SDA = 3; +static const uint8_t SCL = 4; + +static const uint8_t SS = 8; +static const uint8_t MOSI = 10; +static const uint8_t MISO = 11; +static const uint8_t SCK = 9; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 5; +static const uint8_t A5 = 6; +static const uint8_t A6 = 7; +static const uint8_t A7 = 8; +static const uint8_t A8 = 9; +static const uint8_t A9 = 10; +static const uint8_t A10 = 11; +static const uint8_t A11 = 12; +static const uint8_t A12 = 13; +static const uint8_t A13 = 14; +static const uint8_t A14 = 15; +static const uint8_t A15 = 16; +static const uint8_t A16 = 17; +static const uint8_t A17 = 18; +static const uint8_t A18 = 19; +static const uint8_t A19 = 20; + +static const uint8_t T1 = 1; +static const uint8_t T2 = 2; +static const uint8_t T3 = 3; +static const uint8_t T4 = 4; +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T7 = 7; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; +static const uint8_t T10 = 10; +static const uint8_t T11 = 11; +static const uint8_t T12 = 12; +static const uint8_t T13 = 13; +static const uint8_t T14 = 14; + +static const uint8_t Vext = 45; +static const uint8_t LED = -1; +static const uint8_t RST_OLED = 21; +static const uint8_t SCL_OLED = 18; +static const uint8_t SDA_OLED = 17; + +static const uint8_t RST_LoRa = 12; +static const uint8_t BUSY_LoRa = 13; +static const uint8_t DIO0 = 14; + + + +#endif /* Pins_Arduino_h */ \ No newline at end of file diff --git a/variants/meshnology_w12/platformio.ini b/variants/meshnology_w12/platformio.ini new file mode 100644 index 0000000000..1168f10a0f --- /dev/null +++ b/variants/meshnology_w12/platformio.ini @@ -0,0 +1,216 @@ +[meshnology_w12] +extends = esp32_base +board = meshnology_w12 +build_flags = + ${esp32_base.build_flags} + ${sensor_base.build_flags} + -I variants/meshnology_w12 + -D MESHNOLOGY_W12 + -D ESP32_CPU_FREQ=80 + -D RADIO_CLASS=CustomLR2021 + -D WRAPPER_CLASS=CustomLR2021Wrapper + -D USE_LR2021 + -D NEOPIXEL_LED=46 + -D NEOPIXEL_BRIGHTNESS=64 + -D P_LORA_DIO_1=14 + -D LR2021_IRQ_DIO=8 ; GPIO14 is connected to LR2021 DIO8 + -D P_LORA_NSS=8 + -D P_LORA_SCLK=9 + -D P_LORA_MOSI=10 + -D P_LORA_MISO=11 + -D P_LORA_RESET=12 + -D P_LORA_BUSY=13 + -D LR2021_TCXO_VOLTAGE=0.0f ; this board has no tcxo + -D RF_SWITCH_TABLE ; used below in commented code for the RF switch table. + -D P_LORA_LF_PA_POWER=4 ; PA_EN_M - power enable for the GC1109 868/915 PA + -D P_LORA_HF_PA_POWER=3 ; PA_EN_G - power enable for RFX2402E 2.4G PA + -D PIN_USER_BTN=0 + -D PIN_VEXT_EN=45 + -D PIN_VEXT_EN_ACTIVE=HIGH + -D LORA_TX_POWER=4 + -D MAX_LORA_TX_POWER=4 ; GC1109 datasheet says max input at TX port is +5dbm, confirmed full saturation seems to occur at around 3-4dbm + -D PIN_GPS_RX=38 + -D PIN_GPS_TX=39 + -D PIN_GPS_RESET=42 + -D PIN_GPS_RESET_ACTIVE=LOW + -D PIN_GPS_EN=48 + -D PIN_GPS_EN_ACTIVE=LOW + ; -D ENV_INCLUDE_GPS=1 + -D PIN_VBAT_READ=1 + -D PIN_ADC_CTRL=2 + -D PIN_BOARD_SDA=17 + -D PIN_BOARD_SCL=18 + -D PIN_RESET=47 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/meshnology_w12> + +<helpers/sensors> +lib_deps = + ${esp32_base.lib_deps} + ${sensor_base.lib_deps} + +[env:meshnology_w12_repeater] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Meshnology W12 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${meshnology_w12.lib_deps} + ${esp32_ota.lib_deps} + bakercp/CRC32 @ ^2.0.0 + +[env:meshnology_w12_repeater_bridge_espnow] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"ESPNow Bridge"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D WITH_ESPNOW_BRIDGE=1 + ; -D BRIDGE_DEBUG=1 + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/bridges/ESPNowBridge.cpp> + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${meshnology_w12.lib_deps} + ${esp32_ota.lib_deps} + +[env:meshnology_w12_room_server] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Meshnology W12 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_room_server> +lib_deps = + ${meshnology_w12.lib_deps} + ${esp32_ota.lib_deps} + +[env:meshnology_w12_terminal_chat] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=1 + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${meshnology_w12.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:meshnology_w12_companion_radio_usb] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=SSD1306Display +; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 +; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${meshnology_w12.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:meshnology_w12_companion_radio_ble] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=SSD1306Display + -D BLE_PIN_CODE=123456 ; dynamic, random PIN + ; -D AUTO_SHUTDOWN_MILLIVOLTS=3400 ; disabled by default, otherwise reading bounce causes shutdown when there's no battery connected. + ; -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${meshnology_w12.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:meshnology_w12_companion_radio_wifi] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D DISPLAY_CLASS=SSD1306Display + ; -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${meshnology_w12.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:meshnology_w12_sensor] +extends = meshnology_w12 +build_flags = + ${meshnology_w12.build_flags} + -D ADVERT_NAME='"Meshnology W12 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ENV_PIN_SDA=3 + -D ENV_PIN_SCL=4 + -D DISPLAY_CLASS=SSD1306Display + ; -D MESH_PACKET_LOGGING=1 + ; -D MESH_DEBUG=1 +build_src_filter = ${meshnology_w12.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_sensor> +lib_deps = + ${meshnology_w12.lib_deps} + ${esp32_ota.lib_deps} + +[env:meshnology_w12_kiss_modem] +extends = meshnology_w12 +build_src_filter = ${meshnology_w12.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/meshnology_w12/target.cpp b/variants/meshnology_w12/target.cpp new file mode 100644 index 0000000000..bf04ba3647 --- /dev/null +++ b/variants/meshnology_w12/target.cpp @@ -0,0 +1,73 @@ +#include <Arduino.h> +#include "target.h" + +MeshnologyW12Board board; + +#if defined(P_LORA_SCLK) + static SPIClass spi; + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +#else + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); +#endif + +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#if ENV_INCLUDE_GPS + #include <helpers/sensors/MicroNMEALocationProvider.h> + MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); + EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else + EnvironmentSensorManager sensors; +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display(NULL); + MomentaryButton user_btn(PIN_USER_BTN, 1000, true); +#endif + +const uint32_t rfswitch_dios[] = { + RADIOLIB_LR2021_DIO5, // RFX2402E 2.4G_TX_EN + RADIOLIB_LR2021_DIO6, // RFX2402E 2.4G_RX_EN + RADIOLIB_LR2021_DIO9, // GC1109 CTX (Transmit mode) + RADIOLIB_LR2021_DIO10, // GC1109 CPS (Bypass mode) + RADIOLIB_LR2021_DIO11, // GC1109 CSD (Shutdown) +}; + +static const Module::RfSwitchMode_t rfswitch_table[] = { + // DIO5 DIO6 DIO9 DIO10 DIO11 + { LR2021::MODE_STBY, { LOW, LOW, LOW, LOW, LOW } }, // everything off + { LR2021::MODE_RX, { LOW, LOW, LOW, LOW, HIGH } }, // rx_lf: GC1109 LNA + { LR2021::MODE_TX, { LOW, LOW, HIGH, HIGH, HIGH } }, // tx_lf: GC1109 full PA + { LR2021::MODE_RX_HF, { LOW, HIGH, LOW, LOW, LOW } }, // rx_hf: 2G4 LNA, GC1109 off + { LR2021::MODE_TX_HF, { HIGH, LOW, LOW, LOW, LOW } }, // tx_hf: 2G4 PA, GC1109 off + END_OF_MODE_TABLE, +}; + + +bool radio_init() { + fallback_clock.begin(); + rtc_clock.begin(Wire); + +#if defined(P_LORA_SCLK) + int err = radio.std_init(&spi); + if (err != 1) return err; +#else + int err = radio.std_init(); + if (err != 1) return err; +#endif + +#ifdef RF_SWITCH_TABLE + radio.setRfSwitchTable(rfswitch_dios, rfswitch_table); +#endif + + return true; +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} + diff --git a/variants/meshnology_w12/target.h b/variants/meshnology_w12/target.h new file mode 100644 index 0000000000..1bf8876b28 --- /dev/null +++ b/variants/meshnology_w12/target.h @@ -0,0 +1,28 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <MeshnologyW12Board.h> +#include <helpers/radiolib/CustomLR2021Wrapper.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/SensorManager.h> +#include <helpers/sensors/EnvironmentSensorManager.h> +#ifdef DISPLAY_CLASS + #include <helpers/ui/SSD1306Display.h> + #include <helpers/ui/MomentaryButton.h> +#endif + +extern MeshnologyW12Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +#ifdef DISPLAY_CLASS + extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); + diff --git a/variants/meshtiny/MeshtinyBoard.h b/variants/meshtiny/MeshtinyBoard.h index b69c0e419c..67a521fe97 100644 --- a/variants/meshtiny/MeshtinyBoard.h +++ b/variants/meshtiny/MeshtinyBoard.h @@ -60,7 +60,7 @@ class MeshtinyBoard : public NRF52BoardDCDC { nrf_gpio_cfg_sense_input(g_ADigitalPinMap[PIN_USER_BTN], NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); #endif - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/meshtiny/platformio.ini b/variants/meshtiny/platformio.ini index c5439c88f4..c0a3c5f94e 100644 --- a/variants/meshtiny/platformio.ini +++ b/variants/meshtiny/platformio.ini @@ -36,6 +36,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Meshtiny.build_src_filter} diff --git a/variants/meshtracker_x1/MeshTrackerX1Board.cpp b/variants/meshtracker_x1/MeshTrackerX1Board.cpp new file mode 100644 index 0000000000..56e537a23e --- /dev/null +++ b/variants/meshtracker_x1/MeshTrackerX1Board.cpp @@ -0,0 +1,23 @@ +#include <Arduino.h> +#include <Wire.h> + +#include "MeshTrackerX1Board.h" + +void MeshTrackerX1Board::begin() { + NRF52BoardDCDC::begin(); + btn_prev_state = LOW; // button is active HIGH + +#ifdef BUTTON_PIN + pinMode(BATTERY_PIN, INPUT); + pinMode(BUTTON_PIN, INPUT_PULLDOWN); + pinMode(LED_PIN, OUTPUT); +#endif + +#if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) + Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); +#endif + + Wire.begin(); + + delay(10); // give lr2021 some time to power up +} diff --git a/variants/meshtracker_x1/MeshTrackerX1Board.h b/variants/meshtracker_x1/MeshTrackerX1Board.h new file mode 100644 index 0000000000..51f022e0b8 --- /dev/null +++ b/variants/meshtracker_x1/MeshTrackerX1Board.h @@ -0,0 +1,87 @@ +#pragma once + +#include <MeshCore.h> +#include <Arduino.h> +#include <helpers/NRF52Board.h> + +class MeshTrackerX1Board : public NRF52BoardDCDC { +protected: + uint8_t btn_prev_state; + +public: + MeshTrackerX1Board() : NRF52Board("X1_OTA") {} + void begin(); + + uint16_t getBattMilliVolts() override { + #ifdef BATTERY_PIN + #ifdef PIN_BAT_ADC_EN + digitalWrite(PIN_BAT_ADC_EN, HIGH); + #endif + analogReference(AR_INTERNAL_3_0); + analogReadResolution(12); + delay(10); + float volts = (analogRead(BATTERY_PIN) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096; + + analogReference(AR_DEFAULT); // put back to default + analogReadResolution(10); + + return volts * 1000; + #else + return 0; + #endif + } + + const char* getManufacturerName() const override { + return "Seeed SenseCAP MeshTracker X1"; + } + + int buttonStateChanged() { + #ifdef BUTTON_PIN + uint8_t v = digitalRead(BUTTON_PIN); + if (v != btn_prev_state) { + btn_prev_state = v; + return (v == USER_BTN_PRESSED) ? 1 : -1; + } + #endif + return 0; + } + + void powerOff() override { + #ifdef HAS_GPS + digitalWrite(GPS_VRTC_EN, LOW); + digitalWrite(GPS_RESET, LOW); + digitalWrite(GPS_SLEEP_INT, LOW); + digitalWrite(GPS_RTC_INT, LOW); + digitalWrite(GPS_EN, LOW); + #endif + + #ifdef PIN_DRV_EN + digitalWrite(PIN_DRV_EN, LOW); + #endif + + #ifdef PIN_BAT_ADC_EN + digitalWrite(PIN_BAT_ADC_EN, LOW); + #endif + + #ifdef PIN_3V3_EN + digitalWrite(PIN_3V3_EN, LOW); + #endif + + // set led on and wait for button release before poweroff + #ifdef LED_PIN + digitalWrite(LED_PIN, HIGH); + #endif + #ifdef BUTTON_PIN + while(digitalRead(BUTTON_PIN)); + #endif + #ifdef LED_PIN + digitalWrite(LED_PIN, LOW); + #endif + + #ifdef BUTTON_PIN + nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_PULLDOWN, NRF_GPIO_PIN_SENSE_HIGH); + #endif + + sd_power_system_off(); + } +}; diff --git a/variants/meshtracker_x1/platformio.ini b/variants/meshtracker_x1/platformio.ini new file mode 100644 index 0000000000..1ce8bf17ad --- /dev/null +++ b/variants/meshtracker_x1/platformio.ini @@ -0,0 +1,132 @@ +[MeshTracker_X1] +extends = nrf52_base +board = seeed-mesh-tracker-x1 +board_build.ldscript = boards/nrf52840_s140_v7.ld +build_flags = ${nrf52_base.build_flags} + -I src/helpers/nrf52 + -I lib/nrf52/s140_nrf52_7.3.0_API/include + -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 + -I variants/meshtracker_x1 + -I src/helpers/ui + -D MESH_TRACKER_X1 + -D PIN_USER_BTN=6 + -D USER_BTN_PRESSED=HIGH + -D PIN_STATUS_LED=24 + -D PIN_STATUS_LED_R=3 ; P0.3 red + -D PIN_STATUS_LED_G=24 ; P0.24 green + -D PIN_STATUS_LED_B=28 ; P0.28 blue + -D RADIO_CLASS=CustomLR2021 + -D USE_LR2021 + -D WRAPPER_CLASS=CustomLR2021Wrapper + -D LORA_TX_POWER=22 + -D P_LORA_BUSY=7 ; P0.7 + -D P_LORA_SCLK=11 ; P0.11 + -D P_LORA_NSS=12 ; P0.12 + -D P_LORA_DIO_1=33 ; P1.1 + -D P_LORA_MISO=40 ; P1.8 + -D P_LORA_MOSI=41 ; P1.9 + -D P_LORA_RESET=42 ; P1.10 + -D LR2021_IRQ_DIO=8 ; P1.1 is connected to LR2021 DIO8 + -D LR2021_TCXO_VOLTAGE=1.6f + -D ENV_INCLUDE_GPS=1 +build_src_filter = ${nrf52_base.build_src_filter} + +<helpers/*.cpp> + +<../variants/meshtracker_x1> +lib_deps = ${nrf52_base.lib_deps} + https://github.com/adafruit/Adafruit_SPA06_003/archive/refs/tags/1.0.2.zip +debug_tool = jlink +upload_protocol = nrfutil + +[env:MeshTracker_X1_repeater] +extends = MeshTracker_X1 +build_flags = ${MeshTracker_X1.build_flags} + -I examples/companion_radio/ui-orig + -D ADVERT_NAME='"MeshTracker X1 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${MeshTracker_X1.build_src_filter} + +<../examples/simple_repeater> +lib_deps = ${MeshTracker_X1.lib_deps} + stevemarple/MicroNMEA @ ^2.0.6 + +[env:MeshTracker_X1_room_server] +extends = MeshTracker_X1 +build_flags = ${MeshTracker_X1.build_flags} + -I examples/companion_radio/ui-orig + -D ADVERT_NAME='"MeshTracker X1 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${MeshTracker_X1.build_src_filter} + +<../examples/simple_room_server> +lib_deps = ${MeshTracker_X1.lib_deps} + stevemarple/MicroNMEA @ ^2.0.6 + +[env:MeshTracker_X1_companion_radio_usb] +extends = MeshTracker_X1 +board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld +board_upload.maximum_size = 708608 +build_flags = ${MeshTracker_X1.build_flags} + -I examples/companion_radio/ui-orig + -D QSPIFLASH=1 + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 + -D OFFLINE_QUEUE_SIZE=256 + -D DISPLAY_CLASS=NullDisplayDriver + -D PIN_BUZZER=25 + -D HAS_DRV2605=1 + -D DRV2605_USE_LRA=1 + -D ENABLE_USB_INTERFACE +build_src_filter = ${MeshTracker_X1.build_src_filter} + +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/ui/DRV2605Vibration.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = ${MeshTracker_X1.lib_deps} + densaugeo/base64 @ ~1.4.0 + stevemarple/MicroNMEA @ ^2.0.6 + end2endzone/NonBlockingRTTTL@^1.3.0 + adafruit/Adafruit DRV2605 Library @ ^1.2.4 + +[env:MeshTracker_X1_companion_radio_ble] +extends = MeshTracker_X1 +board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld +board_upload.maximum_size = 708608 +build_flags = ${MeshTracker_X1.build_flags} + -I examples/companion_radio/ui-orig + -D QSPIFLASH=1 + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D BLE_TX_POWER=0 +; -D BLE_DEBUG_LOGGING=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 + -D OFFLINE_QUEUE_SIZE=256 + -D DISPLAY_CLASS=NullDisplayDriver + -D PIN_BUZZER=25 + -D HAS_DRV2605=1 + -D DRV2605_USE_LRA=1 + -D ADVERT_NAME='"@@MAC"' +build_src_filter = ${MeshTracker_X1.build_src_filter} + +<helpers/nrf52/SerialBLEInterface.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<helpers/ui/DRV2605Vibration.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = ${MeshTracker_X1.lib_deps} + densaugeo/base64 @ ~1.4.0 + stevemarple/MicroNMEA @ ^2.0.6 + end2endzone/NonBlockingRTTTL@^1.3.0 + adafruit/Adafruit DRV2605 Library @ ^1.2.4 diff --git a/variants/meshtracker_x1/target.cpp b/variants/meshtracker_x1/target.cpp new file mode 100644 index 0000000000..d6d548b511 --- /dev/null +++ b/variants/meshtracker_x1/target.cpp @@ -0,0 +1,132 @@ +#include <Arduino.h> +#include "target.h" +#include <helpers/sensors/MicroNMEALocationProvider.h> + +MeshTrackerX1Board board; + +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); + +WRAPPER_CLASS radio_driver(radio, board); + +VolatileRTCClock rtc_clock; +MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); +MeshTrackerX1SensorManager sensors = MeshTrackerX1SensorManager(nmea); + +#ifdef DISPLAY_CLASS + NullDisplayDriver display; +#endif + +bool radio_init() { + return radio.std_init(&SPI); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} + +void MeshTrackerX1SensorManager::start_gps() { + gps_active = true; + // this init sequence comes from seeed examples and deals with all gps pins + pinMode(GPS_EN, OUTPUT); + digitalWrite(GPS_EN, HIGH); + delay(10); + pinMode(GPS_VRTC_EN, OUTPUT); + digitalWrite(GPS_VRTC_EN, HIGH); + delay(10); + + pinMode(GPS_RESET, OUTPUT); + digitalWrite(GPS_RESET, HIGH); + delay(10); + digitalWrite(GPS_RESET, LOW); + + pinMode(GPS_SLEEP_INT, OUTPUT); + digitalWrite(GPS_SLEEP_INT, HIGH); + pinMode(GPS_RTC_INT, OUTPUT); + digitalWrite(GPS_RTC_INT, LOW); +} + +void MeshTrackerX1SensorManager::sleep_gps() { + gps_active = false; + digitalWrite(GPS_VRTC_EN, HIGH); // keep RTC alive for faster fix on wake + digitalWrite(GPS_EN, LOW); + digitalWrite(GPS_RESET, LOW); + digitalWrite(GPS_SLEEP_INT, HIGH); + digitalWrite(GPS_RTC_INT, LOW); +} + +void MeshTrackerX1SensorManager::stop_gps() { + gps_active = false; + digitalWrite(GPS_VRTC_EN, LOW); + digitalWrite(GPS_EN, LOW); + digitalWrite(GPS_RESET, LOW); + digitalWrite(GPS_SLEEP_INT, HIGH); + digitalWrite(GPS_RTC_INT, LOW); +} + +bool MeshTrackerX1SensorManager::begin() { + // init GPS + Serial1.begin(GPS_BAUD_RATE); + + // init SPA06-003 barometer + baro_ok = spa06.begin(SPA06_003_DEFAULT_ADDR, &Wire) || spa06.begin(0x76, &Wire); + if (baro_ok) { + spa06.setPressureOversampling(SPA06_003_OVERSAMPLE_8); + spa06.setTemperatureOversampling(SPA06_003_OVERSAMPLE_8); + // 1 Hz continuous keeps reads non-blocking at minimal power cost + spa06.setPressureMeasureRate(SPA06_003_RATE_1); + spa06.setTemperatureMeasureRate(SPA06_003_RATE_1); + spa06.setMeasurementMode(SPA06_003_MEAS_CONTINUOUS_BOTH); + } + return true; +} + +bool MeshTrackerX1SensorManager::querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) { + if (requester_permissions & TELEM_PERM_LOCATION) { // does requester have permission? + telemetry.addGPS(TELEM_CHANNEL_SELF, node_lat, node_lon, node_altitude); + } + if (requester_permissions & TELEM_PERM_ENVIRONMENT && baro_ok) { + telemetry.addTemperature(TELEM_CHANNEL_SELF, spa06.readTemperature()); + telemetry.addBarometricPressure(TELEM_CHANNEL_SELF, spa06.readPressure()); + } + return true; +} + +void MeshTrackerX1SensorManager::loop() { + static long next_gps_update = 0; + + + _nmea->loop(); + + if (millis() > next_gps_update) { + if (gps_active && _nmea->isValid()) { + node_lat = ((double)_nmea->getLatitude())/1000000.; + node_lon = ((double)_nmea->getLongitude())/1000000.; + node_altitude = ((double)_nmea->getAltitude()) / 1000.0; + } + next_gps_update = millis() + 1000; + } +} + +int MeshTrackerX1SensorManager::getNumSettings() const { return 1; } // just one supported: "gps" (power switch) + +const char* MeshTrackerX1SensorManager::getSettingName(int i) const { + return i == 0 ? "gps" : NULL; +} +const char* MeshTrackerX1SensorManager::getSettingValue(int i) const { + if (i == 0) { + return gps_active ? "1" : "0"; + } + return NULL; +} +bool MeshTrackerX1SensorManager::setSettingValue(const char* name, const char* value) { + if (strcmp(name, "gps") == 0) { + if (strcmp(value, "0") == 0) { + sleep_gps(); // sleep for faster fix ! + } else { + start_gps(); + } + return true; + } + return false; // not supported +} diff --git a/variants/meshtracker_x1/target.h b/variants/meshtracker_x1/target.h new file mode 100644 index 0000000000..9741efb6af --- /dev/null +++ b/variants/meshtracker_x1/target.h @@ -0,0 +1,47 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include "MeshTrackerX1Board.h" +#include <helpers/radiolib/CustomLR2021Wrapper.h> +#include <helpers/ArduinoHelpers.h> +#include <helpers/SensorManager.h> +#include <helpers/sensors/LocationProvider.h> +#include <Adafruit_SPA06_003.h> +#ifdef DISPLAY_CLASS + #include "NullDisplayDriver.h" +#endif + +class MeshTrackerX1SensorManager: public SensorManager { + bool gps_active = false; + bool baro_ok = false; + Adafruit_SPA06_003 spa06; + LocationProvider * _nmea; + + void start_gps(); + void sleep_gps(); + void stop_gps(); +public: + MeshTrackerX1SensorManager(LocationProvider &nmea): _nmea(&nmea) { } + bool begin() override; + bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override; + void loop() override; + int getNumSettings() const override; + const char* getSettingName(int i) const override; + const char* getSettingValue(int i) const override; + bool setSettingValue(const char* name, const char* value) override; + LocationProvider* getLocationProvider() { return _nmea; } +}; + +#ifdef DISPLAY_CLASS + extern NullDisplayDriver display; +#endif + +extern MeshTrackerX1Board board; +extern WRAPPER_CLASS radio_driver; +extern VolatileRTCClock rtc_clock; +extern MeshTrackerX1SensorManager sensors; + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/meshtracker_x1/variant.cpp b/variants/meshtracker_x1/variant.cpp new file mode 100644 index 0000000000..3f38a604d6 --- /dev/null +++ b/variants/meshtracker_x1/variant.cpp @@ -0,0 +1,109 @@ +/* + * variant.cpp - Seeed SenseCAP MeshTracker X1 (nRF52840 + Semtech LR2021) + */ + +#include "variant.h" +#include "wiring_constants.h" +#include "wiring_digital.h" + +const uint32_t g_ADigitalPinMap[PINS_COUNT + 1] = +{ + 0, // P0.00 + 1, // P0.01 + 2, // P0.02, AIN0 BATTERY_PIN + 3, // P0.03, LED_RED + 4, // P0.04, AIN2 VCC_ADC + 5, // P0.05, AIN3 EXT_PWR_DETECT + 6, // P0.06, PIN_BUTTON1 + 7, // P0.07, LORA_BUSY + 8, // P0.08, GPS_RESET + 9, // P0.09, PIN_RTC_EN + 10, // P0.10 + 11, // P0.11, PIN_SPI_SCK + 12, // P0.12, PIN_SPI_NSS + 13, // P0.13, PIN_SERIAL1_TX + 14, // P0.14, PIN_SERIAL1_RX + 15, // P0.15 + 16, // P0.16, PIN_SERIAL2_TX + 17, // P0.17, PIN_SERIAL2_RX + 18, // P0.18 + 19, // P0.19 + 20, // P0.20 + 21, // P0.21 + 22, // P0.22 + 23, // P0.23 + 24, // P0.24, LED_GREEN + 25, // P0.25, BUZZER_PIN + 26, // P0.26 + 27, // P0.27 + 28, // P0.28, LED_BLUE + 29, // P0.29, GPS_RTC_INT + 30, // P0.30, GPS_SLEEP_INT + 31, // P0.31 + 32, // P1.00 + 33, // P1.01, LORA_DIO_1 (LR2021 DIO8 IRQ) + 34, // P1.02 + 35, // P1.03, EXT_CHRG_DETECT + 36, // P1.04, CHARGE_DONE + 37, // P1.05, PIN_DRV_EN + 38, // P1.06, PIN_BAT_ADC_EN + 39, // P1.07, PIN_3V3_EN + 40, // P1.08, PIN_SPI_MISO + 41, // P1.09, PIN_SPI_MOSI + 42, // P1.10, LORA_RESET + 43, // P1.11, GPS_EN + 44, // P1.12 + 45, // P1.13, GPS_VRTC_EN + 46, // P1.14, PIN_WIRE_SCL + 47, // P1.15, PIN_WIRE_SDA + 255, // NRFX_SPIM_PIN_NOT_USED +}; + +void initVariant() +{ + pinMode(BATTERY_PIN, INPUT); + pinMode(EXT_CHRG_DETECT, INPUT_PULLUP); + pinMode(EXT_PWR_DETECT, INPUT); + pinMode(PIN_BUTTON1, INPUT_PULLDOWN); + + pinMode(PIN_3V3_EN, OUTPUT); + digitalWrite(PIN_3V3_EN, HIGH); + + pinMode(PIN_FLASH_EN, OUTPUT); + digitalWrite(PIN_FLASH_EN, HIGH); + + pinMode(PIN_BAT_ADC_EN, OUTPUT); + digitalWrite(PIN_BAT_ADC_EN, HIGH); + + pinMode(PIN_RTC_EN, OUTPUT); + digitalWrite(PIN_RTC_EN, LOW); + + pinMode(PIN_DRV_EN, OUTPUT); + digitalWrite(PIN_DRV_EN, LOW); + + pinMode(LED_RED, OUTPUT); + digitalWrite(LED_RED, LOW); + + pinMode(LED_GREEN, OUTPUT); + digitalWrite(LED_GREEN, LOW); + + pinMode(LED_BLUE, OUTPUT); + digitalWrite(LED_BLUE, LOW); + + pinMode(GPS_EN, OUTPUT); + digitalWrite(GPS_EN, LOW); + + pinMode(GPS_VRTC_EN, OUTPUT); + digitalWrite(GPS_VRTC_EN, HIGH); + + pinMode(GPS_RESET, OUTPUT); + digitalWrite(GPS_RESET, LOW); + + pinMode(GPS_SLEEP_INT, OUTPUT); + digitalWrite(GPS_SLEEP_INT, HIGH); + + pinMode(GPS_RTC_INT, OUTPUT); + digitalWrite(GPS_RTC_INT, LOW); + + pinMode(BUZZER_PIN, INPUT_PULLDOWN); +} diff --git a/variants/meshtracker_x1/variant.h b/variants/meshtracker_x1/variant.h new file mode 100644 index 0000000000..7f2b246b50 --- /dev/null +++ b/variants/meshtracker_x1/variant.h @@ -0,0 +1,139 @@ +/* + * variant.h - Seeed SenseCAP MeshTracker X1 (nRF52840 + Semtech LR2021) + */ + +#pragma once + +#include "WVariant.h" + +//////////////////////////////////////////////////////////////////////////////// +// Low frequency clock source + +#define USE_LFXO // 32.768 kHz crystal oscillator +#define VARIANT_MCK (64000000ul) + +//////////////////////////////////////////////////////////////////////////////// +// Power + +#define NRF_APM // detect usb power +#define PIN_3V3_EN (39) // P1.7 Power to sensors +#define PIN_BAT_ADC_EN (38) // P1.6 Power to battery ADC divider +#define PIN_RTC_EN (9) // P0.9 Power to RTC + +#define BATTERY_PIN (2) // P0.2/AIN0 +#define BATTERY_IMMUTABLE +#define ADC_MULTIPLIER (2.0F) + +#define EXT_CHRG_DETECT (35) // P1.3, LOW while charging +// P1.4 is the charger's second status line, but it reads LOW regardless of +// charge state on this board, so it is not used (Meshtastic leaves it out too) +#define EXT_PWR_DETECT (5) // P0.5 + +#define ADC_RESOLUTION (14) +#define BATTERY_SENSE_RES (12) + +#define AREF_VOLTAGE (3.0) + +//////////////////////////////////////////////////////////////////////////////// +// Number of pins + +#define PINS_COUNT (48) +#define NUM_DIGITAL_PINS (48) +#define NUM_ANALOG_INPUTS (6) +#define NUM_ANALOG_OUTPUTS (0) + +//////////////////////////////////////////////////////////////////////////////// +// UART pin definition + +#define PIN_SERIAL1_RX (14) // P0.14 (GPS) +#define PIN_SERIAL1_TX (13) // P0.13 (GPS) + +#define PIN_SERIAL2_RX (17) // P0.17 +#define PIN_SERIAL2_TX (16) // P0.16 + +//////////////////////////////////////////////////////////////////////////////// +// I2C pin definition + +#define HAS_WIRE (1) +#define WIRE_INTERFACES_COUNT (1) + +#define PIN_WIRE_SDA (47) // P1.15 +#define PIN_WIRE_SCL (46) // P1.14 +#define I2C_NO_RESCAN + +//////////////////////////////////////////////////////////////////////////////// +// SPI pin definition + +#define SPI_INTERFACES_COUNT (1) + +#define PIN_SPI_MISO (40) // P1.8 +#define PIN_SPI_MOSI (41) // P1.9 +#define PIN_SPI_SCK (11) // P0.11 +#define PIN_SPI_NSS (12) // P0.12 + +//////////////////////////////////////////////////////////////////////////////// +// Builtin LEDs (RGB) + +#define LED_BUILTIN (-1) +#define LED_RED (3) // P0.3 +#define LED_GREEN (24) // P0.24 +#define LED_BLUE (28) // P0.28 +#define LED_PIN LED_GREEN + +#define LED_STATE_ON HIGH + +//////////////////////////////////////////////////////////////////////////////// +// Builtin buttons + +#define PIN_BUTTON1 (6) // P0.6, active HIGH (internal pull-down) +#define BUTTON_PIN PIN_BUTTON1 + +//////////////////////////////////////////////////////////////////////////////// +// LR2021 + +#define LORA_DIO_1 (33) // P1.1, IRQ line (LR2021 DIO8) +#define LORA_NSS (PIN_SPI_NSS) // P0.12 +#define LORA_RESET (42) // P1.10 +#define LORA_BUSY (7) // P0.7 +#define LORA_SCLK (PIN_SPI_SCK) // P0.11 +#define LORA_MISO (PIN_SPI_MISO) // P1.8 +#define LORA_MOSI (PIN_SPI_MOSI) // P1.9 + +//////////////////////////////////////////////////////////////////////////////// +// GPS (Airoha, dual-band L1+L5) + +#define HAS_GPS 1 +#define GPS_RX_PIN PIN_SERIAL1_RX +#define GPS_TX_PIN PIN_SERIAL1_TX +#define GPS_BAUD_RATE (115200) + +#define GPS_EN (43) // P1.11, active HIGH +#define GPS_RESET (8) // P0.8, active HIGH + +#define GPS_VRTC_EN (45) // P1.13 +#define GPS_SLEEP_INT (30) // P0.30 +#define GPS_RTC_INT (29) // P0.29 + +//////////////////////////////////////////////////////////////////////////////// +// Haptic driver (DRV2605 on I2C) + +#define PIN_DRV_EN (37) // P1.5, power to haptic driver + +//////////////////////////////////////////////////////////////////////////////// +// Buzzer + +#define BUZZER_PIN (25) // P0.25, pwm output + +//////////////////////////////////////////////////////////////////////////////// +// QSPI Flash + +#define PIN_FLASH_EN (15) // P0.15 (Flash power enable) + +#define PIN_QSPI_SCK (19) // P0.19 +#define PIN_QSPI_CS (20) // P0.20 +#define PIN_QSPI_IO0 (21) // P0.21 +#define PIN_QSPI_IO1 (22) // P0.22 +#define PIN_QSPI_IO2 (23) // P0.23 +#define PIN_QSPI_IO3 (32) // P1.00 + +#define EXTERNAL_FLASH_DEVICES GD25Q64C \ No newline at end of file diff --git a/variants/minewsemi_me25ls01/MinewsemiME25LS01Board.h b/variants/minewsemi_me25ls01/MinewsemiME25LS01Board.h index 4fa5cd41ea..450a3d13b0 100644 --- a/variants/minewsemi_me25ls01/MinewsemiME25LS01Board.h +++ b/variants/minewsemi_me25ls01/MinewsemiME25LS01Board.h @@ -65,7 +65,7 @@ class MinewsemiME25LS01Board : public NRF52BoardDCDC { #ifdef BUTTON_PIN nrf_gpio_cfg_sense_input(digitalPinToInterrupt(BUTTON_PIN), NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); #endif - sd_power_system_off(); + NRF52Board::powerOff(); } #if defined(P_LORA_TX_LED) diff --git a/variants/minewsemi_me25ls01/NullDisplayDriver.h b/variants/minewsemi_me25ls01/NullDisplayDriver.h deleted file mode 100644 index 38bf93f153..0000000000 --- a/variants/minewsemi_me25ls01/NullDisplayDriver.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <helpers/ui/DisplayDriver.h> - -class NullDisplayDriver : public DisplayDriver { -public: - NullDisplayDriver() : DisplayDriver(128, 64) { } - bool begin() { return false; } // not present - - bool isOn() override { return false; } - void turnOn() override { } - void turnOff() override { } - void clear() override { } - void startFrame(Color bkg = DARK) override { } - void setTextSize(int sz) override { } - void setColor(Color c) override { } - void setCursor(int x, int y) override { } - void print(const char* str) override { } - void fillRect(int x, int y, int w, int h) override { } - void drawRect(int x, int y, int w, int h) override { } - void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override { } - uint16_t getTextWidth(const char* str) override { return 0; } - void endFrame() { } -}; diff --git a/variants/minewsemi_me25ls01/platformio.ini b/variants/minewsemi_me25ls01/platformio.ini index 39d4252deb..d115a1f1a8 100644 --- a/variants/minewsemi_me25ls01/platformio.ini +++ b/variants/minewsemi_me25ls01/platformio.ini @@ -46,8 +46,8 @@ build_flags = ${me25ls01.build_flags} -D MAX_GROUP_CHANNELS=40 -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D RX_BOOSTED_GAIN=true -D RF_SWITCH_TABLE @@ -55,6 +55,7 @@ build_flags = ${me25ls01.build_flags} ;-D PIN_BUZZER=25 ;-D PIN_BUZZER_EN=37 build_src_filter = ${me25ls01.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> +<helpers/nrf52/SerialBLEInterface.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> @@ -66,8 +67,8 @@ build_flags = ${me25ls01.build_flags} -D MAX_GROUP_CHANNELS=8 -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D RX_BOOSTED_GAIN=true -D RF_SWITCH_TABLE @@ -79,6 +80,7 @@ build_flags = ${me25ls01.build_flags} -D DISPLAY_CLASS=NullDisplayDriver build_src_filter = ${me25ls01.build_src_filter} +<../examples/simple_repeater> + +<helpers/ui/NullDisplayDriver.cpp> [env:Minewsemi_me25ls01_room_server] extends = me25ls01 @@ -101,6 +103,7 @@ build_flags = ${me25ls01.build_flags} -D DISPLAY_CLASS=NullDisplayDriver build_src_filter = ${me25ls01.build_src_filter} +<../examples/simple_room_server> + +<helpers/ui/NullDisplayDriver.cpp> [env:Minewsemi_me25ls01_terminal_chat] extends = me25ls01 @@ -109,8 +112,8 @@ build_flags = ${me25ls01.build_flags} -D MAX_GROUP_CHANNELS=8 -D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D RX_BOOSTED_GAIN=true -D RF_SWITCH_TABLE @@ -123,6 +126,7 @@ build_flags = ${me25ls01.build_flags} -D DISPLAY_CLASS=NullDisplayDriver build_src_filter = ${me25ls01.build_src_filter} +<../examples/simple_secure_chat/main.cpp> + +<helpers/ui/NullDisplayDriver.cpp> [env:Minewsemi_me25ls01_companion_radio_usb] extends = me25ls01 @@ -134,14 +138,16 @@ build_flags = ${me25ls01.build_flags} -D MAX_GROUP_CHANNELS=40 ;-D BLE_PIN_CODE=123456 ; -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 -D RX_BOOSTED_GAIN=true -D RF_SWITCH_TABLE -D DISPLAY_CLASS=NullDisplayDriver + -D ENABLE_USB_INTERFACE build_src_filter = ${me25ls01.build_src_filter} +<helpers/nrf52/*.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> diff --git a/variants/minewsemi_me25ls01/target.h b/variants/minewsemi_me25ls01/target.h index f8d42863b2..978e616b96 100644 --- a/variants/minewsemi_me25ls01/target.h +++ b/variants/minewsemi_me25ls01/target.h @@ -10,7 +10,7 @@ #include <helpers/sensors/LocationProvider.h> #include <helpers/sensors/EnvironmentSensorManager.h> #ifdef DISPLAY_CLASS - #include "NullDisplayDriver.h" + #include <helpers/ui/NullDisplayDriver.h> #endif #ifdef DISPLAY_CLASS diff --git a/variants/muziworks_r1_neo/platformio.ini b/variants/muziworks_r1_neo/platformio.ini index 3dbecf1e84..52dc3e38fe 100644 --- a/variants/muziworks_r1_neo/platformio.ini +++ b/variants/muziworks_r1_neo/platformio.ini @@ -66,6 +66,7 @@ build_flags = -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${R1Neo.build_src_filter} @@ -127,7 +128,7 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 build_src_filter = ${R1Neo.build_src_filter} +<../examples/simple_sensor> diff --git a/variants/nano_g2_ultra/nano-g2.h b/variants/nano_g2_ultra/nano-g2.h index cf771efe7d..bf9543b039 100644 --- a/variants/nano_g2_ultra/nano-g2.h +++ b/variants/nano_g2_ultra/nano-g2.h @@ -52,6 +52,6 @@ class NanoG2Ultra : public NRF52Board { nrf_gpio_cfg_sense_input(digitalPinToInterrupt(PIN_USER_BTN), NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW); - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/nano_g2_ultra/platformio.ini b/variants/nano_g2_ultra/platformio.ini index 3cdc29ffb1..b817b3e991 100644 --- a/variants/nano_g2_ultra/platformio.ini +++ b/variants/nano_g2_ultra/platformio.ini @@ -99,6 +99,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_CLASS=SH1106Display -D PIN_BUZZER=4 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Nano_G2_Ultra.build_src_filter} diff --git a/variants/nibble_screen_connect/platformio.ini b/variants/nibble_screen_connect/platformio.ini index 20f7dc2438..112181df2d 100644 --- a/variants/nibble_screen_connect/platformio.ini +++ b/variants/nibble_screen_connect/platformio.ini @@ -34,7 +34,7 @@ lib_deps = adafruit/Adafruit SSD1306 @ ^2.5.13 adafruit/Adafruit NeoPixel @ ^1.12.3 -[env:nibble_screen_connect_repeater] +[env:nibble_screen_connect_repeater_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -51,7 +51,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} ${esp32_ota.lib_deps} -[env:nibble_screen_connect_repeater_bridge_espnow] +[env:nibble_screen_connect_repeater_bridge_espnow_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -70,7 +70,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} ${esp32_ota.lib_deps} -[env:nibble_screen_connect_terminal_chat] +[env:nibble_screen_connect_terminal_chat_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -82,7 +82,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} densaugeo/base64 @ ~1.4.0 -[env:nibble_screen_connect_room_server] +[env:nibble_screen_connect_room_server_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -99,7 +99,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} ${esp32_ota.lib_deps} -[env:nibble_screen_connect_companion_radio_usb] +[env:nibble_screen_connect_companion_radio_usb_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -107,6 +107,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=300 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE build_src_filter = ${nibble_screen_connect_base.build_src_filter} +<helpers/ui/SSD1306Display.cpp> +<helpers/ui/MomentaryButton.cpp> @@ -116,7 +117,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} densaugeo/base64 @ ~1.4.0 -[env:nibble_screen_connect_companion_radio_ble] +[env:nibble_screen_connect_companion_radio_ble_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -137,7 +138,7 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} densaugeo/base64 @ ~1.4.0 -[env:nibble_screen_connect_companion_radio_wifi] +[env:nibble_screen_connect_companion_radio_wifi_] extends = nibble_screen_connect_base build_flags = ${nibble_screen_connect_base.build_flags} @@ -160,7 +161,7 @@ lib_deps = densaugeo/base64 @ ~1.4.0 -[env:nibble_screen_connect_kiss_modem] +[env:nibble_screen_connect_kiss_modem_] extends = nibble_screen_connect_base build_src_filter = ${nibble_screen_connect_base.build_src_filter} +<../examples/kiss_modem/> diff --git a/variants/nibble_zero_connect/platformio.ini b/variants/nibble_zero_connect/platformio.ini new file mode 100644 index 0000000000..1161743eab --- /dev/null +++ b/variants/nibble_zero_connect/platformio.ini @@ -0,0 +1,159 @@ +[nibble_zero_connect_base] +extends = esp32_base +board = esp32-s3-zero +build_flags = + ${esp32_base.build_flags} + -I variants/nibble_zero_connect + -D NIBBLE_ZERO_CONNECT + -D P_LORA_DIO_1=4 + -D P_LORA_NSS=10 + -D P_LORA_RESET=6 + -D P_LORA_BUSY=5 + -D P_LORA_SCLK=12 + -D P_LORA_MISO=13 + -D P_LORA_MOSI=11 + -D PIN_USER_BTN=1 + -D PIN_BOARD_SDA=8 + -D PIN_BOARD_SCL=7 + -D PIN_STATUS_LED=39 + -D P_LORA_TX_LED=39 + -D DISPLAY_ROTATION=0 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=140 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/nibble_zero_connect> +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:nibble_zero_connect_repeater_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Nibble Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + ${esp32_ota.lib_deps} + +[env:nibble_zero_connect_repeater_bridge_espnow_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"ESPNow Bridge"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/bridges/ESPNowBridge.cpp> + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + ${esp32_ota.lib_deps} + +[env:nibble_zero_connect_terminal_chat_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -D MAX_CONTACTS=300 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:nibble_zero_connect_room_server_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Nibble Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_room_server> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + ${esp32_ota.lib_deps} + +[env:nibble_zero_connect_companion_radio_usb_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=300 + -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:nibble_zero_connect_companion_radio_ble_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=300 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:nibble_zero_connect_companion_radio_wifi_] +extends = nibble_zero_connect_base +build_flags = + ${nibble_zero_connect_base.build_flags} + -I examples/companion_radio/ui-new + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=300 + -D MAX_GROUP_CHANNELS=8 + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' +build_src_filter = ${nibble_zero_connect_base.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/esp32/*.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${nibble_zero_connect_base.lib_deps} + densaugeo/base64 @ ~1.4.0 + + diff --git a/variants/nibble_zero_connect/target.cpp b/variants/nibble_zero_connect/target.cpp new file mode 100644 index 0000000000..d53b6a1c3d --- /dev/null +++ b/variants/nibble_zero_connect/target.cpp @@ -0,0 +1,35 @@ +#include <Arduino.h> +#include "target.h" + +ESP32Board board; + +static SPIClass spi; +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); +SensorManager sensors; + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display; + MomentaryButton user_btn(PIN_USER_BTN, 1000, true); +#endif + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + +bool radio_init() { + fallback_clock.begin(); + rtc_clock.begin(Wire); + + return radio.std_init(&spi); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); +} + + diff --git a/variants/nibble_zero_connect/target.h b/variants/nibble_zero_connect/target.h new file mode 100644 index 0000000000..87c55f0f2e --- /dev/null +++ b/variants/nibble_zero_connect/target.h @@ -0,0 +1,28 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <helpers/ESP32Board.h> +#include <helpers/radiolib/CustomSX1262Wrapper.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/SensorManager.h> +#ifdef DISPLAY_CLASS + #include <helpers/ui/SSD1306Display.h> + #include <helpers/ui/MomentaryButton.h> +#endif + +extern ESP32Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern SensorManager sensors; + +#ifdef DISPLAY_CLASS + extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); + + diff --git a/variants/promicro/PromicroBoard.h b/variants/promicro/PromicroBoard.h index 7b6afb1b3d..b190c47c81 100644 --- a/variants/promicro/PromicroBoard.h +++ b/variants/promicro/PromicroBoard.h @@ -72,8 +72,4 @@ class PromicroBoard : public NRF52BoardDCDC { #endif return 0; } - - void powerOff() override { - sd_power_system_off(); - } }; diff --git a/variants/promicro/platformio.ini b/variants/promicro/platformio.ini index 5415e15861..90cb475f5b 100644 --- a/variants/promicro/platformio.ini +++ b/variants/promicro/platformio.ini @@ -119,6 +119,7 @@ build_flags = ${Promicro.build_flags} -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Promicro.build_src_filter} @@ -143,7 +144,7 @@ build_flags = ${Promicro.build_flags} -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_CLASS=SSD1306Display ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 build_src_filter = ${Promicro.build_src_filter} +<helpers/nrf52/SerialBLEInterface.cpp> +<helpers/ui/SSD1306Display.cpp> diff --git a/variants/rak11310/platformio.ini b/variants/rak11310/platformio.ini index ab820cf6a2..c8526317ab 100644 --- a/variants/rak11310/platformio.ini +++ b/variants/rak11310/platformio.ini @@ -85,6 +85,7 @@ extends = rak11310 build_flags = ${rak11310.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak11310.build_src_filter} diff --git a/variants/rak3112/RAK3112Board.h b/variants/rak3112/RAK3112Board.h index 8ba3197cf6..704162b8c8 100644 --- a/variants/rak3112/RAK3112Board.h +++ b/variants/rak3112/RAK3112Board.h @@ -16,8 +16,6 @@ #define ADC_MULTIPLIER (3 * 1.73 * 1.187 * 1000) #define BATTERY_SAMPLES 8 -#include <driver/rtc_io.h> - class RAK3112Board : public ESP32Board { private: bool adc_active_state; @@ -51,33 +49,6 @@ class RAK3112Board : public ESP32Board { } } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - - void powerOff() override { - enterDeepSleep(0); - } - uint16_t getBattMilliVolts() override { analogReadResolution(12); diff --git a/variants/rak3112/platformio.ini b/variants/rak3112/platformio.ini index 9cd32c4b4d..8bd3c59771 100644 --- a/variants/rak3112/platformio.ini +++ b/variants/rak3112/platformio.ini @@ -136,6 +136,7 @@ build_flags = -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak3112.build_src_filter} diff --git a/variants/rak3401/platformio.ini b/variants/rak3401/platformio.ini index 20a8a548b9..48e7192266 100644 --- a/variants/rak3401/platformio.ini +++ b/variants/rak3401/platformio.ini @@ -67,6 +67,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak3401.build_src_filter} diff --git a/variants/rak3x72/platformio.ini b/variants/rak3x72/platformio.ini index f966786087..c23019c803 100644 --- a/variants/rak3x72/platformio.ini +++ b/variants/rak3x72/platformio.ini @@ -37,6 +37,7 @@ build_flags = ${rak3x72.build_flags} ; -D FORMAT_FS=true -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE build_src_filter = ${rak3x72.build_src_filter} +<../examples/companion_radio/*.cpp> lib_deps = ${rak3x72.lib_deps} diff --git a/variants/rak4631/RAK4631Board.cpp b/variants/rak4631/RAK4631Board.cpp index 9fb47b432e..1b5698d0eb 100644 --- a/variants/rak4631/RAK4631Board.cpp +++ b/variants/rak4631/RAK4631Board.cpp @@ -1,8 +1,21 @@ #include <Arduino.h> #include <Wire.h> +#include "nrf_gpio.h" #include "RAK4631Board.h" +#ifdef ETHERNET_ENABLED +// Drive WB_IO2 HIGH as early as possible using direct register access. +// WB_IO2 (P1.02, Arduino pin 34) controls the WisBlock slot power switch. +// With POE through RAK13800, this must be enabled before the framework +// initializes or the board will brownout from insufficient power delivery. +// Priority 102 runs just after SystemInit. +static void __attribute__((constructor(102))) rak4631_early_poe_power() { + nrf_gpio_cfg_output(NRF_GPIO_PIN_MAP(1, 2)); // WB_IO2 = P1.02 + nrf_gpio_pin_set(NRF_GPIO_PIN_MAP(1, 2)); +} +#endif + #ifdef NRF52_POWER_MANAGEMENT // Static configuration for power management // Values set in variant.h defines @@ -36,6 +49,7 @@ void RAK4631Board::begin() { pinMode(PIN_USER_BTN_ANA, INPUT_PULLUP); #endif + #if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); #endif diff --git a/variants/rak4631/platformio.ini b/variants/rak4631/platformio.ini index 2bbba31463..0dfbf79775 100644 --- a/variants/rak4631/platformio.ini +++ b/variants/rak4631/platformio.ini @@ -53,6 +53,25 @@ build_src_filter = ${rak4631.build_src_filter} +<helpers/ui/SSD1306Display.cpp> +<../examples/simple_repeater> +[env:RAK_4631_repeater_ethernet] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"RAK4631 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D ETHERNET_ENABLED=1 +; -D MESH_DEBUG=1 +build_src_filter = ${rak4631.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_repeater> +lib_deps = + ${rak4631.lib_deps} + https://github.com/RAKWireless/RAK13800-W5100S/archive/1.0.2.zip + [env:RAK_4631_repeater_bridge_rs232_serial1] extends = rak4631 build_flags = @@ -115,6 +134,25 @@ build_src_filter = ${rak4631.build_src_filter} +<helpers/ui/SSD1306Display.cpp> +<../examples/simple_room_server> +[env:RAK_4631_room_server_ethernet] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"RAK4631 Room Server"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' + -D ETHERNET_ENABLED=1 +; -D MESH_DEBUG=1 +build_src_filter = ${rak4631.build_src_filter} + +<helpers/ui/SSD1306Display.cpp> + +<../examples/simple_room_server> +lib_deps = + ${rak4631.lib_deps} + https://github.com/RAKWireless/RAK13800-W5100S/archive/1.0.2.zip + [env:RAK_4631_companion_radio_usb] extends = rak4631 board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld @@ -127,6 +165,7 @@ build_flags = -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} @@ -136,6 +175,38 @@ lib_deps = ${rak4631.lib_deps} densaugeo/base64 @ ~1.4.0 + +[env:RAK_4631_companion_radio_ethernet] +extends = rak4631 +board_build.ldscript = boards/nrf52840_s140_v6.ld +board_upload.maximum_size = 712704 +build_unflags = + -D EXTRAFS=1 +build_flags = + ${rak4631.build_flags} + -I examples/companion_radio/ui-new + -D PIN_USER_BTN=9 + -D PIN_USER_BTN_ANA=31 + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D ETHERNET_ENABLED=1 + -D ETHERNET_USE_RAK13800 + -D ETHERNET_CLASS=RAK13800EthernetInterface +; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 +; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 +; -D ETHERNET_DEBUG_LOGGING=1 +build_src_filter = ${rak4631.build_src_filter} + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> + +<helpers/ethernet/*.cpp> + +<helpers/ethernet/RAK13800/> +lib_deps = + ${rak4631.lib_deps} + densaugeo/base64 @ ~1.4.0 + https://github.com/RAKWireless/RAK13800-W5100S/archive/1.0.2.zip + + [env:RAK_4631_companion_radio_ble] extends = rak4631 board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld @@ -187,7 +258,7 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} +<helpers/ui/SSD1306Display.cpp> +<../examples/simple_sensor> @@ -199,4 +270,4 @@ build_flags = build_src_filter = ${rak4631.build_src_filter} +<../examples/kiss_modem/> lib_deps = - ${rak4631.lib_deps} \ No newline at end of file + ${rak4631.lib_deps} diff --git a/variants/rak_wismesh_tag/RAKWismeshTagBoard.h b/variants/rak_wismesh_tag/RAKWismeshTagBoard.h index cc5aa06f59..daa90d746a 100644 --- a/variants/rak_wismesh_tag/RAKWismeshTagBoard.h +++ b/variants/rak_wismesh_tag/RAKWismeshTagBoard.h @@ -69,6 +69,6 @@ class RAKWismeshTagBoard : public NRF52BoardDCDC { nrf_gpio_cfg_sense_input(digitalPinToInterrupt(BUTTON_PIN), NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); #endif - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/rak_wismesh_tag/platformio.ini b/variants/rak_wismesh_tag/platformio.ini index e9cddb74dd..d614018717 100644 --- a/variants/rak_wismesh_tag/platformio.ini +++ b/variants/rak_wismesh_tag/platformio.ini @@ -71,6 +71,7 @@ build_flags = -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak_wismesh_tag.build_src_filter} diff --git a/variants/rpi_picow/platformio.ini b/variants/rpi_picow/platformio.ini index 66c7b9f890..0fe8c43696 100644 --- a/variants/rpi_picow/platformio.ini +++ b/variants/rpi_picow/platformio.ini @@ -58,6 +58,7 @@ extends = rpi_picow build_flags = ${rpi_picow.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rpi_picow.build_src_filter} diff --git a/variants/sensecap_solar/SenseCapSolarBoard.h b/variants/sensecap_solar/SenseCapSolarBoard.h index 6799a5e921..5a8861c298 100644 --- a/variants/sensecap_solar/SenseCapSolarBoard.h +++ b/variants/sensecap_solar/SenseCapSolarBoard.h @@ -54,7 +54,7 @@ class SenseCapSolarBoard : public NRF52BoardDCDC { #ifdef NRF52_POWER_MANAGEMENT initiateShutdown(SHUTDOWN_REASON_USER); #else - sd_power_system_off(); + NRF52Board::powerOff(); #endif } }; diff --git a/variants/sensecap_solar/platformio.ini b/variants/sensecap_solar/platformio.ini index effef38ccd..6e0eadbcb0 100644 --- a/variants/sensecap_solar/platformio.ini +++ b/variants/sensecap_solar/platformio.ini @@ -92,6 +92,7 @@ build_flags = ${SenseCap_Solar.build_flags} -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${SenseCap_Solar.build_src_filter} diff --git a/variants/station_g2/StationG2Board.h b/variants/station_g2/StationG2Board.h index a905682c8d..d1989ee0ff 100644 --- a/variants/station_g2/StationG2Board.h +++ b/variants/station_g2/StationG2Board.h @@ -2,7 +2,6 @@ #include <Arduino.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> class StationG2Board : public ESP32Board { public: @@ -21,29 +20,6 @@ class StationG2Board : public ESP32Board { } } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet - } else { - esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - uint16_t getBattMilliVolts() override { return 0; } diff --git a/variants/station_g2/platformio.ini b/variants/station_g2/platformio.ini index 6432b52386..753aee7ab9 100644 --- a/variants/station_g2/platformio.ini +++ b/variants/station_g2/platformio.ini @@ -110,7 +110,7 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' -D MAX_NEIGHBOURS=50 - -D MESH_PACKET_LOGGING=1 +; -D MESH_PACKET_LOGGING=1 -D SX126X_RX_BOOSTED_GAIN=1 ; https://wiki.uniteng.com/en/meshtastic/station-g2#impact-of-lora-node-dense-areashigh-noise-environments-on-rf-performance ; -D MESH_DEBUG=1 @@ -152,7 +152,7 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' -D MAX_NEIGHBOURS=50 - -D MESH_PACKET_LOGGING=1 +; -D MESH_PACKET_LOGGING=1 -D SX126X_RX_BOOSTED_GAIN=1 -D WITH_ESPNOW_BRIDGE=1 ; -D BRIDGE_DEBUG=1 @@ -188,6 +188,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Station_G2.build_src_filter} @@ -241,5 +242,10 @@ lib_deps = [env:Station_G2_kiss_modem] extends = Station_G2 +build_unflags = + -DARDUINO_USB_MODE=0 +build_flags = + ${Station_G2.build_flags} + -DARDUINO_USB_MODE=1 build_src_filter = ${Station_G2.build_src_filter} +<../examples/kiss_modem/> diff --git a/variants/station_g3_esp32/StationG3Board.cpp b/variants/station_g3_esp32/StationG3Board.cpp new file mode 100644 index 0000000000..4a49831107 --- /dev/null +++ b/variants/station_g3_esp32/StationG3Board.cpp @@ -0,0 +1,15 @@ +#include "StationG3Board.h" + +void StationG3Board::powerOff() { +#ifdef P_PA1_EN + setPAModeHigh(false); + rtc_gpio_hold_en((gpio_num_t)P_PA1_EN); +#endif + +#ifdef P_PRIMARY_LNA_EN + setPrimaryLNAControl(true); + rtc_gpio_hold_en((gpio_num_t)P_PRIMARY_LNA_EN); +#endif + + ESP32Board::powerOff(); +} diff --git a/variants/station_g3_esp32/StationG3Board.h b/variants/station_g3_esp32/StationG3Board.h index dc440d95f5..4b1fb81c10 100644 --- a/variants/station_g3_esp32/StationG3Board.h +++ b/variants/station_g3_esp32/StationG3Board.h @@ -73,36 +73,7 @@ class StationG3Board : public ESP32Board { setPrimaryLNAControl(true); } - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); - rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); - - rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); - -#ifdef P_PA1_EN - setPAModeHigh(false); - rtc_gpio_hold_en((gpio_num_t)P_PA1_EN); -#endif - -#ifdef P_PRIMARY_LNA_EN - setPrimaryLNAControl(true); - rtc_gpio_hold_en((gpio_num_t)P_PRIMARY_LNA_EN); -#endif - - if (pin_wake_btn < 0) { - esp_sleep_enable_ext1_wakeup((1ULL << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); - } else { - esp_sleep_enable_ext1_wakeup((1ULL << P_LORA_DIO_1) | (1ULL << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - esp_deep_sleep_start(); - } + void powerOff() override; uint16_t getBattMilliVolts() override { return 0; diff --git a/variants/station_g3_esp32/platformio.ini b/variants/station_g3_esp32/platformio.ini index b29388ef7e..e4a66a18ee 100644 --- a/variants/station_g3_esp32/platformio.ini +++ b/variants/station_g3_esp32/platformio.ini @@ -71,7 +71,7 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' -D MAX_NEIGHBOURS=50 - -D MESH_PACKET_LOGGING=1 +; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Station_G3_ESP32.build_src_filter} +<../examples/simple_repeater> @@ -103,6 +103,7 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Station_G3_ESP32.build_src_filter} diff --git a/variants/t1000-e/T1000eBoard.h b/variants/t1000-e/T1000eBoard.h index e7653fb2f4..1111d3c408 100644 --- a/variants/t1000-e/T1000eBoard.h +++ b/variants/t1000-e/T1000eBoard.h @@ -88,6 +88,6 @@ class T1000eBoard : public NRF52BoardDCDC { nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH); #endif - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/t1000-e/platformio.ini b/variants/t1000-e/platformio.ini index 43a3d93f61..8456dc9151 100644 --- a/variants/t1000-e/platformio.ini +++ b/variants/t1000-e/platformio.ini @@ -82,8 +82,10 @@ build_flags = ${t1000-e.build_flags} -D DISPLAY_CLASS=NullDisplayDriver -D PIN_BUZZER=25 -D PIN_BUZZER_EN=37 ; P1/5 - required for T1000-E + -D ENABLE_USB_INTERFACE build_src_filter = ${t1000-e.build_src_filter} +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${t1000-e.lib_deps} @@ -112,6 +114,7 @@ build_flags = ${t1000-e.build_flags} build_src_filter = ${t1000-e.build_src_filter} +<helpers/nrf52/SerialBLEInterface.cpp> +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${t1000-e.lib_deps} diff --git a/variants/tenstar_c3/target.h b/variants/tenstar_c3/target.h index b3ee6d177f..7839fa973a 100644 --- a/variants/tenstar_c3/target.h +++ b/variants/tenstar_c3/target.h @@ -3,7 +3,7 @@ #define RADIOLIB_STATIC_ONLY 1 #include <RadioLib.h> #include <helpers/radiolib/RadioLibWrappers.h> -#include <helpers/XiaoC3Board.h> +#include <../variants/xiao_c3/XiaoC3Board.h> #include <helpers/radiolib/CustomSX1262Wrapper.h> #include <helpers/radiolib/CustomSX1268Wrapper.h> #include <helpers/AutoDiscoverRTCClock.h> diff --git a/variants/thinknode_m1/ThinkNodeM1Board.h b/variants/thinknode_m1/ThinkNodeM1Board.h index ebc46e6e6f..94224d9c2b 100644 --- a/variants/thinknode_m1/ThinkNodeM1Board.h +++ b/variants/thinknode_m1/ThinkNodeM1Board.h @@ -40,7 +40,6 @@ class ThinkNodeM1Board : public NRF52Board { #endif // power off board - sd_power_system_off(); - + NRF52Board::powerOff(); } }; diff --git a/variants/thinknode_m1/platformio.ini b/variants/thinknode_m1/platformio.ini index 356edfee69..89c48403bf 100644 --- a/variants/thinknode_m1/platformio.ini +++ b/variants/thinknode_m1/platformio.ini @@ -58,6 +58,7 @@ build_flags = -D ADVERT_LAT=0.0 -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ThinkNode_M1.build_src_filter} @@ -116,6 +117,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 -D PIN_BUZZER=6 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 + -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M1.build_src_filter} +<helpers/ui/GxEPDDisplay.cpp> +<helpers/ui/buzzer.cpp> diff --git a/variants/thinknode_m2/ThinknodeM2Board.cpp b/variants/thinknode_m2/ThinknodeM2Board.cpp index 0596510361..8d68006d2c 100644 --- a/variants/thinknode_m2/ThinknodeM2Board.cpp +++ b/variants/thinknode_m2/ThinknodeM2Board.cpp @@ -1,40 +1,30 @@ #include "ThinknodeM2Board.h" - - void ThinknodeM2Board::begin() { - pinMode(PIN_VEXT_EN, OUTPUT); - digitalWrite(PIN_VEXT_EN, !PIN_VEXT_EN_ACTIVE); // force power cycle - delay(20); // allow power rail to discharge - digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // turn backlight back on - delay(120); // give display time to bias on cold boot - ESP32Board::begin(); - pinMode(PIN_STATUS_LED, OUTPUT); // init power led - } + pinMode(PIN_VEXT_EN, OUTPUT); + digitalWrite(PIN_VEXT_EN, !PIN_VEXT_EN_ACTIVE); // force power cycle + delay(20); // allow power rail to discharge + digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // turn backlight back on + delay(120); // give display time to bias on cold boot + ESP32Board::begin(); + pinMode(PIN_STATUS_LED, OUTPUT); // init power led +} - void ThinknodeM2Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_deep_sleep_start(); - } +uint16_t ThinknodeM2Board::getBattMilliVolts() { + analogReadResolution(12); + analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db); - void ThinknodeM2Board::powerOff() { - enterDeepSleep(0); + uint32_t mv = 0; + for (int i = 0; i < 8; ++i) { + mv += analogReadMilliVolts(PIN_VBAT_READ); + delayMicroseconds(200); } + mv /= 8; - uint16_t ThinknodeM2Board::getBattMilliVolts() { - analogReadResolution(12); - analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db); - - uint32_t mv = 0; - for (int i = 0; i < 8; ++i) { - mv += analogReadMilliVolts(PIN_VBAT_READ); - delayMicroseconds(200); - } - mv /= 8; - - analogReadResolution(10); - return static_cast<uint16_t>(mv * ADC_MULTIPLIER ); + analogReadResolution(10); + return static_cast<uint16_t>(mv * ADC_MULTIPLIER); } - const char* ThinknodeM2Board::getManufacturerName() const { - return "Elecrow ThinkNode M2"; - } +const char *ThinknodeM2Board::getManufacturerName() const { + return "Elecrow ThinkNode M2"; +} diff --git a/variants/thinknode_m2/ThinknodeM2Board.h b/variants/thinknode_m2/ThinknodeM2Board.h index 8011fae67d..0255677784 100644 --- a/variants/thinknode_m2/ThinknodeM2Board.h +++ b/variants/thinknode_m2/ThinknodeM2Board.h @@ -3,15 +3,11 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> class ThinknodeM2Board : public ESP32Board { public: - void begin(); - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); - void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; diff --git a/variants/thinknode_m2/platformio.ini b/variants/thinknode_m2/platformio.ini index aae83324e3..583f913c99 100644 --- a/variants/thinknode_m2/platformio.ini +++ b/variants/thinknode_m2/platformio.ini @@ -30,7 +30,7 @@ build_flags = ${esp32_base.build_flags} -D WRAPPER_CLASS=CustomSX1262Wrapper -D LORA_TX_POWER=22 -D SX126X_RX_BOOSTED_GAIN=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 build_src_filter = ${esp32_base.build_src_filter} +<helpers/ui/SH1106Display.cpp> +<helpers/ui/MomentaryButton.cpp> @@ -159,6 +159,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M2.build_src_filter} +<helpers/esp32/*.cpp> +<helpers/ui/MomentaryButton.cpp> diff --git a/variants/thinknode_m3/ThinkNodeM3Board.h b/variants/thinknode_m3/ThinkNodeM3Board.h index 1435d31d47..9e8f49894d 100644 --- a/variants/thinknode_m3/ThinkNodeM3Board.h +++ b/variants/thinknode_m3/ThinkNodeM3Board.h @@ -18,12 +18,12 @@ class ThinkNodeM3Board : public NRF52BoardDCDC { void begin(); uint16_t getBattMilliVolts() override; -#if defined(P_LORA_TX_LED) +#ifdef P_LORA_TX_LED void onBeforeTransmit() override { - digitalWrite(P_LORA_TX_LED, HIGH); // turn TX LED on + digitalWrite(P_LORA_TX_LED, LED_STATE_ON); // turn TX LED on } void onAfterTransmit() override { - digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED off + digitalWrite(P_LORA_TX_LED, !LED_STATE_ON); // turn TX LED off } #endif @@ -44,11 +44,11 @@ class ThinkNodeM3Board : public NRF52BoardDCDC { void powerOff() override { // turn off all leds, sd_power_system_off will not do this for us - #ifdef P_LORA_TX_LED - digitalWrite(P_LORA_TX_LED, LOW); - #endif + digitalWrite(PIN_LED_BLUE, !LED_STATE_ON); + digitalWrite(PIN_LED_GREEN, !LED_STATE_ON); + digitalWrite(PIN_LED_RED, !LED_STATE_ON); // power off board - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/thinknode_m3/platformio.ini b/variants/thinknode_m3/platformio.ini index 0a3d4eda92..ce1e7e59e4 100644 --- a/variants/thinknode_m3/platformio.ini +++ b/variants/thinknode_m3/platformio.ini @@ -24,10 +24,9 @@ build_flags = ${nrf52_base.build_flags} -D P_LORA_MOSI=46 -D P_LORA_RESET=42 -D P_LORA_TX_LED=PIN_LED_BLUE - -D P_LORA_TX_LED_ON=LOW -D LR11X0_DIO_AS_RF_SWITCH=true -D LR11X0_DIO3_TCXO_VOLTAGE=3.3 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 -D ENV_INCLUDE_GPS=1 build_src_filter = ${nrf52_base.build_src_filter} +<helpers/*.cpp> @@ -84,8 +83,10 @@ build_flags = ${ThinkNode_M3.build_flags} -D DISPLAY_CLASS=NullDisplayDriver -D PIN_BUZZER=23 -D PIN_BUZZER_EN=36 + -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M3.build_src_filter} +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${ThinkNode_M3.lib_deps} @@ -105,7 +106,6 @@ build_flags = ${ThinkNode_M3.build_flags} -D BLE_TX_POWER=0 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 - -D GPS_NMEA_DEBUG -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_CLASS=NullDisplayDriver -D PIN_BUZZER=23 @@ -113,6 +113,7 @@ build_flags = ${ThinkNode_M3.build_flags} build_src_filter = ${ThinkNode_M3.build_src_filter} +<helpers/nrf52/SerialBLEInterface.cpp> +<helpers/ui/buzzer.cpp> + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${ThinkNode_M3.lib_deps} diff --git a/variants/thinknode_m3/variant.cpp b/variants/thinknode_m3/variant.cpp index dad0f3f550..b47b83543d 100644 --- a/variants/thinknode_m3/variant.cpp +++ b/variants/thinknode_m3/variant.cpp @@ -80,16 +80,18 @@ void initVariant() digitalWrite(LED_POWER, HIGH); pinMode(PIN_LED_BLUE, OUTPUT); + digitalWrite(PIN_LED_BLUE, !LED_STATE_ON); pinMode(PIN_LED_GREEN, OUTPUT); + digitalWrite(PIN_LED_GREEN, !LED_STATE_ON); pinMode(PIN_LED_RED, OUTPUT); + digitalWrite(PIN_LED_RED, !LED_STATE_ON); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(PIN_GPS_POWER, OUTPUT); pinMode(PIN_GPS_EN, OUTPUT); - pinMode(PIN_GPS_RESET, OUTPUT); // Power on gps but in standby - digitalWrite(PIN_GPS_EN, LOW); - digitalWrite(PIN_GPS_POWER, HIGH); + digitalWrite(PIN_GPS_EN, !GPS_EN_ACTIVE); + digitalWrite(PIN_GPS_POWER, GPS_POWER_ACTIVE); } diff --git a/variants/thinknode_m3/variant.h b/variants/thinknode_m3/variant.h index 02ed78a84f..78dfab85d9 100644 --- a/variants/thinknode_m3/variant.h +++ b/variants/thinknode_m3/variant.h @@ -32,7 +32,7 @@ #define EXT_CHRG_DETECT (32) // P1.3 #define EXT_PWR_DETECT (31) // P0.5 -#define PIN_VBAT_READ (5) +#define PIN_VBAT_READ (5) #define AREF_VOLTAGE (2.4f) #define ADC_MULTIPLIER (2.0) //(1.75f) // 2.0 gives more coherent value, 4.2V when charged, needs tweaking @@ -92,18 +92,19 @@ // GPS #define HAS_GPS 1 -#define PIN_GPS_RX (22) +#define PIN_GPS_RX (22) #define PIN_GPS_TX (20) #define PIN_GPS_POWER (14) #define PIN_GPS_EN (21) // STANDBY #define PIN_GPS_RESET (25) // REINIT -#define GPS_RESET_ACTIVE LOW +#define GPS_POWER_ACTIVE HIGH #define GPS_EN_ACTIVE HIGH +#define GPS_RESET (-1) #define GPS_BAUDRATE 9600 //////////////////////////////////////////////////////////////////////////////// // Buzzer #define BUZZER_EN (37) // P1.5 -#define BUZZER_PIN (25) // P0.25 \ No newline at end of file +#define BUZZER_PIN (25) // P0.25 diff --git a/variants/thinknode_m5/ThinknodeM5Board.cpp b/variants/thinknode_m5/ThinknodeM5Board.cpp index c4de538c56..2cb138e639 100644 --- a/variants/thinknode_m5/ThinknodeM5Board.cpp +++ b/variants/thinknode_m5/ThinknodeM5Board.cpp @@ -19,14 +19,6 @@ void ThinknodeM5Board::begin() { ESP32Board::begin(); } - void ThinknodeM5Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { - esp_deep_sleep_start(); - } - - void ThinknodeM5Board::powerOff() { - enterDeepSleep(0); - } - uint16_t ThinknodeM5Board::getBattMilliVolts() { analogReadResolution(12); analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db); diff --git a/variants/thinknode_m5/ThinknodeM5Board.h b/variants/thinknode_m5/ThinknodeM5Board.h index 3c120027b7..57ff0d00eb 100644 --- a/variants/thinknode_m5/ThinknodeM5Board.h +++ b/variants/thinknode_m5/ThinknodeM5Board.h @@ -3,7 +3,6 @@ #include <Arduino.h> #include <helpers/RefCountedDigitalPin.h> #include <helpers/ESP32Board.h> -#include <driver/rtc_io.h> #include <PCA9557.h> extern PCA9557 expander; @@ -13,8 +12,6 @@ class ThinknodeM5Board : public ESP32Board { public: void begin(); - void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); - void powerOff() override; uint16_t getBattMilliVolts() override; const char* getManufacturerName() const override ; diff --git a/variants/thinknode_m5/platformio.ini b/variants/thinknode_m5/platformio.ini index 8572d1ebe0..5e85b64981 100644 --- a/variants/thinknode_m5/platformio.ini +++ b/variants/thinknode_m5/platformio.ini @@ -37,7 +37,7 @@ build_flags = ${esp32_base.build_flags} -D WRAPPER_CLASS=CustomSX1262Wrapper -D LORA_TX_POWER=22 -D SX126X_RX_BOOSTED_GAIN=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 -D ENV_INCLUDE_GPS=1 -D PERSISTANT_GPS=1 -D ENV_SKIP_GPS_DETECT=1 @@ -173,6 +173,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M5.build_src_filter} +<helpers/esp32/*.cpp> +<helpers/ui/MomentaryButton.cpp> diff --git a/variants/thinknode_m6/ThinkNodeM6Board.h b/variants/thinknode_m6/ThinkNodeM6Board.h index 32baa2a0a2..78815e2c9c 100644 --- a/variants/thinknode_m6/ThinkNodeM6Board.h +++ b/variants/thinknode_m6/ThinkNodeM6Board.h @@ -44,6 +44,6 @@ class ThinkNodeM6Board : public NRF52BoardDCDC { #endif // power off board - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/thinknode_m6/platformio.ini b/variants/thinknode_m6/platformio.ini index 6fe9043668..ad7e6902cf 100644 --- a/variants/thinknode_m6/platformio.ini +++ b/variants/thinknode_m6/platformio.ini @@ -48,8 +48,8 @@ build_flags = -D ADMIN_PASSWORD='"password"' -D MAX_NEIGHBOURS=50 ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 - -D GPS_NMEA_DEBUG=1 +; -D MESH_DEBUG=1 +; -D GPS_NMEA_DEBUG=1 build_src_filter = ${ThinkNode_M6.build_src_filter} +<../examples/simple_repeater/*.cpp> lib_deps = @@ -63,6 +63,7 @@ build_flags = -D ADVERT_LAT=0.0 -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ThinkNode_M6.build_src_filter} @@ -84,7 +85,6 @@ build_flags = -D BLE_DEBUG_LOGGING=1 -D OFFLINE_QUEUE_SIZE=256 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 - -D QSPIFLASH=1 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${ThinkNode_M6.build_src_filter} @@ -106,9 +106,9 @@ build_flags = -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 - -D QSPIFLASH=1 -D OFFLINE_QUEUE_SIZE=256 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 + -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M6.build_src_filter} +<helpers/ui/buzzer.cpp> +<helpers/ui/MomentaryButton.cpp> diff --git a/variants/thinknode_m6/variant.cpp b/variants/thinknode_m6/variant.cpp index c88f387db6..79930e2d05 100644 --- a/variants/thinknode_m6/variant.cpp +++ b/variants/thinknode_m6/variant.cpp @@ -30,6 +30,8 @@ void initVariant() { digitalWrite(PIN_GPS_STANDBY, HIGH); pinMode(PIN_GPS_EN, OUTPUT); digitalWrite(PIN_GPS_EN, HIGH); - pinMode(PIN_GPS_RESET, OUTPUT); - digitalWrite(PIN_GPS_RESET, HIGH); + // PIN_GPS_RESET (pin 29 / REINIT) is intentionally left floating (input). + // Driving it HIGH holds the L76K silent, so it never streams NMEA and the + // firmware reports "no GPS". Letting it float lets the module run, matching + // the Meshtastic M6 variant. See GPS_RESET (-1) in variant.h. } diff --git a/variants/thinknode_m6/variant.h b/variants/thinknode_m6/variant.h index 70fd65062c..0a4025f3bd 100644 --- a/variants/thinknode_m6/variant.h +++ b/variants/thinknode_m6/variant.h @@ -102,7 +102,12 @@ #define PIN_GPS_RX (2) #define PIN_GPS_TX (3) #define PIN_GPS_EN (6) // EN -#define PIN_GPS_RESET (29) +#define PIN_GPS_RESET (29) // REINIT - must FLOAT; driving it (esp. HIGH) silences the L76K +// The M6's L76K streams NMEA on its own and must not have its REINIT pin driven. +// Tell the location provider there is no reset pin so it never touches pin 29 +// (driving it HIGH holds the module silent). Matches Meshtastic, which leaves +// this pin as an input. See variant.cpp (pin 29 is intentionally not configured). +#define GPS_RESET (-1) #define PIN_GPS_STANDBY (30) // STANDBY #define PIN_GPS_PPS (31) #define GPS_BAUD_RATE 9600 diff --git a/variants/thinknode_m7/ThinkNodeM7Board.cpp b/variants/thinknode_m7/ThinkNodeM7Board.cpp new file mode 100644 index 0000000000..6b1bf86029 --- /dev/null +++ b/variants/thinknode_m7/ThinkNodeM7Board.cpp @@ -0,0 +1,17 @@ +#include "ThinkNodeM7Board.h" + +void ThinkNodeM7Board::begin() { + ESP32Board::begin(); +} + +void ThinkNodeM7Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) { + esp_deep_sleep_start(); +} + +void ThinkNodeM7Board::powerOff() { + enterDeepSleep(0); +} + +const char* ThinkNodeM7Board::getManufacturerName() const { + return "Elecrow ThinkNode M7"; +} diff --git a/variants/thinknode_m7/ThinkNodeM7Board.h b/variants/thinknode_m7/ThinkNodeM7Board.h new file mode 100644 index 0000000000..f591b5accc --- /dev/null +++ b/variants/thinknode_m7/ThinkNodeM7Board.h @@ -0,0 +1,23 @@ +#pragma once + +#include <Arduino.h> +#include <helpers/RefCountedDigitalPin.h> +#include <helpers/ESP32Board.h> +#include "variant.h" +#include "NullDisplayDriver.h" +#include "MomentaryButton.h" + +class ThinkNodeM7Board : public ESP32Board { + +public: + void begin(); + void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1); + void powerOff() override; + const char* getManufacturerName() const override; + void onBeforeTransmit() override { + digitalWrite(P_LORA_TX_LED, LOW); + } + void onAfterTransmit() override { + digitalWrite(P_LORA_TX_LED, HIGH); + } +}; diff --git a/variants/thinknode_m7/pins_arduino.h b/variants/thinknode_m7/pins_arduino.h new file mode 100644 index 0000000000..845a8db1d5 --- /dev/null +++ b/variants/thinknode_m7/pins_arduino.h @@ -0,0 +1,19 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <stdint.h> + +#define USB_VID 0x303a +#define USB_PID 0x1001 + +// The default Wire will be mapped to PMU and RTC +static const uint8_t SDA = 17; +static const uint8_t SCL = 18; + +// Default SPI is the LR1110 radio bus +static const uint8_t SS = 12; +static const uint8_t MOSI = 10; +static const uint8_t MISO = 9; +static const uint8_t SCK = 11; + +#endif /* Pins_Arduino_h */ \ No newline at end of file diff --git a/variants/thinknode_m7/platformio.ini b/variants/thinknode_m7/platformio.ini new file mode 100644 index 0000000000..7d9892e5fb --- /dev/null +++ b/variants/thinknode_m7/platformio.ini @@ -0,0 +1,179 @@ +[ThinkNode_M7] +extends = esp32_base +board = thinknode_m7 +board_upload.flash_size = 8MB +board_build.partitions = default_8MB.csv +build_flags = ${esp32_base.build_flags} + -I src/helpers/esp32 + -I variants/thinknode_m7 + -I src/helpers/sensors + -I src/helpers/ui + -D THINKNODE_M7 + -D PIN_USER_BTN_ANA=4 + -D PIN_STATUS_LED=3 ; green + -D LED_STATE_ON=LOW + -D RADIO_CLASS=CustomLR1110 + -D WRAPPER_CLASS=CustomLR1110Wrapper + -D USE_LR1110 + -D LORA_TX_POWER=22 + -D RF_SWITCH_TABLE + -D RX_BOOSTED_GAIN=true + -D P_LORA_BUSY=13 + -D P_LORA_SCLK=11 + -D P_LORA_NSS=12 + -D P_LORA_DIO_1=38 + -D P_LORA_MISO=9 + -D P_LORA_MOSI=10 + -D P_LORA_RESET=39 + -D P_LORA_TX_LED=46 ; blue + -D LR11X0_DIO_AS_RF_SWITCH=true + -D LR11X0_DIO3_TCXO_VOLTAGE=1.8 +build_src_filter = ${esp32_base.build_src_filter} + +<helpers/*.cpp> + +<helpers/sensors/EnvironmentSensorManager.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../variants/thinknode_m7> +lib_deps = ${esp32_base.lib_deps} + stevemarple/MicroNMEA @ ^2.0.6 + +[ThinkNode_M7_ethernet] +build_flags = + -D ETHERNET_ENABLED + -D ETHERNET_USE_CH390 + -D ETHERNET_CLASS=CH390EthernetInterface + -D ETH_MISO_PIN=14 + -D ETH_MOSI_PIN=48 + -D ETH_SCLK_PIN=47 + -D ETH_CS_PIN=21 + -D ETH_INT_PIN=45 + -D ETHERNET_DEBUG_LOGGING=1 +build_src_filter = + +<helpers/ethernet/*.cpp> + +<helpers/ethernet/ch390/> +lib_deps = + https://github.com/liamcottle/ESP32-CH390.git#47b401f1de546118b03c18b5689dedec45871f2d + +[env:ThinkNode_M7_repeater] +extends = ThinkNode_M7 +build_src_filter = ${ThinkNode_M7.build_src_filter} + +<../examples/simple_repeater/*.cpp> +build_flags = + ${ThinkNode_M7.build_flags} + -D ADVERT_NAME='"ThinkNode M7 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +lib_deps = + ${ThinkNode_M7.lib_deps} + ${esp32_ota.lib_deps} + +[env:ThinkNode_M7_room_server] +extends = ThinkNode_M7 +build_src_filter = ${ThinkNode_M7.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${ThinkNode_M7.build_flags} + -D ADVERT_NAME='"ThinkNode M7 Room Server"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +lib_deps = + ${ThinkNode_M7.lib_deps} + ${esp32_ota.lib_deps} + +[env:ThinkNode_M7_companion_radio_ble] +extends = ThinkNode_M7 +build_flags = + ${ThinkNode_M7.build_flags} + ${ThinkNode_M7_ethernet.build_flags} + -I examples/companion_radio/ui-orig + -D DISPLAY_CLASS=NullDisplayDriver + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D OFFLINE_QUEUE_SIZE=256 + ; -D BLE_DEBUG_LOGGING=1 + ; -D MESH_PACKET_LOGGING=1 +build_src_filter = ${ThinkNode_M7.build_src_filter} + ${ThinkNode_M7_ethernet.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = + ${ThinkNode_M7.lib_deps} + ${ThinkNode_M7_ethernet.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:ThinkNode_M7_companion_radio_usb] +extends = ThinkNode_M7 +build_flags = + ${ThinkNode_M7.build_flags} + -I examples/companion_radio/ui-orig + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE +build_src_filter = ${ThinkNode_M7.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = + ${ThinkNode_M7.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:ThinkNode_M7_companion_radio_wifi] +extends = ThinkNode_M7 +build_flags = + ${ThinkNode_M7.build_flags} + -I examples/companion_radio/ui-orig + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=NullDisplayDriver + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' + -D OFFLINE_QUEUE_SIZE=256 +; -D MESH_PACKET_LOGGING=1 +build_src_filter = ${ThinkNode_M7.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<helpers/ui/NullDisplayDriver.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = + ${ThinkNode_M7.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:ThinkNode_M7_companion_radio_ethernet] +extends = ThinkNode_M7 +build_flags = + ${ThinkNode_M7.build_flags} + ${ThinkNode_M7_ethernet.build_flags} + -I examples/companion_radio/ui-orig + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=NullDisplayDriver + -D OFFLINE_QUEUE_SIZE=256 +build_src_filter = ${ThinkNode_M7.build_src_filter} + ${ThinkNode_M7_ethernet.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-orig/*.cpp> +lib_deps = ${ThinkNode_M7.lib_deps} + ${ThinkNode_M7_ethernet.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:ThinkNode_M7_kiss_modem] +extends = ThinkNode_M7 +build_src_filter = ${ThinkNode_M7.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/thinknode_m7/target.cpp b/variants/thinknode_m7/target.cpp new file mode 100644 index 0000000000..f4b898d8e9 --- /dev/null +++ b/variants/thinknode_m7/target.cpp @@ -0,0 +1,84 @@ +#include <Arduino.h> +#include "target.h" +#include <helpers/sensors/MicroNMEALocationProvider.h> + +ThinkNodeM7Board board; + +static SPIClass spi; +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#ifdef ENV_INCLUDE_GPS +MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); +EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else +EnvironmentSensorManager sensors = EnvironmentSensorManager(); +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display; +#endif + +#ifdef RF_SWITCH_TABLE +static const uint32_t rfswitch_dios[Module::RFSWITCH_MAX_PINS] = { + RADIOLIB_LR11X0_DIO5, + RADIOLIB_LR11X0_DIO6, + RADIOLIB_NC, + RADIOLIB_NC, + RADIOLIB_NC +}; + +static const Module::RfSwitchMode_t rfswitch_table[] = { + // mode DIO5 DIO6 + {LR11x0::MODE_STBY, {LOW, LOW}}, {LR11x0::MODE_RX, {HIGH, LOW}}, + {LR11x0::MODE_TX, {HIGH, HIGH}}, {LR11x0::MODE_TX_HP, {LOW, HIGH}}, + {LR11x0::MODE_TX_HF, {LOW, LOW}}, {LR11x0::MODE_GNSS, {LOW, LOW}}, + {LR11x0::MODE_WIFI, {LOW, LOW}}, END_OF_MODE_TABLE, + END_OF_MODE_TABLE, +}; +#endif + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + +bool radio_init() { + rtc_clock.begin(Wire); + +#ifdef LR11X0_DIO3_TCXO_VOLTAGE + float tcxo = LR11X0_DIO3_TCXO_VOLTAGE; +#else + float tcxo = 1.6f; +#endif + + spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI, P_LORA_NSS); + + int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_LR11X0_LORA_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + if (status != RADIOLIB_ERR_NONE) { + Serial.print("ERROR: radio init failed: "); + Serial.println(status); + return false; // fail + } + + radio.setCRC(2); + radio.explicitHeader(); + +#ifdef RF_SWITCH_TABLE + radio.setRfSwitchTable(rfswitch_dios, rfswitch_table); +#endif +#ifdef RX_BOOSTED_GAIN + radio.setRxBoostedGainMode(RX_BOOSTED_GAIN); +#endif + + return true; // success +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} + + diff --git a/variants/thinknode_m7/target.h b/variants/thinknode_m7/target.h new file mode 100644 index 0000000000..34213f57ca --- /dev/null +++ b/variants/thinknode_m7/target.h @@ -0,0 +1,29 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <ThinkNodeM7Board.h> +#include <helpers/radiolib/CustomLR1110Wrapper.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/SensorManager.h> +#include <helpers/sensors/EnvironmentSensorManager.h> +#include <helpers/sensors/LocationProvider.h> +#ifdef DISPLAY_CLASS + #include "NullDisplayDriver.h" +#endif + +extern ThinkNodeM7Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +#ifdef DISPLAY_CLASS + extern NullDisplayDriver display; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); + + + \ No newline at end of file diff --git a/variants/thinknode_m7/variant.cpp b/variants/thinknode_m7/variant.cpp new file mode 100644 index 0000000000..e056ab647a --- /dev/null +++ b/variants/thinknode_m7/variant.cpp @@ -0,0 +1,8 @@ +#include "variant.h" +#include "Arduino.h" + +void initVariant() +{ + pinMode(P_LORA_TX_LED, OUTPUT); + digitalWrite(P_LORA_TX_LED, HIGH); +} \ No newline at end of file diff --git a/variants/thinknode_m7/variant.h b/variants/thinknode_m7/variant.h new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/variants/thinknode_m7/variant.h @@ -0,0 +1 @@ + diff --git a/variants/thinknode_m9/ThinkNodeM9Board.cpp b/variants/thinknode_m9/ThinkNodeM9Board.cpp new file mode 100644 index 0000000000..bf558639dd --- /dev/null +++ b/variants/thinknode_m9/ThinkNodeM9Board.cpp @@ -0,0 +1,23 @@ +#include "ThinkNodeM9Board.h" + +void ThinkNodeM9Board::begin() { + + // power on screen + pinMode(VEXT_ENABLE, OUTPUT); + digitalWrite(VEXT_ENABLE, VEXT_ON_VALUE); + + ESP32Board::begin(); + +} + +void ThinkNodeM9Board::powerOff() { + enterDeepSleep(0); +} + +uint32_t ThinkNodeM9Board::getIRQGpio() { + return LORA_DIO0; +} + +const char* ThinkNodeM9Board::getManufacturerName() const { + return "Elecrow ThinkNode M9"; +} diff --git a/variants/thinknode_m9/ThinkNodeM9Board.h b/variants/thinknode_m9/ThinkNodeM9Board.h new file mode 100644 index 0000000000..d5f68e0556 --- /dev/null +++ b/variants/thinknode_m9/ThinkNodeM9Board.h @@ -0,0 +1,13 @@ +#pragma once + +#include <Arduino.h> +#include <helpers/ESP32Board.h> + +class ThinkNodeM9Board : public ESP32Board { + +public: + void begin(); + void powerOff() override; + const char* getManufacturerName() const override; + uint32_t getIRQGpio() override; +}; diff --git a/variants/thinknode_m9/pins_arduino.h b/variants/thinknode_m9/pins_arduino.h new file mode 100755 index 0000000000..1886eea031 --- /dev/null +++ b/variants/thinknode_m9/pins_arduino.h @@ -0,0 +1,64 @@ +// Need this file for ESP32-S3 +// No need to modify this file, changes to pins imported from variant.h +// Most is similar to https://github.com/espressif/arduino-esp32/blob/master/variants/esp32s3/pins_arduino.h + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <stdint.h> +#include <variant.h> + +#define USB_VID 0x303a +#define USB_PID 0x1001 + +// Serial +static const uint8_t TX = 43; +static const uint8_t RX = 44; + +// Default SPI will be mapped to Radio +static const uint8_t SS = LORA_CS; +static const uint8_t SCK = SPI_SCK; +static const uint8_t MOSI = SPI_MOSI; +static const uint8_t MISO = SPI_MISO; + +// The default Wire will be mapped to PMU and RTC +static const uint8_t SCL = I2C_SCL; +static const uint8_t SDA = I2C_SDA; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 5; +static const uint8_t A5 = 6; +static const uint8_t A6 = 7; +static const uint8_t A7 = 8; +static const uint8_t A8 = 9; +static const uint8_t A9 = 10; +static const uint8_t A10 = 11; +static const uint8_t A11 = 12; +static const uint8_t A12 = 13; +static const uint8_t A13 = 14; +static const uint8_t A14 = 15; +static const uint8_t A15 = 16; +static const uint8_t A16 = 17; +static const uint8_t A17 = 18; +static const uint8_t A18 = 19; +static const uint8_t A19 = 20; + +static const uint8_t T1 = 1; +static const uint8_t T2 = 2; +static const uint8_t T3 = 3; +static const uint8_t T4 = 4; +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T7 = 7; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; +static const uint8_t T10 = 10; +static const uint8_t T11 = 11; +static const uint8_t T12 = 12; +static const uint8_t T13 = 13; +static const uint8_t T14 = 14; + +#endif /* Pins_Arduino_h */ diff --git a/variants/thinknode_m9/platformio.ini b/variants/thinknode_m9/platformio.ini new file mode 100755 index 0000000000..09b1391d67 --- /dev/null +++ b/variants/thinknode_m9/platformio.ini @@ -0,0 +1,161 @@ +[ThinkNode_M9] +extends = esp32_base +board = thinknode_m9 +board_check = true +board_build.partitions = default_16MB.csv +upload_protocol = esptool +build_flags = + ${esp32_base.build_flags} + ${sensor_base.build_flags} + -I variants/thinknode_m9 + -I src/helpers/esp32 + -I src/helpers/sensors + -D THINKNODE_M9 + -D PIN_BUZZER=9 + -D PIN_BOARD_SCL=6 + -D PIN_BOARD_SDA=7 + -D P_LORA_NSS=39 + -D P_LORA_RESET=45 + -D P_LORA_BUSY=41 + -D P_LORA_SCLK=40 + -D P_LORA_MISO=38 + -D P_LORA_MOSI=47 + -D P_LORA_DIO_1=42 + -D USE_LR1110 + -D RF_SWITCH_TABLE + -D RADIO_CLASS=CustomLR1110 + -D WRAPPER_CLASS=CustomLR1110Wrapper + -D LR11X0_DIO_AS_RF_SWITCH=true + -D LR11X0_DIO3_TCXO_VOLTAGE=3.3 + -D LORA_TX_POWER=22 + -D DISPLAY_CLASS=ST7789Display + -D DISPLAY_FLIP_VERTICALLY=1 + -D DISPLAY_SCALE_X=2.5f ; 320 / 128 + -D DISPLAY_SCALE_Y=3.75f ; 240 / 64 + -D ST7789 + -D PIN_TFT_VDD_CTL=-1 + -D PIN_TFT_LEDA_CTL=17 + -D PIN_TFT_RST=14 + -D PIN_GPS_RX=3 + -D PIN_GPS_TX=2 + -D PIN_GPS_EN=11 + -D PIN_GPS_EN_ACTIVE=LOW + -D PIN_GPS_RESET=5 + -D PIN_GPS_RESET_ACTIVE=HIGH + -D GPS_BAUD_RATE=115200 + -D ENV_INCLUDE_GPS=1 + -D PIN_VBAT_READ=13 +build_src_filter = ${esp32_base.build_src_filter} + +<helpers/sensors/EnvironmentSensorManager.cpp> + +<helpers/ui/ST7789Display.cpp> + +<helpers/ui/OLEDDisplay.cpp> + +<helpers/ui/OLEDDisplayFonts.cpp> + +<helpers/*.cpp> + +<../variants/thinknode_m9> +lib_deps = ${esp32_base.lib_deps} + ${sensor_base.lib_deps} + adafruit/Adafruit GFX Library @ ^1.12.1 + +[env:ThinkNode_M9_repeater_] +extends = ThinkNode_M9 +build_flags = + ${ThinkNode_M9.build_flags} + -D ADVERT_NAME='"ThinkNode M9 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + ;-D MESH_PACKET_LOGGING=1 + ;-D MESH_DEBUG=1 +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<../examples/simple_repeater/*.cpp> +lib_deps = + ${ThinkNode_M9.lib_deps} + ${esp32_ota.lib_deps} + +[env:ThinkNode_M9_room_server_] +extends = ThinkNode_M9 +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${ThinkNode_M9.build_flags} + -D ADVERT_NAME='"ThinkNode M9 Room Server"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +lib_deps = + ${ThinkNode_M9.lib_deps} + ${esp32_ota.lib_deps} + +[env:ThinkNode_M9_companion_radio_ble_] +extends = ThinkNode_M9 +build_flags = + ${ThinkNode_M9.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D BLE_PIN_CODE=123456 + -D OFFLINE_QUEUE_SIZE=256 + ; -D BLE_DEBUG_LOGGING=1 + ; -D MESH_PACKET_LOGGING=1 +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${ThinkNode_M9.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:ThinkNode_M9_companion_radio_usb_] +extends = ThinkNode_M9 +build_flags = + ${ThinkNode_M9.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${ThinkNode_M9.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:ThinkNode_M9_companion_radio_wifi_] +extends = ThinkNode_M9 +build_flags = + ${ThinkNode_M9.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' + -D OFFLINE_QUEUE_SIZE=256 + ; -D MESH_PACKET_LOGGING=1 +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<helpers/esp32/*.cpp> + +<helpers/ui/buzzer.cpp> + +<helpers/ui/MomentaryButton.cpp> + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${ThinkNode_M9.lib_deps} + densaugeo/base64 @ ~1.4.0 + end2endzone/NonBlockingRTTTL@^1.3.0 + +[env:ThinkNode_M9_kiss_modem] +extends = ThinkNode_M9 +build_src_filter = ${ThinkNode_M9.build_src_filter} + +<../examples/kiss_modem/> diff --git a/variants/thinknode_m9/target.cpp b/variants/thinknode_m9/target.cpp new file mode 100644 index 0000000000..3cbd7d758a --- /dev/null +++ b/variants/thinknode_m9/target.cpp @@ -0,0 +1,78 @@ +#include <Arduino.h> +#include "target.h" + +ThinkNodeM9Board board; + +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#ifdef ENV_INCLUDE_GPS +#include <helpers/sensors/MicroNMEALocationProvider.h> +MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); +EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else +EnvironmentSensorManager sensors = EnvironmentSensorManager(); +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display; +#endif + +#ifdef RF_SWITCH_TABLE +static const uint32_t rfswitch_dios[Module::RFSWITCH_MAX_PINS] = { + RADIOLIB_LR11X0_DIO5, + RADIOLIB_LR11X0_DIO6, + RADIOLIB_NC, + RADIOLIB_NC, + RADIOLIB_NC +}; + +static const Module::RfSwitchMode_t rfswitch_table[] = { + // mode DIO5 DIO6 + {LR11x0::MODE_STBY, {LOW, LOW}}, {LR11x0::MODE_RX, {HIGH, LOW}}, + {LR11x0::MODE_TX, {HIGH, HIGH}}, {LR11x0::MODE_TX_HP, {LOW, HIGH}}, + {LR11x0::MODE_TX_HF, {LOW, LOW}}, {LR11x0::MODE_GNSS, {LOW, LOW}}, + {LR11x0::MODE_WIFI, {LOW, LOW}}, END_OF_MODE_TABLE, +}; +#endif + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + +bool radio_init() { + rtc_clock.begin(Wire); + +#ifdef LR11X0_DIO3_TCXO_VOLTAGE + float tcxo = LR11X0_DIO3_TCXO_VOLTAGE; +#else + float tcxo = 1.6f; +#endif + + int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_LR11X0_LORA_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, tcxo); + if (status != RADIOLIB_ERR_NONE) { + Serial.print("ERROR: radio init failed: "); + Serial.println(status); + return false; // fail + } + + radio.setCRC(2); + radio.explicitHeader(); + +#ifdef RF_SWITCH_TABLE + radio.setRfSwitchTable(rfswitch_dios, rfswitch_table); +#endif +#ifdef RX_BOOSTED_GAIN + radio.setRxBoostedGainMode(RX_BOOSTED_GAIN); +#endif + + return true; // success +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} \ No newline at end of file diff --git a/variants/thinknode_m9/target.h b/variants/thinknode_m9/target.h new file mode 100644 index 0000000000..f083a9f1b3 --- /dev/null +++ b/variants/thinknode_m9/target.h @@ -0,0 +1,29 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <ThinkNodeM9Board.h> +#include <helpers/radiolib/CustomLR1110Wrapper.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/SensorManager.h> +#include <helpers/sensors/EnvironmentSensorManager.h> +#include <helpers/sensors/LocationProvider.h> +#ifdef DISPLAY_CLASS + #include <helpers/ui/ST7789Display.h> + #include <helpers/ui/MomentaryButton.h> +#endif + +extern ThinkNodeM9Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +#ifdef DISPLAY_CLASS + extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; +#endif + +bool radio_init(); +mesh::LocalIdentity radio_new_identity(); + diff --git a/variants/thinknode_m9/variant.cpp b/variants/thinknode_m9/variant.cpp new file mode 100644 index 0000000000..4ac6a78276 --- /dev/null +++ b/variants/thinknode_m9/variant.cpp @@ -0,0 +1,7 @@ +#include "variant.h" +#include <Arduino.h> + + +void initVariant() { + +} diff --git a/variants/thinknode_m9/variant.h b/variants/thinknode_m9/variant.h new file mode 100755 index 0000000000..37f8b07630 --- /dev/null +++ b/variants/thinknode_m9/variant.h @@ -0,0 +1,114 @@ +/*Power*/ +#define VEXT_ENABLE 18 +#define VEXT_ON_VALUE LOW +#define PIN_GPS_EN 11 +#define GPS_EN_ACTIVE LOW + +/*Wire Interface*/ +#define WIRE_INTERFACES_COUNT 2 +// I2C keybuttons +#define I2C_SCL1 21 +#define I2C_SDA1 20 +#define KB_INT 12 +// I2C peripheral` +#define I2C_SCL 6 +#define I2C_SDA 7 + +/*LED*/ +#define PIN_LED 13 +#define KB_LED 46 + +/*BUZZER*/ +#define PIN_BUZZER 9 + +/*CHARGE_CHECK*/ +#define DONE 8 +#define EXT_PWR_DETECT 1 +#define EXT_CHRG_DETECT 1 +#define EXT_CHRG_DETECT_VALUE LOW +/*GPS*/ +#define GPS_L76K +#define GPS_BAUDRATE 9600 +#define PIN_GPS_RESET 5 +#define PIN_GPS_PPS 4 +#define PIN_GPS_STANDBY 10 // An output to wake GPS, low means allow sleep, high means force wake +#define GPS_TX_PIN 3 +#define GPS_RX_PIN 2 +#define GPS_THREAD_INTERVAL 50 + +/*SPI*/ +#define SPI_MOSI 47 +#define SPI_SCK 40 +#define SPI_MISO 38 + +/*SD Card*/ +#define SDCARD_CS 48 +#define SD_SPI_FREQUENCY 80000000U + +/*Screen*/ +// #define USE_ST7789 1 +#define ST7789_CS 16 +#define ST7789_RS 15 +#define ST7789_TE 19 +#define ST7789_SDA SPI_MOSI // MOSI +#define ST7789_SCK SPI_SCK +#define ST7789_RESET 14 +#define ST7789_MISO SPI_MISO +#define ST7789_BUSY -1 +#define ST7789_BL 17 +#define ST7789_SPI_HOST SPI2_HOST +#define SPI_FREQUENCY 80000000 +#define SPI_READ_FREQUENCY 16000000 + +#define USE_TFTDISPLAY 1 +#define TFT_CS ST7789_CS +#define TFT_BL ST7789_BL +#define TFT_HEIGHT 320 +#define TFT_WIDTH 240 +#define TFT_OFFSET_X 0 +#define TFT_OFFSET_Y 0 +#define TFT_OFFSET_ROTATION 0 +#define TFT_PWM_FREQ 44000 +#define TFT_PWM_CHANNEL 7 +#define TFT_INVERT_LIGHT true +#define TFT_BACKLIGHT_ON LOW +#define SCREEN_ROTATE +#define SCREEN_TRANSITION_FRAMERATE 5 +#define BRIGHTNESS_DEFAULT 128 + +#define LGFX_PANEL ST7789 +#define DISPLAY_SIZE 320x240 +#define LGFX_ROTATION 0 +#define LGFX_CFG_HOST SPI2_HOST +#define LGFX_PIN_SCK ST7789_SCK +#define LGFX_PIN_MOSI ST7789_SDA +#define LGFX_PIN_DC ST7789_RS +#define LGFX_PIN_CS ST7789_CS +#define LGFX_PIN_BL ST7789_BL +#define LGFX_SCREEN_WIDTH TFT_WIDTH +#define LGFX_SCREEN_HEIGHT TFT_HEIGHT +#define LGFX_INVERT_LIGHT true +#define LGFX_PWM_FREQ 44000 +#define LGFX_PWM_CHANNEL 7 + +/*Lora radio*/ +#define LORA_SCK SPI_SCK +#define LORA_MISO SPI_MISO +#define LORA_MOSI SPI_MOSI +#define LORA_CS 39 +#define LORA_RESET 45 +#define LORA_DIO0 41 + +#define USE_LR1110 +#define LR1110_IRQ_PIN 42 +#define LR1110_NRESET_PIN LORA_RESET +#define LR1110_BUSY_PIN LORA_DIO0 +#define LR1110_SPI_NSS_PIN LORA_CS +#define LR1110_SPI_SCK_PIN LORA_SCK +#define LR1110_SPI_MOSI_PIN LORA_MOSI +#define LR1110_SPI_MISO_PIN LORA_MISO +#define LR11X0_DIO3_TCXO_VOLTAGE 3.3 +#define LR11X0_DIO_AS_RF_SWITCH + +/*RTC*/ +#define PCF8563_RTC 0x51 diff --git a/variants/tiny_relay/platformio.ini b/variants/tiny_relay/platformio.ini index 82cb251fdb..13c2ec1cb7 100644 --- a/variants/tiny_relay/platformio.ini +++ b/variants/tiny_relay/platformio.ini @@ -44,6 +44,7 @@ build_flags = ${Tiny_Relay.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 -D MAX_LORA_TX_POWER=22 + -D ENABLE_USB_INTERFACE build_src_filter = ${Tiny_Relay.build_src_filter} +<../examples/companion_radio/*.cpp> lib_deps = ${Tiny_Relay.lib_deps} diff --git a/variants/waveshare_rp2040_lora/platformio.ini b/variants/waveshare_rp2040_lora/platformio.ini index 7dfe14012d..db1ec6038d 100644 --- a/variants/waveshare_rp2040_lora/platformio.ini +++ b/variants/waveshare_rp2040_lora/platformio.ini @@ -84,6 +84,7 @@ extends = waveshare_rp2040_lora build_flags = ${waveshare_rp2040_lora.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${waveshare_rp2040_lora.build_src_filter} diff --git a/variants/wio-e5-dev/platformio.ini b/variants/wio-e5-dev/platformio.ini index 22bdc3c837..82b3781e34 100644 --- a/variants/wio-e5-dev/platformio.ini +++ b/variants/wio-e5-dev/platformio.ini @@ -46,6 +46,7 @@ build_flags = ${lora_e5.build_flags} -D LORA_TX_POWER=22 -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE build_src_filter = ${lora_e5.build_src_filter} +<../examples/companion_radio/*.cpp> lib_deps = ${lora_e5.lib_deps} diff --git a/variants/wio-e5-mini/NullDisplayDriver.h b/variants/wio-e5-mini/NullDisplayDriver.h deleted file mode 100644 index 2a9670bd24..0000000000 --- a/variants/wio-e5-mini/NullDisplayDriver.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <helpers/ui/DisplayDriver.h> - -class NullDisplayDriver : public DisplayDriver { -public: - NullDisplayDriver() : DisplayDriver(128, 64) { } - bool begin() { return false; } // not present - - bool isOn() override { return false; } - void turnOn() override { } - void turnOff() override { } - void clear() override { } - void startFrame(Color bkg = DARK) override { } - void setTextSize(int sz) override { } - void setColor(Color c) override { } - void setCursor(int x, int y) override { } - void print(const char* str) override { } - void fillRect(int x, int y, int w, int h) override { } - void drawRect(int x, int y, int w, int h) override { } - void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override { } - uint16_t getTextWidth(const char* str) override { return 0; } - void endFrame() { } -}; diff --git a/variants/wio-e5-mini/platformio.ini b/variants/wio-e5-mini/platformio.ini index 82f01331bb..021c7db20a 100644 --- a/variants/wio-e5-mini/platformio.ini +++ b/variants/wio-e5-mini/platformio.ini @@ -44,7 +44,9 @@ build_flags = ${lora_e5_mini.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 -D DISPLAY_CLASS=NullDisplayDriver + -D ENABLE_USB_INTERFACE build_src_filter = ${lora_e5_mini.build_src_filter} + +<helpers/ui/NullDisplayDriver.cpp> +<../examples/companion_radio/*.cpp> +<../examples/companion_radio/ui-orig/*.cpp> lib_deps = ${lora_e5_mini.lib_deps} diff --git a/variants/wio-e5-mini/target.h b/variants/wio-e5-mini/target.h index 4807e0f791..f4d6a08846 100644 --- a/variants/wio-e5-mini/target.h +++ b/variants/wio-e5-mini/target.h @@ -8,7 +8,7 @@ #include <helpers/ArduinoHelpers.h> #include <helpers/SensorManager.h> #ifdef DISPLAY_CLASS - #include "NullDisplayDriver.h" + #include <helpers/ui/NullDisplayDriver.h> #endif #include <BME280I2C.h> diff --git a/variants/wio-tracker-l1/WioTrackerL1Board.h b/variants/wio-tracker-l1/WioTrackerL1Board.h index 052238e66f..e376e0666d 100644 --- a/variants/wio-tracker-l1/WioTrackerL1Board.h +++ b/variants/wio-tracker-l1/WioTrackerL1Board.h @@ -35,6 +35,6 @@ class WioTrackerL1Board : public NRF52BoardDCDC { } void powerOff() override { - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/wio-tracker-l1/platformio.ini b/variants/wio-tracker-l1/platformio.ini index 7bb175bb9a..fc958ea2d2 100644 --- a/variants/wio-tracker-l1/platformio.ini +++ b/variants/wio-tracker-l1/platformio.ini @@ -68,6 +68,7 @@ build_flags = ${WioTrackerL1.build_flags} -D OFFLINE_QUEUE_SIZE=256 -D PIN_BUZZER=12 -D QSPIFLASH=1 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${WioTrackerL1.build_src_filter} diff --git a/variants/xiao_c3/XiaoC3Board.h b/variants/xiao_c3/XiaoC3Board.h index 6ea1c15ffc..c5700c6884 100644 --- a/variants/xiao_c3/XiaoC3Board.h +++ b/variants/xiao_c3/XiaoC3Board.h @@ -3,7 +3,6 @@ #include <helpers/ESP32Board.h> #include <Arduino.h> -#include <driver/rtc_io.h> #include <driver/uart.h> class XiaoC3Board : public ESP32Board { @@ -40,37 +39,6 @@ class XiaoC3Board : public ESP32Board { #endif } - void enterDeepSleep(uint32_t secs, int8_t wake_pin = -1) { - gpio_set_direction(gpio_num_t(P_LORA_DIO_1), GPIO_MODE_INPUT); - if (wake_pin >= 0) { - gpio_set_direction((gpio_num_t)wake_pin, GPIO_MODE_INPUT); - } - - //hold disable, isolate and power domain config functions may be unnecessary - //gpio_deep_sleep_hold_dis(); - //esp_sleep_config_gpio_isolate(); - gpio_deep_sleep_hold_en(); - -#if defined(LORA_TX_BOOST_PIN) - gpio_hold_en((gpio_num_t) LORA_TX_BOOST_PIN); - gpio_deep_sleep_hold_en(); -#endif - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - - if (wake_pin >= 0) { - esp_deep_sleep_enable_gpio_wakeup((1 << P_LORA_DIO_1) | (1 << wake_pin), ESP_GPIO_WAKEUP_GPIO_HIGH); - } else { - esp_deep_sleep_enable_gpio_wakeup(1 << P_LORA_DIO_1, ESP_GPIO_WAKEUP_GPIO_HIGH); - } - - if (secs > 0) { - esp_sleep_enable_timer_wakeup(secs * 1000000); - } - - // Finally set ESP32 into sleep - esp_deep_sleep_start(); // CPU halts here and never returns! - } - #if defined(LORA_TX_BOOST_PIN) || defined(P_LORA_TX_LED) void onBeforeTransmit() override { #if defined(P_LORA_TX_LED) diff --git a/variants/xiao_c3/platformio.ini b/variants/xiao_c3/platformio.ini index c0e8458d0e..587c5c273f 100644 --- a/variants/xiao_c3/platformio.ini +++ b/variants/xiao_c3/platformio.ini @@ -100,6 +100,7 @@ build_flags = -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 diff --git a/variants/xiao_c6/platformio.ini b/variants/xiao_c6/platformio.ini index 9f504b8ed0..0d8c2a79d3 100644 --- a/variants/xiao_c6/platformio.ini +++ b/variants/xiao_c6/platformio.ini @@ -1,6 +1,7 @@ [Xiao_C6] extends = esp32c6_base board = esp32-c6-devkitm-1 +board_build.flash_mode = dio board_build.partitions = min_spiffs.csv ; get around 4mb flash limit build_flags = ${esp32c6_base.build_flags} diff --git a/variants/xiao_nrf52/XiaoNrf52Board.h b/variants/xiao_nrf52/XiaoNrf52Board.h index 2790dbad90..e71e7f6517 100644 --- a/variants/xiao_nrf52/XiaoNrf52Board.h +++ b/variants/xiao_nrf52/XiaoNrf52Board.h @@ -47,10 +47,10 @@ class XiaoNrf52Board : public NRF52BoardDCDC { #ifdef PIN_USER_BTN // configure button press to wake up when in powered off state - nrf_gpio_cfg_sense_input(digitalPinToInterrupt(g_ADigitalPinMap[PIN_USER_BTN]), NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW); + nrf_gpio_cfg_sense_input(digitalPinToInterrupt(g_ADigitalPinMap[PIN_USER_BTN]), NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); #endif - sd_power_system_off(); + NRF52Board::powerOff(); } }; diff --git a/variants/xiao_nrf52/platformio.ini b/variants/xiao_nrf52/platformio.ini index a085433688..1076bd8de7 100644 --- a/variants/xiao_nrf52/platformio.ini +++ b/variants/xiao_nrf52/platformio.ini @@ -53,7 +53,7 @@ build_flags = -D OFFLINE_QUEUE_SIZE=256 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_DEBUG=1 -D QSPIFLASH=1 build_src_filter = ${Xiao_nrf52.build_src_filter} +<helpers/nrf52/SerialBLEInterface.cpp> @@ -74,6 +74,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D OFFLINE_QUEUE_SIZE=256 -D QSPIFLASH=1 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Xiao_nrf52.build_src_filter} diff --git a/variants/xiao_nrf52/target.cpp b/variants/xiao_nrf52/target.cpp index ab6fe279ac..def1dbbeaa 100644 --- a/variants/xiao_nrf52/target.cpp +++ b/variants/xiao_nrf52/target.cpp @@ -4,6 +4,7 @@ #ifdef DISPLAY_CLASS DISPLAY_CLASS display; + MomentaryButton user_btn(PIN_USER_BTN, 1000, true, true); #endif XiaoNrf52Board board; diff --git a/variants/xiao_nrf52/target.h b/variants/xiao_nrf52/target.h index bb3d2a81ff..20093904aa 100644 --- a/variants/xiao_nrf52/target.h +++ b/variants/xiao_nrf52/target.h @@ -11,7 +11,9 @@ #ifdef DISPLAY_CLASS #include <helpers/ui/NullDisplayDriver.h> + #include <helpers/ui/MomentaryButton.h> extern DISPLAY_CLASS display; + extern MomentaryButton user_btn; #endif extern XiaoNrf52Board board; diff --git a/variants/xiao_rp2040/platformio.ini b/variants/xiao_rp2040/platformio.ini index ca00e38b57..cbc50a51db 100644 --- a/variants/xiao_rp2040/platformio.ini +++ b/variants/xiao_rp2040/platformio.ini @@ -38,8 +38,8 @@ build_flags = ${Xiao_rp2040.build_flags} -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' -D MAX_NEIGHBOURS=50 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 build_src_filter = ${Xiao_rp2040.build_src_filter} +<../examples/simple_repeater> @@ -61,6 +61,7 @@ extends = Xiao_rp2040 build_flags = ${Xiao_rp2040.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 + -D ENABLE_USB_INTERFACE ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Xiao_rp2040.build_src_filter} diff --git a/variants/xiao_s3/platformio.ini b/variants/xiao_s3/platformio.ini index 22464e7d80..1632d11201 100644 --- a/variants/xiao_s3/platformio.ini +++ b/variants/xiao_s3/platformio.ini @@ -123,6 +123,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 diff --git a/variants/xiao_s3_wio/platformio.ini b/variants/xiao_s3_wio/platformio.ini index db8c5a9486..293a13c152 100644 --- a/variants/xiao_s3_wio/platformio.ini +++ b/variants/xiao_s3_wio/platformio.ini @@ -136,6 +136,7 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D DISPLAY_CLASS=SSD1306Display -D OFFLINE_QUEUE_SIZE=256 + -D ENABLE_USB_INTERFACE ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Xiao_S3_WIO.build_src_filter} From efd886718a639aba8c002332327dc498bc80451f Mon Sep 17 00:00:00 2001 From: Wolfram Keil <keil@keil.systems> Date: Sun, 9 Aug 2026 21:11:21 +0200 Subject: [PATCH 2/3] Add board hooks for variant-specific telemetry and CLI commands Boards can now expose their own functionality without core changes: - MainBoard::tick(): called from the example main loops; default no-op. Lets a board feed its watchdog and run periodic housekeeping. - MainBoard::getCustomGetter()/setCustomSetter(): CommonCLI forwards 'get board.*' / 'set board.*' to the board class; unknown commands reply with an error as before. Default no-op returns keep behavior identical for all existing boards. - MainBoard::queryBoardTelemetry(CayenneLPP&): simple_repeater asks the board for extra telemetry channels (gated by TELEM_PERM_ENVIRONMENT). All defaults are no-ops, so existing variants build and behave unchanged. Used by the Inhero MR-2 variant (separate PR). --- examples/simple_repeater/MyMesh.cpp | 5 +++++ examples/simple_repeater/main.cpp | 2 ++ examples/simple_sensor/main.cpp | 2 ++ src/MeshCore.h | 8 ++++++++ src/helpers/CommonCLI.cpp | 15 +++++++++++++++ 5 files changed, 32 insertions(+) diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index c93ba1a4cd..907967a1a8 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -249,6 +249,11 @@ int MyMesh::handleRequest(ClientInfo *sender, uint32_t sender_timestamp, uint8_t } sensors.querySensors(perm_mask, telemetry); + // Board-specific telemetry (boards can override queryBoardTelemetry in their Board class) + if (perm_mask & TELEM_PERM_ENVIRONMENT) { + board.queryBoardTelemetry(telemetry); + } + // This default temperature will be overridden by external sensors (if any) float temperature = board.getMCUTemperature(); if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index a714db68ec..06e53171ea 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -157,6 +157,8 @@ void loop() { command[0] = 0; // reset command buffer } + board.tick(); // Feed watchdog and perform board-specific tasks + #ifdef ETHERNET_ENABLED ethernet_loop_maintain(); if (ethernet_read_line(ethernet_command, sizeof(ethernet_command))) { diff --git a/examples/simple_sensor/main.cpp b/examples/simple_sensor/main.cpp index 69182f3a7a..67ad2d2ed0 100644 --- a/examples/simple_sensor/main.cpp +++ b/examples/simple_sensor/main.cpp @@ -145,6 +145,8 @@ void loop() { command[0] = 0; // reset command buffer } + board.tick(); // Feed watchdog and perform board-specific tasks + the_mesh.loop(); sensors.loop(); #ifdef DISPLAY_CLASS diff --git a/src/MeshCore.h b/src/MeshCore.h index 89e60b1f7e..c48be366ba 100644 --- a/src/MeshCore.h +++ b/src/MeshCore.h @@ -37,6 +37,8 @@ #define BRIDGE_DEBUG_PRINTLN(...) {} #endif +class CayenneLPP; + namespace mesh { #define BD_STARTUP_NORMAL 0 // getStartupReason() codes @@ -75,6 +77,12 @@ class MainBoard { virtual const char* getResetReasonString(uint32_t reason) { return "Not available"; } virtual uint8_t getShutdownReason() const { return 0; } virtual const char* getShutdownReasonString(uint8_t reason) { return "Not available"; } + + // Custom board commands and telemetry (boards can override these) + virtual void tick() {} + virtual bool getCustomGetter(const char* getCommand, char* reply, uint32_t maxlen) { return false; } + virtual const char* setCustomSetter(const char* setCommand) { return nullptr; } + virtual bool queryBoardTelemetry(CayenneLPP& telemetry) { return false; } }; /** diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 07181e16ad..cfe5d3a7a3 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -740,6 +740,13 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep savePrefs(); strcpy(reply, "OK"); #endif + } else if (memcmp(config, "board.", 6) == 0) { + const char* result = _board->setCustomSetter(&config[6]); + if (result != nullptr) { + strcpy(reply, result); + } else { + strcpy(reply, "Error: unknown board command"); + } } else if (memcmp(config, "adc.multiplier ", 15) == 0) { _prefs->adc_multiplier = atof(&config[15]); if (_board->setAdcMultiplier(_prefs->adc_multiplier)) { @@ -914,6 +921,14 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep #else strcpy(reply, "Error: unsupported"); #endif + } else if (memcmp(config, "board.", 6) == 0) { + char res[100]; + memset(res, 0, sizeof(res)); + if (_board->getCustomGetter(&config[6], res, sizeof(res))) { + strcpy(reply, res); + } else { + strcpy(reply, "Error: unknown board command"); + } } else if (memcmp(config, "adc.multiplier", 14) == 0) { float adc_mult = _board->getAdcMultiplier(); if (adc_mult == 0.0f) { From 4ec5a556a6e09b0056b2d6bfe0387689a1c76715 Mon Sep 17 00:00:00 2001 From: Wolfram Keil <keil@keil.systems> Date: Sun, 9 Aug 2026 21:11:36 +0200 Subject: [PATCH 3/3] Add Inhero MR-2 board variant (nRF52840/RAK4630 solar repeater) Application-specific repeater platform for autonomous off-grid operation, in production and field-deployed: - RAK4630 core module (nRF52840 + SX1262), 45 x 40 mm - BQ25798 buck/boost charger: universal solar input 3.6-24V with MPPT, JEITA temperature-controlled charging - INA228 coulomb counter for SOC tracking and 7-day energy statistics - Li-Ion, LiFePO4, LTO and Na-Ion battery chemistry profiles - RV-3028 RTC wakeup with low-voltage system sleep (<500uA) and autonomous recovery - BME280 environment telemetry - board.* CLI namespace for configuration and diagnostics (uses the board hooks from the previous PR) - documentation under variants/inhero_mr2/docs/ Build environments: Inhero_MR2_repeater, Inhero_MR2_repeater_bridge_rs232, Inhero_MR2_sensor. --- boards/inhero_mr2.json | 74 + variants/inhero_mr2/BoardConfigContainer.cpp | 2185 +++++++++++++++++ variants/inhero_mr2/BoardConfigContainer.h | 321 +++ variants/inhero_mr2/InheroMr2Board.cpp | 549 +++++ variants/inhero_mr2/InheroMr2Board.h | 77 + variants/inhero_mr2/docs/BATTERY_GUIDE.md | 519 ++++ variants/inhero_mr2/docs/CLI_CHEAT_SHEET.md | 202 ++ variants/inhero_mr2/docs/DATASHEET.md | 235 ++ variants/inhero_mr2/docs/FAQ.md | 403 +++ variants/inhero_mr2/docs/POWER_MANAGEMENT.md | 1035 ++++++++ variants/inhero_mr2/docs/QUICK_START.md | 206 ++ variants/inhero_mr2/docs/README.md | 382 +++ variants/inhero_mr2/docs/TELEMETRY.md | 139 ++ .../inhero_mr2/docs/img/back-annotated_.png | Bin 0 -> 431874 bytes variants/inhero_mr2/docs/img/back.jpg | Bin 0 -> 168168 bytes .../inhero_mr2/docs/img/front-annotated_.png | Bin 0 -> 593503 bytes variants/inhero_mr2/docs/img/front.jpg | Bin 0 -> 345395 bytes .../inhero_mr2/helpers/BatteryOcvMapping.cpp | 43 + .../inhero_mr2/helpers/BatteryOcvMapping.h | 18 + .../inhero_mr2/helpers/BqLowPowerSetup.cpp | 63 + variants/inhero_mr2/helpers/BqLowPowerSetup.h | 16 + variants/inhero_mr2/helpers/CliCommands.cpp | 413 ++++ variants/inhero_mr2/helpers/CliCommands.h | 30 + .../inhero_mr2/helpers/I2cBusRecovery.cpp | 40 + variants/inhero_mr2/helpers/I2cBusRecovery.h | 17 + variants/inhero_mr2/helpers/Rv3028Wake.cpp | 78 + variants/inhero_mr2/helpers/Rv3028Wake.h | 21 + .../inhero_mr2/helpers/SystemSleepGpio.cpp | 104 + variants/inhero_mr2/helpers/SystemSleepGpio.h | 25 + .../inhero_mr2/helpers/UsbAutoManagement.cpp | 49 + .../inhero_mr2/helpers/UsbAutoManagement.h | 19 + variants/inhero_mr2/helpers/Watchdog.cpp | 58 + variants/inhero_mr2/helpers/Watchdog.h | 18 + variants/inhero_mr2/lib/BqDriver.cpp | 563 +++++ variants/inhero_mr2/lib/BqDriver.h | 228 ++ variants/inhero_mr2/lib/Ina228Driver.cpp | 542 ++++ variants/inhero_mr2/lib/Ina228Driver.h | 221 ++ variants/inhero_mr2/lib/SimplePreferences.h | 109 + variants/inhero_mr2/platformio.ini | 70 + variants/inhero_mr2/target.cpp | 55 + variants/inhero_mr2/target.h | 30 + variants/inhero_mr2/variant.cpp | 48 + variants/inhero_mr2/variant.h | 177 ++ 43 files changed, 9382 insertions(+) create mode 100644 boards/inhero_mr2.json create mode 100644 variants/inhero_mr2/BoardConfigContainer.cpp create mode 100644 variants/inhero_mr2/BoardConfigContainer.h create mode 100644 variants/inhero_mr2/InheroMr2Board.cpp create mode 100644 variants/inhero_mr2/InheroMr2Board.h create mode 100644 variants/inhero_mr2/docs/BATTERY_GUIDE.md create mode 100644 variants/inhero_mr2/docs/CLI_CHEAT_SHEET.md create mode 100644 variants/inhero_mr2/docs/DATASHEET.md create mode 100644 variants/inhero_mr2/docs/FAQ.md create mode 100644 variants/inhero_mr2/docs/POWER_MANAGEMENT.md create mode 100644 variants/inhero_mr2/docs/QUICK_START.md create mode 100644 variants/inhero_mr2/docs/README.md create mode 100644 variants/inhero_mr2/docs/TELEMETRY.md create mode 100644 variants/inhero_mr2/docs/img/back-annotated_.png create mode 100644 variants/inhero_mr2/docs/img/back.jpg create mode 100644 variants/inhero_mr2/docs/img/front-annotated_.png create mode 100644 variants/inhero_mr2/docs/img/front.jpg create mode 100644 variants/inhero_mr2/helpers/BatteryOcvMapping.cpp create mode 100644 variants/inhero_mr2/helpers/BatteryOcvMapping.h create mode 100644 variants/inhero_mr2/helpers/BqLowPowerSetup.cpp create mode 100644 variants/inhero_mr2/helpers/BqLowPowerSetup.h create mode 100644 variants/inhero_mr2/helpers/CliCommands.cpp create mode 100644 variants/inhero_mr2/helpers/CliCommands.h create mode 100644 variants/inhero_mr2/helpers/I2cBusRecovery.cpp create mode 100644 variants/inhero_mr2/helpers/I2cBusRecovery.h create mode 100644 variants/inhero_mr2/helpers/Rv3028Wake.cpp create mode 100644 variants/inhero_mr2/helpers/Rv3028Wake.h create mode 100644 variants/inhero_mr2/helpers/SystemSleepGpio.cpp create mode 100644 variants/inhero_mr2/helpers/SystemSleepGpio.h create mode 100644 variants/inhero_mr2/helpers/UsbAutoManagement.cpp create mode 100644 variants/inhero_mr2/helpers/UsbAutoManagement.h create mode 100644 variants/inhero_mr2/helpers/Watchdog.cpp create mode 100644 variants/inhero_mr2/helpers/Watchdog.h create mode 100644 variants/inhero_mr2/lib/BqDriver.cpp create mode 100644 variants/inhero_mr2/lib/BqDriver.h create mode 100644 variants/inhero_mr2/lib/Ina228Driver.cpp create mode 100644 variants/inhero_mr2/lib/Ina228Driver.h create mode 100644 variants/inhero_mr2/lib/SimplePreferences.h create mode 100644 variants/inhero_mr2/platformio.ini create mode 100644 variants/inhero_mr2/target.cpp create mode 100644 variants/inhero_mr2/target.h create mode 100644 variants/inhero_mr2/variant.cpp create mode 100644 variants/inhero_mr2/variant.h diff --git a/boards/inhero_mr2.json b/boards/inhero_mr2.json new file mode 100644 index 0000000000..c048f68459 --- /dev/null +++ b/boards/inhero_mr2.json @@ -0,0 +1,74 @@ +{ + "build": { + "arduino": { + "ldscript": "nrf52840_s140_v6.ld" + }, + "core": "nRF5", + "cpu": "cortex-m4", + "extra_flags": "-DARDUINO_NRF52840_FEATHER -DNRF52840_XXAA", + "f_cpu": "64000000L", + "hwids": [ + [ + "0x239A", + "0x8029" + ], + [ + "0x239A", + "0x0029" + ], + [ + "0x239A", + "0x002A" + ], + [ + "0x239A", + "0x802A" + ] + ], + "usb_product": "Inhero MR2", + "mcu": "nrf52840", + "variant": "Inhero_MR2_Board", + "bsp": { + "name": "adafruit" + }, + "softdevice": { + "sd_flags": "-DS140", + "sd_name": "s140", + "sd_version": "6.1.1", + "sd_fwid": "0x00B6" + }, + "bootloader": { + "settings_addr": "0xFF000" + } + }, + "connectivity": [ + "bluetooth" + ], + "debug": { + "jlink_device": "nRF52840_xxAA", + "svd_path": "nrf52840.svd", + "openocd_target": "nrf52.cfg" + }, + "frameworks": [ + "arduino" + ], + "name": "Inhero MR-2", + "upload": { + "maximum_ram_size": 235520, + "maximum_size": 815104, + "speed": 115200, + "protocol": "nrfutil", + "protocols": [ + "jlink", + "nrfjprog", + "nrfutil", + "stlink", + "cmsis-dap" + ], + "use_1200bps_touch": true, + "require_upload_port": true, + "wait_for_upload_port": true + }, + "url": "https://inhero.de", + "vendor": "Inhero GmbH" +} diff --git a/variants/inhero_mr2/BoardConfigContainer.cpp b/variants/inhero_mr2/BoardConfigContainer.cpp new file mode 100644 index 0000000000..a32b09b41f --- /dev/null +++ b/variants/inhero_mr2/BoardConfigContainer.cpp @@ -0,0 +1,2185 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * Board Configuration Container Implementation + */ +#include "BoardConfigContainer.h" +#include "InheroMr2Board.h" +#include "target.h" + +#include "lib/BqDriver.h" +#include "lib/Ina228Driver.h" +#include "lib/SimplePreferences.h" + +#include <FreeRTOS.h> +#include <task.h> +#include <MeshCore.h> + +#include "helpers/Watchdog.h" +#include <nrf_soc.h> // For NRF_POWER (GPREGRET2) + +#if ENV_INCLUDE_BME280 +#include <Adafruit_BME280.h> +#endif + +// rtc_clock is defined in target.cpp +extern AutoDiscoverRTCClock rtc_clock; + +namespace { + inline uint32_t getRTCTime() { + return rtc_clock.getCurrentTime(); + } + + void blinkRed(uint8_t count, uint16_t on_ms, uint16_t off_ms, bool led_enabled) { + if (!led_enabled) { + return; + } + for (uint8_t i = 0; i < count; i++) { + digitalWrite(LED_RED, HIGH); + delay(on_ms); + digitalWrite(LED_RED, LOW); + delay(off_ms); + } + } +} + +// Hardware drivers +static BqDriver bq; +static Ina228Driver ina228(0x40); // A0=GND, A1=GND + +static SimplePreferences prefs; + +// Forward declare board instance +extern InheroMr2Board board; + +// Initialize singleton pointer +BqDriver* BoardConfigContainer::bqDriverInstance = nullptr; +Ina228Driver* BoardConfigContainer::ina228DriverInstance = nullptr; +TaskHandle_t BoardConfigContainer::heartbeatTaskHandle = NULL; +volatile bool BoardConfigContainer::lowVoltageAlertFired = false; +MpptStatistics BoardConfigContainer::mpptStats = {}; +BatterySOCStats BoardConfigContainer::socStats = {}; +BoardConfigContainer::BatteryType BoardConfigContainer::cachedBatteryType = BAT_UNKNOWN; +bool BoardConfigContainer::leds_enabled = true; // Default: enabled +bool BoardConfigContainer::usbInputActive = false; // Default: no USB connected +float BoardConfigContainer::tcCalOffset = 0.0f; // Default: no temperature calibration offset +float BoardConfigContainer::lastValidBatteryTemp = 25.0f; // 25°C = no derating until first valid reading +uint32_t BoardConfigContainer::lastTempUpdateMs = 0; // 0 = never updated + +// Battery voltage thresholds live in the BatteryProperties table (see .h file) +// Rev 1.1: INA228 ALERT pin (P1.02) triggers low-voltage sleep via ISR → volatile flag → tickPeriodic(). +// No hardware UVLO (TPS EN tied to VDD). Low-voltage handling is always active when battery configured. + +// PG-Stuck recovery: timestamp of last HIZ toggle (0 = never) +static uint32_t lastPgStuckToggleTime = 0; +#define PG_STUCK_COOLDOWN_MS (5 * 60 * 1000) // 5 minutes between toggles + +void BoardConfigContainer::setupWatchdog() { inhero::setupWatchdog(leds_enabled); } +void BoardConfigContainer::feedWatchdog() { inhero::feedWatchdog(); } +void BoardConfigContainer::disableWatchdog() { inhero::disableWatchdog(); } + +// Re-enables MPPT if BQ25798 disabled it (e.g., during !PG state). +// BQ25798 does not persist MPPT=1 and automatically sets MPPT=0 when PG=0; +// this restores MPPT=1 when PG returns to 1. +// Only runs when PowerGood=1 to avoid false positives; exception: PG-stuck +// recovery toggles HIZ when VBUS is present but PG=0. +void BoardConfigContainer::checkAndFixSolarLogic() { + if (!bqDriverInstance) return; + + // Check if MPPT is enabled in configuration + bool mpptEnabled; + BoardConfigContainer::loadMpptEnabled(mpptEnabled); + + if (!mpptEnabled) { + // MPPT disabled in config - only disable if currently enabled (avoid unnecessary writes) + uint8_t mpptVal = bqDriverInstance->readReg(0x15); + if ((mpptVal & 0x01) != 0) { + bqDriverInstance->writeReg(0x15, mpptVal & ~0x01); + MESH_DEBUG_PRINTLN("MPPT disabled via config"); + } + return; + } + + // Check if PowerGood is currently set + bool powerGood = bqDriverInstance->getChargerStatusPowerGood(); + + if (!powerGood) { + // PG-Stuck recovery: Panel may be connected but BQ didn't qualify it. + // Typical at sunrise when VBUS ramps slowly past the input threshold. + // Toggling HIZ forces a new input source qualification cycle (per datasheet). + // Cooldown: max once per 5 minutes to prevent excessive toggling + uint32_t now = millis(); + if (lastPgStuckToggleTime != 0 && (now - lastPgStuckToggleTime) < PG_STUCK_COOLDOWN_MS) { + return; + } + + uint16_t vbus_mv = bqDriverInstance->getVBUS(); + if (vbus_mv >= PG_STUCK_VBUS_THRESHOLD_MV) { + bqDriverInstance->setHIZMode(true); + delay(50); // BQ needs time to enter HIZ and reset input detection + bqDriverInstance->setHIZMode(false); + lastPgStuckToggleTime = now; + MESH_DEBUG_PRINTLN("PG-Stuck recovery: VBUS=%dmV but PG=0, toggled HIZ", vbus_mv); + } + return; + } + + // Re-enable MPPT when PGOOD=1 + uint8_t mpptVal = bqDriverInstance->readReg(0x15); + + if ((mpptVal & 0x01) == 0) { + bqDriverInstance->writeReg(0x15, mpptVal | 0x01); + MESH_DEBUG_PRINTLN("MPPT re-enabled via register"); + } +} + +// Single MPPT cycle — called from tickPeriodic() every 60s +// Checks solar logic and updates MPPT stats. +void BoardConfigContainer::runMpptCycle() { + // Clear any pending BQ25798 flags so the INT line stays de-asserted + // (we don't wire INT to an MCU IRQ, but leaving flags latched costs current). + if (bqDriverInstance) { + BqDriver::clearInterruptFlags(); + } + + checkAndFixSolarLogic(); + bool mpptEnabled; + BoardConfigContainer::loadMpptEnabled(mpptEnabled); + if (mpptEnabled && bqDriverInstance) { + updateMpptStats(); + } +} + +// Stops heartbeat task and disarms alerts before OTA. +// MPPT and SOC work are tick-based (no tasks to stop); +// only the heartbeat LED task and INA228 alert need cleanup. +void BoardConfigContainer::stopBackgroundTasks() { + MESH_DEBUG_PRINTLN("Stopping background tasks for OTA..."); + + // Delete heartbeat task if running + if (heartbeatTaskHandle != NULL) { + vTaskDelete(heartbeatTaskHandle); + heartbeatTaskHandle = NULL; + MESH_DEBUG_PRINTLN("Heartbeat task stopped"); + } + + // Disarm INA228 low-voltage alert (Rev 1.1) + disarmLowVoltageAlert(); + + delay(200); + MESH_DEBUG_PRINTLN("Background cleanup complete"); +} + +void BoardConfigContainer::heartbeatTask(void* pvParameters) { + (void)pvParameters; + + pinMode(LED_BLUE, OUTPUT); + + while (true) { + if (leds_enabled) { + digitalWrite(LED_BLUE, HIGH); + } + vTaskDelay(pdMS_TO_TICKS(10)); // 10ms flash - well visible, minimal power + if (leds_enabled) { + digitalWrite(LED_BLUE, LOW); + } + vTaskDelay(pdMS_TO_TICKS(5000)); // 5s interval - lower power consumption + } +} + +// Enable or disable heartbeat LED and BQ25798 stat LED +bool BoardConfigContainer::setLEDsEnabled(bool enabled) { + leds_enabled = enabled; + + // Save to filesystem + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + prefs.putString(LEDSKEY, enabled ? "1" : "0"); + prefs.end(); + + // Control heartbeat task + if (enabled) { + // Start heartbeat if not running + if (heartbeatTaskHandle == NULL) { + xTaskCreate(heartbeatTask, "Heartbeat", 512, NULL, 1, &heartbeatTaskHandle); + } + } else { + // Stop heartbeat task + if (heartbeatTaskHandle != NULL) { + vTaskDelete(heartbeatTaskHandle); + heartbeatTaskHandle = NULL; + // Turn off LED + pinMode(LED_BLUE, OUTPUT); + digitalWrite(LED_BLUE, LOW); + } + } + + // Control BQ25798 STAT LED (only if BQ is initialized) + if (bqInitialized && bqDriverInstance) { + bqDriverInstance->setStatPinEnable(enabled); + } + + return true; +} + +// Get current LED enable state +bool BoardConfigContainer::getLEDsEnabled() const { + return leds_enabled; +} + +// Updates MPPT statistics based on elapsed time and current status +// Should be called when MPPT status changes or periodically for time accounting +void BoardConfigContainer::updateMpptStats() { + if (!bqDriverInstance) return; + + static bool lastMpptStatus = false; + static bool initialized = false; + + // Get current time - prefer RTC, fallback to millis() + uint32_t currentTime; + uint32_t rtcTime = getRTCTime(); + + // Check if RTC is initialized (returns > 0 if time was set) + // AutoDiscoverRTCClock returns 0 if no RTC found and time not set + if (rtcTime > 1000000000) { // Sanity check: After year 2001 + currentTime = rtcTime; + if (!mpptStats.usingRTC) { + // Switch from millis to RTC + mpptStats.usingRTC = true; + mpptStats.lastUpdateTime = currentTime; + lastMpptStatus = bqDriverInstance->getMPPTenable(); + initialized = true; + return; // Reset timing on switch + } + } else { + // RTC not available or not set - use millis() in seconds + currentTime = millis() / 1000; + } + + bool currentMpptStatus = bqDriverInstance->getMPPTenable(); + + // Initialize on first run + if (!initialized) { + mpptStats.lastUpdateTime = currentTime; + lastMpptStatus = currentMpptStatus; + initialized = true; + return; + } + + // Calculate elapsed time since last update + uint32_t elapsedSeconds = currentTime - mpptStats.lastUpdateTime; + + // Sanity check: If more than 48 hours passed, reset + const uint32_t MAX_INTERVAL_SEC = 48UL * 60UL * 60UL; + if (elapsedSeconds > MAX_INTERVAL_SEC) { + mpptStats.lastUpdateTime = currentTime; + lastMpptStatus = currentMpptStatus; + return; + } + + uint32_t elapsedMinutes = elapsedSeconds / 60; + + if (elapsedMinutes == 0 && lastMpptStatus == currentMpptStatus) { + return; // No time passed and no status change + } + + // Add time to current hour accumulator if MPPT was enabled + if (lastMpptStatus && elapsedMinutes > 0) { + mpptStats.currentHourMinutes += elapsedMinutes; + if (mpptStats.currentHourMinutes > 60) { + mpptStats.currentHourMinutes = 60; // Cap at 60 minutes per hour + } + } + + // Calculate energy harvested since last update if MPPT was enabled + if (lastMpptStatus && elapsedSeconds > 0) { + // Use last measured power and integrate over time: E = P × t + // Energy in mWh = Power in mW × Time in hours + float hours = elapsedSeconds / 3600.0f; + uint32_t energy_mWh = (uint32_t)(mpptStats.lastPower_mW * hours); + mpptStats.currentHourEnergy_mWh += energy_mWh; + } + + // Sample current solar power for next integration period + if (currentMpptStatus) { + uint16_t vbat_mppt = ina228DriverInstance ? ina228DriverInstance->readVoltage_mV() : 0; + const Telemetry* telem = bqDriverInstance->getTelemetryData(vbat_mppt); + if (telem) { + // Calculate power: P = U * I (both in mV and mA, result in mW) + mpptStats.lastPower_mW = (int32_t)telem->solar.voltage * telem->solar.current / 1000; + } + } else { + mpptStats.lastPower_mW = 0; // No power when MPPT disabled + } + + mpptStats.lastUpdateTime = currentTime; + lastMpptStatus = currentMpptStatus; + + // Check if we need to move to the next hour + static uint32_t lastHourCheck = 0; + uint32_t currentHour = currentTime / 3600; + uint32_t lastHour = lastHourCheck / 3600; + + if (currentHour > lastHour) { + // Store the completed hour's data + mpptStats.hours[mpptStats.currentIndex].mpptEnabledMinutes = mpptStats.currentHourMinutes; + mpptStats.hours[mpptStats.currentIndex].timestamp = currentTime; + mpptStats.hours[mpptStats.currentIndex].harvestedEnergy_mWh = mpptStats.currentHourEnergy_mWh; + + // Move to next index (circular buffer) + mpptStats.currentIndex = (mpptStats.currentIndex + 1) % MPPT_STATS_HOURS; + + // Reset for new hour + mpptStats.currentHourMinutes = 0; + mpptStats.currentHourEnergy_mWh = 0; + lastHourCheck = currentTime; + } +} + +// Returns current max charge current as string +const char* BoardConfigContainer::getChargeCurrentAsStr() { + static char buffer[16]; + snprintf(buffer, sizeof(buffer), "%dmA", this->getMaxChargeCurrent_mA()); + return buffer; +} + +// Writes charger status information into provided buffer +void BoardConfigContainer::getChargerInfo(char* buffer, uint32_t bufferSize) { + // Check if buffer is valid + if (!buffer || bufferSize == 0) { + return; + } + + // Clear buffer to prevent garbage data + memset(buffer, 0, bufferSize); + + // Check if BQ25798 is initialized and responsive + if (!bqInitialized) { + snprintf(buffer, bufferSize, "BQ25798 not initialized"); + return; + } + + const char* powerGood = bq.getChargerStatusPowerGood() ? "PG" : "!PG"; + const char* statusString = "Unknown"; // Initialize with default value + bq25798_charging_status status = bq.getChargingStatus(); + + switch (status) { + case bq25798_charging_status::BQ25798_CHARGER_STATE_NOT_CHARGING: { + statusString = "!CHG"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_PRE_CHARGING: { + statusString = "PRE"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_CC_CHARGING: { + statusString = "CC"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_CV_CHARGING: { + statusString = "CV"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_TRICKLE_CHARGING: { + statusString = "TRICKLE"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_TOP_OF_TIMER_ACTIVE_CHARGING: { + statusString = "TOP"; + break; + } + case bq25798_charging_status::BQ25798_CHARGER_STATE_DONE_CHARGING: { + statusString = "DONE"; + break; + } + default: + statusString = "Unknown"; + break; + } + + if (lastPgStuckToggleTime == 0) { + snprintf(buffer, bufferSize, "%s / %s HIZ:never", powerGood, statusString); + } else { + uint32_t agoSec = (millis() - lastPgStuckToggleTime) / 1000; + if (agoSec < 60) { + snprintf(buffer, bufferSize, "%s / %s HIZ:%ds ago", powerGood, statusString, agoSec); + } else if (agoSec < 3600) { + snprintf(buffer, bufferSize, "%s / %s HIZ:%dm ago", powerGood, statusString, agoSec / 60); + } else { + snprintf(buffer, bufferSize, "%s / %s HIZ:%dh ago", powerGood, statusString, agoSec / 3600); + } + } +} + +// RV-3028 self-test: address ACK plus user-RAM write/readback (see getSelfTest()). +bool BoardConfigContainer::probeRtc() { + // Address ACK + Wire.beginTransmission(0x52); + if (Wire.endTransmission() != 0) return false; + + // User-RAM 0x1F write/readback (two patterns, save/restore original). + Wire.beginTransmission(0x52); + Wire.write(0x1F); + if (Wire.endTransmission(false) != 0) return false; + if (Wire.requestFrom((uint8_t)0x52, (uint8_t)1) != 1) return false; + uint8_t saved = Wire.read(); + + for (uint8_t pat : {0xA5, 0x5A}) { + Wire.beginTransmission(0x52); + Wire.write(0x1F); + Wire.write(pat); + if (Wire.endTransmission() != 0) return false; + + Wire.beginTransmission(0x52); + Wire.write(0x1F); + if (Wire.endTransmission(false) != 0) return false; + if (Wire.requestFrom((uint8_t)0x52, (uint8_t)1) != 1) return false; + if (Wire.read() != pat) return false; + } + + // Restore original byte + Wire.beginTransmission(0x52); + Wire.write(0x1F); + Wire.write(saved); + Wire.endTransmission(); + return true; +} + +namespace { + bool probeI2CAddr(uint8_t addr) { + Wire.beginTransmission(addr); + return Wire.endTransmission() == 0; + } +} + +void BoardConfigContainer::getSelfTest(char* buffer, uint32_t bufferSize) { + if (!buffer || bufferSize == 0) return; + const char* ina = probeI2CAddr(0x40) ? "OK" : "NACK"; + const char* bq = probeI2CAddr(BQ25798_I2C_ADDR) ? "OK" : "NACK"; + const char* bme = probeI2CAddr(0x76) ? "OK" : "NACK"; + + // RTC: distinguish bus-NACK from write-failure + const char* rtc; + if (!probeI2CAddr(0x52)) { + rtc = "NACK"; + } else if (!probeRtc()) { + rtc = "WR_FAIL"; + } else { + rtc = "OK"; + } + + snprintf(buffer, bufferSize, "INA:%s BQ:%s RTC:%s BME:%s", ina, bq, rtc, bme); +} + +// Reads BQ25798 status/fault registers and produces a compact diagnostic string. +// Register layout (BQ25798 datasheet SLUSDV2B): +// 0x1B STATUS_0: IINDPM[7] VINDPM[6] WD[5] rsvd[4] PG[3] AC2[2] AC1[1] VBUS[0] +// 0x1C STATUS_1: CHG_STAT[7:5] VBUS_STAT[4:1] BC12[0] +// 0x1D STATUS_2: ICO[7:6] rsvd[5:3] TREG[2] DPDM[1] VBAT_PRESENT[0] +// 0x1E STATUS_3: ACRB2[7] ACRB1[6] ADC_DONE[5] VSYS[4] CHG_TMR[3] TRICHG_TMR[2] PRECHG_TMR[1] rsvd[0] +// 0x1F STATUS_4: rsvd[7:5] VBATOTG_LOW[4] TS_COLD[3] TS_COOL[2] TS_WARM[1] TS_HOT[0] +// 0x20 FAULT_0: IBAT_REG[7] VBUS_OVP[6] VBAT_OVP[5] IBUS_OCP[4] IBAT_OCP[3] CONV_OCP[2] VAC2_OVP[1] VAC1_OVP[0] +// 0x21 FAULT_1: rsvd[7] OTG_UVP[6] OTG_OVP[5] rsvd[4] VSYS_SHORT[3] VSYS_OVP[2] rsvd[1:0] +// 0x0F CTRL_0: AUTO_IBATDIS[7] FORCE_IBATDIS[6] EN_CHG[5] EN_ICO[4] FORCE_ICO[3] EN_HIZ[2] EN_TERM[1] EN_BACKUP[0] +// 0x18 NTC_1: TS_COOL[7:6] TS_WARM[5:4] BHOT[3:2] BCOLD[1] TS_IGNORE[0] +void BoardConfigContainer::getBqDiagnostics(char* buffer, uint32_t bufferSize) { + if (!buffer || bufferSize == 0) return; + memset(buffer, 0, bufferSize); + + if (!bqInitialized) { + snprintf(buffer, bufferSize, "BQ not init"); + return; + } + + // Read status registers (read-only, safe to read) + uint8_t s0 = bq.readReg(0x1B); // CHARGER_STATUS_0 + uint8_t s1 = bq.readReg(0x1C); // CHARGER_STATUS_1 + uint8_t s2 = bq.readReg(0x1D); // CHARGER_STATUS_2 + uint8_t s3 = bq.readReg(0x1E); // CHARGER_STATUS_3 + uint8_t s4 = bq.readReg(0x1F); // CHARGER_STATUS_4 + uint8_t f0 = bq.readReg(0x20); // FAULT_STATUS_0 + uint8_t f1 = bq.readReg(0x21); // FAULT_STATUS_1 + + // Read control registers + uint8_t ctrl0 = bq.readReg(0x0F); // CHARGER_CONTROL_0: EN_CHG[5], EN_HIZ[2] + uint8_t ntc1 = bq.readReg(0x18); // NTC_CONTROL_1 + + // Decode TS region from STATUS_4 (0x1F): TS_COLD[3] TS_COOL[2] TS_WARM[1] TS_HOT[0] + const char* ts_str = "OK"; + if (s4 & 0x01) ts_str = "HOT"; + else if (s4 & 0x02) ts_str = "WARM"; + else if (s4 & 0x04) ts_str = "COOL"; + else if (s4 & 0x08) ts_str = "COLD"; + + // Build active-flags substring (only show abnormal conditions) + char flags[50] = ""; + int pos = 0; + if (s0 & 0x80) pos += snprintf(flags + pos, sizeof(flags) - pos, " IINDPM"); + if (s0 & 0x40) pos += snprintf(flags + pos, sizeof(flags) - pos, " VINDPM"); + if (s0 & 0x20) pos += snprintf(flags + pos, sizeof(flags) - pos, " WD!"); + if (s2 & 0x04) pos += snprintf(flags + pos, sizeof(flags) - pos, " TREG"); + if (s3 & 0x08) pos += snprintf(flags + pos, sizeof(flags) - pos, " CHG_TMR"); + if (s3 & 0x04) pos += snprintf(flags + pos, sizeof(flags) - pos, " TCTMR"); + if (s3 & 0x02) pos += snprintf(flags + pos, sizeof(flags) - pos, " PCTMR"); + if (f0 & 0x40) pos += snprintf(flags + pos, sizeof(flags) - pos, " VBUS_OVP"); + if (f0 & 0x20) pos += snprintf(flags + pos, sizeof(flags) - pos, " VBAT_OVP"); + + bool en_chg = (ctrl0 >> 5) & 1; // EN_CHG: bit 5 of CHARGER_CONTROL_0 + bool en_hiz = (ctrl0 >> 2) & 1; // EN_HIZ: bit 2 of CHARGER_CONTROL_0 + + // Read actual IINDPM from REG06 for verification + uint16_t iindpm_mA = (uint16_t)(bq.getInputLimitA() * 1000); + + // Compact output: TS region, active flags, control bits, IINDPM readback, faults, raw status hex, NTC config + snprintf(buffer, bufferSize, + "TS:%s%s CE:%d HIZ:%d IINDPM:%umA F:%02X/%02X S:%02X.%02X.%02X.%02X.%02X N:%02X", + ts_str, flags, en_chg, en_hiz, iindpm_mA, f0, f1, s0, s1, s2, s3, s4, ntc1); +} + +// Initializes battery manager, preferences, and background tasks +bool BoardConfigContainer::begin() { + // Initialize LEDs early for boot sequence visualization + pinMode(LED_BLUE, OUTPUT); // Blue LED (P1.03) + pinMode(LED_RED, OUTPUT); // Red LED (P1.04) + digitalWrite(LED_BLUE, LOW); + digitalWrite(LED_RED, LOW); + + // Load LED enable state from filesystem (default: enabled) + SimplePreferences prefs_led; + if (prefs_led.begin(PREFS_NAMESPACE)) { + char led_buffer[8]; + prefs_led.getString(LEDSKEY, led_buffer, sizeof(led_buffer), "1"); + leds_enabled = (strcmp(led_buffer, "1") == 0); + prefs_led.end(); + } else { + leds_enabled = true; // Default: enabled + } + + bool skip_fs_writes = ((NRF_POWER->GPREGRET2 & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE); + + // === MR2 Hardware (Rev 1.1): INA228 Power Monitor with ALERT-based low-voltage sleep === + // MR2 uses INA228 at 0x40 (A0=GND, A1=GND) + MESH_DEBUG_PRINTLN("=== INA228 Detection @ 0x40 ==="); + delay(10); // Let serial output flush + + // Visual indicator: Red LED on = INA228 detection in progress + if (leds_enabled) { + digitalWrite(LED_RED, HIGH); + delay(50); + } + + // First test I2C communication + Wire.beginTransmission(0x40); + uint8_t i2c_result = Wire.endTransmission(); + MESH_DEBUG_PRINTLN("INA228: I2C probe result = %d (0=OK)", i2c_result); + delay(10); + + if (i2c_result == 0) { + // Device responds, read ID registers + Wire.beginTransmission(0x40); + Wire.write(0x3E); // Manufacturer ID register + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)0x40, (uint8_t)2); + if (Wire.available() >= 2) { + uint16_t mfg_id = (Wire.read() << 8) | Wire.read(); + MESH_DEBUG_PRINTLN("INA228: MFG_ID = 0x%04X (expect 0x5449)", mfg_id); + delay(10); + } + + Wire.beginTransmission(0x40); + Wire.write(0x3F); // Device ID register + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)0x40, (uint8_t)2); + if (Wire.available() >= 2) { + uint16_t dev_id = (Wire.read() << 8) | Wire.read(); + MESH_DEBUG_PRINTLN("INA228: DEV_ID = 0x%04X (expect 0x0228)", dev_id); + delay(10); + } + + // Try to initialize + if (ina228.begin(100.0f)) { // 100mΩ shunt resistor (optimal SNR for 10mA standby / 1A max) + ina228Initialized = true; + ina228DriverInstance = &ina228; + + // Turn off red LED (INA228 detection complete) + if (leds_enabled) { + digitalWrite(LED_RED, LOW); + delay(10); + } + + // Blue LED flash: INA228 initialized + if (leds_enabled) { + digitalWrite(LED_BLUE, HIGH); + delay(150); + digitalWrite(LED_BLUE, LOW); + delay(100); + } + + // Arm INA228 low-voltage alert for this battery chemistry + // Rev 1.1: Always active when battery type is configured (no CLI toggle) + // ISR on ALERT pin → volatile flag → tickPeriodic() → System Sleep with GPIO latch + armLowVoltageAlert(); + + // NOTE: Low-voltage recovery SOC=0% is handled in InheroMr2Board::begin() + // (after setLowVoltageRecovery()), not here, because lowVoltageRecovery isn't set yet. + } else { + MESH_DEBUG_PRINTLN("INA228 begin() failed (check MFG_ID/DEV_ID above)"); + ina228Initialized = false; + } + } else { + MESH_DEBUG_PRINTLN("INA228 no I2C ACK @ 0x40"); + ina228Initialized = false; + } + delay(10); + + // Initialize BQ25798 + if (bq.begin()) { + bqInitialized = true; + bqDriverInstance = &bq; + MESH_DEBUG_PRINTLN("BQ25798 found. "); + + // Blue LED flash: BQ25798 initialized + if (leds_enabled) { + digitalWrite(LED_BLUE, HIGH); + delay(150); + digitalWrite(LED_BLUE, LOW); + delay(100); + } + } else { + MESH_DEBUG_PRINTLN("BQ25798 not found."); + bqInitialized = false; + } + + // Load NTC temperature calibration offset (applies to all BQ temperature readings) + float tc_offset = 0.0f; + if (loadTcCalOffset(tc_offset)) { + tcCalOffset = tc_offset; + MESH_DEBUG_PRINTLN("TC calibration offset loaded: %+.2f C", tc_offset); + } else { + MESH_DEBUG_PRINTLN("TC using default calibration (0.0)"); + } + + // === RV-3028 RTC Initialization === + // Address probe + user-RAM write/readback test (catches "zombie" RTCs that + // ACK on bus but reject writes — see probeRtc() for details). + // Retry up to 3 times — after OTA/warm-reset the I2C bus may need recovery. + bool rtc_initialized = false; + for (int attempt = 0; attempt < 3; attempt++) { + if (probeRtc()) { + rtc_initialized = true; + MESH_DEBUG_PRINTLN("RV-3028 RTC OK (attempt %d)", attempt + 1); + if (leds_enabled) { + digitalWrite(LED_BLUE, HIGH); + delay(150); + digitalWrite(LED_BLUE, LOW); + delay(100); + } + break; + } + MESH_DEBUG_PRINTLN("RV-3028 RTC self-test failed (attempt %d)", attempt + 1); + delay(20); + } + + // === MR2 Configuration === + SimplePreferences prefs_init; + prefs_init.begin(PREFS_NAMESPACE); + + BatteryType bat = DEFAULT_BATTERY_TYPE; + FrostChargeBehaviour frost = DEFAULT_FROST_BEHAVIOUR; + uint16_t maxChargeCurrent_mA = DEFAULT_MAX_CHARGE_CURRENT_MA; + + if (!loadBatType(bat)) { + if (!skip_fs_writes) { + prefs_init.putString(BATTKEY, getBatteryTypeCommandString(bat)); + } + } + if (!loadFrost(frost)) { + if (!skip_fs_writes) { + prefs_init.putString(FROSTKEY, getFrostChargeBehaviourCommandString(frost)); + } + } + if (!loadMaxChrgI(maxChargeCurrent_mA)) { + if (!skip_fs_writes) { + prefs_init.putInt(MAXCHARGECURRENTKEY, maxChargeCurrent_mA); + } + } + + this->configureBaseBQ(); + this->configureChemistry(bat); + cachedBatteryType = bat; // Cache for static methods (updateBatterySOC, calculateTTL) + + // Charger active by default — HIZ-Gate removed (Rev 1.1 PCB stable). + bq.setHIZMode(false); + + this->setFrostChargeBehaviour(frost); + this->setMaxChargeCurrent_mA(maxChargeCurrent_mA); + + // Mask ALL BQ25798 interrupts — INT pin is not used (polling only). + // Default mask registers are 0x00 (all unmasked!) → every event pulls INT LOW. + // With INPUT_PULLUP on BQ_INT_PIN: LOW = ~254µA wasted through pull-up. + BqDriver::maskAllInterrupts(); + + // Clear any latched flag/interrupt status from previous operation/boot + // so the INT line is de-asserted before we leave begin(). + BqDriver::clearInterruptFlags(); + + // Heartbeat LED task (GPIO only — no I2C, safe as FreeRTOS task) + if (heartbeatTaskHandle == NULL && leds_enabled) { + BaseType_t taskCreated = xTaskCreate(BoardConfigContainer::heartbeatTask, "Heartbeat", 1024, + NULL, 1, &heartbeatTaskHandle); + if (taskCreated != pdPASS) { + MESH_DEBUG_PRINTLN("Failed to create Heartbeat task!"); + return false; + } + } + + // BQ_INT_PIN no longer used — solar checks run via polling in tickPeriodic() + // Pull up to prevent floating trace on PCB + pinMode(BQ_INT_PIN, INPUT_PULLUP); + + // Check if all critical components initialized + bool all_components_ok = bqInitialized && ina228Initialized && rtc_initialized; + + if (!all_components_ok) { + // Start permanent slow red LED blink to indicate missing component + MESH_DEBUG_PRINTLN("WARNING: Missing components - starting error LED"); + if (!bqInitialized) MESH_DEBUG_PRINTLN(" - BQ25798 missing"); + if (!ina228Initialized) MESH_DEBUG_PRINTLN(" - INA228 missing"); + if (!rtc_initialized) MESH_DEBUG_PRINTLN(" - RV-3028 RTC missing"); + + // Create error LED blink task (GPIO only) + if (leds_enabled) { + xTaskCreate([](void* param) { + while (1) { + digitalWrite(LED_RED, HIGH); // Red LED on + vTaskDelay(pdMS_TO_TICKS(500)); + digitalWrite(LED_RED, LOW); // Red LED off + vTaskDelay(pdMS_TO_TICKS(500)); + } + }, "ErrorLED", 512, NULL, 1, NULL); + } + } + + // MPPT, SOC updates, and voltage monitoring are handled in tickPeriodic() + // (called from InheroMr2Board::tick() — no FreeRTOS tasks doing I2C) + + // Load battery capacity from preferences (or default based on chemistry) + float cap_mah = 0.0f; + loadBatteryCapacity(cap_mah); + socStats.capacity_mah = cap_mah; + socStats.nominal_voltage = getNominalVoltage(bat); + MESH_DEBUG_PRINTLN("SOC: capacity=%.0f mAh, nominal=%.2f V", cap_mah, socStats.nominal_voltage); + + // MR2 requires BQ25798 + INA228 (RTC is optional for basic operation) + return bqInitialized && ina228Initialized; +} + +// Loads battery type from preferences +bool BoardConfigContainer::loadBatType(BatteryType& type) const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[10]; + if (prefs.getString(BATTKEY, buffer, sizeof(buffer), "") > 0) { + type = this->getBatteryTypeFromCommandString(buffer); + if (type != BAT_UNKNOWN) { + return true; + } else { + type = DEFAULT_BATTERY_TYPE; + return false; + } + } + + // No preference found - use default + type = DEFAULT_BATTERY_TYPE; + return false; +} + +// Loads frost charge behavior from preferences +bool BoardConfigContainer::loadFrost(FrostChargeBehaviour& behaviour) const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[10]; + if (prefs.getString(FROSTKEY, buffer, sizeof(buffer), "") > 0) { + behaviour = this->getFrostChargeBehaviourFromCommandString(buffer); + if (behaviour != REDUCE_UNKNOWN) { + return true; + } else { + behaviour = DEFAULT_FROST_BEHAVIOUR; + return false; + } + } + + // No preference found - use default + behaviour = DEFAULT_FROST_BEHAVIOUR; + return false; +} + +// Loads maximum charge current from preferences +bool BoardConfigContainer::loadMaxChrgI(uint16_t& maxCharge_mA) const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[10]; + + if (prefs.getString(MAXCHARGECURRENTKEY, buffer, sizeof(buffer), "") > 0) { + + int val = atoi(buffer); + // Bounds check: Reasonable charge current range + if (val > 0 && val <= 3000) { // Max 3A for safety + maxCharge_mA = val; + return true; + } else { + maxCharge_mA = DEFAULT_MAX_CHARGE_CURRENT_MA; + return false; + } + } + + // No preference found - use default + maxCharge_mA = DEFAULT_MAX_CHARGE_CURRENT_MA; + return false; +} + +// Loads MPPT enabled setting from preferences +bool BoardConfigContainer::loadMpptEnabled(bool& enabled) { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[10]; + + if (prefs.getString(MPPTENABLEKEY, buffer, sizeof(buffer), "") > 0) { + if (buffer[0] != '\0') { + enabled = buffer[0] == '1' ? true : false; + return true; + } else { + enabled = DEFAULT_MPPT_ENABLED; + return false; + } + } + + // No preference found - use default + enabled = DEFAULT_MPPT_ENABLED; + return false; +} + +// Returns combined telemetry from INA228 (battery) and BQ25798 (solar + temperature). +// Battery voltage/current come from the INA228 (24-bit ADC, ±0.1% accuracy); +// solar data and battery temperature from the BQ25798 ADC. +// +// Temperature availability depends on power conditions: +// VBUS > 3.4V → BQ25798 ADC runs → temperature available +// VBAT >= 3.2V → BQ25798 ADC runs → temperature available +// VBAT < 3.2V → TS channel disabled (datasheet 9.3.16) → temperature = N/A +// VBAT < 2.9V → ADC cannot operate at all → temperature = N/A, solar = 0 +// +// Temperature sentinel values (propagated from BqDriver::calculateBatteryTemp): +// -999.0f = I2C communication error or NTC unavailable +// -888.0f = ADC not ready / TS disabled due to low VBAT +// -99.0f = NTC open circuit (disconnected) +// 99.0f = NTC short circuit +// Values outside -50..+90°C are treated as invalid → displayed as "N/A" +const Telemetry* BoardConfigContainer::getTelemetryData() { + static Telemetry telemetry; + + // Battery voltage/current ALWAYS from INA228 (no fallback to BQ25798) + // INA228 for precise battery monitoring + uint16_t batt_voltage = 0; + float batt_current = 0.0f; + int32_t batt_power = 0; + if (ina228DriverInstance != nullptr) { + batt_voltage = ina228DriverInstance->readVoltage_mV(); + batt_current = ina228DriverInstance->readCurrent_mA_precise(); + batt_power = (int32_t)((batt_voltage * batt_current) / 1000.0f); + } + + // Get base telemetry from BQ25798 (solar data + temperature) + // Pass VBAT so BqDriver can disable TS channel when VBAT < 3.2V + // (BQ25798 ADC requires VBAT >= 3.2V with TS enabled, else ADC won't start) + const Telemetry* bqData = bq.getTelemetryData(batt_voltage); + if (!bqData) { + memset(&telemetry, 0, sizeof(Telemetry)); + return &telemetry; + } + + // Copy BQ25798 data (solar, system) + telemetry.solar = bqData->solar; + telemetry.system = bqData->system; + + // Temperature: BQ25798 TS ADC reads NTC via REGN-biased divider. + // Error codes from calculateBatteryTemp: -999 (I2C), -888 (ADC not ready), -99 (open), 99 (short). + // Valid NTC range: approx -40..+85 °C. Anything outside -50..+90 is treated as unavailable. + float bqTemp = bqData->battery.temperature; + if (bqTemp >= -50.0f && bqTemp <= 90.0f) { + telemetry.battery.temperature = bqTemp + tcCalOffset; + // Cache for temperature derating in updateBatterySOC() (static context) + lastValidBatteryTemp = telemetry.battery.temperature; + lastTempUpdateMs = millis(); + } else { + // NTC unavailable (no solar / I2C error / ADC not ready) → propagate sentinel + telemetry.battery.temperature = -999.0f; + } + + telemetry.battery.voltage = batt_voltage; + telemetry.battery.current = batt_current; + telemetry.battery.power = batt_power; + + return &telemetry; +} + +// Configures base BQ25798 settings (timers, watchdog, input limits, MPPT) +bool BoardConfigContainer::configureBaseBQ() { + if (!bqInitialized) { + return false; + } + + bq.setRechargeThreshOffsetV(.2); + bq.setPrechargeTimerEnable(false); + bq.setFastChargeTimerEnable(false); + bq.setTsIgnore(false); + bq.setWDT(BQ25798_WDT_DISABLE); + bq.setExtILIMpin(false); // Disable ILIM_HIZ pin clamp — IINDPM managed by software + bq.setInputLimitA(IINDPM_MAX_A); // Safe default before chemistry is known; updateSolarIINDPM() refines later + bq.setICOEnable(false); // Disable ICO — IINDPM is explicitly managed, ICO must not overwrite it + + bq.setVOCdelay(BQ25798_VOC_DLY_2S); + bq.setVOCrate(BQ25798_VOC_RATE_2MIN); + bq.setVOCpercent(BQ25798_VOC_PCT_81_25); // 81.25% matches Vmp/Voc of typical crystalline Si panels (~80-83%) + bq.setAutoDPinsDetection(false); + bq.setMPPTenable(true); + + bq.setMinSystemV(2.75); // 2.75V = next valid step above 2.7V (250mV steps: 2.5, 2.75, 3.0...) + bq.setStatPinEnable(leds_enabled); // Configure STAT LED based on user preference + bq.setTsCool(BQ25798_TS_COOL_5C); + bq.setTsWarm(BQ25798_TS_WARM_55C); // 37.7% REGN → ~52°C with Inhero divider (default 45°C was ~42°C) + + // JEITA WARM: keep VREG unchanged. Default -400mV triggers VBAT_OVP on LiFePO4 + // and is unnecessarily conservative for Li-Ion (4.1V / 3.5V are already safe). + bq.setJeitaVSet(BQ25798_JEITA_VSET_UNCHANGED); + + // Disable auto battery discharge during VBAT_OVP (EN_AUTO_IBATDIS). + // POR default = enabled → BQ actively sinks 30mA from battery during OVP to lower VBAT. + // With JEITA_VSET fixed, VBAT_OVP should no longer trigger. Belt-and-suspenders safety. + bq.setAutoIBATDIS(false); + + // Flush stale ADC registers by running one discard conversion. + // After reboot (e.g. low-voltage recovery), BQ25798 retains old ADC values + // from before shutdown. A fresh one-shot ensures registers reflect actual state. + bq.getTelemetryData(0); // VBAT unknown at this point, assume sufficient + + return true; +} + +// Configures battery chemistry-specific parameters (cell count, charge voltage) +bool BoardConfigContainer::configureChemistry(BatteryType type) { + if (!bqInitialized) { + return false; + } + + // Get battery properties from lookup table + const BatteryProperties* props = getBatteryProperties(type); + if (!props) { + MESH_DEBUG_PRINTLN("ERROR: Invalid battery type"); + return false; + } + + // Apply charge enable/disable based on battery type + bq.setChargeEnable(props->charge_enable); + + // CE-Pin hardware safety: Only pull CE HIGH (enable charging via FET) when chemistry is known + // Rev 1.1: DMN2004TK-7 N-FET inverts CE logic — HIGH=enable, LOW=disable + // External pull-down ensures CE stays LOW (charging disabled) when RAK is off or unbooted +#ifdef BQ_CE_PIN + pinMode(BQ_CE_PIN, OUTPUT); + digitalWrite(BQ_CE_PIN, props->charge_enable ? HIGH : LOW); + MESH_DEBUG_PRINTLN("BQ CE pin %s (charge_enable=%d)", + props->charge_enable ? "HIGH (enabled via FET)" : "LOW (disabled via FET)", + props->charge_enable); +#endif + + // Apply TS_IGNORE before potential early return — configureBaseBQ() resets it to false, + // so chemistries with ts_ignore=true (BAT_UNKNOWN, LTO, NAION) need it set here. + bq.setTsIgnore(props->ts_ignore); + if (props->ts_ignore) { + bq.setJeitaISetC(BQ25798_JEITA_ISETC_UNCHANGED); + bq.setJeitaISetH(BQ25798_JEITA_ISETH_UNCHANGED); + } + + if (!props->charge_enable) { + MESH_DEBUG_PRINTLN("WARNING: Battery type UNKNOWN - Charging DISABLED for safety!"); + return true; // No further configuration needed for unknown battery + } + + // Configure chemistry-specific parameters, starting with the cell count + bq25798_cell_count_t cellCount = (type == BoardConfigContainer::BatteryType::LTO_2S) + ? BQ25798_CELL_COUNT_2S : BQ25798_CELL_COUNT_1S; + bq.setCellCount(cellCount); + + bq.setChargeLimitV(props->charge_voltage); + + return true; +} + +// Gets current battery type from preferences +BoardConfigContainer::BatteryType BoardConfigContainer::getBatteryType() const { + BatteryType bat; + if (loadBatType(bat)) { + return bat; + } else { + return DEFAULT_BATTERY_TYPE; + } +} + +// Gets current frost charge behavior from preferences +BoardConfigContainer::FrostChargeBehaviour BoardConfigContainer::getFrostChargeBehaviour() const { + FrostChargeBehaviour frost; + if (loadFrost(frost)) { + return frost; + } else { + return NO_CHARGE; + } +} + +// Gets maximum charge current from preferences +uint16_t BoardConfigContainer::getMaxChargeCurrent_mA() const { + uint16_t maxI = 100; + loadMaxChrgI(maxI); + return maxI; +} + +// Gets current MPPT enable status from preferences +bool BoardConfigContainer::getMPPTEnabled() const { + bool enabled; + loadMpptEnabled(enabled); + return enabled; +} + +// Enables or disables MPPT +bool BoardConfigContainer::setMPPTEnable(bool enableMPPT) { + // Save to preferences first + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + if (!prefs.putString(MPPTENABLEKEY, enableMPPT ? "1" : "0")) { + return false; + } + + // Set the hardware register + if (!enableMPPT) { + // Disable MPPT in hardware + bq.setMPPTenable(false); + } else { + // Enable MPPT in hardware register + bq.setMPPTenable(true); + } + + return true; +} + +// Gets current maximum charge voltage +float BoardConfigContainer::getMaxChargeVoltage() const { + return bq.getChargeLimitV(); +} + +// Sets battery type and reconfigures BQ accordingly +bool BoardConfigContainer::setBatteryType(BatteryType type) { + bool bqBaseConfigured = this->configureBaseBQ(); + bool bqConfigured = this->configureChemistry(type); + cachedBatteryType = type; // Update cache for static methods (updateBatterySOC, calculateTTL) + + // Invalidate SOC — voltage-to-SOC mapping changes with chemistry. + // SOC will remain NA until next "Charging Done" sync or manual set. + socStats.soc_valid = false; + socStats.nominal_voltage = getNominalVoltage(type); + + // Restore correct IINDPM — configureBaseBQ() sets safe 2A default, + // but USB must be capped to 500mA per USB 2.0 spec. + if (usbInputActive && bqDriverInstance) { + bqDriverInstance->setInputLimitA(IINDPM_USB_A); + MESH_DEBUG_PRINTLN("USB active: IINDPM restored to %dmA after chemistry change", (int)(IINDPM_USB_A * 1000)); + } else { + updateSolarIINDPM(); + } + + // === CRITICAL: Update INA228 low-voltage alert threshold when battery type changes === + if (ina228DriverInstance) { + armLowVoltageAlert(); + delay(10); + } + + // Store battery type in preferences + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + prefs.putString(BATTKEY, getBatteryTypeCommandString(type)); + + // Safety: When switching to Li-Ion or LiFePO4, reset frost charge to NO_CHARGE + // These chemistries should not be charged at low temperatures + if (type == BatteryType::LIION_1S || type == BatteryType::LIFEPO4_1S) { + setFrostChargeBehaviour(FrostChargeBehaviour::NO_CHARGE); + } + + return bqBaseConfigured && bqConfigured; +} + +// Sets frost charge behavior (JEITA cold region) +bool BoardConfigContainer::setFrostChargeBehaviour(FrostChargeBehaviour behaviour) { + switch (behaviour) { + case BoardConfigContainer::FrostChargeBehaviour::NO_CHARGE: + bq.setJeitaISetC(BQ25798_JEITA_ISETC_SUSPEND); + break; + case BoardConfigContainer::FrostChargeBehaviour::NO_REDUCE: + bq.setJeitaISetC(BQ25798_JEITA_ISETC_UNCHANGED); + break; + case BoardConfigContainer::FrostChargeBehaviour::I_REDUCE_TO_40: + bq.setJeitaISetC(BQ25798_JEITA_ISETC_40_PERCENT); + break; + case BoardConfigContainer::FrostChargeBehaviour::I_REDUCE_TO_20: + bq.setJeitaISetC(BQ25798_JEITA_ISETC_20_PERCENT); + break; + } + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + prefs.putString(FROSTKEY, getFrostChargeBehaviourCommandString(behaviour)); + return true; +} + +// Sets maximum charge current (ICHG) and recalculates solar IINDPM +// Note: Also calls updateSolarIINDPM() because IINDPM depends on ICHG. +bool BoardConfigContainer::setMaxChargeCurrent_mA(uint16_t maxChrgI) { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + prefs.putInt(MAXCHARGECURRENTKEY, maxChrgI); + + bool ok = bq.setChargeLimitA(maxChrgI / 1000.0f); + + // Readback verification — detect silent I2C failures + float readback = bq.getChargeLimitA(); + uint16_t readback_mA = (uint16_t)(readback * 1000.0f + 0.5f); + + MESH_DEBUG_PRINTLN("ICHG: set=%dmA, readback=%dmA, ok=%d", maxChrgI, readback_mA, ok); + + if (readback_mA != maxChrgI) { + MESH_DEBUG_PRINTLN("WARNING: ICHG readback mismatch! Expected %d, got %d", maxChrgI, readback_mA); + } + + // Recalculate solar IINDPM — it depends on charge current + updateSolarIINDPM(); + + return ok; +} + +// Notify USB connection state change — adjusts IINDPM accordingly +// USB: IINDPM = 500mA (USB 2.0 spec). No USB: IINDPM calculated from battery/charge config. +void BoardConfigContainer::setUsbConnected(bool connected) { + if (usbInputActive == connected) return; // No state change + usbInputActive = connected; + + if (!bqDriverInstance) return; + + if (connected) { + bqDriverInstance->setInputLimitA(IINDPM_USB_A); + MESH_DEBUG_PRINTLN("USB connected: IINDPM = %dmA", (int)(IINDPM_USB_A * 1000)); + } else { + updateSolarIINDPM(); + } +} + +// Calculate IINDPM for solar input from battery chemistry and charge current. +// Power conservation: I_in = IINDPM_MARGIN × (V_charge × I_charge) / V_panel. +// Prevents weak panels from POORSRC fault after PG qualification. +float BoardConfigContainer::calculateSolarIINDPM() { + const BatteryProperties* props = getBatteryProperties(cachedBatteryType); + if (!props || !props->charge_enable) { + return IINDPM_MAX_A; // Unknown chemistry: use safe max + } + + // Read current imax from preferences + uint16_t imax_mA = DEFAULT_MAX_CHARGE_CURRENT_MA; + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + char buffer[10]; + if (prefs.getString(MAXCHARGECURRENTKEY, buffer, sizeof(buffer), "") > 0) { + int val = atoi(buffer); + if (val > 0 && val <= 3000) { + imax_mA = val; + } + } + + float i_charge_A = imax_mA / 1000.0f; + float v_charge = props->charge_voltage; + + // I_input = margin × (V_bat × I_bat) / V_panel + float iindpm = IINDPM_MARGIN * (v_charge * i_charge_A) / IINDPM_PANEL_V; + + // Clamp to hardware limits + if (iindpm > IINDPM_MAX_A) iindpm = IINDPM_MAX_A; + if (iindpm < 0.1f) iindpm = 0.1f; // BQ25798 register minimum + + return iindpm; +} + +// Apply calculated solar IINDPM to BQ25798 (skipped when USB active) +void BoardConfigContainer::updateSolarIINDPM() { + if (usbInputActive || !bqDriverInstance) return; + + float iindpm = calculateSolarIINDPM(); + bqDriverInstance->setInputLimitA(iindpm); + MESH_DEBUG_PRINTLN("Solar IINDPM = %dmA (Vchg=%.1fV, margin=%.1fx, Vpanel=%.0fV)", + (int)(iindpm * 1000), + getBatteryProperties(cachedBatteryType) + ? getBatteryProperties(cachedBatteryType)->charge_voltage : 0.0f, + IINDPM_MARGIN, IINDPM_PANEL_V); +} + +// Calculates 7-day moving average of MPPT enabled percentage +float BoardConfigContainer::getMpptEnabledPercentage7Day() const { + // Return 0 if MPPT is disabled in config + bool mpptEnabled; + loadMpptEnabled(mpptEnabled); + if (!mpptEnabled) { + return 0.0f; + } + + uint32_t totalMinutes = 0; + uint32_t enabledMinutes = 0; + uint32_t validHours = 0; + + // Count backwards through the circular buffer + for (int i = 0; i < MPPT_STATS_HOURS; i++) { + int index = (mpptStats.currentIndex - 1 - i + MPPT_STATS_HOURS) % MPPT_STATS_HOURS; + + // Skip entries that haven't been filled yet (timestamp == 0) + if (mpptStats.hours[index].timestamp == 0) { + continue; + } + + validHours++; + enabledMinutes += mpptStats.hours[index].mpptEnabledMinutes; + } + + if (validHours == 0) { + return 0.0f; // No data yet + } + + totalMinutes = validHours * 60; // Each hour has 60 minutes + + return (enabledMinutes * 100.0f) / totalMinutes; +} + +// ===== Battery SOC & Coulomb Counter Methods ===== + +// Get current State of Charge in percent +float BoardConfigContainer::getStateOfCharge() const { + return socStats.current_soc_percent; +} + +// Get nominal voltage for battery chemistry type +float BoardConfigContainer::getNominalVoltage(BatteryType type) { + const BatteryProperties* props = getBatteryProperties(type); + return props ? props->nominal_voltage : 3.7f; +} + +// Get battery capacity in mAh +float BoardConfigContainer::getBatteryCapacity() const { + return socStats.capacity_mah; +} + +// Check if battery capacity was explicitly set via CLI +bool BoardConfigContainer::isBatteryCapacitySet() const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[20]; + size_t len = prefs.getString(BATTERY_CAPACITY_KEY, buffer, sizeof(buffer), ""); + return (len > 0 && buffer[0] != '\0'); +} + +// Set battery capacity manually via CLI (converts to mWh internally) +bool BoardConfigContainer::setBatteryCapacity(float capacity_mah) { + if (capacity_mah < 100.0f || capacity_mah > 100000.0f) { + return false; // Sanity check + } + + // Store user-configured capacity in mAh + socStats.capacity_mah = capacity_mah; + + // Get nominal voltage for current chemistry + BatteryType batType = getBatteryType(); + float v_nominal = getNominalVoltage(batType); + socStats.nominal_voltage = v_nominal; + + // Invalidate SOC until next "Charging Done" sync + socStats.soc_valid = false; + + // Save to preferences + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[20]; + snprintf(buffer, sizeof(buffer), "%.1f", capacity_mah); + prefs.putString(BATTERY_CAPACITY_KEY, buffer); + + MESH_DEBUG_PRINTLN("Battery capacity set to %.0f mAh @ %.1fV", + capacity_mah, v_nominal); + return true; +} + +// Time To Live in hours (see calculateTTL() for the full formula/model). +uint16_t BoardConfigContainer::getTTL_Hours() const { + return socStats.ttl_hours; +} + +// Check if living on battery (net deficit) +bool BoardConfigContainer::isLivingOnBattery() const { + return socStats.living_on_battery; +} + +// Sync SOC to 100% after "Charging Done" event from BQ25798 +// Resets INA228 Coulomb Counter baseline and marks SOC as valid +void BoardConfigContainer::syncSOCToFull() { + if (!ina228DriverInstance) { + return; + } + + // Reset INA228 Coulomb Counter (clears ENERGY and CHARGE registers) + ina228DriverInstance->resetCoulombCounter(); + + // Set baseline to 0 (we just reset the counter) + socStats.ina228_baseline_mah = 0; + socStats.last_soc_update_ms = millis(); // Reset time reference + + // Mark as fully charged + socStats.current_soc_percent = 100.0f; + socStats.soc_valid = true; + + // Update temperature derating factor immediately + refreshTempDerating(); + + MESH_DEBUG_PRINTLN("SOC: Synced to 100%% (Charging Done) - INA228 baseline reset, d=%.2f", + socStats.temp_derating_factor); +} + +void BoardConfigContainer::refreshTempDerating() { + // BME280 fallback: if NTC hasn't updated for >5 min, try BME280. + // If BME280 also fails, lastValidBatteryTemp keeps its previous value + // (default 25°C = no derating). + const BatteryProperties* props = getBatteryProperties(cachedBatteryType); + uint32_t now = millis(); + if (lastTempUpdateMs == 0 || (now - lastTempUpdateMs) > 300000UL) { + float bmeTemp = readBmeTemperature(); + if (bmeTemp > -100.0f && bmeTemp < 100.0f) { + lastValidBatteryTemp = bmeTemp; + lastTempUpdateMs = now; + } + } + socStats.temp_derating_factor = getTemperatureDerating(props, lastValidBatteryTemp); + socStats.last_battery_temp_c = lastValidBatteryTemp; +} + +// Manually set SOC to specific percentage (e.g. after reboot with known SOC) +bool BoardConfigContainer::setSOCManually(float soc_percent) { + if (!ina228DriverInstance) { + MESH_DEBUG_PRINTLN("SOC: Cannot set - INA228 not initialized"); + return false; + } + + // Validate SOC range + if (soc_percent < 0.0f || soc_percent > 100.0f) { + MESH_DEBUG_PRINTLN("SOC: Invalid value %.1f%% (must be 0-100)", soc_percent); + return false; + } + + if (socStats.capacity_mah <= 0) { + MESH_DEBUG_PRINTLN("SOC: Cannot set - battery capacity unknown"); + return false; + } + + // Read current CHARGE register value + float current_charge_mah = ina228DriverInstance->readCharge_mAh(); + + // Calculate remaining capacity at desired SOC + float remaining_mah = (soc_percent / 100.0f) * socStats.capacity_mah; + + // Calculate baseline: charge_mah = baseline + net_charge + // We want: remaining_mah = capacity + net_charge = capacity + (charge - baseline) + // Therefore: baseline = charge - (remaining - capacity) + socStats.ina228_baseline_mah = current_charge_mah - (remaining_mah - socStats.capacity_mah); + socStats.last_soc_update_ms = millis(); // Reset time reference + + // Set SOC and mark as valid + socStats.current_soc_percent = soc_percent; + socStats.soc_valid = true; + + // Update temperature derating factor immediately so telem/TTL are correct + // without waiting for the next periodic updateBatterySOC() cycle. + refreshTempDerating(); + + MESH_DEBUG_PRINTLN("SOC: Manually set to %.1f%% (CHARGE=%.1fmAh, Baseline=%.1fmAh, d=%.2f)", + soc_percent, current_charge_mah, socStats.ina228_baseline_mah, + socStats.temp_derating_factor); + + return true; +} + +// Load battery capacity from preferences +bool BoardConfigContainer::loadBatteryCapacity(float& capacity_mah) const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[20]; + if (prefs.getString(BATTERY_CAPACITY_KEY, buffer, sizeof(buffer), "") > 0) { + if (buffer[0] != '\0') { + capacity_mah = atof(buffer); + return (capacity_mah > 0.0f); + } + } + + // Default capacity based on battery type (estimate) + BatteryType type; + if (loadBatType(type)) { + switch (type) { + case BatteryType::LTO_2S: + capacity_mah = 2000.0f; // Typical LTO capacity + break; + case BatteryType::LIFEPO4_1S: + capacity_mah = 1500.0f; // Typical LiFePO4 capacity + break; + case BatteryType::NAION_1S: + capacity_mah = 2000.0f; // Typical Na-Ion capacity + break; + case BatteryType::LIION_1S: + default: + capacity_mah = 2000.0f; // Typical Li-Ion capacity + break; + } + } else { + capacity_mah = 2000.0f; // Default fallback + } + + return false; // Not loaded from prefs +} + +// Get INA228 driver instance +Ina228Driver* BoardConfigContainer::getIna228Driver() { + return ina228DriverInstance; +} + +// ===== NTC Temperature Calibration ===== + +// Load NTC temperature calibration offset from preferences +bool BoardConfigContainer::loadTcCalOffset(float& offset) const { + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[20]; + if (prefs.getString(TCCAL_KEY, buffer, sizeof(buffer), "") > 0) { + if (buffer[0] != '\0') { + offset = atof(buffer); + + // Validate offset is in reasonable range (±20°C) + if (offset >= -20.0f && offset <= 20.0f) { + return true; + } + } + } + + // Default: no offset + offset = 0.0f; + return false; +} + +// Set NTC temperature calibration offset and save to preferences +bool BoardConfigContainer::setTcCalOffset(float offset_c) { + // Clamp to reasonable range + if (offset_c < -20.0f) offset_c = -20.0f; + if (offset_c > 20.0f) offset_c = 20.0f; + + // Apply to runtime variable + tcCalOffset = offset_c; + + // Save to preferences + SimplePreferences prefs; + prefs.begin(PREFS_NAMESPACE); + + char buffer[20]; + snprintf(buffer, sizeof(buffer), "%.2f", offset_c); + + if (prefs.putString(TCCAL_KEY, buffer)) { + MESH_DEBUG_PRINTLN("TC calibration offset saved: %.2f C", offset_c); + return true; + } + + return false; +} + +// Get current NTC temperature calibration offset +float BoardConfigContainer::getTcCalOffset() const { + return tcCalOffset; +} + +// Perform NTC temperature calibration using a reference temperature +// Averages 5 NTC readings to reduce ADC noise, computes offset = reference - avg, stores it. +float BoardConfigContainer::performTcCalibration(float actual_temp_c) { + if (!bqDriverInstance) { + return -999.0f; + } + + // Temporarily remove any existing offset to get raw NTC readings + float old_offset = tcCalOffset; + tcCalOffset = 0.0f; + + // Average multiple NTC readings to reduce ADC noise + const int NUM_SAMPLES = 5; + const int SAMPLE_DELAY_MS = 200; + float ntc_sum = 0.0f; + int valid_count = 0; + + for (int i = 0; i < NUM_SAMPLES; i++) { + if (i > 0) delay(SAMPLE_DELAY_MS); + + const Telemetry* bqData = bqDriverInstance->getTelemetryData(0); // TC calibration: VBAT unknown, assume sufficient + if (!bqData) continue; + + float raw = bqData->battery.temperature; + // Skip error codes + if (raw <= -800.0f || raw >= 98.0f) continue; + + ntc_sum += raw; + valid_count++; + } + + if (valid_count < 3) { + tcCalOffset = old_offset; // Restore old offset + MESH_DEBUG_PRINTLN("TC Cal: Only %d/%d valid NTC readings", valid_count, NUM_SAMPLES); + return -999.0f; + } + + float raw_ntc_avg = ntc_sum / valid_count; + + // Compute offset: calibrated = raw + offset → offset = reference - raw + float new_offset = actual_temp_c - raw_ntc_avg; + + MESH_DEBUG_PRINTLN("TC Cal: ref=%.2f NTC_avg=%.2f (%d samples) offset=%.2f", + actual_temp_c, raw_ntc_avg, valid_count, new_offset); + + // Store persistently + if (!setTcCalOffset(new_offset)) { + tcCalOffset = old_offset; // Restore on failure + return -999.0f; + } + + return new_offset; +} + +// Perform NTC temperature calibration using on-board BME280 as reference +// Averages 5 BME280 readings, then delegates to performTcCalibration(float). +float BoardConfigContainer::performTcCalibration(float* bme_temp_out) { + // Average multiple BME280 readings to reduce noise + const int NUM_SAMPLES = 5; + const int SAMPLE_DELAY_MS = 200; + float bme_sum = 0.0f; + int valid_count = 0; + + for (int i = 0; i < NUM_SAMPLES; i++) { + float t = readBmeTemperature(); + if (t <= -900.0f) continue; + bme_sum += t; + valid_count++; + if (i < NUM_SAMPLES - 1) delay(SAMPLE_DELAY_MS); + } + + if (valid_count < 3) { + MESH_DEBUG_PRINTLN("TC Cal: Only %d/%d valid BME readings", valid_count, NUM_SAMPLES); + return -999.0f; + } + + float bme_avg = bme_sum / valid_count; + MESH_DEBUG_PRINTLN("TC Cal: BME avg=%.2f (%d samples)", bme_avg, valid_count); + + if (bme_temp_out) { + *bme_temp_out = bme_avg; + } + + return performTcCalibration(bme_avg); +} + +// Read BME280 temperature directly via I2C (temporary instance, no core code changes) +float BoardConfigContainer::readBmeTemperature() { +#if ENV_INCLUDE_BME280 + Adafruit_BME280 bme; + if (!bme.begin(0x76, &Wire)) { + MESH_DEBUG_PRINTLN("TC Cal: BME280 not found at 0x76"); + return -999.0f; + } + bme.setSampling(Adafruit_BME280::MODE_FORCED, + Adafruit_BME280::SAMPLING_X1, + Adafruit_BME280::SAMPLING_X1, + Adafruit_BME280::SAMPLING_X1, + Adafruit_BME280::FILTER_OFF, + Adafruit_BME280::STANDBY_MS_1000); + if (!bme.takeForcedMeasurement()) { + MESH_DEBUG_PRINTLN("TC Cal: BME280 forced measurement failed"); + return -999.0f; + } + float temp = bme.readTemperature(); + MESH_DEBUG_PRINTLN("TC Cal: BME280 reads %.2f C", temp); + return temp; +#else + MESH_DEBUG_PRINTLN("TC Cal: BME280 not compiled in (ENV_INCLUDE_BME280=0)"); + return -999.0f; +#endif +} + +// Arm INA228 BUVL alert at the chemistry's lowv_sleep_mv threshold. +// Fires → ISR → flag → tickPeriodic() → System Sleep. BAT_UNKNOWN = disabled. +void BoardConfigContainer::armLowVoltageAlert() { + if (!ina228DriverInstance) { + return; + } + + BatteryType bat_type = getBatteryType(); + const BatteryProperties* props = getBatteryProperties(bat_type); + uint16_t sleep_mv = props ? props->lowv_sleep_mv : 0; + + if (bat_type == BAT_UNKNOWN || sleep_mv == 0) { + // No battery configured — disarm alert + ina228DriverInstance->setUnderVoltageAlert(0); + ina228DriverInstance->enableAlert(false, false, false); + MESH_DEBUG_PRINTLN("INA228 Low-V Alert: DISABLED (BAT_UNKNOWN)"); + return; + } + + bool buvl_ok = ina228DriverInstance->setUnderVoltageAlert(sleep_mv); + ina228DriverInstance->enableAlert(true, false, true); // active-LOW, LATCHED + + // Attach ISR on ALERT pin (active-LOW, falling edge) + pinMode(INA_ALERT_PIN, INPUT_PULLUP); + attachInterrupt(digitalPinToInterrupt(INA_ALERT_PIN), lowVoltageAlertISR, FALLING); + + MESH_DEBUG_PRINTLN("INA228 Low-V Alert: ARMED @ %dmV (BUVL write %s)", sleep_mv, buvl_ok ? "OK" : "FAILED"); +} + +void BoardConfigContainer::disarmLowVoltageAlert() { + if (!ina228DriverInstance) { + return; + } + + detachInterrupt(digitalPinToInterrupt(INA_ALERT_PIN)); + ina228DriverInstance->setUnderVoltageAlert(0); + ina228DriverInstance->enableAlert(false, false, false); + lowVoltageAlertFired = false; + MESH_DEBUG_PRINTLN("INA228 Low-V Alert: DISARMED"); +} + +// ISR: falling edge on INA228 ALERT (active-LOW, latched). Just sets the flag; +// tickPeriodic() consumes it and initiates shutdown. +void BoardConfigContainer::lowVoltageAlertISR() { + lowVoltageAlertFired = true; +} + +// Get low-voltage sleep threshold (INA228 ALERT fires at this level) +uint16_t BoardConfigContainer::getLowVoltageSleepThreshold(BatteryType type) { + const BatteryProperties* props = getBatteryProperties(type); + return props ? props->lowv_sleep_mv : 2000; +} + +// Get low-voltage wake threshold (RTC wake boots if VBAT >= this, 0% SOC marker) +uint16_t BoardConfigContainer::getLowVoltageWakeThreshold(BatteryType type) { + const BatteryProperties* props = getBatteryProperties(type); + return props ? props->lowv_wake_mv : 2200; +} + +// Update battery SOC from INA228 Hardware Coulomb Counter +// Uses INA228 CHARGE register (mAh) for accurate charge tracking +void BoardConfigContainer::updateBatterySOC() { + if (!ina228DriverInstance) { + return; + } + + // Periodic SHUNT_CAL self-heal (~every 5 min via static counter) + // If SHUNT_CAL got wiped (clone chip glitch, I2C error, etc.), + // CURRENT and CHARGE registers read 0 forever → stats stay at 0. + static uint8_t scal_check_counter = 0; + if (++scal_check_counter >= 5) { // Every 5th call = ~5 minutes (called every 60s) + scal_check_counter = 0; + ina228DriverInstance->validateAndRepairShuntCal(); + } + + // Read INA228 Hardware Coulomb Counter (mAh) - TWO'S COMPLEMENT, has correct sign! + // Positive = charging (into battery), Negative = discharging (from battery) + float charge_mah = ina228DriverInstance->readCharge_mAh(); + + uint32_t now_ms = millis(); + socStats.last_soc_update_ms = now_ms; + socStats.soc_update_count++; + + // Update current hour statistics (track charged/discharged charge in mAh) + // This runs ALWAYS, independent of SOC validity + static float last_charge_mah = 0.0f; + static bool first_read = true; + + if (first_read) { + // Initialize baseline on first read, don't count initial value as delta + last_charge_mah = charge_mah; + first_read = false; + } else { + float delta_mah = charge_mah - last_charge_mah; + last_charge_mah = charge_mah; + + // Handle potential counter wrap or reset (ignore huge jumps > 10Ah) + if (delta_mah > 10000.0f || delta_mah < -10000.0f) { + MESH_DEBUG_PRINTLN("SOC: Large charge delta %.0fmAh - ignoring (counter reset?)", delta_mah); + } else { + // CHARGE register inverted in driver: positive delta = charging, negative delta = discharging + if (delta_mah > 0.0f) { + // Charging (positive delta) + socStats.current_hour_charged_mah += delta_mah; + socStats.current_hour_solar_mah += delta_mah; // Assume solar (BQ tracks this) + } else if (delta_mah < 0.0f) { + // Discharging (negative delta) + socStats.current_hour_discharged_mah += (-delta_mah); + } + } + } + socStats.last_charge_reading_mah = charge_mah; // Always update for diagnostics + + // Check if BQ reports charging done → auto-sync + if (bqDriverInstance) { + bq25798_charging_status status = bqDriverInstance->getChargingStatus(); + if (status == BQ25798_CHARGER_STATE_DONE_CHARGING) { + if (!socStats.soc_valid) { + MESH_DEBUG_PRINTLN("SOC: First \"Charging Done\" detected - syncing to 100%%"); + syncSOCToFull(); + // Re-read CHARGE after counter reset to prevent false discharge spike + last_charge_mah = ina228DriverInstance->readCharge_mAh(); + } else if (socStats.current_soc_percent < 99.0f) { + MESH_DEBUG_PRINTLN("SOC: \"Charging Done\" detected - re-syncing to 100%%"); + syncSOCToFull(); + // Re-read CHARGE after counter reset to prevent false discharge spike + last_charge_mah = ina228DriverInstance->readCharge_mAh(); + } + } + } + + // SOC calculation is only valid after first "Charging Done" sync via syncSOCToFull() + if (!socStats.soc_valid) { + return; // Wait for first sync + } + + // Net charge since last baseline reset (using CHARGE register in mAh) + // Driver inverted: positive = charged into battery, negative = discharged from battery + float net_charge_mah = charge_mah - socStats.ina228_baseline_mah; + + // Remaining capacity = Initial capacity + net charge (positive=charged adds, negative=discharged subtracts) + float remaining_mah = socStats.capacity_mah + net_charge_mah; + + // Temperature derating: calculate factor for TTL and display purposes. + // The derating factor is NOT applied to SOC% — SOC% is purely Coulomb-based + // (remaining_mah / capacity_mah) and represents the actual stored charge. + // Derating only affects TTL calculation (extractable capacity) and is shown + // separately in CLI output as "derated SOC%". + + // Temperature source priority: 1) NTC via BQ25798 TS ADC (cached), + // 2) BME280 fallback after >5min of no NTC (covers ts_ignore chemistries). + refreshTempDerating(); + + // Calculate SOC percentage — purely Coulomb-based, NO temperature derating + if (socStats.capacity_mah > 0) { + socStats.current_soc_percent = (remaining_mah / socStats.capacity_mah) * 100.0f; + + // Clamp to 0-100% + if (socStats.current_soc_percent > 100.0f) socStats.current_soc_percent = 100.0f; + if (socStats.current_soc_percent < 0.0f) socStats.current_soc_percent = 0.0f; + } +} + +uint32_t BoardConfigContainer::getRTCTimestamp() { + return getRTCTime(); +} + +// Update hourly battery statistics and advance rolling window +void BoardConfigContainer::updateHourlyStats() { + uint32_t currentTime = getRTCTime(); + + // Calculate hour boundary (align to full hours) + uint32_t currentHour = (currentTime / 3600) * 3600; // Truncate to hour boundary + + // Check if hour has changed + if (socStats.lastHourUpdateTime == 0) { + // First run - initialize + socStats.lastHourUpdateTime = currentHour; + MESH_DEBUG_PRINTLN("SOC: Hourly stats initialized at timestamp %u", currentHour); + return; + } + + uint32_t lastHour = (socStats.lastHourUpdateTime / 3600) * 3600; + + if (currentHour > lastHour) { + // Hour boundary crossed - save current hour stats + MESH_DEBUG_PRINTLN("SOC: Hour changed (%u -> %u) - saving stats: C:%.1f D:%.1f S:%.1f mAh", + lastHour, currentHour, + socStats.current_hour_charged_mah, + socStats.current_hour_discharged_mah, + socStats.current_hour_solar_mah); + + // Move to next hour slot in circular buffer + uint8_t nextIndex = (socStats.currentIndex + 1) % HOURLY_STATS_HOURS; + + // Save completed hour's stats + HourlyBatteryStats& completedHour = socStats.hours[socStats.currentIndex]; + completedHour.timestamp = lastHour; + completedHour.charged_mah = socStats.current_hour_charged_mah; + completedHour.discharged_mah = socStats.current_hour_discharged_mah; + completedHour.solar_mah = socStats.current_hour_solar_mah; + + // Reset accumulators for new hour + socStats.currentIndex = nextIndex; + socStats.current_hour_charged_mah = 0.0f; + socStats.current_hour_discharged_mah = 0.0f; + socStats.current_hour_solar_mah = 0.0f; + socStats.lastHourUpdateTime = currentHour; + + // Recalculate rolling window statistics (24h and 3-day averages) + calculateRollingStats(); + } +} + +// Calculate 24h and 3-day rolling averages from hourly buffer +void BoardConfigContainer::calculateRollingStats() { + // Calculate last 24 hours net balance + float sum_24h_charged = 0.0f; + float sum_24h_discharged = 0.0f; + float sum_24h_solar = 0.0f; + int valid_hours_24h = 0; + + // Sum up last 24 hours (most recent 24 entries) + for (int i = 0; i < 24 && i < HOURLY_STATS_HOURS; i++) { + int idx = (socStats.currentIndex - 1 - i + HOURLY_STATS_HOURS) % HOURLY_STATS_HOURS; + if (socStats.hours[idx].timestamp != 0) { + sum_24h_charged += socStats.hours[idx].charged_mah; + sum_24h_discharged += socStats.hours[idx].discharged_mah; + sum_24h_solar += socStats.hours[idx].solar_mah; + valid_hours_24h++; + } + } + + // Last 24h net: solar - discharged (positive = surplus, negative = deficit) + socStats.last_24h_net_mah = sum_24h_solar - sum_24h_discharged; + socStats.last_24h_charged_mah = sum_24h_charged; + socStats.last_24h_discharged_mah = sum_24h_discharged; + socStats.living_on_battery = (socStats.last_24h_net_mah < 0.0f); + + // Calculate 3-day average daily net (72 hours) + float sum_72h_charged = 0.0f; + float sum_72h_discharged = 0.0f; + float sum_72h_solar = 0.0f; + int valid_hours_72h = 0; + + for (int i = 0; i < 72 && i < HOURLY_STATS_HOURS; i++) { + int idx = (socStats.currentIndex - 1 - i + HOURLY_STATS_HOURS) % HOURLY_STATS_HOURS; + if (socStats.hours[idx].timestamp != 0) { + sum_72h_charged += socStats.hours[idx].charged_mah; + sum_72h_discharged += socStats.hours[idx].discharged_mah; + sum_72h_solar += socStats.hours[idx].solar_mah; + valid_hours_72h++; + } + } + + // Average daily net over 3 days (divide 72h sum by 3) + if (valid_hours_72h >= 24) { // Need at least 24h of data + float net_72h = sum_72h_solar - sum_72h_discharged; + socStats.avg_3day_daily_net_mah = net_72h / 3.0f; // Divide by 3 days + socStats.avg_3day_daily_charged_mah = sum_72h_charged / 3.0f; + socStats.avg_3day_daily_discharged_mah = sum_72h_discharged / 3.0f; + } else { + socStats.avg_3day_daily_net_mah = 0.0f; + socStats.avg_3day_daily_charged_mah = 0.0f; + socStats.avg_3day_daily_discharged_mah = 0.0f; + } + + // Calculate 7-day average daily net (168 hours) + float sum_168h_charged = 0.0f; + float sum_168h_discharged = 0.0f; + float sum_168h_solar = 0.0f; + int valid_hours_168h = 0; + + for (int i = 0; i < 168 && i < HOURLY_STATS_HOURS; i++) { + int idx = (socStats.currentIndex - 1 - i + HOURLY_STATS_HOURS) % HOURLY_STATS_HOURS; + if (socStats.hours[idx].timestamp != 0) { + sum_168h_charged += socStats.hours[idx].charged_mah; + sum_168h_discharged += socStats.hours[idx].discharged_mah; + sum_168h_solar += socStats.hours[idx].solar_mah; + valid_hours_168h++; + } + } + + // Average daily net over 7 days (divide 168h sum by 7) + if (valid_hours_168h >= 24) { // Need at least 24h of data + float net_168h = sum_168h_solar - sum_168h_discharged; + socStats.avg_7day_daily_net_mah = net_168h / 7.0f; // Divide by 7 days + socStats.avg_7day_daily_charged_mah = sum_168h_charged / 7.0f; + socStats.avg_7day_daily_discharged_mah = sum_168h_discharged / 7.0f; + } else { + socStats.avg_7day_daily_net_mah = 0.0f; + socStats.avg_7day_daily_charged_mah = 0.0f; + socStats.avg_7day_daily_discharged_mah = 0.0f; + } + + MESH_DEBUG_PRINTLN("SOC: Rolling stats - 24h net: %+.1fmAh, 3d avg: %+.1fmAh/day, 7d avg: %+.1fmAh/day", + socStats.last_24h_net_mah, socStats.avg_3day_daily_net_mah, socStats.avg_7day_daily_net_mah); + + // Calculate TTL + calculateTTL(); +} + +// Calculate Time To Live (hours until battery empty). +// TTL is based on the 7-day rolling average of daily net energy consumption +// (avg_7day_daily_net_mah), computed from a 168-hour ring buffer of hourly +// INA228 Coulomb-counter measurements (charged/discharged/solar mAh). +// +// Data flow: +// 1. INA228 hardware Coulomb counter measures charge flow continuously (24-bit ADC) +// 2. updateHourlyStats() samples the counter every hour, storing per-hour deltas +// (charged_mah, discharged_mah, solar_mah) in the hours[168] ring buffer +// 3. calculateRollingStats() sums the last 168 hours and divides by 7 to get +// avg_7day_daily_net_mah (= solar - discharged per day) +// 4. This method extrapolates: remaining_mah / deficit_per_day * 24 = TTL hours +// +// Preconditions for TTL > 0: +// - living_on_battery == true (24h net is negative, i.e. energy deficit) +// - avg_7day_daily_net_mah < 0 (7-day average shows net discharge) +// - capacity_mah > 0 (battery capacity is known) +// - at least 24 hours of valid hourly data exist in the ring buffer +// +// When the device is solar-powered with energy surplus (net >= 0), TTL is 0 +// and callers interpret this as "infinite" via the living_on_battery flag. +void BoardConfigContainer::calculateTTL() { + if (!socStats.living_on_battery || socStats.avg_7day_daily_net_mah >= 0) { + socStats.ttl_hours = 0; // Not draining or charging + return; + } + + if (socStats.capacity_mah <= 0) { + socStats.ttl_hours = 0; // Capacity unknown + return; + } + + // Trapped Charge model: cold temperatures "lock" the bottom of the discharge + // curve — the cell shuts down (OCV near cutoff + TX-peak IR-drop) while charge + // is still physically stored. trapped_mah is the unusable floor. + // trapped_mah = capacity × (1 − f(T)) e.g. 8000 × 0.17 = 1360 mAh at −10 °C + // extractable = max(0, remaining − trapped) + // This is more realistic than proportional scaling (remaining × f) because + // capacity loss at cold is not uniform — it steals from the bottom. + float remaining_mah = (socStats.current_soc_percent / 100.0f) * socStats.capacity_mah; + float trapped_mah = socStats.capacity_mah * (1.0f - socStats.temp_derating_factor); + float extractable_mah = remaining_mah - trapped_mah; + if (extractable_mah < 0.0f) extractable_mah = 0.0f; + + // Daily deficit (negative value) + float deficit_per_day = -socStats.avg_7day_daily_net_mah; + + if (deficit_per_day <= 0) { + socStats.ttl_hours = 0; + return; + } + + // Days until empty (based on extractable capacity) + float days_remaining = extractable_mah / deficit_per_day; + + // Convert to hours + socStats.ttl_hours = (uint16_t)(days_remaining * 24.0f); + + MESH_DEBUG_PRINTLN("TTL: %.1f days (%.0f mAh stored, %.0f trapped, %.0f extractable @d=%.2f, -%.0f mAh/day)", + days_remaining, remaining_mah, trapped_mah, extractable_mah, + socStats.temp_derating_factor, deficit_per_day); +} + +// ===== Tick-based Periodic Dispatch ===== + +// Called from InheroMr2Board::tick() — dispatches all periodic I2C work with +// millis()-based scheduling in the main loop context. +// Also checks the ISR-set lowVoltageAlertFired flag for immediate shutdown. +void BoardConfigContainer::tickPeriodic() { + // First-call init: clear MPPT stats + if (!tickInitialized) { + memset(&mpptStats, 0, sizeof(mpptStats)); + tickInitialized = true; + } + + // Check low-voltage alert flag (set by INA228 ALERT ISR) + if (lowVoltageAlertFired) { + MESH_DEBUG_PRINTLN("PWRMGT: Low-voltage alert fired - initiating System Sleep"); + blinkRed(1, 100, 100, leds_enabled); + blinkRed(3, 300, 300, leds_enabled); + + NRF_POWER->GPREGRET2 |= GPREGRET2_LOW_VOLTAGE_SLEEP; + board.initiateShutdown(SHUTDOWN_REASON_LOW_VOLTAGE); + // Never returns + } + + uint32_t now = millis(); + + // Every ~60s: MPPT cycle (solar charging control) + if (now - lastMpptMs >= SOLAR_MPPT_INTERVAL_MS) { + lastMpptMs = now; + runMpptCycle(); + } + + // Every ~60s: SOC update from Coulomb Counter + if (now - lastSocMs >= 60000UL) { + lastSocMs = now; + updateBatterySOC(); + } + + // Every ~60 min: hourly statistics + if (now - lastHourlyMs >= 3600000UL) { + lastHourlyMs = now; + MESH_DEBUG_PRINTLN("SOC: 60 minutes elapsed - updating hourly stats"); + updateHourlyStats(); + } +} + +// ===== Helper Functions ===== + +// Trim whitespace from string +char* BoardConfigContainer::trim(char* str) { + char* end; + + while (isspace((unsigned char)*str)) + str++; + + if (*str == 0) { + return str; + } + + end = str + strlen(str) - 1; + + while (end > str && isspace((unsigned char)*end)) + end--; + + *(end + 1) = 0; + + return str; +} + +// Convert command string to battery type enum +BoardConfigContainer::BatteryType BoardConfigContainer::getBatteryTypeFromCommandString(const char* cmdStr) { + for (const auto& entry : bat_map) { + if (entry.command_string == nullptr) break; + if (strcmp(entry.command_string, cmdStr) == 0) { + return entry.type; + } + } + return BatteryType::BAT_UNKNOWN; +} + +// Get battery properties for a given battery type +const BoardConfigContainer::BatteryProperties* BoardConfigContainer::getBatteryProperties(BatteryType type) { + for (const auto& props : battery_properties) { + if (props.type == type) { + return &props; + } + } + return nullptr; // Should never happen if battery_properties is complete +} + +// Temperature derating factor (0..1) — extractable-capacity scaling at cold temps. +// Linear model: f(T)=1 for T>=T_ref, else max(f_min, 1 - k*(T_ref-T)). Used only +// for TTL/display, never for SOC% (SOC is purely Coulomb-based). +float BoardConfigContainer::getTemperatureDerating(const BatteryProperties* props, float temp_c) { + if (!props) return 1.0f; + if (temp_c >= props->temp_ref_c) return 1.0f; + + float delta = props->temp_ref_c - temp_c; + float factor = 1.0f - props->temp_derating_k * delta; + if (factor < props->temp_derating_min) factor = props->temp_derating_min; + return factor; +} + +// Convert battery type enum to command string +const char* BoardConfigContainer::getBatteryTypeCommandString(BatteryType type) { + for (const auto& entry : bat_map) { + if (entry.command_string == nullptr) break; + if (entry.type == type) { + return entry.command_string; + } + } + return "unknown"; +} + +// Convert frost charge behaviour enum to command string +const char* BoardConfigContainer::getFrostChargeBehaviourCommandString(FrostChargeBehaviour type) { + for (const auto& entry : frostchargebehaviour_map) { + if (entry.command_string == nullptr) break; + if (entry.type == type) { + return entry.command_string; + } + } + return "unknown"; +} + +// Convert command string to frost charge behaviour enum +BoardConfigContainer::FrostChargeBehaviour BoardConfigContainer::getFrostChargeBehaviourFromCommandString(const char* cmdStr) { + for (const auto& entry : frostchargebehaviour_map) { + if (entry.command_string == nullptr) break; + if (strcmp(entry.command_string, cmdStr) == 0) { + return entry.type; + } + } + return FrostChargeBehaviour::REDUCE_UNKNOWN; +} + +// Get available frost charge behaviour option strings +const char* BoardConfigContainer::getAvailableFrostChargeBehaviourOptions() { + static char buffer[64]; + + if (buffer[0] != '\0') return buffer; + + buffer[0] = '\0'; + + for (const auto& entry : frostchargebehaviour_map) { + if (entry.command_string == nullptr) break; + + size_t space_needed = strlen(buffer) + 1 + strlen(entry.command_string) + 1; + + if (space_needed >= sizeof(buffer)) { + break; + } + + if (buffer[0] != '\0') { + strcat(buffer, "|"); + } + strcat(buffer, entry.command_string); + } + + return buffer; +} + +// Get available battery type option strings +const char* BoardConfigContainer::getAvailableBatOptions() { + static char buffer[64]; + + if (buffer[0] != '\0') return buffer; + + buffer[0] = '\0'; + + for (const auto& entry : bat_map) { + if (entry.command_string == nullptr) break; + + size_t space_needed = strlen(buffer) + 1 + strlen(entry.command_string) + 1; + + if (space_needed >= sizeof(buffer)) { + break; + } + + if (buffer[0] != '\0') { + strcat(buffer, "|"); + } + strcat(buffer, entry.command_string); + } + + return buffer; +} diff --git a/variants/inhero_mr2/BoardConfigContainer.h b/variants/inhero_mr2/BoardConfigContainer.h new file mode 100644 index 0000000000..dadd503e6c --- /dev/null +++ b/variants/inhero_mr2/BoardConfigContainer.h @@ -0,0 +1,321 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once +#include "lib/BqDriver.h" +#include "lib/Ina228Driver.h" + +#include <Arduino.h> + +#define SOLAR_MPPT_INTERVAL_MS (1 * 60 * 1000) // 1 minute + +#define MPPT_STATS_HOURS 168 // 7 days + +typedef struct { + uint8_t mpptEnabledMinutes; // 0–60 + uint32_t timestamp; // unix seconds + uint32_t harvestedEnergy_mWh; +} MpptHourlyStats; + +typedef struct { + MpptHourlyStats hours[MPPT_STATS_HOURS]; + uint8_t currentIndex; + uint32_t lastUpdateTime; // unix seconds, or millis if RTC unavailable + uint16_t currentHourMinutes; + bool usingRTC; + uint32_t currentHourEnergy_mWh; + int32_t lastPower_mW; +} MpptStatistics; + +// Battery SOC: mAh-based, uses INA228 hardware coulomb counter (CHARGE register) +#define HOURLY_STATS_HOURS 168 // 7 days + +typedef struct { + uint32_t timestamp; // start of hour, unix seconds + float charged_mah; + float discharged_mah; + float solar_mah; +} HourlyBatteryStats; + +typedef struct { + // Battery configuration + float capacity_mah; + float nominal_voltage; + + // SOC tracking via INA228 CHARGE register + float current_soc_percent; // 0–100 + bool soc_valid; // true after first "Charging Done" sync + float ina228_baseline_mah; // INA228 CHARGE at last 100% sync + + uint32_t last_soc_update_ms; + + // 168-hour rolling buffer + HourlyBatteryStats hours[HOURLY_STATS_HOURS]; + uint8_t currentIndex; + uint32_t lastHourUpdateTime; + + // Current hour accumulators + float current_hour_charged_mah; + float current_hour_discharged_mah; + float current_hour_solar_mah; + float last_charge_reading_mah; // last INA228 CHARGE for delta calc + + // Rolling window stats (computed from hourly buffer) + float last_24h_net_mah; + float last_24h_charged_mah; + float last_24h_discharged_mah; + float avg_3day_daily_net_mah; + float avg_3day_daily_charged_mah; + float avg_3day_daily_discharged_mah; + float avg_7day_daily_net_mah; + float avg_7day_daily_charged_mah; + float avg_7day_daily_discharged_mah; + // TTL: hours until battery empty (0 = not calculated). Based on 7-day rolling + // avg of daily net deficit from INA228 coulomb-counter samples. + uint16_t ttl_hours; + bool living_on_battery; // net deficit over last 24h + uint16_t soc_update_count; + float temp_derating_factor; // 0.0–1.0 + float last_battery_temp_c; +} BatterySOCStats; + +class BoardConfigContainer { + +public: + enum BatteryType : uint8_t { BAT_UNKNOWN = 0, LTO_2S = 1, LIFEPO4_1S = 2, LIION_1S = 3, NAION_1S = 4 }; + typedef struct { + const char* command_string; + BatteryType type; + } BatteryMapping; + + // Battery type properties + typedef struct { + BatteryType type; + float charge_voltage; + float nominal_voltage; + uint16_t lowv_sleep_mv; // INA228 ALERT → System Sleep + uint16_t lowv_wake_mv; // 0% SOC marker, RTC wake decision + bool charge_enable; + bool ts_ignore; // disables JEITA temperature monitoring + // Capacity derating at cold temps. Calibrated for ~0.01C avg / ~0.05C TX + // peak loads on 2–8 Ah cells (much milder than datasheet 0.2C–0.5C values). + // f(T) = 1.0 for T >= temp_ref_c + // f(T) = max(temp_derating_min, 1 - k*(Tref - T)) for T < temp_ref_c + float temp_derating_k; + float temp_derating_min; + float temp_ref_c; + } BatteryProperties; + + static inline constexpr BatteryProperties battery_properties[] = { + // Type ChgV NomV SleepMv WakeMv ChgEn TsIgn k min Tref + { BAT_UNKNOWN, 0.0f, 0.0f, 2000, 2200, false, true, 0.000f, 1.00f, 25.0f }, + { LTO_2S, 5.4f, 4.6f, 3900, 4100, true, true, 0.002f, 0.88f, 25.0f }, + { LIFEPO4_1S, 3.5f, 3.2f, 2700, 2900, true, false, 0.006f, 0.70f, 25.0f }, + { LIION_1S, 4.1f, 3.7f, 3100, 3300, true, false, 0.005f, 0.75f, 25.0f }, + { NAION_1S, 3.9f, 3.1f, 2500, 2700, true, true, 0.003f, 0.85f, 25.0f } + }; + + static inline constexpr BatteryMapping bat_map[] = { { "lto2s", LTO_2S }, + { "lifepo1s", LIFEPO4_1S }, + { "liion1s", LIION_1S }, + { "naion1s", NAION_1S }, + { "none", BAT_UNKNOWN }, + { nullptr, BAT_UNKNOWN } }; + + enum FrostChargeBehaviour : uint8_t { + NO_CHARGE = 4, + I_REDUCE_TO_20 = 3, + I_REDUCE_TO_40 = 2, + NO_REDUCE = 1, + REDUCE_UNKNOWN = 0 + }; + typedef struct { + const char* command_string; + FrostChargeBehaviour type; + } FrostChargeBehaviourMapping; + + static inline constexpr FrostChargeBehaviourMapping frostchargebehaviour_map[] = { + { "0%", NO_CHARGE }, + { "20%", I_REDUCE_TO_20 }, + { "40%", I_REDUCE_TO_40 }, + { "100%", NO_REDUCE }, + { nullptr, REDUCE_UNKNOWN } + }; + + // Defaults for newly flashed boards + static constexpr BatteryType DEFAULT_BATTERY_TYPE = BAT_UNKNOWN; + static constexpr FrostChargeBehaviour DEFAULT_FROST_BEHAVIOUR = NO_CHARGE; + static constexpr uint16_t DEFAULT_MAX_CHARGE_CURRENT_MA = 200; + static constexpr bool DEFAULT_MPPT_ENABLED = false; + + // IINDPM = 1.2 × (V_charge × I_charge) / V_panel_assumed. + // Prevents weak panels from tripping POORSRC after PG qualification. + static constexpr float IINDPM_MAX_A = 2.0f; // JST connector limit + static constexpr float IINDPM_USB_A = 0.5f; // USB 2.0 max + static constexpr float IINDPM_PANEL_V = 4.0f; + static constexpr float IINDPM_MARGIN = 1.2f; + + // If PG=0 but VBUS >= this, toggle HIZ to force input re-qualification. + static constexpr uint16_t PG_STUCK_VBUS_THRESHOLD_MV = 4500; + + static BatteryType getBatteryTypeFromCommandString(const char* cmdStr); + static char* trim(char* str); + static const char* getBatteryTypeCommandString(BatteryType type); + static const char* getFrostChargeBehaviourCommandString(FrostChargeBehaviour type); + static FrostChargeBehaviour getFrostChargeBehaviourFromCommandString(const char* cmdStr); + static const char* getAvailableFrostChargeBehaviourOptions(); + static const char* getAvailableBatOptions(); + static const BatteryProperties* getBatteryProperties(BatteryType type); + + // Returns 0.0–1.0; reduces SOC% and TTL at cold temps. Coulomb counter unaffected. + static float getTemperatureDerating(const BatteryProperties* props, float temp_c); + + static void heartbeatTask(void* pvParameters); + + // Re-enable MPPT if BQ disabled it (when PG=1). + static void checkAndFixSolarLogic(); + + static bool loadMpptEnabled(bool& enabled); + void tickPeriodic(); // periodic I2C work (MPPT, SOC, hourly stats) + static void stopBackgroundTasks(); + + bool setBatteryType(BatteryType type); + + BatteryType getBatteryType() const; + + bool setFrostChargeBehaviour(FrostChargeBehaviour behaviour); + FrostChargeBehaviour getFrostChargeBehaviour() const; + + bool setMaxChargeCurrent_mA(uint16_t maxChrgI); + uint16_t getMaxChargeCurrent_mA() const; + + // Caps IINDPM to 500mA when USB is the input source. + static void setUsbConnected(bool connected); + static bool isUsbConnected() { return usbInputActive; } + static float calculateSolarIINDPM(); + static void updateSolarIINDPM(); + + bool getMPPTEnabled() const; + bool setMPPTEnable(bool enableMPPT); + + float getMaxChargeVoltage() const; + + bool begin(); + + // INA228 for VBAT/IBAT, BQ25798 for solar. + const Telemetry* getTelemetryData(); + + const char* getChargeCurrentAsStr(); + void getChargerInfo(char* buffer, uint32_t bufferSize); + void getBqDiagnostics(char* buffer, uint32_t bufferSize); + + // "INA:OK BQ:OK RTC:OK BME:OK". RTC probe writes/reads user-RAM to catch + // zombie chips that ACK but don't persist. + void getSelfTest(char* buffer, uint32_t bufferSize); + + // Address ACK + user-RAM write/readback verify (bytes 0x1F, 0x20 are scratch). + static bool probeRtc(); + + float getMpptEnabledPercentage7Day() const; + + // Battery SOC & coulomb counter + float getStateOfCharge() const; + float getBatteryCapacity() const; + bool setBatteryCapacity(float capacity_mah); + bool isBatteryCapacitySet() const; + uint16_t getTTL_Hours() const; + bool isLivingOnBattery() const; + // Sync SOC to 100% after "Charging Done". + static void syncSOCToFull(); + static bool setSOCManually(float soc_percent); + const BatterySOCStats* getSOCStats() const { return &socStats; } + const MpptStatistics* getMpptStats() const { return &mpptStats; } + static void updateBatterySOC(); + static uint32_t getRTCTimestamp(); + + static float getNominalVoltage(BatteryType type); + void setLowVoltageRecovery() { lowVoltageRecovery = true; } + Ina228Driver* getIna228Driver(); + + // NTC calibration via BME280 reference + bool setTcCalOffset(float offset_c); + float getTcCalOffset() const; + float performTcCalibration(float* bme_temp_out = nullptr); + static float readBmeTemperature(); + + // INA228 ALERT on P1.02 (Rev 1.1) + void armLowVoltageAlert(); + static void disarmLowVoltageAlert(); + static void lowVoltageAlertISR(); + + static uint16_t getLowVoltageSleepThreshold(BatteryType type); + static uint16_t getLowVoltageWakeThreshold(BatteryType type); + + // 600s timeout; nRF52 WDT cannot truly be disabled. + static void setupWatchdog(); + static void feedWatchdog(); + static void disableWatchdog(); + + bool setLEDsEnabled(bool enabled); + bool getLEDsEnabled() const; + +private: + static BqDriver* bqDriverInstance; + static Ina228Driver* ina228DriverInstance; + static TaskHandle_t heartbeatTaskHandle; + static volatile bool lowVoltageAlertFired; // INA228 ALERT fired, checked in tickPeriodic + + // Tick scheduling (millis-based, overflow-safe) + uint32_t lastMpptMs = 0; + uint32_t lastSocMs = 0; + uint32_t lastHourlyMs = 0; // Last updateHourlyStats() execution + bool tickInitialized = false; // First-call init flag for MPPT stats + + void runMpptCycle(); // Single MPPT cycle + static MpptStatistics mpptStats; // MPPT statistics data + static BatterySOCStats socStats; // Battery SOC statistics + // Cached battery type for static methods (set by begin()/setBatteryType()) + static BatteryType cachedBatteryType; + + bool bqInitialized = false; + bool ina228Initialized = false; + bool lowVoltageRecovery = false; // Set in begin() if booting from low-voltage sleep (GPREGRET2) + static bool leds_enabled; // Heartbeat and BQ stat LED control (static for ISR access) + static bool usbInputActive; // True when USB VBUS detected — caps IINDPM to 500mA + static float tcCalOffset; // NTC temperature calibration offset in °C (0.0 = no calibration) + // Last valid battery temperature in °C, updated by getTelemetryData() or + // BME280 fallback (default 25.0 = no derating) + static float lastValidBatteryTemp; + static uint32_t lastTempUpdateMs; // millis() of last valid temperature update (0 = never updated) + + // Refresh socStats.temp_derating_factor and last_battery_temp_c. + // Falls back to BME280 if NTC has not updated for >5 min. + static void refreshTempDerating(); + + bool configureBaseBQ(); + bool configureChemistry(BatteryType type); + float performTcCalibration(float actual_temp_c); // Internal: calibrate NTC given reference temp (called by BME auto-cal) + static constexpr const char* PREFS_NAMESPACE = "inheromr2"; + static constexpr const char* BATTKEY = "batType"; + static constexpr const char* FROSTKEY = "frost"; + static constexpr const char* MAXCHARGECURRENTKEY = "maxChrg"; + static constexpr const char* MPPTENABLEKEY = "mpptEn"; + static constexpr const char* LEDSKEY = "leds_en"; + static constexpr const char* BATTERY_CAPACITY_KEY = "batCap"; + static constexpr const char* TCCAL_KEY = "tcCal"; // NTC temperature calibration offset + + bool loadBatType(BatteryType& type) const; + bool loadFrost(FrostChargeBehaviour& behaviour) const; + bool loadMaxChrgI(uint16_t& maxCharge_mA) const; + bool loadBatteryCapacity(float& capacity_mah) const; + bool loadTcCalOffset(float& offset) const; // NTC temperature calibration + + // MPPT Statistics helper + static void updateMpptStats(); + + // Battery SOC helpers + static void updateHourlyStats(); // Update hourly statistics (called every 60 minutes) + static void calculateRollingStats(); // Calculate 24h and 3-day averages from rolling buffer + static void calculateTTL(); // Calculate TTL from 7-day avg net deficit and remaining SOC capacity +}; \ No newline at end of file diff --git a/variants/inhero_mr2/InheroMr2Board.cpp b/variants/inhero_mr2/InheroMr2Board.cpp new file mode 100644 index 0000000000..8a2a8d7c8e --- /dev/null +++ b/variants/inhero_mr2/InheroMr2Board.cpp @@ -0,0 +1,549 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * Inhero MR-2 Board Implementation + */ + +#include "InheroMr2Board.h" + +#include "BoardConfigContainer.h" +#include "helpers/BatteryOcvMapping.h" +#include "helpers/BqLowPowerSetup.h" +#include "helpers/CliCommands.h" +#include "helpers/I2cBusRecovery.h" +#include "helpers/Rv3028Wake.h" +#include "helpers/SystemSleepGpio.h" +#include "helpers/UsbAutoManagement.h" +#include "target.h" + +#include <Arduino.h> +#include <Wire.h> +#include <nrf_soc.h> + +static BoardConfigContainer boardConfig; +volatile bool InheroMr2Board::rtc_irq_pending = false; +volatile uint32_t InheroMr2Board::ota_dfu_reset_at = 0; + +// ===== Public Methods ===== + +void InheroMr2Board::begin() { + // === FAST PATH: RTC wake from low-voltage sleep === + // Check GPREGRET2 FIRST — before ANY GPIO setup. + // Note: System Sleep wake triggers a System-ON reset. The bootloader runs before our code, + // and the reset clears all PIN_CNF to Input/Disconnect defaults. BSP init() only does + // OUTSET=0xFFFFFFFF which has no physical effect on Input-configured pins. + // Therefore we MUST explicitly re-assert any GPIO we need (CE, etc.) in this path. + uint8_t shutdown_reason = NRF_POWER->GPREGRET2; + + if ((shutdown_reason & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE) { + // Minimal I2C setup — only thing we need +#if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) + Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); +#endif + Wire.begin(); + delay(10); + + // SYSTEMOFF wake is a reset, so the FALLING-edge ISR never sees the RTC event. + // Clear TF here before we arm RTC_INT pull-up + SENSE again. + inhero::clearTimerFlag(); + + // RTC INT: must have SENSE_Low for System Sleep wake-up + NRF_GPIO->PIN_CNF[RTC_INT_PIN] = + (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | + (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) | + (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Low << GPIO_PIN_CNF_SENSE_Pos); + + uint16_t vbat_mv = Ina228Driver::readVBATDirect(&Wire, INA228_I2C_ADDR); + uint16_t wake_threshold = getLowVoltageWakeThreshold(); + + MESH_DEBUG_PRINTLN("LV-Wake: VBAT=%dmV, wake=%dmV", vbat_mv, wake_threshold); + + if (vbat_mv == 0 || vbat_mv < wake_threshold) { + // Still too low or read failed — go back to sleep immediately. + // INA228 ADC needs shutdown (readVBATDirect left it in one-shot mode). + + // BQ CE pin: The System-ON reset after System Sleep wake resets all PIN_CNF + // to Input/Disconnect defaults. The previous cycle's OUTPUT latch is lost. + // Must explicitly re-assert OUTPUT HIGH so solar charging stays active. +#ifdef BQ_CE_PIN + pinMode(BQ_CE_PIN, OUTPUT); + digitalWrite(BQ_CE_PIN, HIGH); + MESH_DEBUG_PRINTLN("LV-Wake: CE re-latched HIGH (solar charging active)"); +#endif + + // Put INA228 + BQ25798 into a state that draws minimal current during System Sleep. + inhero::prepareIcsForSystemOff(); + + // SX1262: Send SetSleep command AND latch NSS HIGH. + // After System-ON reset, SX1262 may be in Standby RC (~600µA). + // Both are needed: SetSleep puts it to Cold Sleep, NSS latch prevents re-wake. + inhero::prepareRadioForSystemOff(false); + + configureRTCWake(LOW_VOLTAGE_SLEEP_MINUTES); + NRF_P0->LATCH = (1UL << RTC_INT_PIN); + Wire.end(); + + // Disconnect GPIO pull-ups before System Sleep (Wire.end() keeps SDA/SCL + // pull-ups active on nRF52 — each held-LOW line wastes ~250µA). + inhero::disconnectLeakyPullups(); + + NRF_POWER->GPREGRET2 = GPREGRET2_LOW_VOLTAGE_SLEEP | SHUTDOWN_REASON_LOW_VOLTAGE; + sd_power_system_off(); + NRF_POWER->SYSTEMOFF = 1; + while (1) __WFE(); + } + + // Voltage recovered — close I2C and fall through to normal boot + Wire.end(); + + // Recovery LED flash + pinMode(LED_BLUE, OUTPUT); + for (int i = 0; i < 3; i++) { + digitalWrite(LED_BLUE, HIGH); + delay(150); + digitalWrite(LED_BLUE, LOW); + delay(150); + } + + NRF_POWER->GPREGRET2 = SHUTDOWN_REASON_NONE; + // setLowVoltageRecovery + setSOCManually deferred to after boardConfig.begin() + MESH_DEBUG_PRINTLN("LV-Wake: Voltage recovered (%dmV >= %dmV) - normal boot", vbat_mv, wake_threshold); + } + + // === Standard boot path (ColdBoot, recovery, or non-LV wake) === + bool isLowVoltageRecovery = ((shutdown_reason & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE); + + pinMode(PIN_VBAT_READ, INPUT); + + // BQ25798 CE: drive LOW on boot so the external FET stays OFF (Rev 1.1 inverts + // logic via DMN2004TK-7). configureChemistry() raises it after successful I2C init. +#ifdef BQ_CE_PIN + pinMode(BQ_CE_PIN, OUTPUT); + digitalWrite(BQ_CE_PIN, LOW); +#endif + + // PE4259 RF switch VDD (P1.05 → PE4259 pin 6). Required for TX/RX; DIO2 drives CTRL. + pinMode(SX126X_POWER_EN, OUTPUT); + digitalWrite(SX126X_POWER_EN, HIGH); + delay(10); // Give PE4259 time to power up + +#ifdef PIN_USER_BTN + pinMode(PIN_USER_BTN, INPUT_PULLUP); +#endif + +#ifdef PIN_USER_BTN_ANA + pinMode(PIN_USER_BTN_ANA, INPUT_PULLUP); +#endif + +#if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) + Wire.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL); +#endif + + // === I2C Bus Recovery === + // After OTA/warm-reset, a slave may hold SDA low (stuck mid-transaction). + inhero::recoverI2cBus(PIN_BOARD_SDA, PIN_BOARD_SCL); + + Wire.begin(); + delay(50); // Give I2C bus time to stabilize + + MESH_DEBUG_PRINTLN("Inhero MR2 - Hardware Rev 1.1 (INA228 ALERT + RTC + CE-FET)"); + + // === CRITICAL: Configure RTC INT pin for wake-up from System Sleep === + // attachInterrupt() alone is NOT sufficient for System Sleep wake-up! + // We MUST configure the pin with SENSE for nRF52 SYSTEMOFF wake capability + pinMode(RTC_INT_PIN, INPUT_PULLUP); + + // Configure GPIO SENSE for wake-up from System Sleep (nRF52 SYSTEMOFF mode) + // This is essential - without SENSE configuration, System Sleep wake-up will not work + NRF_GPIO->PIN_CNF[RTC_INT_PIN] = + (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | + (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) | + (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Low << GPIO_PIN_CNF_SENSE_Pos); // Wake on LOW (RTC interrupt is active-low) + + attachInterrupt(digitalPinToInterrupt(RTC_INT_PIN), rtcInterruptHandler, FALLING); + + // === Early Boot Voltage Check (ColdBoot only) === + // LV-wake resleep is handled by the fast path above. + // This section handles ColdBoot below sleep threshold and normal ColdBoot. + + if (!isLowVoltageRecovery) { + MESH_DEBUG_PRINTLN("Early Boot: Reading VBAT from INA228 @ 0x40..."); + uint16_t vbat_mv = Ina228Driver::readVBATDirect(&Wire, INA228_I2C_ADDR); + MESH_DEBUG_PRINTLN("Early Boot: readVBATDirect returned %dmV", vbat_mv); + + if (vbat_mv == 0) { + MESH_DEBUG_PRINTLN("Early Boot: Failed to read battery voltage, assuming OK"); + } else { + BoardConfigContainer::BatteryType bootBatType = boardConfig.getBatteryType(); + uint16_t wake_threshold = getLowVoltageWakeThreshold(); + uint16_t sleep_threshold = getLowVoltageSleepThreshold(); + + MESH_DEBUG_PRINTLN("Early Boot Check: VBAT=%dmV, Wake=%dmV (0%% SOC), Sleep=%dmV, Reason=0x%02X", + vbat_mv, wake_threshold, sleep_threshold, shutdown_reason); + + if (bootBatType == BoardConfigContainer::BAT_UNKNOWN) { + MESH_DEBUG_PRINTLN("Early Boot: BAT_UNKNOWN - skipping low-voltage check (configure battery type first)"); + if ((shutdown_reason & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE || + (shutdown_reason & GPREGRET2_LOW_VOLTAGE_SLEEP)) { + NRF_POWER->GPREGRET2 = SHUTDOWN_REASON_NONE; + MESH_DEBUG_PRINTLN("Early Boot: Cleared stale GPREGRET2 flags (was 0x%02X)", shutdown_reason); + } + } + // ColdBoot with voltage below sleep threshold — first entry into LV sleep + else if (vbat_mv < sleep_threshold) { + MESH_DEBUG_PRINTLN("ColdBoot below sleep threshold (%dmV < %dmV)", vbat_mv, sleep_threshold); + MESH_DEBUG_PRINTLN("Going to sleep for %d min to avoid motorboating", LOW_VOLTAGE_SLEEP_MINUTES); + + delay(100); + inhero::prepareRadioForSystemOff(false); + + // INA228 → Shutdown mode with readback verification + for (int retry = 0; retry < 3; retry++) { + Wire.beginTransmission(INA228_I2C_ADDR); + Wire.write(0x01); // ADC_CONFIG register + Wire.write(0x00); // Shutdown (MSB) + Wire.write(0x00); // (LSB) + if (Wire.endTransmission() != 0) { + delay(10); + continue; + } + delay(2); + Wire.beginTransmission(INA228_I2C_ADDR); + Wire.write(0x01); + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)INA228_I2C_ADDR, (uint8_t)2); + uint16_t rb = 0; + if (Wire.available() >= 2) { + rb = (Wire.read() << 8) | Wire.read(); + } + if ((rb & 0xF000) == 0x0000) break; + delay(10); + } + + // Read DIAG_ALRT to clear any latched alert flag + Wire.beginTransmission(INA228_I2C_ADDR); + Wire.write(0x0B); + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)INA228_I2C_ADDR, (uint8_t)2); + while (Wire.available()) Wire.read(); + + // Latch BQ CE pin HIGH (solar charging active in sleep) +#ifdef BQ_CE_PIN + digitalWrite(BQ_CE_PIN, HIGH); +#endif + + // BQ25798 — Disable ADC (saves ~500µA continuous draw) + Wire.beginTransmission(BQ25798_I2C_ADDR); + Wire.write(0x2E); // ADC_CONTROL + Wire.write(0x00); // ADC_EN=0 + Wire.endTransmission(); + + // BQ25798 — Mask all interrupts + clear flags to de-assert INT + { + const uint8_t mask_regs[] = {0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D}; + for (uint8_t r : mask_regs) { + Wire.beginTransmission(BQ25798_I2C_ADDR); + Wire.write(r); + Wire.write(0xFF); + Wire.endTransmission(); + } + const uint8_t flag_regs[] = {0x22, 0x23, 0x24, 0x25, 0x26, 0x27}; + for (uint8_t r : flag_regs) { + Wire.beginTransmission(BQ25798_I2C_ADDR); + Wire.write(r); + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)BQ25798_I2C_ADDR, (uint8_t)1); + while (Wire.available()) Wire.read(); + } + } + + // BME280 — Force Sleep mode + Wire.beginTransmission(BME280_I2C_ADDR); + Wire.write(0xF4); // ctrl_meas + Wire.write(0x00); // Sleep mode + Wire.endTransmission(); + + configureRTCWake(LOW_VOLTAGE_SLEEP_MINUTES); + NRF_P0->LATCH = (1UL << RTC_INT_PIN); + + Wire.end(); + inhero::disconnectLeakyPullups(); + NRF_POWER->GPREGRET2 = GPREGRET2_LOW_VOLTAGE_SLEEP | SHUTDOWN_REASON_LOW_VOLTAGE; + + sd_power_system_off(); + NRF_POWER->SYSTEMOFF = 1; + while (1) __WFE(); + } + // Normal ColdBoot — voltage OK + else { + MESH_DEBUG_PRINTLN("Normal ColdBoot - voltage OK (%dmV >= %dmV)", vbat_mv, sleep_threshold); + } + } + } + + // === Normal boot path: Initialize board hardware === + // Only reached when voltage is OK (or unreadable) — resleep paths exit above. + // boardConfig.begin() initializes BQ25798, INA228, CE pin, alerts, LEDs, etc. + MESH_DEBUG_PRINTLN("Initializing Rev 1.1 features (BQ25798, INA228, RTC, CE-FET)"); + boardConfig.begin(); + + // Handle low-voltage recovery (deferred until after boardConfig.begin()) + if (isLowVoltageRecovery) { + boardConfig.setLowVoltageRecovery(); + BoardConfigContainer::setSOCManually(0.0f); + MESH_DEBUG_PRINTLN("SOC: Set to 0%% (low-voltage recovery)"); + } + + // Enable DC/DC REG1 (VDD 3.3V → 1.3V core, ~1.5mA saving). REG0 not needed — + // RAK4630 is powered from TPS62840 VDD, not VBUS. Done after peripheral init. + NRF52BoardDCDC::begin(); + + // LEDs already initialized in boardConfig.begin() + // Blue LED was used for boot sequence visualization + // Red LED indicates missing components (if blinking) + + // Start hardware watchdog (600s timeout) + // Must be last - after all initializations are complete + BoardConfigContainer::setupWatchdog(); + + // Set initial USB IINDPM limit based on VBUS state at boot + if (inhero::isUsbPowered()) { + BoardConfigContainer::setUsbConnected(true); + } +} + +void InheroMr2Board::tick() { + inhero::serviceUsbAutoManagement(); + + // Deferred OTA DFU reset: wait for CLI reply to be sent, then enter bootloader + if (ota_dfu_reset_at != 0 && millis() >= ota_dfu_reset_at) { + enterOTADfu(); // disables SoftDevice & interrupts, sets GPREGRET, resets — does not return + } + + if (rtc_irq_pending) { + rtc_irq_pending = false; + + // Clear TF here (not in ISR) to avoid I2C bus collisions with core RTC access. + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + Wire.endTransmission(false); + Wire.requestFrom(RTC_I2C_ADDR, (uint8_t)1); + + if (Wire.available()) { + uint8_t status = Wire.read(); + status &= ~(1 << 3); // Clear TF bit (bit 3) + + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + Wire.write(status); + Wire.endTransmission(); + } + } + + // Dispatch all periodic I2C work (MPPT, SOC, hourly stats, low-V alert check) + boardConfig.tickPeriodic(); + + // All healthy — feed watchdog at the END (after I2C operations completed successfully) + BoardConfigContainer::feedWatchdog(); + + // Briefly idle via WFE until next interrupt (radio DIO1, SysTick, USB, I2C). + // Typically wakes within 1ms. Reduces CPU current from ~3mA (busy-loop) to ~0.5-0.8mA. + // Harmless when powersaving also calls sleep() — on nRF52 both are just WFE. + sleep(0); +} + +uint16_t InheroMr2Board::getBattMilliVolts() { + // WORKAROUND: The MeshCore protocol currently only transmits battery voltage + // (via getBattMilliVolts), not a direct SOC percentage. The companion app then + // interprets this voltage using a hardcoded Li-Ion discharge curve to derive SOC%. + // This gives wrong readings for LiFePO4/LTO chemistries whose voltage profiles + // differ significantly from Li-Ion. + + // Solution: When we have a valid Coulomb-counted SOC, we reverse-map it to + // the Li-Ion 1S OCV (Open Circuit Voltage) that the app expects. + // This way the app always displays our accurate chemistry-independent SOC. + + // TODO: Remove this workaround once MeshCore supports transmitting the actual + // SOC percentage alongside (or instead of) battery millivolts. At that point, + // this function should return the real battery voltage again. + + const BatterySOCStats* socStats = boardConfig.getSOCStats(); + if (socStats && socStats->soc_valid) { + return inhero::socToLiIonMilliVolts(boardConfig.getStateOfCharge()); + } + + // Fallback: no valid Coulomb-counting SOC yet — return real voltage + const Telemetry* telemetry = boardConfig.getTelemetryData(); + if (!telemetry) { + return 0; + } + return telemetry->battery.voltage; +} + +bool InheroMr2Board::startOTAUpdate(const char* id, char reply[]) { + // Skip in-app BLE DFU (unstable here) and jump to the Adafruit bootloader's + // native OTA DFU via enterOTADfu() (sets GPREGRET=0xA8 + reset). + MESH_DEBUG_PRINTLN("OTA: Scheduling Adafruit bootloader DFU mode..."); + + // Read BLE MAC address from nRF52 hardware registers (no Bluefruit needed) + uint32_t addr0 = NRF_FICR->DEVICEADDR[0]; + uint32_t addr1 = NRF_FICR->DEVICEADDR[1]; + snprintf(reply, 64, "OK DFU - mac: %02X:%02X:%02X:%02X:%02X:%02X", + (addr1 >> 8) & 0xFF, addr1 & 0xFF, + (addr0 >> 24) & 0xFF, (addr0 >> 16) & 0xFF, (addr0 >> 8) & 0xFF, addr0 & 0xFF); + + // Schedule deferred reset into bootloader DFU mode. + // Return immediately so the CLI handler can send the reply first. + // tick() will handle cleanup (stop tasks, radio off) and reset after the delay. + ota_dfu_reset_at = millis() + 3000; // 3s delay to ensure reply is transmitted + + return true; +} + +// Collects board telemetry and appends to CayenneLPP packet +bool InheroMr2Board::queryBoardTelemetry(CayenneLPP& telemetry) { + return inhero::appendBoardTelemetry(boardConfig, telemetry); +} + +// Handles custom CLI getter commands for board configuration +bool InheroMr2Board::getCustomGetter(const char* getCommand, char* reply, uint32_t maxlen) { + return inhero::handleGet(boardConfig, getCommand, reply, maxlen); +} + +// Handles custom CLI setter commands for board configuration +const char* InheroMr2Board::setCustomSetter(const char* setCommand) { + return inhero::handleSet(boardConfig, setCommand); +} + +// ===== Power Management Methods (Rev 1.1) ===== + +// Get low-voltage sleep threshold (chemistry-specific) +uint16_t InheroMr2Board::getLowVoltageSleepThreshold() { + BoardConfigContainer::BatteryType chemType = boardConfig.getBatteryType(); + return BoardConfigContainer::getLowVoltageSleepThreshold(chemType); +} + +// Get low-voltage wake threshold (chemistry-specific) +uint16_t InheroMr2Board::getLowVoltageWakeThreshold() { + BoardConfigContainer::BatteryType chemType = boardConfig.getBatteryType(); + return BoardConfigContainer::getLowVoltageWakeThreshold(chemType); +} + +// Initiate controlled shutdown with filesystem protection (Rev 1.1) + +// Rev 1.1 low-voltage shutdown uses System Sleep with GPIO latch (< 500µA total): +// - INA228 enters shutdown mode (~3.5µA) +// - BQ CE pin latched HIGH via FET (solar charging continues autonomously) +// - RTC countdown timer configured for periodic wake +// - nRF52 enters SYSTEMOFF (~1.5µA) — GPIO latches preserved +// - RTC wake triggers reboot; Early Boot checks voltage for boot vs sleep-again +void InheroMr2Board::initiateShutdown(uint8_t reason) { + MESH_DEBUG_PRINTLN("PWRMGT: Initiating shutdown (reason=0x%02X)", reason); + + // 1. Stop background tasks to prevent filesystem corruption + BoardConfigContainer::stopBackgroundTasks(); + + // 2. INA228: Shutdown mode to minimize sleep current (~3.5µA vs ~300µA continuous) + // No BUVL monitoring needed in sleep — RTC wakes us for voltage check. + Ina228Driver* ina = boardConfig.getIna228Driver(); + if (ina) { + // Release ALERT pin: latched LOW after LV trip wastes ~330µA through the + // RAK4630 pull-up. Clear ALATCH + BUVL (transparent mode) before ADC shutdown. + ina->enableAlert(false, false, false); // DIAG_ALRT=0: ALATCH=0, clear all flags + ina->setUnderVoltageAlert(0); // BUVL=0: disable under-voltage comparison + ina->shutdown(); + } + + // 3. SX1262 sleep + SPI cleanup (prevents ~4mA leakage in System Sleep) + inhero::prepareRadioForSystemOff(); + + // 4. LEDs off before sleep + digitalWrite(PIN_LED1, LOW); + digitalWrite(PIN_LED2, LOW); + + if (reason == SHUTDOWN_REASON_LOW_VOLTAGE) { + MESH_DEBUG_PRINTLN("PWRMGT: Low voltage shutdown - entering System Sleep with CE latched"); + + delay(100); // Allow I/O to complete + + // 5. Latch BQ CE pin HIGH (FET ON = CE LOW = charge enabled) + // GPIO output latch survives System Sleep as long as VDD is present +#ifdef BQ_CE_PIN + digitalWrite(BQ_CE_PIN, HIGH); + MESH_DEBUG_PRINTLN("PWRMGT: CE latched HIGH (solar charging active in sleep)"); +#endif + + // 5b. INA228 + BQ25798 \u2192 minimum sleep current. Must be AFTER CE=HIGH + // (charge enable may re-enable BQ ADC). Repeats INA228 shutdown via raw I2C + // with readback as a safety net if the driver call in step 2 silently failed. + inhero::prepareIcsForSystemOff(); + + // 5c. BME280 @ 0x76 — Force Sleep mode (saves ~1-7µA) + // After normal operation readBmeTemperature() may have left BME280 in NORMAL mode. + // Harmless NACK if no BME280 populated. + Wire.beginTransmission(BME280_I2C_ADDR); + Wire.write(0xF4); // ctrl_meas register + Wire.write(0x00); // MODE=00 (Sleep), all oversampling off + Wire.endTransmission(); + MESH_DEBUG_PRINTLN("PWRMGT: BQ25798 ADC/INT + BME280 shut down"); + + // 6. Configure RTC to wake us up periodically for voltage check + configureRTCWake(LOW_VOLTAGE_SLEEP_MINUTES); + + // 7. Clear GPIO LATCH for RTC INT pin. + // If a previous RTC wake cycle set the LATCH (retained across System Sleep), + // DETECT would fire immediately → instant wake → boot loop. + NRF_P0->LATCH = (1UL << RTC_INT_PIN); + + // 8. Release I2C buses (done AFTER RTC config, which uses Wire) + Wire.end(); + + // 9. Disconnect all GPIO pull-ups on OD/I2C pins to prevent leakage + inhero::disconnectLeakyPullups(); + + // 10. Store shutdown reason for Early Boot decision + NRF_POWER->GPREGRET2 = GPREGRET2_LOW_VOLTAGE_SLEEP | reason; + + MESH_DEBUG_PRINTLN("PWRMGT: Entering System Sleep (< 500uA)"); + delay(50); + + sd_power_system_off(); + // Fallback if SoftDevice not enabled + NRF_POWER->SYSTEMOFF = 1; + while (1) __WFE(); + } + + // Non-low-voltage shutdown (user request, thermal): use System OFF + Wire.end(); + inhero::disconnectLeakyPullups(); + NRF_POWER->GPREGRET2 = reason; + + MESH_DEBUG_PRINTLN("PWRMGT: Entering SYSTEMOFF"); + delay(50); + + // Clear LATCH to prevent spurious wake + NRF_P0->LATCH = (1UL << RTC_INT_PIN); + + sd_power_system_off(); + // Fallback if SoftDevice not enabled + NRF_POWER->SYSTEMOFF = 1; + while (1) __WFE(); +} + +void InheroMr2Board::configureRTCWake(uint32_t minutes) { + uint16_t ticks = static_cast<uint16_t>( + minutes == 0 ? LOW_VOLTAGE_SLEEP_MINUTES + : (minutes > 4095 ? 4095 : minutes)); + inhero::configurePeriodicWake(ticks); +} + +void InheroMr2Board::rtcInterruptHandler() { + // Defer I2C work to the main loop to avoid ISR I2C collisions. + rtc_irq_pending = true; +} diff --git a/variants/inhero_mr2/InheroMr2Board.h b/variants/inhero_mr2/InheroMr2Board.h new file mode 100644 index 0000000000..8b67eb6885 --- /dev/null +++ b/variants/inhero_mr2/InheroMr2Board.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +#include <Arduino.h> +#include <CayenneLPP.h> +#include <MeshCore.h> +#include <helpers/NRF52Board.h> + +// LoRa (SX1262) +#define P_LORA_DIO_1 47 +#define P_LORA_NSS 42 +#define P_LORA_RESET RADIOLIB_NC +#define P_LORA_BUSY 46 +#define P_LORA_SCLK 43 +#define P_LORA_MISO 45 +#define P_LORA_MOSI 44 +#define SX126X_POWER_EN 37 // P1.05, PE4259 RF switch VDD + +#define SX126X_DIO2_AS_RF_SWITCH true +#define SX126X_DIO3_TCXO_VOLTAGE 1.8 + +#define PIN_VBAT_READ 5 +#define ADC_MULTIPLIER (3 * 1.73 * 1.187 * 1000) + +// Power management (INA228 + RV-3028) +#define RTC_INT_PIN 17 // GPIO17 (WB_IO1) +#define RTC_I2C_ADDR 0x52 +#define INA228_I2C_ADDR 0x40 // A0=GND, A1=GND +#define BQ25798_I2C_ADDR 0x6B +#define BME280_I2C_ADDR 0x76 + +// RV-3028-C7 registers +#define RV3028_REG_STATUS 0x0E +#define RV3028_REG_CTRL1 0x0F +#define RV3028_REG_CTRL2 0x10 +#define RV3028_REG_TIMER_VALUE_0 0x0A +#define RV3028_REG_TIMER_VALUE_1 0x0B + +// GPREGRET2 layout: [1:0] shutdown reason, [7:2] state flags +#define SHUTDOWN_REASON_NONE 0x00 +#define SHUTDOWN_REASON_LOW_VOLTAGE 0x01 +#define SHUTDOWN_REASON_USER_REQUEST 0x02 +#define SHUTDOWN_REASON_THERMAL 0x03 +#define GPREGRET2_LOW_VOLTAGE_SLEEP 0x04 + +#define LOW_VOLTAGE_SLEEP_MINUTES (60) + +class InheroMr2Board : public NRF52BoardDCDC { +public: + InheroMr2Board() : NRF52Board("InheroMR2_OTA") {} + void begin(); + void tick() override; + + uint16_t getBattMilliVolts() override; + + void initiateShutdown(uint8_t reason); + void configureRTCWake(uint32_t minutes); + uint16_t getLowVoltageSleepThreshold(); + uint16_t getLowVoltageWakeThreshold(); + + static void rtcInterruptHandler(); + + const char *getManufacturerName() const override { return "Inhero MR2"; } + void reboot() override { NVIC_SystemReset(); } + + bool startOTAUpdate(const char *id, char reply[]) override; + bool getCustomGetter(const char *getCommand, char *reply, uint32_t maxlen) override; + const char *setCustomSetter(const char *setCommand) override; + bool queryBoardTelemetry(CayenneLPP &telemetry) override; + +private: + static volatile bool rtc_irq_pending; + static volatile uint32_t ota_dfu_reset_at; // millis() of deferred DFU reset (0 = inactive) +}; diff --git a/variants/inhero_mr2/docs/BATTERY_GUIDE.md b/variants/inhero_mr2/docs/BATTERY_GUIDE.md new file mode 100644 index 0000000000..361fe01fbd --- /dev/null +++ b/variants/inhero_mr2/docs/BATTERY_GUIDE.md @@ -0,0 +1,519 @@ +# Inhero MR2 — Battery Chemistry Guide + +## Contents + +- [Introduction](#introduction) +- [1. Chemistry Overview](#1-chemistry-overview) + - [Li-Ion (NMC/NCA, 1S)](#li-ion-nmcnca-1s) + - [LiFePO4 (LFP, 1S)](#lifepo4-lfp-1s) + - [LTO (Lithium Titanate, 2S)](#lto-lithium-titanate-2s) + - [Na-Ion (Sodium Ion, 1S)](#na-ion-sodium-ion-1s) +- [2. Comparison Table](#2-comparison-table) +- [3. Temperature Behavior](#3-temperature-behavior) + - [Cold Performance Ranking](#cold-performance-ranking) + - [Charging in Cold Conditions](#charging-in-cold-conditions) + - [Temperature Derating](#temperature-derating) +- [4. Cell Selection & Form Factors](#4-cell-selection--form-factors) + - [Li-Ion Cells](#li-ion-cells) + - [LiFePO4 Cells](#lifepo4-cells) + - [LTO Cells](#lto-cells) + - [Na-Ion Cells](#na-ion-cells) +- [5. Capacity Planning](#5-capacity-planning) + - [Power Consumption](#power-consumption) + - [Why current depends on battery voltage](#why-current-depends-on-battery-voltage) + - [Sizing for Autonomy](#sizing-for-autonomy) + - [The 90% Rule](#the-90-rule) +- [6. Solar Charging Considerations](#6-solar-charging-considerations) +- [7. Safety & Protection](#7-safety--protection) +- [8. Deployment Recommendations](#8-deployment-recommendations) +- [9. Long-Term Aging & Cycle Life](#9-long-term-aging--cycle-life) +- [10. Future Outlook](#10-future-outlook) +- [See Also](#see-also) + +--- + +## Introduction + +Choosing the right battery chemistry is one of the most impactful decisions when deploying an Inhero MR2 repeater. It affects runtime, cold-weather reliability, service life, safety, and total cost of ownership. This guide provides the information needed to make an informed choice. + +The Inhero MR2 supports **four battery chemistries**, each with distinct characteristics. There is no single "best" chemistry — the right choice depends on your deployment conditions. + +--- + +## 1. Chemistry Overview + +### Li-Ion (NMC/NCA, 1S) + +The most common rechargeable chemistry. NMC (Nickel-Manganese-Cobalt) and NCA (Nickel-Cobalt-Aluminum) cells dominate the consumer market. + +**Strengths:** +- **Highest energy density** (~250 Wh/kg) — smallest and lightest for a given capacity +- Widely available in many form factors (18650, 21700, pouch) +- Inexpensive — large-scale production drives prices down +- Well-understood technology with decades of field data + +**Weaknesses:** +- Limited cycle life (500–1000 cycles to 80% capacity) +- **Thermal runaway risk** — can ignite under abuse (overcharge, short circuit, puncture) +- Sensitive to cold: significant capacity loss below 0 °C +- Must not be charged below 0 °C — lithium plating risk damages the cell permanently +- Sensitive to heat: accelerated degradation above 40 °C +- **Calendar aging at high SOC + heat** — the #1 aging driver for solar repeaters, where the battery sits at 95–100% SOC for months in summer enclosures reaching 50 °C. This is why the Inhero MR2 lowers Vco to 4.1 V +- Requires protection circuit (BMS) to prevent overcharge/over-discharge + +**Inhero MR2 specifics:** +- Charge voltage set to **4.1 V** (conservative, vs. typical 4.2 V) for improved cycle life +- **JEITA active** — NTC required; charging blocked below −2 °C (T-Cold) +- Frost charge reduction configurable via `set board.fmax` + +### LiFePO4 (LFP, 1S) + +Iron-phosphate cathode chemistry. Popular in solar and off-grid applications for its safety and longevity. + +**Strengths:** +- **Excellent cycle life** (2000–5000 cycles to 80% capacity) +- **No thermal runaway** — inherently safe cathode chemistry +- Good energy density for most deployments (~160 Wh/kg) +- Very flat discharge curve — voltage remains stable over a wide SOC range +- Tolerant to moderate overcharge/over-discharge + +**Weaknesses:** +- **Most cold-sensitive** of all supported chemistries +- Flat discharge curve makes voltage-based SOC estimation unreliable (the Inhero MR2 solves this with a coulomb counter) +- Slightly lower energy density than Li-Ion +- Must not be charged below 0 °C — lithium plating risk damages the cell permanently + +**Inhero MR2 specifics:** +- Charge voltage: **3.5 V** +- **JEITA active** — NTC required; charging blocked below −2 °C (T-Cold) +- Frost charge reduction configurable via `set board.fmax` +- JEITA WARM zone neutralized in firmware to prevent VBAT_OVP (see [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md#jeita-warm-zone--vbat_ovp-prevention)) + +### LTO (Lithium Titanate, 2S) + +Lithium titanate anode chemistry. Used in industrial and transit applications for extreme durability. + +**Strengths:** +- **Best cold performance** of all supported chemistries — 82% extractable at −20 °C +- **Extreme cycle life** (10 000+ cycles, some manufacturers claim 20 000+) +- Very safe — no lithium plating, no thermal runaway +- Wide operating temperature range (−30 °C to +60 °C charging) +- **Can be charged in frost** — no JEITA restriction needed +- Fast-charge capable (up to 5C or more) +- Very flat discharge curve + +**Weaknesses:** +- **Low energy density** (~80 Wh/kg) — needs 2–3× the volume of Li-Ion for the same capacity +- **2S configuration requires an external balancer** — without balancer, cells drift over time and risk over-charge/over-discharge of individual cells +- Exotic form factors — typically cylindrical with screw terminals or aluminum housing +- Difficult to spot-weld (aluminum housing) +- Expensive (2–3× per Wh vs. Li-Ion) +- Limited retail availability — specialty suppliers only + +**Inhero MR2 specifics:** +- Charge voltage: **5.4 V** (2× 2.7 V per cell) +- **JEITA disabled** (`ts_ignore = true`) — no NTC required for charging +- Temperature for SOC derating comes from **BME280 fallback** if no NTC connected +- `set board.fmax` has no effect (shown as "N/A") +- Cell count set to 2S in BQ25798 configuration + +### Na-Ion (Sodium Ion, 1S) + +Sodium-ion technology — the sustainable alternative using abundant, non-critical raw materials. + +**Strengths:** +- **Good cold performance** — 78% extractable at −20 °C +- **No cobalt, no lithium** — ethically sourced, sustainable materials (sodium, iron, manganese) +- **Can be stored and shipped at 0 V** — no deep discharge damage (unique among all chemistries) +- **Can be charged in frost** — no JEITA restriction needed +- Good safety profile — no thermal runaway under normal conditions +- Rapidly improving technology — energy density and cycle life increase with each generation + +**Weaknesses:** +- **New technology** — limited cell availability as of 2025/2026 +- Lower energy density than Li-Ion (~130 Wh/kg, improving) +- Fewer validated cell options and public datasheets +- Cycle life still below LiFePO4 in most current cells (1000–3000 cycles) +- Market still maturing — quality variation between manufacturers + +**Inhero MR2 specifics:** +- Charge voltage: **3.9 V** +- **JEITA disabled** (`ts_ignore = true`) — no NTC required for charging +- Temperature for SOC derating comes from **BME280 fallback** if no NTC connected +- `set board.fmax` has no effect (shown as "N/A") + +--- + +## 2. Comparison Table + +| | Li-Ion 1S | LiFePO4 1S | LTO 2S | Na-Ion 1S | +|---|---|---|---|---| +| **Energy density** | ~250 Wh/kg | ~160 Wh/kg | ~80 Wh/kg | ~130 Wh/kg | +| **Cycle life (to 80%)** | 500–1000 | 2000–5000 | 10 000+ | 1000–3000 | +| **Cold performance** | Moderate | Weakest | Best | Good | +| **Extractable at −20 °C** | 55% | 46% | 82% | 78% | +| **Extractable at −10 °C** | 65% | 58% | 86% | 83% | +| **Extractable at 0 °C** | 75% | 70% | 90% | 88% | +| **Thermal runaway risk** | Yes | No | No | No | +| **NTC required?** | Yes | Yes | No | No | +| **JEITA** | Active | Active | Disabled | Disabled | +| **Charge in frost?** | No (blocked <−2 °C) | No (blocked <−2 °C) | Yes | Yes | +| **Charge voltage** | 4.1 V | 3.5 V | 5.4 V (2S) | 3.9 V | +| **Low-V sleep** | 3100 mV | 2700 mV | 3900 mV | 2500 mV | +| **Low-V wake** | 3300 mV | 2900 mV | 4100 mV | 2700 mV | +| **Nominal voltage** | 3.7 V | 3.2 V | 4.6 V | 3.1 V | +| **Cell formats** | 18650, 21700, pouch | 18650, 26650, prismatic | Screw-terminal, aluminum | 18650, prismatic | +| **Availability** | Excellent | Good | Limited | Limited | +| **Relative cost (per Wh)** | Low | Low–Medium | High | Medium | + +> **Note on the extractable-capacity figures:** These are typical datasheet values at 0.2C–0.5C discharge loads. The MR2's sub-0.05C load is much gentler; the firmware's derating model (section 3) therefore shows higher extractable values in `get board.telem`. + +--- + +## 3. Temperature Behavior + +### Cold Performance Ranking + +From best to worst cold-weather performance: + +1. **LTO** — 82% extractable at −20 °C, charges in frost +2. **Na-Ion** — 78% extractable at −20 °C, charges in frost +3. **Li-Ion** — 55% extractable at −20 °C, charging blocked in frost +4. **LiFePO4** — 46% extractable at −20 °C, charging blocked in frost + +*(Datasheet values at 0.2C–0.5C loads — see the note in section 2; under the MR2's much gentler load the firmware's derating model below shows higher values.)* + +> The ranking may surprise users familiar with LiFePO4's reputation as a "workhorse." While LiFePO4 excels in cycle life and safety, it is actually the **worst performer in cold** among the four supported chemistries. This matters significantly for alpine and winter deployments. + +### Charging in Cold Conditions + +| Chemistry | Charging in frost? | Mechanism | +|---|---|---| +| **Li-Ion** | No — blocked below −2 °C | JEITA T-Cold (hardware, BQ25798) | +| **LiFePO4** | No — blocked below −2 °C | JEITA T-Cold (hardware, BQ25798) | +| **LTO** | Yes — charges at any temperature | JEITA disabled (`ts_ignore = true`) | +| **Na-Ion** | Yes — charges at any temperature | JEITA disabled (`ts_ignore = true`) | + +For Li-Ion and LiFePO4, charging in the **T-Cool range** (+3 °C to −2 °C with the Inhero voltage divider) is blocked by default and can be set to a reduced rate via `set board.fmax` (20%, 40% or 100%). Note that selecting Li-Ion or LiFePO4 via `set board.bat` resets `board.fmax` to 0%. See [FAQ #6](FAQ.md#6-what-does-set-boardfmax-control). + +**Why is frost charging dangerous for Li-Ion and LiFePO4?** At low temperatures, lithium ions cannot intercalate properly into the graphite anode. Instead, they deposit as metallic lithium on the anode surface ("lithium plating"). This permanently reduces capacity and can create internal short circuits — a safety hazard. + +LTO and Na-Ion use different anode materials (lithium titanate and hard carbon respectively) that do not suffer from lithium plating, making frost charging safe. + +> **Field experience vs. theory:** Many repeater operators successfully charge Li-Ion cells in frost with low solar currents (<0.1C) and report no measurable degradation over multiple winters. The [YYCMesh community](https://yycmesh.com/blog/cold-weather-charging) documented two years of alpine deployments in the Canadian Rockies (down to −40 °C) with standard 18650 cells and found internal resistance still within factory spec. Their key factors: very low charge rates (<0.05C), passive solar heating of enclosures, and charging coinciding with the warmest part of the day. +> +> This is valuable real-world data and the practice clearly works for many setups. However, these results apply specifically to configurations with **large battery capacities and relatively low PV power** (keeping charge rates well below 0.05C). They should not be taken as a general dismissal of lithium plating risks. *It depends* — on charge rate, cell quality, panel size, and temperature. The degradation from lithium plating is **cumulative and subtle** — it may not manifest as sudden failure but as gradual capacity loss over years. Two additional risks are often underestimated: +> +> 1. **PV panels produce more power in cold weather** (silicon temperature coefficient ~−0.35%/°C). A 5 W panel at −10 °C delivers significantly more current than at +25 °C. Snow reflection can push output even beyond rated wattage. +> 2. **Cell quality varies.** Results with premium cells (low internal resistance, consistent chemistry) may not transfer to budget cells. +> +> The Inhero MR2 takes a conservative approach: the NTC battery temperature sensor causes the BQ25798 to block charging until the cell warms above −2 °C (JEITA T-Cold) and, by default, keeps charging suspended through the T-Cool zone as well (`board.fmax` default 0%). Setting `set board.fmax` to 20%, 40% or 100% instead allows reduced-rate charging between −2 °C and +3 °C. On sunny winter days, the board runs from solar via the power path while the battery stays protected. Once direct sunlight heats up the enclosure and the battery temperature rises above the threshold — which happens surprisingly fast with proper enclosure design — charging resumes automatically. This gives the best of both worlds: no plating risk, yet minimal lost charge time. + +### Temperature Derating + +The firmware uses a **Trapped Charge** model to estimate **extractable** capacity at the current battery temperature. Cold temperatures lock the bottom of the discharge curve — the cell reaches its cutoff voltage while charge is still stored. SOC% itself is purely Coulomb-based (stored charge) and temperature-independent. Derating is applied to: +- **TTL calculation** — Trapped Charge: extractable = max(0, remaining − capacity × (1−f(T))) +- **CLI display** — `get board.telem` shows the derated value in parentheses: `SOC:95.0% (78%)` + +The derating model uses a per-chemistry linear function: + +``` +f(T) = max(f_min, 1.0 - k × (T_ref - T)) for T < T_ref +f(T) = 1.0 for T >= T_ref +``` + +T_ref = 25 °C for all chemistries (no derating at room temperature and above). + +| Chemistry | k (/°C) | f_min | At −20 °C | At −10 °C | At 0 °C | At 10 °C | +|-----------|---------|-------|-----------|-----------|---------|---------| +| Li-Ion | 0.005 | 0.75 | 0.78 | 0.83 | 0.88 | 0.93 | +| LiFePO4 | 0.006 | 0.70 | 0.73 | 0.79 | 0.85 | 0.91 | +| Na-Ion | 0.003 | 0.85 | 0.87 | 0.90 | 0.93 | 0.96 | +| LTO | 0.002 | 0.88 | 0.91 | 0.93 | 0.95 | 0.97 | + +**Practical effects:** +- SOC% is temperature-independent — only changes with actual charge flow +- The derated (extractable) value in `telem` decreases as the battery cools +- TTL estimates reflect extractable capacity at the current temperature (Trapped Charge model) + +→ See [FAQ #13 — How does temperature derating work?](FAQ.md#13-how-does-temperature-derating-work) for further technical details. + +--- + +## 4. Cell Selection & Form Factors + +### Li-Ion Cells + +| Form Factor | Typical Capacity | Notes | +|---|---|---| +| **18650** | 2500–3500 mAh | Most common; widely available; easy to source | +| **21700** | 4000–5000 mAh | Higher capacity; becoming the new standard | +| **Pouch** | Varies | Custom shapes; requires careful mounting | + +**Tips:** +- Prefer cells with built-in protection circuit (PCM) for standalone use +- For parallel packs, ensure cells are matched (same manufacturer, same batch) +- Cells with integrated NTC simplify wiring to the TS pin +- Recommended: Samsung, Sony/Murata, LG, Panasonic/Sanyo — avoid no-name cells + +### LiFePO4 Cells + +| Form Factor | Typical Capacity | Notes | +|---|---|---| +| **18650** | 1400–1800 mAh | Lower capacity than Li-Ion 18650; less common | +| **26650** | 2500–3600 mAh | Larger diameter; popular for LFP | +| **32650** | 5000–6000 mAh | Large cylindrical; good for high-capacity packs | +| **Prismatic** | 5000–50 000 mAh | Flat cells; efficient use of space | + +**Tips:** +- The flat discharge curve means voltage tells you little about SOC — rely on the Inhero MR2's coulomb counter +- Avoid charging below 0 °C — the board's JEITA protection handles this automatically +- EVE, BYD, CATL are reputable manufacturers + +### LTO Cells + +| Form Factor | Typical Capacity | Notes | +|---|---|---| +| **Cylindrical (screw terminal)** | 10 000–40 000 mAh | Most common LTO format; M6/M8 screw terminals | +| **Prismatic (aluminum)** | 10 000–30 000 mAh | Aluminum housing; cannot be spot-welded easily | + +**⚠️ Important: 2S requires a balancer** + +The Inhero MR2 configures the BQ25798 for 2S operation but provides **no built-in cell balancing**. An external balancer module is required to prevent cell voltage drift over time. Without a balancer, one cell may be overcharged while the other is undercharged — this degrades capacity and can damage cells. + +**Tips:** +- Use a passive or active balancer board rated for your cell voltage range (2.0–2.7 V per cell) +- Yinlong/Toshiba SCiB are common LTO cell brands +- Expect 2–3× the volume and weight compared to Li-Ion for the same energy +- Screw terminals are robust for outdoor deployments — no spot-welding needed + +### Na-Ion Cells + +| Form Factor | Typical Capacity | Notes | +|---|---|---| +| **18650** | 1000–1500 mAh | Emerging; first-generation cells | +| **Prismatic** | 5000–20 000 mAh | Larger formats appearing from HiNa, CATL, Faradion | + +**Tips:** +- Technology is evolving rapidly — check latest available cells before purchasing +- Can be shipped at 0 V (unlike all lithium chemistries) — simplifies logistics +- No special handling required for storage +- HiNa, CATL, Faradion/Reliance are key manufacturers (as of 2025/2026) + +--- + +## 5. Capacity Planning + +### Power Consumption + +Typical Inhero MR2 power consumption (repeater mode, LEDs off): + +| Condition | Current Draw | Notes | +|---|---|---| +| Idle (RX, no TX) | ~7.6 mA @ 3.3 V | USB off, SX1262 in RX | +| **Measured typical** | **~12.3 mA @ 3.3 V** | 24h measurement, repeater with typical traffic | +| **Worst case (10% DC, EU868 g3)** | **~19.8 mA @ 3.3 V** | 10% duty cycle × ~130 mA TX + 90% × 7.6 mA idle | +| TX burst (SX1262 +22 dBm) | ~130 mA @ 3.3 V | Short bursts only, regulated by duty cycle | +| Low-voltage sleep | <0.5 mA | Solar charging continues | + +> **How these values are determined:** MeshCore operates on **869.618 MHz** in the EU868 **g3 sub-band** (869.4–869.65 MHz), which allows up to +27 dBm ERP and a **10% duty cycle**. At +22 dBm the SX1262 + MCU draw ~130 mA during TX. With 10% TX time: `0.90 × 7.6 + 0.10 × 130 = 19.8 mA` → **~65 mW or ~1.57 Wh/day** — the regulatory maximum. +> +> **Measured typical (~12.3 mA):** Validated 24h measurement in repeater mode with typical traffic: **295 mAh/day @ 3.32 V** = 0.98 Wh/day → **~41 mW or ~0.98 Wh/day**. + +### Why current depends on battery voltage + +The Inhero MR2 uses a high-efficiency **buck converter** to produce the 3.3 V rail that powers the MCU and radio. This means the board draws roughly **constant power** (watts), not constant current (amps). + +Since Power = Voltage × Current, a higher battery voltage means lower current from the battery — but the power stays the same: + +| Chemistry | Nominal Voltage | Idle | Measured typical | Worst case (10% DC) | +|---|---|---|---|---| +| Na-Ion | 3.1 V | ~8.1 mA (25 mW) | ~13.2 mA (41 mW) | ~21.0 mA (65 mW) | +| LiFePO4 | 3.2 V | ~7.8 mA (25 mW) | ~12.8 mA (41 mW) | ~20.3 mA (65 mW) | +| Li-Ion | 3.7 V | ~6.8 mA (25 mW) | ~11.1 mA (41 mW) | ~17.6 mA (65 mW) | +| LTO (2S) | 4.6 V | ~5.4 mA (25 mW) | ~8.9 mA (41 mW) | ~14.1 mA (65 mW) | + +> **Important for capacity planning:** Don't just multiply mA × hours to get mAh — that only works within one chemistry at one voltage. When comparing across chemistries, always calculate in **Wh** (energy): `Energy (Wh) = Wh/day × Days`. Then convert to your chemistry: `mAh = Wh × 1000 ÷ V_nominal`. Use **0.98 Wh/day** (measured typical) or **1.57 Wh/day** (worst case 10% DC) depending on expected traffic and safety margin. +> +> **Example:** 30 days autonomy at measured typical = 29 Wh needed (worst case: 47 Wh). +> - LiFePO4 (3.2 V): 29 000 ÷ 3.2 = **9 063 mAh** (worst case: 14 688 mAh) +> - LTO 2S (4.6 V): 29 000 ÷ 4.6 = **6 304 mAh** (worst case: 10 217 mAh) + +### Sizing for Autonomy + +**Energy approach (recommended):** `Energy (Wh) = Wh/day × Days of autonomy` — use **0.98 Wh/day** (measured typical) or **1.57 Wh/day** (worst case 10% DC) for conservative sizing + +**Convert to mAh for your chemistry:** `mAh = Wh × 1000 ÷ V_nominal` + +The mAh column below is calculated at 3.3 V (≈ LiFePO4 / Na-Ion nominal). For Li-Ion or LTO, use the energy column with the formula above — see [Why current depends on battery voltage](#why-current-depends-on-battery-voltage). + +| Desired Autonomy | Measured typical (0.98 Wh/day) | Worst case (1.57 Wh/day) | mAh @ 3.3 V (typical) | Recommended | +|---|---|---|---|---| +| **3 days** (indoor, grid backup) | 2.9 Wh | 4.7 Wh | 891 mAh | 1500 mAh | +| **7 days** (solar, summer) | 6.9 Wh | 11.0 Wh | 2079 mAh | 3500 mAh | +| **14 days** (solar, winter) | 13.7 Wh | 22.0 Wh | 4158 mAh | 6000 mAh | +| **30 days** (alpine, minimal solar) | 29.4 Wh | 47.1 Wh | 8909 mAh | 12000+ mAh | + +> **Cold-weather margin:** For deployments below 0 °C, increase capacity by the inverse of the derating factor to compensate for reduced extractable capacity. Example: LiFePO4 at −10 °C has f(T) = 0.79, so you need `capacity / 0.79 ≈ 1.27×` the capacity compared to room temperature. The TTL calculation applies this derating automatically. + +### The 90% Rule + +Set `board.batcap` to **90% of nominal capacity**. The Inhero MR2 uses conservative charge voltages (e.g. 4.1 V instead of 4.2 V for Li-Ion), which means the top ~10% of nominal capacity is intentionally not used — this significantly improves cycle life. + +**Example:** 10 000 mAh nominal → `set board.batcap 9000` + +→ See [FAQ #4](FAQ.md#4-what-mah-value-should-i-enter-for-set-boardbatcap) + +--- + +## 6. Solar Charging Considerations + +**Maximum charge current formula:** `I_charge (mA) = Panel power (W) / Nominal battery voltage (V)` + +| Chemistry | Panel | Charge Current | `set board.imax` | +|---|---|---|---| +| Li-Ion (3.7 V) | 2 W | 540 mA | `set board.imax 540` | +| LiFePO4 (3.2 V) | 1 W | 310 mA | `set board.imax 310` | +| LTO (4.6 V) | 5 W | 1090 mA | `set board.imax 1090` | +| Na-Ion (3.1 V) | 3 W | 970 mA | `set board.imax 970` | + +**Panel sizing guidelines:** +- The Inhero MR2 consumes ~7.6 mA @ 3.3 V idle, **measured ~12.3 mA typical** (~0.98 Wh/day), worst case ~19.8 mA at full EU868 g3 10% duty cycle (~1.57 Wh/day) +- With vertical south-facing mounting (see below), **2 W monocrystalline is safely sufficient** for winter autonomy in central Europe with a 9 Ah LiFePO4 battery. Field-tested: even a 1 W panel (vertical, south, unshaded, exposed) with 9 Ah LiFePO4 survived a full central European winter +- For locations with frequent overcast periods or partial shading, add margin — 3–5 W recommended +- MPPT is essential for extracting maximum power — enable with `set board.mppt 1` + +**Panel orientation — vertical is better for autonomy:** + +Conventional PV installations tilt panels at ~30–40° to maximize annual yield. For off-grid repeaters, the goal is different: **maximize winter performance**, especially in the critical months of December and January when the sun is lowest and days are shortest. Mounting panels **vertically (90°)** has significant advantages: + +- **Low winter sun** hits a vertical panel at near-optimal angle while a 30°-tilted panel receives the same light at a glancing angle +- **Self-cleaning:** vertical panels shed snow, ice, and dirt far more effectively — a snow-covered panel produces zero power regardless of rated wattage +- **Practical rule of thumb (central Europe):** expect approximately **1 Wh/day per 1 Wp** of panel rating in January with a vertical, south-facing, unshaded, exposed setup. PVGIS data confirms ~36 Wh/month (after system losses) for a 1 Wp panel in this configuration. In practice, the MR2 cannot harvest on very overcast days when the charger reports !PG (power not good), so a conservative estimate is **~30 Wh/month or ~1 Wh/day** usable. With ~0.98 Wh/day measured typical consumption, a 1 Wp panel provides a positive energy balance in January. **2 Wp provides comfortable headroom** for cloudy stretches and higher-traffic deployments +- In summer, vertical panels produce less than optimally tilted ones — but summer yield is never the bottleneck for autonomy + +**Chemistry-specific considerations:** +- **Li-Ion / LiFePO4:** Solar charging is blocked in frost (<−2 °C). On cold winter days, the panel may produce power but the battery won't accept charge until it warms above −2 °C. Meanwhile, the board runs directly on solar if power is sufficient. Note that PV panels produce **more power in cold weather** (silicon temperature coefficient ~−0.35%/°C), so actual charge currents can exceed nominal ratings — another reason why hardware-level charge blocking via JEITA is essential rather than relying on "low current" assumptions. +- **LTO / Na-Ion:** Solar charging works even in deep frost — a significant advantage for alpine deployments where frost can persist for days or weeks. + +--- + +## 7. Safety & Protection + +| Chemistry | Thermal Runaway | Requires BMS/Protection? | Inhero MR2 Protection | +|---|---|---|---| +| **Li-Ion** | ⚠️ Yes — fire/explosion risk under abuse | Yes — mandatory | JEITA, low-V sleep, OVP, charge voltage limit | +| **LiFePO4** | ✅ No — inherently safe | Recommended | JEITA, low-V sleep, OVP | +| **LTO** | ✅ No — inherently safe | Recommended (balancer!) | Low-V sleep, OVP, cell count config | +| **Na-Ion** | ✅ No under normal conditions | Recommended | Low-V sleep, OVP | + +**Inhero MR2 built-in safety features (all chemistries):** +- **Low-voltage sleep** — INA228 ALERT ISR triggers system sleep to prevent deep discharge +- **Charge voltage limit** — BQ25798 configured per chemistry to prevent overcharge +- **VBAT_OVP** — Hardware overvoltage protection in BQ25798 +- **200 mV hysteresis** — Prevents motorboating (rapid on/off cycling) near empty +- **JEITA temperature protection** (Li-Ion/LiFePO4 only) — Hardware charge control via NTC + +**User responsibilities:** +- Li-Ion: Use cells with protection circuit (PCM) or a proper BMS +- LTO 2S: **External balancer is mandatory** for long-term operation +- All chemistries: Set correct chemistry via `set board.bat` — wrong chemistry = wrong voltages = damage risk + +--- + +## 8. Deployment Recommendations + +| Scenario | Recommended | Alternative | Notes | +|---|---|---|---| +| **Indoor, moderate climate (0–40 °C)** | **LiFePO4** | Li-Ion | LiFePO4: best safety + cycle life balance | +| **Outdoor, temperate (−5 to +35 °C)** | **LiFePO4** | Li-Ion | Frost is rare; fmax handles occasional cold | +| **Space-constrained enclosure** | **Li-Ion** | — | Highest energy density; nothing else fits | +| **Alpine, extreme cold (−20 °C and below)** | **LTO** | Na-Ion | LTO: charges in frost, 82% capacity at −20 °C | +| **Cold climate, moderate frost (−10 to −15 °C)** | **Na-Ion** or **LTO** | LiFePO4 (with margin) | Both charge in frost; Na-Ion balances density and cold | +| **Maximum service life (>10 years)** | **LTO** | LiFePO4 | LTO: 10 000+ cycles; solar repeater essentially unlimited | +| **Sustainability / ethical sourcing** | **Na-Ion** | LiFePO4 | No cobalt, no lithium; improving rapidly | +| **Maritime / coastal (salt, humidity)** | **LiFePO4** | Li-Ion | Sealed prismatic cells; inherent safety in harsh environments | +| **Mobile / portable** | **Li-Ion** | LiFePO4 | Weight and volume matter most | +| **Budget-constrained** | **Li-Ion** | LiFePO4 | Lowest cost per Wh | + +*(Extractable-capacity percentages are datasheet values at 0.2C–0.5C loads — see the note in section 2.)* + +> **Winter alpine checklist:** +> 1. Choose LTO or Na-Ion for frost charging +> 2. Oversize battery capacity by 1.5–2× for cold derating +> 3. Oversize solar panel by 3–5× for short winter days +> 4. Enable MPPT (`set board.mppt 1`) +> 5. If using Li-Ion/LiFePO4: configure `set board.fmax` and run `set board.tccal` +> 6. Monitor via `get board.stats` and `get board.socdebug` + +--- + +## 9. Long-Term Aging & Cycle Life + +| Chemistry | Cycles to 80% | Calendar Aging | Optimal Storage SOC | +|---|---|---|---| +| **Li-Ion** | 500–1000 | Moderate (faster at high temp/SOC) | 40–60% at 15–25 °C | +| **LiFePO4** | 2000–5000 | Low | 50% at room temperature | +| **LTO** | 10 000+ | Very low | Any SOC; very tolerant | +| **Na-Ion** | 1000–3000 | Low | 0 V (unique — no damage) | + +**Solar repeater context:** A well-dimensioned solar repeater does **not** do 1 full cycle per day. The actual profile is shallow micro-cycling with strong seasonal variation: + +- **Daily discharge** is only **2–3%** of battery capacity (with proper sizing: ≥ 7 Ah for a sub-1 W load) +- **Daily recharge** adds **10–20%** on sunny days, depending on panel size +- **Winter (Dec–Jan):** The battery slowly drains over multi-day overcast periods — it "carries" the repeater through the dark weeks. SOC may drop to 30–50% before the next sunny spell +- **Summer:** The battery permanently floats between **95–100% SOC**, rarely dropping below 90% + +This means the battery experiences perhaps **10–30 equivalent full cycles per year** — not 365. + +| Chemistry | Cycles to 80% | Equivalent Full Cycles/Year | Expected Service Life | +|---|---|---|---| +| **Li-Ion** | 500–1000 | ~10–30 | **15–50+ years** (cycle-limited) | +| **LiFePO4** | 2000–5000 | ~10–30 | **65+ years** (cycle-limited) | +| **LTO** | 10 000+ | ~10–30 | **effectively unlimited** | +| **Na-Ion** | 1000–3000 | ~10–30 | **30–100+ years** (cycle-limited) | + +> **The real aging threat is not cycling — it's calendar aging at high SOC and temperature.** +> +> In summer, the battery sits at 95–100% SOC for months in an enclosure that can reach 50 °C in direct sun. For Li-Ion, this combination (high SOC + high temperature) is the #1 aging accelerator. This is exactly why the Inhero MR2 uses **conservative charge cutoff voltages** (e.g. 4.1 V instead of 4.2 V for Li-Ion) — lower Vco reduces the resting SOC and dramatically slows calendar aging. + +**How bad is it? Typical NMC Li-Ion calendar capacity loss per year (no cycling, storage only):** + +| Temperature | 4.2 V (100% SOC) | 4.1 V (~85% SOC) | Reduction | +|---|---|---|---| +| 25 °C (indoor) | ~3–5%/year | ~1–2%/year | 2–3× slower | +| 40 °C (warm enclosure) | ~8–15%/year | ~3–5%/year | 2–3× slower | +| **50 °C (sun-exposed)** | **~20–30%/year** | **~6–10%/year** | **3× slower** | + +> At 4.2 V and 50 °C, a Li-Ion cell reaches 80% capacity (end of life) in roughly **3 years**. At 4.1 V and 50 °C, the same cell lasts **8–10 years**. The 100 mV Vco reduction alone buys 2–3× more service life — at the cost of only ~10% less usable capacity. +> +> **Bottom line:** For sun-exposed outdoor deployments, the Vco reduction from 4.2→4.1 V is the single most effective measure to extend Li-Ion life. If the enclosure regularly exceeds 40 °C, consider LiFePO4 or LTO instead — these chemistries are largely immune to calendar aging at high SOC. +> +> LiFePO4 and LTO are far more tolerant of sustained high SOC. Na-Ion ages moderately. For hot/exposed deployments, prefer LiFePO4 or LTO. + +--- + +## 10. Future Outlook + +**Na-Ion** is the chemistry to watch. As of 2025/2026: +- Energy density is improving with each generation (target: 160+ Wh/kg) +- Major manufacturers (CATL, BYD, HiNa) are ramping production +- Cell costs are expected to drop below Li-Ion within 2–3 years +- Ideal for stationary applications where absolute energy density is less critical + +**Solid-state batteries** may appear in the 2028+ timeframe but are unlikely to be relevant for off-grid repeater applications in the near term. + +**LTO** remains the gold standard for extreme environments and will likely stay relevant for specialized deployments. Its high cost and low density will continue to limit adoption to cases where cold performance and cycle life are critical. + +**LiFePO4** will remain the mainstream choice for the foreseeable future — proven, safe, affordable, and available in many formats. + +--- + +## See Also + +- [README.md](README.md) — Overview, feature matrix and diagnostics +- [DATASHEET.md](DATASHEET.md) — Hardware datasheet, pinouts and specifications +- [QUICK_START.md](QUICK_START.md) — Quick start for commissioning and CLI setup +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All board-specific CLI commands at a glance +- [FAQ.md](FAQ.md) — Frequently asked questions +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation diff --git a/variants/inhero_mr2/docs/CLI_CHEAT_SHEET.md b/variants/inhero_mr2/docs/CLI_CHEAT_SHEET.md new file mode 100644 index 0000000000..ad3d994b6a --- /dev/null +++ b/variants/inhero_mr2/docs/CLI_CHEAT_SHEET.md @@ -0,0 +1,202 @@ +# Inhero MR2 – CLI Cheat-Sheet + +All board-specific CLI commands at a glance. +Prefix is always `board.` — i.e. `get board.<cmd>` or `set board.<cmd> <value>`. + +See [FAQ.md](FAQ.md) for explanations of key parameters (`imax`, `fmax`, `batcap`) and [DATASHEET.md](DATASHEET.md#supported-battery-chemistries) for chemistry details. + +--- + +## Setters (Change Configuration) + +```bash +# Battery chemistry +set board.bat liion1s # Li-Ion 1S (3.7V nominal) +set board.bat lifepo1s # LiFePO4 1S (3.2V nominal) +set board.bat lto2s # LTO 2S (2x 2.3V nominal) +set board.bat naion1s # Na-Ion 1S (3.1V nominal) +set board.bat none # No battery / unknown (charging disabled) + +# Battery capacity (100–100000 mAh) +# Rule of thumb: 90% of nominal capacity (see FAQ #4) +set board.batcap 10000 + +# Maximum charge current (50–1500 mA) +set board.imax 500 + +# Frost charge current reduction (T-Cool approx. -2 °C to +3 °C, see JEITA table in README) +set board.fmax 0% # Charging blocked +set board.fmax 20% # max. 20% of imax +set board.fmax 40% # max. 40% of imax +set board.fmax 100% # no reduction +# Note: No effect on LTO / Na-Ion (JEITA disabled) + +# MPPT on/off +set board.mppt 1 # Enable MPPT +set board.mppt 0 # Disable MPPT + +# LEDs on/off (Heartbeat + BQ Stat) +set board.leds on # Enable LEDs (on/1) +set board.leds off # Disable LEDs (off/0) + +# Manually set SOC (0–100%) +set board.soc 85.0 +``` + +### Calibration + +```bash +# NTC temperature calibration +# Best practice: run in the early morning before sunrise, +# when battery temperature has equalized with ambient (see FAQ #12). +set board.tccal # Auto-calibration via BME280 +set board.tccal reset # Reset offset to 0.00 +``` + +--- + +## Getters (Query Status) + +```bash +# Configuration & Hardware +get board.bat # Current battery type +get board.batcap # Battery capacity in mAh (set/default) +get board.imax # Maximum charge current in mA +get board.fmax # Frost charge behavior (0%/20%/40%/100% or N/A) +get board.mppt # MPPT status (0/1) +get board.leds # LED status (ON/OFF) +get board.conf # Summary of all configs (B, F, M, I, Vco, V0) + +# Real-time telemetry +get board.telem # Battery+Solar: V, I, T, SOC + +# Energy & Statistics +get board.stats # Energy balance (24h/3d/7d), C/D, MPPT%, TTL + # TTL = Time To Live (hours until battery empty) + # Basis: 7-day average of daily net deficit + # from hourly INA228 coulomb counter samples (168h ring buffer) + # Formula: extractable / |7d-avg-deficit| × 24, where +# extractable = SOC% × capacity − trapped charge +# (cold-temperature derating; 0 at normal temperatures) + # TTL only shown in BAT mode (net deficit) + # Prerequisite: min. 24h data + capacity known + +# Charger & Diagnostics +get board.cinfo # Charger status + last PG-stuck HIZ toggle +get board.bqdiag # Diagnostic/debug: compact BQ25798 register dump + # PG/charge state, TS region (COLD/COOL/WARM/HOT), + # active status/fault flags (e.g. VINDPM, VBAT_OVP) +get board.selftest # Probe all I2C devices (INA228/BQ25798/RV-3028/BME280) + # Output: "INA:OK BQ:OK RTC:OK BME:OK" + # RTC includes user-RAM write/readback verify + # to catch cold-solder joints (chip ACKs but + # rejects writes). Possible per-device states: + # OK — device responds and (RTC) persists writes + # NACK — device does not ACK on I2C bus + # WR_FAIL — (RTC only) ACKs but write/readback mismatched +get board.socdebug # Diagnostic/debug: SOC tracking internals + # SHUNT_CAL, precise current, CHARGE register (mAh), + # current-hour charge/discharge accumulators, + # update count, RTC time, temperature derating factor + +# Calibration +get board.tccal # NTC temperature offset in °C (0.00 = default) +``` + +--- + +## Getter Quick Reference + +| Command | Description | +|---|---| +| `get board.bat` | Battery type (`liion1s`, `lifepo1s`, `lto2s`, `naion1s`, `none`) | +| `get board.batcap` | Battery capacity in mAh (set/default) | +| `get board.imax` | Maximum charge current in mA | +| `get board.fmax` | Frost charge behavior (`0%`/`20%`/`40%`/`100%`, LTO/Na-Ion: `N/A`) | +| `get board.mppt` | MPPT status (`0`/`1`) | +| `get board.leds` | LED status Heartbeat + BQ Stat (`ON`/`OFF`) | +| `get board.conf` | Summary: B(at) F(max) M(ppt) I(max) Vco V0 | +| `get board.telem` | Real-time telemetry: Battery/Solar V, I, T, SOC — see [TELEMETRY.md](TELEMETRY.md) | +| `get board.stats` | Energy balance (24h/3d/7d), C/D, MPPT%, TTL (7d-avg-based) | +| `get board.cinfo` | Charger status + PG-stuck HIZ toggle (e.g. "PG / CC HIZ:3m ago") | +| `get board.bqdiag` | Diagnostic/debug: BQ25798 register dump — PG/charge state, TS region, active fault flags | +| `get board.selftest` | I2C device probe — `INA:OK BQ:OK RTC:OK BME:OK` (RTC also write-verified) | +| `get board.socdebug` | Diagnostic/debug: SOC internals — SHUNT_CAL, current, CHARGE, hour accumulators, derating factor | +| `get board.tccal` | NTC temperature offset in °C (`0.00` = default) | + +--- + +## Setter Quick Reference + +| Command | Range | Description | +|---|---|---| +| `set board.bat` | `liion1s` · `lifepo1s` · `lto2s` · `naion1s` · `none` | Set battery chemistry | +| `set board.batcap` | `100`–`100000` (mAh) | Set battery capacity | +| `set board.imax` | `50`–`1500` (mA) | Set max charge current | +| `set board.fmax` | `0%` · `20%` · `40%` · `100%` | Frost charge reduction (not for LTO/Na-Ion) | +| `set board.mppt` | `0`/`1` · `true`/`false` | Enable/disable MPPT | +| `set board.leds` | `on`/`off` · `1`/`0` | Enable/disable LEDs | +| `set board.soc` | `0`–`100` (%) | Manually set SOC | +| `set board.tccal` | `reset` · *(empty = auto)* | Calibrate or reset NTC temperature | + +--- + +## Quick-Start Recipes + +### Li-Ion 1S with 10Ah and Solar +```bash +set board.bat liion1s +set board.batcap 10000 +set board.imax 500 +set board.fmax 20% +set board.mppt 1 +set board.leds off +``` + +### LiFePO4 1S with 6Ah and Solar +```bash +set board.bat lifepo1s +set board.batcap 6000 +set board.imax 300 +set board.fmax 40% +set board.mppt 1 +set board.leds off +``` + +### LTO 2S with 18Ah and Solar +```bash +set board.bat lto2s +set board.batcap 18000 +set board.imax 700 +set board.mppt 1 +set board.leds off +``` + +### Na-Ion 1S with 10Ah and Solar +```bash +set board.bat naion1s +set board.batcap 10000 +set board.imax 500 +set board.mppt 1 +set board.leds off +``` + +### Status Check (everything at a glance) +```bash +get board.conf +get board.telem +get board.stats +get board.cinfo +``` + +--- + +## See Also + +- [README.md](README.md) — Overview, feature matrix and diagnostics +- [DATASHEET.md](DATASHEET.md) — Hardware specifications and pinout +- [TELEMETRY.md](TELEMETRY.md) — Telemetry channels explained (what the app displays) +- [QUICK_START.md](QUICK_START.md) — Quick start for commissioning and CLI setup +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) — Frequently asked questions +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation diff --git a/variants/inhero_mr2/docs/DATASHEET.md b/variants/inhero_mr2/docs/DATASHEET.md new file mode 100644 index 0000000000..fc92e7b0ec --- /dev/null +++ b/variants/inhero_mr2/docs/DATASHEET.md @@ -0,0 +1,235 @@ +# Inhero MR2 — Datasheet + +> **Inhero MR2 – Smart Solar Mesh Board** +> Hardware Revision 1.1 + +--- + +## Board Overview + +The Inhero MR2 is a LoRa mesh repeater board based on the **RAK4630** module (nRF52840 + SX1262) with integrated smart solar charging, power monitoring, and low-voltage protection. Supported battery configurations are 1S Li-Ion, 1S LiFePO4, 2S LTO, and 1S Na-Ion. The board was specifically designed for autonomous long-term deployment at remote or hard-to-reach locations. In Central Europe, uninterrupted continuous repeater operation is possible with unshaded solar panels ≥ 1 W and battery capacities ≥ 9 Ah. + +The charge and discharge cutoff voltages (see table [Supported Battery Chemistries](#supported-battery-chemistries)) are chosen to avoid excessive stress on the batteries during summer while ensuring that sleep mode can be reliably initiated when energy is low. + +In low-voltage sleep, current consumption is < 500 µA. Once the battery voltage has risen above the respective low-V wake threshold (see table [Supported Battery Chemistries](#supported-battery-chemistries)) through solar charging, the board boots normally. The 200 mV hysteresis between sleep and wake thresholds prevents motorboating – an uncontrolled, rapid on/off cycling of the system that would occur if the sleep and wake thresholds were too close together. + +### Safety & Protection Features + +| Feature | Description | +|---------|-------------| +| **Watchdog Timer (WDT)** | nRF52840 hardware watchdog. Automatically reboots the board if the firmware hangs – essential for unattended long-term operation. | +| **Low-Voltage Protection** | INA228 ALERT interrupt on chemistry-specific threshold → controlled System Sleep with RTC wake. Solar charging remains active during sleep (CE pin latched). | +| **Charger requires active firmware** | The BQ25798 only charges when the firmware is actively running. Without flashed firmware or with the 3.3V off switch engaged, charging remains disabled. The nRF52840 must be able to monitor the charger at all times as host. | +| **JEITA Temperature Protection** | Temperature-dependent charge current reduction via the NTC sensor (TS pin). Frost charge protection configurable via `set board.fmax`. JEITA is disabled for LTO and Na-Ion. The Inhero voltage divider (RT1=5.6 kΩ, RT2=27 kΩ) shifts TS thresholds lower than TI reference (~2–3 °C; effective T-Cool range approx. −2 °C to +3 °C, see JEITA table in README). WARM zone configured to start at ~52 °C (register: 55 °C), effectively neutralized (VREG + ICHG unchanged in WARM), auto battery discharge disabled — see [README.md — JEITA](README.md#jeita-temperature-zone-configuration) for details. **Note:** JEITA thresholds are evaluated by the BQ25798 directly in hardware. The `set board.tccal` calibration corrects only the CLI/telemetry temperature readout and does not affect JEITA behavior — see [FAQ #12](FAQ.md#12-when-should-i-run-set-boardtccal). | + +> **⚠ WARNING — No Reverse Polarity Protection:** The board has **no hardware reverse polarity protection** on the battery or solar input. Connecting a battery or solar panel with reversed polarity will cause **immediate, irreversible damage** to the board. Always double-check the polarity before connecting any power source. + +### Solar Power Management + +| Feature | Description | +|---------|-------------| +| **MPPT (Maximum Power Point Tracking)** | The BQ25798 optimizes solar harvesting via MPPT (VOC_PCT = 81.25%, matched for crystalline silicon solar cells). Automatic recovery on power-good loss and stuck-PGOOD detection with HIZ toggle. | +| **PFM Forward Mode** | Enabled by BQ25798 power-on default (PFM_FWD_DIS=0, REG0x12); the firmware does not modify it. Improves efficiency at low solar currents. | + +### Specifications + +| Parameter | Value | +|---|---| +| **MCU** | nRF52840 (ARM Cortex-M4, 64 MHz) | +| **Radio** | Semtech SX1262 (via RAK4630) | +| **Frequency** | LoRa Sub-GHz (region-dependent) | +| **Connectivity** | LoRa, BLE 5.0, USB-C | +| **Supply Voltage** | 1S Li-Ion / 1S LiFePO4 / 2S LTO / 1S Na-Ion (via firmware config) | +| **Solar Input** | 3.6 V – 24 V (MPPT) | +| **Max. Solar Voc** | 25 V | +| **USB Charging** | 5 V via USB-C (Schottky diode to VBUS-BQ, same charger path as solar) | +| **Charger** | BQ25798 (MPPT, JEITA) | +| **Max. Charge Current** | 50 – 1500 mA (configurable) | +| **Power Monitor** | INA228 (Coulomb Counter, ALERT) | +| **RTC** | RV-3028-C7 (time base / wake-up timer). See [FAQ #23](FAQ.md#23-why-does-the-repeater-board-need-a-correct-time) | +| **Buck Converter** | TPS62840 (3.3 V rail, max. 750 mA) | +| **System-Off Current** | via 3.3V off switch ~15 µA | +| **System Sleep Current** | < 500 µA (firmware sleep with GPIO latch, CE active, RTC wake) | +| **Idle Current (active)** | 6.0 mA @ 4.2 V / 7.7 mA @ 3.3 V (USB off, no radio TX) | +| **USB Peripheral** | ~0.8–1.0 mA additional (auto-enabled on VBUS detect, auto-disabled on removal) | +| **CPU Idle Mode** | WFE (Wait-For-Event) between loop iterations, reduces CPU current from ~3 mA to ~0.5–0.8 mA | +| **PCB Size** | 45 × 40 mm | +| **Mounting Holes** | 4× M2.5, hole spacing 40 × 35 mm | +| **Operating Temperature** | –40 °C to +85 °C (MCU spec) | +| **Bootloader** | Adafruit nRF52 OTA-Fix Bootloader (factory-installed), UF2-capable | + +--- + +## PCB – Front Side (Component Side) + +![Inhero MR2 Front](img/front.jpg) + +![Inhero MR2 Front – Annotated](img/front-annotated_.png) + +### Connectors, Buttons & LEDs – Front Side + +| Label (→ image) | Name | Description | +|-----------------|------|-------------| +| **Ble-Conn** | U.FL – BLE | Antenna connector for Bluetooth Low Energy (top left on RAK4630) | +| **LoRa-Conn** | U.FL – LoRa | Antenna connector for LoRa Sub-GHz (left center on RAK4630) | +| **USB-C** | USB-C Port | USB interface for power supply, charging, firmware flashing and CLI access (top right). CC1/CC2 pulled to GND via 4.7 kΩ (USB sink). VBUS-USB is connected to VBUS-BQ (solar input) via a Schottky diode — USB power feeds the same charger input as the solar panel. | +| **Reset** | Reset Button | Single click: reset the nRF52840. Double click: enter USB mass storage mode for UF2 firmware updates (right side, below USB-C) | +| **Led 1+2** | Status LEDs | LED1 + LED2 = RAK4630 user LEDs (heartbeat / boot indicator, right side, stacked) | +| **Chrg. Led** | Charge LED | BQ25798 STAT output – indicates charge status (bottom right, next to solar connector) | +| **3.3V off** | Power Switch | Slide switch to disconnect the 3.3 V supply (bottom left). **⚠ Caution: Inverted logic!** Switch position "ON" = EN pin low = board **off**. Switch position "OFF" = EN pin high = board **on**. | +| **Bat-Conn** (JST PH2.0-3P) | Battery Connector | 3-pin JST PH2.0 connector: **Batt+**, **Batt−**, **TS** (bottom left) | +| **Solar-Conn** (JST PH2.0-2P) | Solar Connector | 2-pin JST PH2.0 connector: **Solar+**, **Solar−** (bottom right) | +| **Ø 2.5mm** | Mounting Holes | 4× M2.5 mounting holes in the corners | + +### Key Components – Front Side + +| Component | Name | Description | +|-----------|------|-------------| +| **RAK4630** | Core Module | nRF52840 SoC + SX1262 LoRa transceiver (center, shielded) | +| **BME280** | Environmental Sensor | Temperature, humidity, pressure | +| **BQ25798** | Battery Charger | MPPT, JEITA temperature protection, 15-bit ADC | +| **INA228** | Power Monitor | Coulomb counter with ALERT interrupt | +| **TPS62840** | Buck Converter | DC/DC, 750 mA, EN switched via 3.3V off switch | + +### Pinout – Battery Connector (JST PH2.0-3P, left to right) + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | **Batt +** | Battery positive terminal | +| 2 | **Batt −** | Battery negative terminal (GND) | +| 3 | **TS** | Temperature sensor (NTC) for JEITA charge protection. Required type: NCP15XH103F03RC (10 kΩ @ 25 °C, Beta 3380) or compatible | + +> **⚠ WARNING:** No reverse polarity protection. Verify correct polarity before connecting. + +### Pinout – Solar Connector (JST PH2.0-2P, left to right) + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | **Solar +** | Solar panel positive (3.6 V – 24 V, max. Voc 25 V) | +| 2 | **Solar −** | Solar panel negative (GND) | + +> **⚠ WARNING:** No reverse polarity protection. Verify correct polarity before connecting. + +### USB Charging Path + +USB-C VBUS is connected to the BQ25798 VBUS input (same single input as solar) via a **Schottky diode**. The BQ25798 has only one VBUS input and does not distinguish between USB and solar. CC1 and CC2 are pulled to GND via 4.7 kΩ resistors, advertising the board as a USB power sink (5 V default). The Schottky diode prevents backflow from the solar panel to the USB bus, but current **can** flow from USB-VBUS out through the solar connector. + +#### USB Auto-Management + +The nRF52840 USB peripheral is automatically managed based on VBUS detection: + +- **VBUS detected** → USB peripheral enabled (Serial available) +- **VBUS removed** → USB peripheral disabled (saves ~0.8–1.0 mA) +- **Boot without USB** → USB disabled on first loop iteration + +No manual CLI commands are required. USB is always available when a cable is connected. See also [FAQ #7 — USB charging](FAQ.md#7-can-i-charge-the-board-via-usb). + +> **⚠ Warning:** Since VBUS-USB and VBUS-BQ (solar input) are connected via the Schottky diode, a **short circuit on the solar connector** will also short VBUS-USB. Never short-circuit the solar input while USB is connected. + +See also [FAQ #16 — 3.3V off switch](FAQ.md#16-what-does-the-33v-off-switch-do-and-when-would-i-use-it) for practical use cases. + +--- + +## PCB – Back Side + +![Inhero MR2 Back](img/back.jpg) + +![Inhero MR2 Back – Annotated](img/back-annotated_.png) + +### Headers & Pads – Back Side + +#### UART/I2C – Header Row 1 (top row, castellated pads) + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | **GND** | Ground | +| 2 | **RX** | UART Receive | +| 3 | **TX** | UART Transmit | +| 4 | **SDA** | I2C Data | +| 5 | **SCL** | I2C Clock | +| 6 | **3.3V** | 3.3 V output (max. 500 mA, shared with board consumption) | + +#### SWD – Header Row 2 (bottom row, castellated pads) + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | **RESET** | nRF52840 Reset | +| 2 | **GND** | Ground | +| 3 | **SWCLK** | SWD Clock (debug interface) | +| 4 | **SWDIO** | SWD Data (debug interface) | +| 5 | **3.3V** | 3.3 V output (max. 500 mA, shared with board consumption) | + +#### Solder Bridge – Onboard Temperature Sensor (bottom right) + +| Label (→ image) | Description | +|-----------------|-------------| +| **Solder-Bridge** (close for onboard Temp-Sensor) | Solder bridge for the onboard NTC temperature sensor (NCP15XH103F03RC, 10 kΩ @ 25 °C, Beta 3380). **Closed** = onboard NTC active. **Open** = external NTC of type NCP15XH103F03RC (10 kΩ @ 25 °C, Beta 3380) or compatible required via TS pin on the battery connector. See [FAQ #2](FAQ.md#2-can-i-use-battery-packs-without-a-built-in-ntc). | + +--- + +## I2C Bus – Address Map + +| Address | Component | Function | +|---------|-----------|----------| +| 0x40 | INA228 | Power Monitor / Coulomb Counter | +| 0x52 | RV-3028-C7 | Real-Time Clock (RTC) | +| 0x6B | BQ25798 | Battery Charger (MPPT, JEITA) | +| 0x76 | BME280 | Environmental Sensor (T, H, P) | + +--- + +## Pin Assignment (Key GPIOs) + +| nRF52840 Pin | RAK Module Pin | Function | +|--------------|----------------|----------| +| P0.04 | WB_IO4 | BQ CE pin (via DMN2004TK-7 N-FET, inverted) | +| P1.02 | WB_IO2 | INA228 ALERT (low-voltage interrupt) | +| P0.17 | WB_IO1 | RV-3028 RTC interrupt | +| P0.21 | WB_IO3 | BQ25798 INT (unused, polled; pulled up) | + +--- + +## Supported Battery Chemistries + +| Type | Nominal Voltage | Charge Voltage | Low-V Sleep | Low-V Wake | Hysteresis | +|------|----------------|----------------|-------------|------------|------------| +| **Li-Ion 1S** | 3.7 V | 4.1 V | 3100 mV | 3300 mV | 200 mV | +| **LiFePO4 1S** | 3.2 V | 3.5 V | 2700 mV | 2900 mV | 200 mV | +| **LTO 2S** | 4.6 V (2× 2.3 V) | 5.4 V | 3900 mV | 4100 mV | 200 mV | +| **Na-Ion 1S** | 3.1 V | 3.9 V | 2500 mV | 2700 mV | 200 mV | +| **none** | — | — | — | — | — | + +> **Choosing the right chemistry:** See [BATTERY_GUIDE.md](BATTERY_GUIDE.md) for a detailed comparison of pros, cons, and deployment recommendations. A brief summary is also in [FAQ #1](FAQ.md#1-which-battery-chemistry-should-i-choose). + +--- + +## Firmware Environments + +| Build Target | Description | +|---|---| +| `Inhero_MR2_repeater` | Standard repeater | +| `Inhero_MR2_repeater_bridge_rs232` | Repeater with RS232 bridge (Serial2 on P0.19/P0.20) | +| `Inhero_MR2_sensor` | Sensor firmware | + +--- + +## Absolute Maximum Ratings + +| Parameter | Min | Max | Unit | +|---|---|---|---| +| Solar input voltage (Voc) | — | 25 | V | +| Charge current (configurable) | 50 | 1500 | mA | +| Shunt current (INA228, 100 mΩ) | — | 1600 | mA | +| Ambient temperature (operating) | –40 | +85 | °C | + +--- + +## See Also + +- [README.md](README.md) – Overview, feature matrix and diagnostics +- [TELEMETRY.md](TELEMETRY.md) — Telemetry channels explained (what the app displays) +- [QUICK_START.md](QUICK_START.md) – Quick start for commissioning and CLI setup +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) – Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) – Frequently asked questions +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) – All board-specific CLI commands at a glance +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) – Complete technical documentation diff --git a/variants/inhero_mr2/docs/FAQ.md b/variants/inhero_mr2/docs/FAQ.md new file mode 100644 index 0000000000..1d95269390 --- /dev/null +++ b/variants/inhero_mr2/docs/FAQ.md @@ -0,0 +1,403 @@ +# Inhero MR2 — FAQ + +## Contents + + +**⚡ Battery & Chemistry** + +1. [Which battery chemistry should I choose?](#1-which-battery-chemistry-should-i-choose) +2. [Can I use battery packs without a built-in NTC?](#2-can-i-use-battery-packs-without-a-built-in-ntc) +3. [Why does current draw increase when battery voltage drops?](#3-why-does-current-draw-increase-when-battery-voltage-drops) + +**🔋 Charging & Solar** + +4. [What mAh value should I enter for `set board.batcap`?](#4-what-mah-value-should-i-enter-for-set-boardbatcap) +5. [Why is it important to set the maximum charge current with `set board.imax`?](#5-why-is-it-important-to-set-the-maximum-charge-current-with-set-boardimax) +6. [What does `set board.fmax` control?](#6-what-does-set-boardfmax-control) +7. [Can I charge the board via USB?](#7-can-i-charge-the-board-via-usb) +8. [Which solar panels can I connect?](#8-which-solar-panels-can-i-connect) +9. [The red LED (BQ status LED) blinks slowly and the battery is not charging.](#9-the-red-led-bq-status-led-blinks-slowly-and-the-battery-is-not-charging) +10. [Why doesn't the board charge without flashed firmware?](#10-why-doesnt-the-board-charge-without-flashed-firmware) + +**📊 SOC & Monitoring** + +11. [Why does the SOC show 0% or N/A?](#11-why-does-the-soc-show-0-or-na) +12. [When should I run `set board.tccal`?](#12-when-should-i-run-set-boardtccal) +13. [How does temperature derating work?](#13-how-does-temperature-derating-work) +14. [What is TTL (Time-To-Live)?](#14-what-is-ttl-time-to-live) + +**🔩 Hardware** + +15. [Does the board have reverse polarity protection?](#15-does-the-board-have-reverse-polarity-protection) +16. [What does the "3.3V off" switch do, and when would I use it?](#16-what-does-the-33v-off-switch-do-and-when-would-i-use-it) +17. [What do the LEDs mean?](#17-what-do-the-leds-mean) +18. [Can I operate the board without an antenna?](#18-can-i-operate-the-board-without-an-antenna) +19. [Why does the RTC have no backup battery?](#19-why-does-the-rtc-have-no-backup-battery) +20. [What are the dimensions of the mounting holes?](#20-what-are-the-dimensions-of-the-mounting-holes) +21. [Are interfaces (UART/I2C) exposed on the board?](#21-are-interfaces-uarti2c-exposed-on-the-board) + +**⚙️ Firmware** + +22. [Are my settings preserved during a firmware update?](#22-are-my-settings-preserved-during-a-firmware-update) +23. [Why does the repeater board need a correct time?](#23-why-does-the-repeater-board-need-a-correct-time) +24. [Why can't the repeater clock be set backwards?](#24-why-cant-the-repeater-clock-be-set-backwards) + +--- + +**⚡ Battery & Chemistry** + +### 1. Which battery chemistry should I choose? + +The Inhero MR2 supports **Li-Ion**, **LiFePO4**, **LTO (2S)**, and **Na-Ion**. The right choice depends on your deployment conditions — especially temperature range, available space, and expected service life. + +In short: **LiFePO4** for most indoor/temperate setups, **LTO** for extreme cold or maximum cycle life, **Li-Ion** when space is tight, **Na-Ion** for sustainable cold-weather deployments. + +→ **Full guide:** [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Detailed comparison, pros & cons, deployment recommendations, capacity planning, solar sizing, safety tips, and long-term aging. + +→ **Setup:** [QUICK_START.md — Step 6](QUICK_START.md#6-set-battery-chemistry) | [CLI_CHEAT_SHEET.md — Quick-Start Recipes](CLI_CHEAT_SHEET.md#quick-start-recipes) + +--- + +### 2. Can I use battery packs without a built-in NTC? + +**Yes, but only with the onboard NTC.** Close the solder bridge on the back side of the board — this activates the onboard NTC (NCP15XH103F03RC, 10 kΩ @ 25 °C, Beta 3380). The TS pin on the battery connector remains unused in this case. + +If your battery pack has a built-in NTC, it must be wired between **TS (Pin 3)** and **GND (Pin 2)** (see [DATASHEET.md — Battery Connector](DATASHEET.md#pinout--battery-connector-jst-ph20-3p-left-to-right)). A compatible 10k NTC (Beta ~3380) is sufficient for basic frost protection — however, temperature accuracy will be slightly reduced. + +**Important:** Without an NTC (solder bridge open and no external NTC connected), the BQ25798 interprets the TS pin as a frost condition for Li-Ion and LiFePO4 — charging is blocked and the BQ status LED blinks. This does not occur with LTO and Na-Ion, as JEITA is disabled for those chemistries. + +--- + +### 3. Why does current draw increase when battery voltage drops? + +The Inhero MR2 has a high-efficiency **buck converter** that converts the battery voltage down to 3.3 V for the MCU and radio. Because this converter is efficient, the board draws roughly **constant power** (watts), not constant current (amps). + +Since Power = Voltage × Current: +- At 4.6 V (LTO full): ~6.3 mA +- At 3.7 V (Li-Ion nominal): ~7.8 mA +- At 3.2 V (LiFePO4 nominal): ~9.1 mA + +All three cases consume exactly **29 mW**. This is normal, not a fault. + +**Practical consequence:** When sizing batteries, always calculate in **Wh** (energy), not mAh — especially when comparing different chemistries. A naive "mA × hours" calculation overestimates the capacity needed for higher-voltage chemistries like LTO. + +→ **Full explanation:** [BATTERY_GUIDE.md — Why current depends on battery voltage](BATTERY_GUIDE.md#why-current-depends-on-battery-voltage) + +--- + +**🔋 Charging & Solar** + +### 4. What mAh value should I enter for `set board.batcap`? + +Enter the **nominal capacity minus a deduction**. Since the charge cutoff voltage is reduced for battery longevity, the full nominal capacity is not available. A slightly pessimistic value is safer: when the SOC shows 10 %, there really is ≥ 10 % left in the battery. This prevents being surprised by an unexpected low-voltage sleep. The TTL prediction (Time-To-Live) also becomes more conservative and reliable. + +**Rule of thumb: 90 % of nominal capacity.** Example: 10,000 mAh nominal → `set board.batcap 9000`. + +For parallel cells, add capacities before the deduction: Two 5,000 mAh cells in parallel = 10,000 mAh nominal → `set board.batcap 9000`. + +--- + +### 5. Why is it important to set the maximum charge current with `set board.imax`? + +`imax` sets the **maximum charge current** — the maximum current flowing into the battery. The firmware also uses `imax` together with the configured chemistry's charge voltage to automatically calculate how much current it may draw from the solar panel. This prevents weak panels from being overloaded and the charger from shutting down. + +Why set `imax` correctly? + +1. **Basis for frost protection:** `imax` is the reference value for `fmax`. Example: `imax 500` with `fmax 20%` results in a maximum of 100 mA charge current in the T-Cool range (+3 °C to –2 °C). + +2. **Battery care:** Lower charge currents are always gentler on the battery. Set `imax` only as high as necessary. + +3. **Panel compatibility:** If `imax` is set too high, the board briefly tries to draw more current from the panel than it can deliver — the charger detects the voltage drop and stops charging. + +**Calculation:** Panel power ÷ battery voltage = imax. +Example: 2 W panel, Li-Ion (3.7 V) → 2000 / 3.7 ≈ 540 mA → `set board.imax 540`. + +--- + +### 6. What does `set board.fmax` control? + +`fmax` limits the maximum charge current in the **T-Cool range** (+3 °C to –2 °C with the Inhero voltage divider) to a percentage of `imax`: + +| Setting | Behavior in T-Cool range | +|---|---| +| `0%` | Charging completely blocked | +| `20%` | Max. 20 % of imax (e.g., 500 mA → 100 mA) | +| `40%` | Max. 40 % of imax (e.g., 500 mA → 200 mA) | +| `100%` | No reduction, full charge current | + +**Below approx. –2 °C (T-Cold),** charging is always completely blocked by JEITA for **Li-Ion and LiFePO4** — regardless of `fmax`. + +**Important:** Only charging is restricted. With sufficient solar power, the board continues to run on solar — the battery is neither charged nor discharged. + +**LTO / Na-Ion:** `fmax` has no effect, as JEITA is disabled for these chemistries. + +--- + +### 7. Can I charge the board via USB? + +**Yes.** USB-C VBUS (5 V) is connected to the BQ25798 VBUS input via a **Schottky diode** — the **same single input** as the solar panel (see [DATASHEET.md — USB Charging Path](DATASHEET.md#usb-charging-path)). The BQ25798 has only one VBUS input and does not distinguish between the two sources. + +When USB is detected (nRF52840 VBUS sense), the firmware automatically limits the input current to **500 mA** (USB 2.0 spec). When USB is removed, the input current limit is recalculated from the configured chemistry and `board.imax`. + +Whichever source provides the higher voltage at the VBUS input is active: If USB voltage (minus Schottky drop) exceeds the solar voltage, USB charges. Otherwise, solar charges. Both sources cannot charge simultaneously. + +> **⚠ WARNING:** The Schottky diode prevents backflow from the solar panel to the USB bus, but current **can** flow from USB-VBUS out through the solar connector. A **short circuit on the solar connector will also short USB-VBUS**. Never short-circuit the solar input while USB is connected. + +--- + +### 8. Which solar panels can I connect? + +**Requirements:** +- **Input voltage:** 3.6 V – 24 V (MPPT range of the BQ25798) +- **Max. open-circuit voltage (Voc):** 25 V — do not exceed! +- **Connector:** JST PH2.0-2P (Solar+, Solar–) + +**Typical panels:** 5 V or 6 V monocrystalline solar panels. The buck/boost charger can also charge higher battery voltages from lower panel voltages (e.g., 5 V panel → LTO 2S at 5.4 V). + +**Not suitable:** 24 V panels or series connections whose Voc can exceed 25 V. See [DATASHEET.md — Specifications](DATASHEET.md#specifications) for the full electrical limits. + +**Sizing (Central Europe):** +- **1 W monocrystalline** is the minimum requirement — only with south-facing, vertical mounting, unshaded, and battery capacity ≥ 7 Ah. +- **From 2 W**, reliable year-round operation is possible. + +--- + +### 9. The red LED (BQ status LED) blinks slowly and the battery is not charging. + +Slow blinking of the BQ status LED indicates a **charger fault**. Most common causes: + +1. **No NTC connected (most frequent):** Neither an external NTC on the TS pin nor the solder bridge for the onboard NTC is closed. The BQ25798 interprets the open TS pin as a frost condition and blocks charging. → **Solution:** Close the solder bridge or connect a compatible NTC (10 kΩ @ 25 °C, Beta ~3380) between TS (Pin 3) and GND (Pin 2). + +2. **Actually too cold / too warm:** Below –2 °C (T-Cold threshold with Inhero voltage divider), charging is completely blocked by JEITA for Li-Ion and LiFePO4. Above ~58 °C (T-Hot threshold), charging is also suspended. → This does not occur with LTO and Na-Ion (JEITA disabled). + +3. **Other charger fault:** The BQ25798 can also signal faults such as VBAT overvoltage (VBAT_OVP), input overvoltage (VBUS_OVP), or watchdog timeout. These are less common in normal operation. + +→ Check with [`get board.telem`](CLI_CHEAT_SHEET.md#getters-query-status) for the current temperature and [`get board.cinfo`](CLI_CHEAT_SHEET.md#getters-query-status) for the charger status; fault flags are shown by [`get board.bqdiag`](CLI_CHEAT_SHEET.md#getters-query-status). + +--- + +### 10. Why doesn’t the board charge without flashed firmware? + +This is a deliberate safety feature. The BQ25798 charger is controlled via the **CE pin (Charge Enable)**, which requires the firmware to actively drive GPIO4 HIGH. + +**Without firmware** (or with the 3.3V off switch engaged): +- External pull-down on the DMN2004TK-7 FET gate → FET OFF → CE HIGH → **charging disabled** + +This ensures the battery cannot be overcharged if the firmware locks up or is not installed. Flash the firmware via USB and configure the battery chemistry (`set board.bat …`) to enable charging. See [POWER_MANAGEMENT.md — CE Pin Safety](POWER_MANAGEMENT.md#10-bq25798-ce-pin-safety-rev-11--fet-inverted) for the hardware design. + +--- + +**📊 SOC & Monitoring** + +### 11. Why does the SOC show 0% or N/A? + +**SOC shows N/A** until the battery has been **fully charged at the board for the first time**. The coulomb counter needs a known reference point (100% = "Charge Done" event) to calculate SOC accurately. Charge the battery completely once via USB after commissioning. See [POWER_MANAGEMENT.md — Coulomb Counter & SOC](POWER_MANAGEMENT.md#2-coulomb-counter--soc-state-of-charge) for the tracking mechanism. + +**SOC shows 0%** after the board wakes from **low-voltage sleep**. This is intentional: the coulomb counter was not running during sleep, so the charge state is unknown. SOC restarts at 0% and begins accumulating again. When the battery next reaches "Charge Done", the SOC synchronizes cleanly to 100%. + +**Note:** In cold conditions, the extractable capacity is lower than stored charge. `get board.telem` shows this as `SOC:95.0% (79%)`. The TTL accounts for this automatically. See [FAQ #13](FAQ.md#13-how-does-temperature-derating-work). + +--- + +### 12. When should I run `set board.tccal`? + +**Ideally in the early morning**, before sunrise. At that time the battery temperature has equalized with the ambient temperature overnight, and no solar radiation has warmed the enclosure yet. This gives the BME280 and the NTC the most consistent baseline for calibration. + +**Why timing matters:** During the day, solar radiation heats the enclosure unevenly — the NTC (close to the battery) and the BME280 (on the PCB) may report different temperatures, resulting in an inaccurate offset. In the early morning, both sensors are at thermal equilibrium. + +**Why TCCal exists:** An NTC and its associated voltage divider resistors are subject to component tolerances that produce measurement errors significantly larger than those of the BME280. Since the BME280 is on the board, it can serve as a reference to calibrate the NTC reading. + +**Important limitations:** +- **Affects telemetry and CLI only.** TCCal corrects the battery temperature displayed via `get board.telem` and transmitted over telemetry. The BQ25798 JEITA thresholds are **not** affected — the charger evaluates the TS pin directly in hardware. Therefore, the actual JEITA switching temperatures may differ slightly from the calibrated CLI readout. +- **Single-point calibration.** The offset is determined at one temperature. Away from the calibration temperature the correction drifts, because NTC non-linearity and divider errors are temperature-dependent. + +**Command:** `set board.tccal` — auto-calibrates the NTC offset using the BME280 as reference. Use `set board.tccal reset` to reset the offset to 0.00. See [`get board.tccal`](CLI_CHEAT_SHEET.md#getter-quick-reference) to verify the current offset. + +--- + +### 13. How does temperature derating work? + +SOC% is **purely Coulomb-based** — it reflects the actual stored charge and does not change with temperature. Only real charge flow (measured by the INA228 coulomb counter) changes SOC%. + +However, the **extractable capacity** decreases at cold temperatures due to slower electrochemical kinetics and increased internal resistance during TX peaks (~100 mA). The firmware calculates a per-chemistry derating factor `f(T)` that is used for: +- **TTL calculation** — Trapped Charge model: extractable = max(0, remaining − capacity × (1−f(T))) +- **CLI display** — `get board.telem` shows the derated value in parentheses: `SOC:95.0% (78%)` = stored (extractable) + +The derating factor is visible in `get board.socdebug` (field `d=`). + +→ **Full details:** [POWER_MANAGEMENT.md — Temperature Derating](POWER_MANAGEMENT.md#5-time-to-live-ttl-prediction) + +--- + +### 14. What is TTL (Time-To-Live)? + +TTL is an estimated **remaining runtime** based on the current energy balance. It is shown in [`get board.stats`](CLI_CHEAT_SHEET.md#getters-query-status). See [POWER_MANAGEMENT.md — TTL Prediction](POWER_MANAGEMENT.md#5-time-to-live-ttl-prediction) for the algorithm. + +**How it works:** +- A 168-hour ring buffer (7 days) records hourly charge/discharge data from the INA228 coulomb counter. +- **Formula:** `TTL = extractable capacity / |7-day avg. daily net consumption| × 24h` — where extractable = SOC%-based remaining charge minus the temperature-locked share (see Cold weather below; identical to `SOC% × capacity / 100` at moderate temperatures) +- **Display format:** `T:12d0h` (12 days, 0 hours) or `T:12h` (< 24 hours) + +**TTL shows N/A or 0 when:** +- Less than 24 hours of data have been collected +- The board is running on solar surplus (no deficit) + +**Note:** If `set board.batcap` is not set, a rough chemistry default (1500–2000 mAh) is used — set the real capacity for a meaningful TTL. + +**Cold weather:** TTL uses the Trapped Charge model — cold temperatures lock the bottom of the discharge curve, so extractable capacity drops faster than SOC% at low charge levels. This is especially critical in winter: at 20% SOC, the extractable capacity may already be near zero. See [FAQ #13](FAQ.md#13-how-does-temperature-derating-work). + +--- + +**🔩 Hardware** + +### 15. Does the board have reverse polarity protection? + +**No.** The board has **no hardware reverse polarity protection** — neither on the battery nor on the solar input. A reverse-connected battery or solar panel can cause **immediate, irreversible damage** to the board. + +**Always verify polarity before plugging in any cable.** See [DATASHEET.md — Safety & Protection Features](DATASHEET.md#safety--protection-features). + +--- + +### 16. What does the "3.3V off" switch do, and when would I use it? + +The slide switch labeled **"3.3V off"** on the bottom-left of the PCB controls the EN pin of the TPS62840 buck converter (see [DATASHEET.md — Connectors, Buttons & LEDs](DATASHEET.md#connectors-buttons--leds--front-side)). + +> **⚠ Caution — Inverted logic:** +> - Switch position **"ON"** = EN pin low = board **powered off** +> - Switch position **"OFF"** = EN pin high = board **running** + +With the 3.3V rail disabled, the nRF52840, the RF frontend, and all 3.3V-powered components (INA228, RV-3028 RTC, BME280) are completely de-energized. Only the BQ25798 charger IC remains powered from VBAT (~15 µA quiescent current). **Charging is disabled** in this state — the firmware must be running to supervise the charger. Note: the RTC loses its time when the 3.3V rail is off — see [FAQ #23](#23-why-does-the-repeater-board-need-a-correct-time). + +**Use cases:** +- **Antenna swap:** Safely power down the RF frontend on a deployed board without disconnecting battery or solar. +- **Transport:** Switch off the board during shipping or relocation. +- **Short/medium-term storage:** ~15 µA total consumption. For longer storage (months), disconnect the battery entirely. + +--- + +### 17. What do the LEDs mean? + +The board has three LEDs: + +| LED | Location | Color | Meaning | +|-----|----------|-------|--------| +| **LED1** | Right side, top | Blue | Heartbeat (periodic blink during normal operation). Short flash during boot for each successfully initialized component (INA228, BQ25798, RTC). | +| **LED2** | Right side, bottom | Red | Hardware error indicator. Blinks permanently if a critical component (BQ25798, INA228, or RTC) was not found during initialization. | +| **Charge LED** | Bottom right, next to solar connector | Red | BQ25798 charge status output (hardware-controlled). Solid on = charging active. Off = not charging or charging done. Slow blinking = charger fault (see FAQ #9). | + +All three LEDs can be disabled with [`set board.leds off`](CLI_CHEAT_SHEET.md#setters-change-configuration). + +**Note:** The descriptions for LED1/LED2 apply only after the firmware has booted. The bootloader uses its own LED patterns (e.g., slow blue pulsing during OTA/UF2 updates). + +--- + +### 18. Can I operate the board without an antenna? + +**No.** Operating without an antenna risks **irreversible damage** to the RF frontend (SX1262 radio). Always connect both antennas (LoRa and BLE) before powering on. + +If you need to swap or install antennas on an already deployed board, use the **3.3V off switch** (see FAQ #16) to safely de-energize the RF frontend without disconnecting battery or solar. + +--- + +### 19. Why does the RTC have no backup battery? + +The RV-3028-C7 RTC has two main functions: +1. **Stable time base** with minimal drift for MeshCore. +2. **Wake-up timer** for low-voltage sleep (hourly wake-up for voltage check). + +As long as a battery is connected, the RTC is continuously powered — including during System Sleep. After a low-voltage sleep and reboot, the time is preserved. + +A backup battery (e.g., CR2032) was intentionally omitted. Its only additional benefit would be to preserve the time when the battery is disconnected. This does not justify the space required on the compact 45 × 40 mm form factor. See [FAQ #23](#23-why-does-the-repeater-board-need-a-correct-time) for why a correct clock matters. + +--- + +### 20. What are the dimensions of the mounting holes? + +The board has **4× M2.5 mounting holes** with a diameter of **2.5 mm** and a hole spacing of **35 × 40 mm**. The PCB itself measures 45 × 40 mm. + +--- + +### 21. Are interfaces (UART/I2C) exposed on the board? + +**Yes.** Two rows of castellated pads are available on the back side of the PCB: + +**Row 1 — UART / I2C:** + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | GND | Ground | +| 2 | RX | UART Receive | +| 3 | TX | UART Transmit | +| 4 | SDA | I2C Data | +| 5 | SCL | I2C Clock | +| 6 | 3.3V | 3.3 V output (max. 500 mA, shared with board consumption) | + +**Row 2 — SWD (Debug):** + +| Pin | Signal | Description | +|-----|--------|-------------| +| 1 | RESET | nRF52840 Reset | +| 2 | GND | Ground | +| 3 | SWCLK | SWD Clock | +| 4 | SWDIO | SWD Data | +| 5 | 3.3V | 3.3 V output (max. 500 mA, shared with board consumption) | + +The castellated pads can be soldered directly to a carrier board. See [DATASHEET.md — Headers & Pads](DATASHEET.md#headers--pads--back-side) for the complete pad layout. + +--- + +**⚙️ Firmware** + +### 22. Are my settings preserved during a firmware update? + +**Yes.** All board-specific settings are stored on the **LittleFS filesystem**, which is preserved during firmware updates. This includes: + +- Battery chemistry (`set board.bat`) +- Battery capacity (`set board.batcap`) +- Charge current (`set board.imax`) +- Frost protection (`set board.fmax`) +- MPPT, LED settings +- NTC calibration offset + +**Note:** Energy statistics (168h ring buffers for TTL) are held in RAM only and restart after any reboot or update. + +Settings are only lost on a full flash erase or filesystem corruption (rare). See [POWER_MANAGEMENT.md — Statistics Persistence](POWER_MANAGEMENT.md#11-statistics-persistence) for technical details. + +### 23. Why does the repeater board need a correct time? + +The firmware uses the RTC (Real-Time Clock) for several protection mechanisms. An incorrect clock does not cause a total outage — packets are still forwarded — but noticeable problems arise: + +- **Advertisements are rejected:** Every advertisement is cryptographically signed (Ed25519 over public key + timestamp + app data). Receivers compare the contained timestamp against the last stored value and discard timestamps that are equal or smaller as potential replay attacks. The existing entry on other nodes is preserved but no longer updated — name, position and "last seen" become increasingly stale. +- **Debug logs with incorrect timestamps:** `getLogDateTime()` shows wrong absolute times. Relative calculations like "last heard X seconds ago" remain correct as they use the same (wrong) clock source internally. + +Login, admin commands and the rate limiter are **not affected** — login/commands compare client-provided timestamps against each other only, and the rate limiter uses only relative time differences which remain correct as long as the clock ticks monotonically. A `clock sync` can therefore be run at any time after logging in. + +**How is the clock set?** +The Inhero MR2 has a hardware RTC that retains its time during a normal reboot. However, if the battery is disconnected or the 3.3V rail is switched off via the onboard switch, the RV-3028 loses its time and falls back to the POR default (January 2000). The clock can be set via CLI (`clock sync` or `time <epoch>`) from an admin client. The repeater is **not** automatically synchronized by clients. + +> **Recommendation:** After every battery swap or power-down of the board's 3.3V rail via the onboard switch, run `clock sync` via CLI as soon as possible. A normal reboot is not affected. + +--- + +### 24. Why can't the repeater clock be set backwards? + +`clock sync` and `time <epoch>` only allow setting the clock **forward** — setting it backwards is rejected with `ERR: clock cannot go backwards`. + +**Why?** The firmware uses increasing timestamps to protect against replay attacks. Both advertisements and admin commands are rejected if their timestamp is equal to or lower than the last stored value. Since other nodes in the mesh store the last (high) timestamp, a clock rollback would cause new advertisements to be rejected mesh-wide. + +**Solution: `clkreboot`** — resets the clock to a low value and reboots the board; the reboot resets the per-client replay timestamps (stored client entries are kept). Run `clock sync` afterwards to set the correct time. + +> **Note:** After `clkreboot`, advertisements will temporarily be rejected by nodes that still have the old timestamp stored. Visibility normalises once those entries expire. + +See also [FAQ #23](#23-why-does-the-repeater-board-need-a-correct-time). + +--- + +## See Also + +- [README.md](README.md) — Overview, feature matrix and diagnostics +- [DATASHEET.md](DATASHEET.md) — Hardware datasheet, pinouts and specifications +- [QUICK_START.md](QUICK_START.md) — Quick start for commissioning and CLI setup +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All board-specific CLI commands at a glance +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide diff --git a/variants/inhero_mr2/docs/POWER_MANAGEMENT.md b/variants/inhero_mr2/docs/POWER_MANAGEMENT.md new file mode 100644 index 0000000000..5d597e37d0 --- /dev/null +++ b/variants/inhero_mr2/docs/POWER_MANAGEMENT.md @@ -0,0 +1,1035 @@ +# Inhero MR-2 Power Management - Implementation Documentation (Rev 1.1) + +## Table of Contents + +- [Overview](#overview) +- [Hardware Architecture](#hardware-architecture) +- [1. Low-Voltage Detection (INA228 ALERT ISR)](#1-low-voltage-detection-ina228-alert-isr) +- [2. Coulomb Counter & SOC (State of Charge)](#2-coulomb-counter--soc-state-of-charge) +- [3. Daily Energy Balance](#3-daily-energy-balance) +- [4. Solar Power Management](#4-solar-power-management) + - [BQ25798 ADC at Low Battery Voltages](#bq25798-adc-at-low-battery-voltages) + - [JEITA WARM Zone & VBAT_OVP Prevention](#jeita-warm-zone--vbat_ovp-prevention) +- [5. Time-To-Live (TTL) Prediction](#5-time-to-live-ttl-prediction) +- [6. RTC Wakeup Management](#6-rtc-wakeup-management) +- [7. Power Management Flow](#7-power-management-flow) +- [8. INA228 ALERT Pin (Rev 1.1)](#8-ina228-alert-pin-rev-11) +- [9. SX1262 Power Control & PE4259 RF Switch](#9-sx1262-power-control--pe4259-rf-switch) +- [10. BQ25798 CE Pin Safety (Rev 1.1 — FET-inverted)](#10-bq25798-ce-pin-safety-rev-11--fet-inverted) +- [11. Statistics Persistence](#11-statistics-persistence) +- [12. CLI Commands](#12-cli-commands) +- [See Also](#see-also) + +> This documentation describes the power management implementation for the Inhero MR-2 board. +> Hardware Rev 1.1: INA228 ALERT on P1.02, TPS62840 EN via 3.3V_off switch, CE pin via DMN2004TK-7 FET (inverted). + +--- + +## Overview + +The system combines **INA228 ALERT-based low-voltage detection** + **System Sleep with GPIO latch** + **Coulomb Counter** + **daily energy balance** + **CE pin FET safety** for maximum energy efficiency: + +1. **INA228 ALERT ISR** (P1.02) - Low-voltage detection via hardware interrupt +2. **System Sleep with GPIO latch** (< 500µA) with RTC wake - Minimal power consumption during low-voltage +3. **CE Pin FET Safety** (DMN2004TK-7) - Inverted logic, solar charging possible in System Sleep +4. **Coulomb Counter** (INA228) - Real-time SOC tracking +5. **Daily Energy Balance** (7-day rolling) - Solar vs. battery +6. **RTC Wakeup Management** (RV-3028-C7) - Periodic recovery checks + +### Feature Matrix + +| Feature | Status | Notes | +|---------|--------|-------| +| INA228 ALERT → Low-Voltage System Sleep | Active | ISR on P1.02 → volatile flag → tickPeriodic() → System Sleep with GPIO latch + RTC Wake | +| RTC Wakeup (Low-Voltage Recovery) | Active | 60 min (periodic) | +| BQ CE Pin Safety (FET-inverted) | Active | GPIO HIGH → FET ON → CE LOW → charge ON (BQ25798 CE active-low), Dual-Layer: GPIO + I2C | +| System Sleep with latched CE | Active | < 500µA, GPIO4 latch preserved HIGH → FET ON → CE LOW → solar charging possible | +| SOC via INA228 + manual battery capacity | Active | `set board.batcap` available | +| SOC→Li-Ion mV Mapping (workaround) | Active | Will be removed when MeshCore transmits SOC% natively | +| MPPT Recovery + Stuck-PGOOD Handling | Active | Cooldown logic active | + + +--- + +## Hardware Architecture + +### Components +| Component | Function | I2C | Pin | Details | +|-----------|----------|-----|-----|---------| +| **RAK4630** | Core Module | — | — | nRF52840 SoC + SX1262 LoRa transceiver | +| **INA228** | Power Monitor | 0x40 | ALERT→P1.02 (ISR) | 100mΩ shunt, 1.6A max, Coulomb Counter, BUVL Alert | +| **BME280** | Temp/Humidity/Pressure sensor | 0x76 | — | NTC calibration reference (`set board.tccal`), selftest | +| **RV-3028-C7** | RTC | 0x52 | INT→GPIO17 | Countdown timer, wake-up. See [FAQ #23](FAQ.md#23-why-does-the-repeater-board-need-a-correct-time) | +| **BQ25798** | Battery Charger | 0x6B | INT→GPIO21 | MPPT, JEITA, 15-bit ADC (IBUS ~±30mA error at low currents; ADC has VBAT-dependent thresholds, see [Section 4](#bq25798-adc-at-low-battery-voltages)) | +| **BQ CE Pin** | Charge Enable | — | GPIO4 (P0.04) | Via DMN2004TK-7 FET: GPIO HIGH → FET ON → CE LOW → charge ON (BQ25798 CE active-low) | +| **TPS62840** | Buck Converter | - | EN via 3.3V_off switch | 750mA, 3.3V rail | +| **DMN2004TK-7** | CE FET | — | Gate←GPIO4 (ext. pull-down) | N-FET, Drain→CE, Source→GND. GPIO HIGH → FET ON → CE LOW → charging on. Pull-down defaults gate LOW when floating. | +| **Schottky diode** | USB→VBUS Diode | — | — | VBUS-USB → VBUS-BQ (solar input). USB-C CC1/CC2 via 4.7kΩ to GND (USB sink). **⚠ Solar short also shorts VBUS-USB.** | + +--- + +## 1. Low-Voltage Detection (INA228 ALERT ISR) + +### Implementation (Rev 1.1 — Flag/Tick Architecture) +- **Trigger**: INA228 BUVL (Bus Under-Voltage Limit) ALERT on P1.02 +- **ISR**: `BoardConfigContainer::lowVoltageAlertISR()` → sets `lowVoltageAlertFired = true` (flag only, no FreeRTOS call) +- **Processing**: `tickPeriodic()` checks flag in main loop context → `board.initiateShutdown(SHUTDOWN_REASON_LOW_VOLTAGE)` +- **Arming**: `armLowVoltageAlert()` is called during battery configuration (sets BUVL threshold + enables ISR) + +### Low-Voltage Flow + +``` +INA228 BUVL Alert (P1.02, FALLING edge) + │ + ▼ +lowVoltageAlertISR() [ISR context] + │ Sets lowVoltageAlertFired = true (volatile flag) + ▼ +tickPeriodic() [Main loop context, next tick()] + │ Checks lowVoltageAlertFired == true + ▼ +board.initiateShutdown(SHUTDOWN_REASON_LOW_VOLTAGE) + │ CE latched HIGH (GPIO latch preserved → FET ON → CE LOW → charging stays ON) + │ RTC wake configured (LOW_VOLTAGE_SLEEP_MINUTES = 60) + │ GPREGRET2 → LOW_VOLTAGE_SLEEP flag + ▼ +sd_power_system_off() → System Sleep with GPIO latch (< 500µA) +``` + +### Chemistry-Specific Thresholds (1-Level System, uniform 200mV hysteresis) + +| Chemistry | lowv_sleep_mv (ALERT) | lowv_wake_mv (0% SOC) | Hysteresis | +|-----------|----------------------|----------------------|------------| +| **Li-Ion 1S** | 3100 | 3300 | 200mV | +| **LiFePO4 1S** | 2700 | 2900 | 200mV | +| **LTO 2S** | 3900 | 4100 | 200mV | +| **Na-Ion 1S** | 2500 | 2700 | 200mV | + +**Implementation**: `BoardConfigContainer` — `battery_properties[]` lookup table +- `lowv_sleep_mv` → INA228 BUVL Alert threshold, triggers System Sleep +- `lowv_wake_mv` → RTC wake threshold (early boot checks VBAT, decides boot or sleep again) +- Static methods: `getLowVoltageSleepThreshold(type)`, `getLowVoltageWakeThreshold(type)` + +--- + +## 2. Coulomb Counter & SOC (State of Charge) + +### INA228 Integration +- **Driver**: `lib/Ina228Driver.cpp` +- **Init**: `BoardConfigContainer::begin()` + - 100mΩ shunt calibration + - CURRENT_LSB = 1.6384A / 524288 ≈ 3.125µA + - ADC Range ±163.84mV (ADCRANGE=0, optimal for 1A @ 100mΩ) + - **ADC Averaging**: 256 samples (filters TX voltage peaks) + - BUVL Alert configured to `lowv_sleep_mv` (chemistry-specific) + +### SOC Calculation +**Method**: `updateBatterySOC()` in `BoardConfigContainer.cpp` +- **Primary**: Coulomb Counting (INA228 CHARGE register) +- **Update interval**: every 60s via tickPeriodic(); no SOC updates while in low-voltage sleep (the RTC wake only checks VBAT and re-sleeps or boots) + +**Formula**: +``` +SOC_delta = charge_delta_mah / capacity_mah × 100% +SOC_new = SOC_old + SOC_delta +``` + +**Auto-Sync**: On BQ25798 "Charge Done", SOC is set to 100%. + +### Capacity Management + +#### Configuration Required +Battery capacity **must be set manually**, as it varies widely in practice: +- **Typical range**: 4000-24000mAh (4-24Ah) +- **CLI command**: `set board.batcap <mAh>` +- **Allowed range**: 100-100000mAh + +**Important**: Without correct capacity, SOC% and TTL calculations are inaccurate! + +#### Persistence Mechanism +**Storage Path**: `/inheromr2/batCap.txt` (LittleFS via SimplePreferences) +**Save Method**: `setBatteryCapacity()` in `BoardConfigContainer.cpp` (persists via SimplePreferences) +**Load Method**: `loadBatteryCapacity()` + +**Saved on**: +1. **Manual setting**: CLI command `set board.batcap <mAh>` + - Writes immediately to LittleFS + - Updates `batteryStats.capacity_mah` + +**Loaded on**: +- **Boot time**: `BoardConfigContainer::begin()` calls `loadBatteryCapacity()` +- **Fallback**: When no saved capacity exists +- **Validation**: Range check 100-100000mAh + +**Persistence properties**: +- ✅ **Survives** software shutdowns (System Sleep) +- ✅ **Survives** power cycles and low-voltage recovery +- ✅ **Survives** firmware updates (LittleFS preserved) +- ⚠️ **Lost** on: flash erase, `rm -rf /inheromr2/`, filesystem corruption + +--- + +## 3. Daily Energy Balance + +### Tracking (168-Hour Ring Buffer) +**Methods**: `updateHourlyStats()` + `calculateRollingStats()` in `BoardConfigContainer.cpp` +- **Called by**: tickPeriodic() (every 60 min) +- **Sampling**: On each hour boundary (RTC time truncated to full hours), the completed hour is written into the ring buffer + +**Data structure**: `BatterySOCStats.hours[168]` (7 days × 24 hours) +```cpp +typedef struct { + uint32_t timestamp; // start of hour, unix seconds + float charged_mah; // charged this hour + float discharged_mah; // discharged this hour + float solar_mah; // solar share this hour +} HourlyBatteryStats; +``` + +The per-hour values are accumulated from INA228 CHARGE register deltas in `updateBatterySOC()` (every 60s): a positive delta counts as charged (and solar), a negative delta as discharged. + +### Calculations +**Rolling sums** (`calculateRollingStats()`, after each completed hour): +``` +last_24h_net_mah = Σ(solar − discharged) over the last 24 hours +avg_3day_daily_net_mah = Σ(solar − discharged) over 72h / 3 (needs ≥ 24h of data) +avg_7day_daily_net_mah = Σ(solar − discharged) over 168h / 7 (needs ≥ 24h of data; used for TTL) +``` + +**Living Status**: +- `living_on_battery = true` when `last_24h_net_mah < 0` (net deficit over the last 24h) +- Solar surplus (SOL in `board.stats`) is simply `living_on_battery == false` + +--- + +## 4. Solar Power Management + +### Design Principle + +The BQ25798 decides **itself** via PowerGood (PG) whether an input is usable. +The charger runs in always-active mode (HIZ disabled). +The firmware monitors solar status and re-enables MPPT as needed. + +No INT pin interrupt — everything runs via polling in `runMpptCycle()` (60s interval). + +### Solar Checks + +`runMpptCycle()` performs two checks each cycle: +1. `checkAndFixSolarLogic()` — PG-stuck recovery + MPPT re-enablement +2. `updateMpptStats()` — Updates MPPT statistics for 7-day average + +### PFM Forward Mode + +- PFM forward mode is enabled by BQ25798 power-on default (PFM_FWD_DIS=0, REG0x12); the firmware does not modify it +- PFM improves efficiency at low solar currents + +### MPPT Recovery + PG-Stuck + +`checkAndFixSolarLogic()` handles two scenarios: + +**PG=1**: MPPT re-enablement — BQ25798 automatically disables MPPT on faults. +Readback check: only write when actual change needed. + +**PG=0 + VBUS ≥ 4.5V**: PG-stuck recovery — panel delivers voltage, but BQ has not +qualified the input source (typical during slow sunrise). HIZ toggle forces +new input qualification. 5-minute cooldown prevents excessive toggling. +Constant: `PG_STUCK_VBUS_THRESHOLD_MV = 4500` in BoardConfigContainer.h + +### BQ25798 Interrupt Handling + +**BQ INT pin (GPIO 21)**: Not used as interrupt — `INPUT_PULLUP` against floating. +BQ status is checked via polling in `runMpptCycle()` every 60s. + +**Flag clearing on boot**: `BqDriver::clearInterruptFlags()` (called from `BoardConfigContainer::begin()`) +- Reads the CHARGER_FLAG/FAULT_FLAG registers 0x22–0x27 to de-assert the INT line +- Prevents stale faults from previous power cycle + +### Flag/Tick Architecture + +All I2C operations run in main loop context via `tickPeriodic()` (called by `InheroMr2Board::tick()`). There are no FreeRTOS tasks for I2C access — this eliminates mutex and race conditions. + +**I2C Bus Recovery** (in `InheroMr2Board::begin()`): After OTA/warm reset, an I2C slave may hold SDA low. Before `Wire.begin()`, up to 9 SCL pulses + STOP condition are generated to free the bus. + +**tickPeriodic()** dispatches periodic work via `millis()` timers: +``` +tickPeriodic() [called by tick(), main loop] + ├─ Check low-voltage alert flag → initiateShutdown() + ├─ Every 60s: runMpptCycle() + │ ├─ checkAndFixSolarLogic() — PG-stuck recovery (HIZ toggle) + MPPT recovery + │ └─ updateMpptStats() — Update MPPT statistics + ├─ Every 60s: updateBatterySOC() + └─ Every 60min: updateHourlyStats() +``` + +**Remaining FreeRTOS tasks** (GPIO only, no I2C): +- `heartbeatTask` — blue LED blink pattern +- `ErrorLED` lambda — red LED on missing components + +**Timing Summary**: +- **MPPT Cycle**: 60 seconds (via tickPeriodic) +- **SOC Update**: 60 seconds (via tickPeriodic) +- **Hourly Stats**: 60 minutes (via tickPeriodic) + +### BQ25798 ADC at Low Battery Voltages + +> **Reference:** BQ25798 Datasheet (TI SLUSE22), Section 9.3.16 — ADC + +#### Problem + +The 15-bit ADC in the BQ25798 has **voltage-dependent operating thresholds** that become relevant in battery-only operation (without solar). At low battery voltages, the ADC cannot complete its conversion — `ADC_EN` stays set and the firmware runs into a timeout. + +#### Datasheet Quote (Section 9.3.16) + +> *"The ADC is allowed to operate if either VBUS > 3.4V or VBAT > 2.9V is valid. +> At battery only condition, if the TS_ADC channel is enabled, the ADC only works +> when battery voltage is higher than 3.2V, otherwise, the ADC works when the +> battery voltage is higher than 2.9V."* + +#### Operating Scenarios + +| Condition | VBUS | VBAT | TS Channel | ADC | Temperature | +|-----------|------|------|------------|-----|-------------| +| Solar connected | > 3.4V | any | enabled | ✅ runs | ✅ available | +| Battery operation, normal | — | ≥ 3.2V | enabled | ✅ runs | ✅ available | +| Battery operation, low | — | 2.9–3.2V | **disabled** | ✅ runs | ❌ not available | +| Battery operation, critical | — | < 2.9V | disabled | ❌ timeout | ❌ not available | + +#### Firmware Solution: VBAT-dependent TS Channel Control + +The firmware reads the current battery voltage from the INA228 and passes it to `BqDriver::getTelemetryData(vbat_mv)`: + +- **VBAT ≥ 3.2V** (or unknown): TS channel enabled → ADC threshold 3.2V, temperature available +- **VBAT < 3.2V**: TS channel disabled → ADC threshold drops to 2.9V, temperature shown as "N/A" + +This allows the ADC to continue working in the 2.9–3.2V range for solar measurements (VBUS, IBUS), even when battery temperature cannot be read. + +#### ADC Channel Configuration (only required channels) + +On the MR-2, D+, D−, VAC1, VAC2 are not connected. The firmware enables only the actually used channels: + +| Register | Value (TS on) | Value (TS off) | Active Channels | +|----------|---------------|----------------|-----------------| +| 0x2F (ADC_FUNCTION_DISABLE_0) | `0x5A` | `0x5E` | IBUS, VBUS, (TS) | +| 0x30 (ADC_FUNCTION_DISABLE_1) | `0xF0` | `0xF0` | none (D+/D−/VAC disabled) | + +**Important:** In one-shot mode, `ADC_EN` is only cleared when **all enabled channels** have completed conversion. Unconnected channels can block this → therefore only required channels are enabled. + +#### Temperature Sentinel Values + +The firmware uses special return values for invalid temperatures: + +| Value | Meaning | Display | +|-------|---------|---------| +| −999.0 | I2C communication error | N/A | +| −888.0 | ADC not ready / TS disabled (low VBAT) | N/A | +| −99.0 | NTC open/not connected | N/A | +| +99.0 | NTC short circuit | N/A | +| −50…+90°C | Valid measurement | XX°C | + +**Display rule:** Values ≤ −100°C are shown as "N/A" in CLI and omitted from CayenneLPP packets. + +#### Code References +- `BqDriver::getTelemetryData(vbat_mv)` — Main function with VBAT-dependent TS control +- `BqDriver::startADCOneShot(ts_enabled)` — Configures ADC channels and starts conversion +- `BoardConfigContainer::getTelemetryData()` — Passes INA228 VBAT to BqDriver + +### JEITA WARM Zone & VBAT_OVP Prevention + +#### Problem: Default JEITA Configuration + Inhero Divider + +The Inhero MR2 uses a non-standard NTC voltage divider (RT1=5.6 kΩ pullup to REGN, RT2=27 kΩ parallel to GND) instead of the TI reference design (5.24 kΩ / 30.31 kΩ). This shifts TS thresholds lower by a **temperature-dependent** amount: ~5–6 °C in the cold range (where NTC resistance is large relative to RT2, amplifying the divider mismatch) and ~2–3 °C in the warm/hot range. + +With the BQ25798 POR defaults (`TS_WARM = 45°C`, `JEITA_VSET = VREG−400mV`, `EN_AUTO_IBATDIS = 1`), this caused a critical failure chain at moderate temperatures (~42 °C): + +``` +42°C ambient → TS = 44.65% REGN (below VT3_FALL = 44.8%) + → BQ enters WARM zone + → JEITA_VSET reduces VREG: 3.5V − 400mV = 3.1V (LiFePO4) + → Battery at 3.47V > 104% × 3.1V = 3.224V → VBAT_OVP triggers + → Converter stops, EN_AUTO_IBATDIS sinks IBAT_LOAD = 30mA from battery + → Total drain: −11mA (system) + −30mA (IBAT_LOAD) = −41mA + → Recovery requires VBAT < 102% × 3.1V = 3.162V → hours of battery drain +``` + +#### Fix: Three Register Settings in `configureBaseBQ()` + +| Setting | Register | Value | Effect | +|---------|----------|-------|--------| +| `setTsWarm(BQ25798_TS_WARM_55C)` | NTC Control 1 (0x18), bits 5:4 | 55 °C (37.7% REGN) | WARM zone starts at ~52 °C (Inhero), not ~42 °C | +| `setJeitaVSet(BQ25798_JEITA_VSET_UNCHANGED)` | NTC Control 0 (0x17), bits 7:5 | UNCHANGED | No VREG reduction in WARM — prevents VBAT_OVP | +| `JEITA_ISETH` (POR default retained) | NTC Control 0, bits 4:3 | 11b = ICHG unchanged | No charge current reduction in WARM | +| `setAutoIBATDIS(false)` | Charger Control 0, bit 7 | 0 | Disables 30 mA active battery discharge during OVP | + +> **Result:** With JEITA_VSET=UNCHANGED and JEITA_ISETH=ICHG unchanged, the WARM zone (T3–T5) is effectively neutralized. Charging continues at full voltage and full current until T-Hot (~58 °C), where charging is suspended entirely. + +#### TS Threshold Comparison + +| Zone Boundary | BQ Register | % REGN | TI Reference (°C) | Inhero MR2 (°C) | Shift | +|---------------|-------------|--------|--------------------|------------------|-------| +| VT1 (Cold) | — | 72.0% | +3.7 | −2.0 | −5.7 °C | +| VT2 (Cool) | — | 69.8% | +7.9 | +2.8 | −5.1 °C | +| VT3 (Warm) | TS_WARM=55°C | 37.7% | +54.5 | +52.2 | −2.3 °C | +| VT5 (Hot) | — | 34.2% | +59.9 | +57.7 | −2.2 °C | + +> NTC models: 103AT (B25/50=3435) for TI reference, NCP15XH103F03RC (B25/85=3380) for Inhero. Typical %REGN from BQ25798 datasheet. + +#### Code References +- `BoardConfigContainer::configureBaseBQ()` — Applies all three settings at startup +- `BqDriver::setTsWarm()` / `setJeitaVSet()` — Existing driver API +- `BqDriver::setAutoIBATDIS()` — Added to driver (Charger Control 0, bit 7) + +--- + +## 5. Time-To-Live (TTL) Prediction + +### Data Source and Time Base + +The TTL calculation is based on the **7-day moving average** of daily net energy consumption, calculated from a **168-hour ring buffer** (7 days) of hourly INA228 coulomb counter measurements. + +#### Data Flow + +``` +INA228 Hardware Coulomb Counter (24-bit ADC, ±0.1% accuracy) + │ + ▼ +updateHourlyStats() — every hour + │ Stores per hour: charged_mah, discharged_mah, solar_mah + │ in hours[168] ring buffer (BatterySOCStats.hours[]) + ▼ +calculateRollingStats() — after each hourly update + │ Sums last 168 hours → divides by 7 + │ → avg_7day_daily_net_mah (= solar − discharged per day) + │ Minimum requirement: ≥ 24 hours of valid data + ▼ +calculateTTL() — after calculateRollingStats() + │ extractable_mah / |deficit_per_day| × 24 = TTL hours + │ (extractable = remaining − trapped charge, see formula below) + ▼ +socStats.ttl_hours → getTTL_Hours() → board.stats / telemetry +``` + +### Calculation +**Method**: `calculateTTL()` in `BoardConfigContainer.cpp` +- **Called**: After `calculateRollingStats()` (hourly) +- **Time base**: 7-day moving average (`avg_7day_daily_net_mah`) from hourly samples + +**Prerequisites for TTL > 0**: +1. `living_on_battery == true` (24h net is negative, i.e. energy deficit) +2. `avg_7day_daily_net_mah < 0` (7-day average shows net discharge) +3. `capacity_mah > 0` (battery capacity known, via `set board.batcap`) +4. At least **24 hours** of valid data in the ring buffer + +**Formula** (Trapped-Charge model): +``` +remaining_capacity_mah = (SOC% / 100) × capacity_mah +trapped_mah = capacity_mah × (1 − f(T)) +extractable_mah = max(0, remaining_capacity_mah − trapped_mah) +daily_deficit_mah = -avg_7day_daily_net_mah (positive value) +TTL_hours = extractable_mah / daily_deficit_mah × 24 +``` +f(T) is the chemistry-specific cold-temperature derating factor (`temp_derating_factor`); f(T) = 1 at ≥ 25 °C, so at moderate temperatures nothing is trapped and the formula reduces to remaining/deficit. + +**TTL = 0 means**: +- Device is solar-powered (net surplus) → `living_on_battery == false` +- Less than 24h of data collected (cold start) +- Battery capacity unknown + +**Infinite TTL (telemetry)**: +- When `living_on_battery == false` and SOC valid → transmitted as 990 days (max value) + +**Example**: +- SOC: 60% = 1200mAh remaining (with 2000mAh capacity) +- Temperature ≥ 25 °C → f(T) = 1, no trapped charge → extractable = 1200mAh +- 7-day avg: -100 mAh/day (from 168h hourly samples) +- TTL: 1200 / 100 × 24 = 288 hours = 12 days + +**CLI output**: `board.stats` +``` ++150/+120/+90mAh C:200 D:50 3C:180 3D:60 7C:160 7D:70 SOL M:85% T:N/A ← Solar surplus +``` +or +``` +-80/-100/-110mAh C:10 D:90 3C:15 3D:115 7C:20 7D:130 BAT M:45% T:12d0h ← 12 days until empty +``` + +--- + +## 6. RTC Wakeup Management + +### RV-3028-C7 Integration +**Pin**: GPIO17 (WB_IO1) → RTC INT +**Init**: `InheroMr2Board::begin()` +- `attachInterrupt(RTC_INT_PIN, rtcInterruptHandler, FALLING)` +- Checks `GPREGRET2` for wake-up reason + +### Countdown Timer Configuration +**Method**: `configureRTCWake()` in `InheroMr2Board.cpp` +- **Tick Rate**: 1/60 Hz (1 minute per tick), configured via TD=11 in CTRL1 +- **Max Countdown**: 4095 minutes ≈ 2.8 days (12-bit timer register) +- **Low-Voltage Sleep Interval**: `LOW_VOLTAGE_SLEEP_MINUTES` = 60 min (1h) +- **Rationale**: Each wake is a System-ON reset with an early-boot fast path (minimal I2C: clear RTC TF, read VBAT, re-sleep) costing only ~0.03 mAh + +**Registers**: +```cpp +RV3028_CTRL1 (0x0F): TE=1, TD=11 (1/60 Hz), TRPT=0 (Single shot) +RV3028_CTRL2 (0x10): TIE=1 (Timer Interrupt Enable, bit 4) +RV3028_STATUS (0x0E): TF (Timer Flag, bit 3) — must be cleared after wake! +RV3028_TIMER_VALUE_0 (0x0A): Countdown value LSB +RV3028_TIMER_VALUE_1 (0x0B): Countdown value MSB (upper 4 bits) +``` + +### Interrupt Handler +**Method**: `rtcInterruptHandler()` — only sets `rtc_irq_pending = true`. + +The actual TF clear happens in main loop context in `tick()` via I2C (read-modify-write, clears only the TF bit): +```cpp +// In InheroMr2Board::tick() — main loop context: +if (rtc_irq_pending) { + rtc_irq_pending = false; + // Read RV3028_REG_STATUS ... + uint8_t status = Wire.read(); + status &= ~(1 << 3); // Clear TF bit only → INT pin goes HIGH via pull-up + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + Wire.write(status); // write back — other status flags stay untouched + Wire.endTransmission(); +} +``` + +**Why not in the ISR?** I2C (Wire) must not be called from an ISR context. +The ISR only sets the flag; `tick()` checks it in the main loop. + +--- + +## 7. Power Management Flow + +### Shutdown Sequence (Rev 1.1 — System Sleep with GPIO latch) +**Method**: `initiateShutdown()` in `InheroMr2Board.cpp` + +**On Low-Voltage → System Sleep with GPIO latch** (< 500µA, CE FET holds state): + +**Flow:** INA228 ALERT ISR → Flag → tickPeriodic() → `board.initiateShutdown(SHUTDOWN_REASON_LOW_VOLTAGE)`: + +1. **Stop Background Tasks**: `BoardConfigContainer::stopBackgroundTasks()` + - Stops heartbeat task (only remaining FreeRTOS task with GPIO) + - Disarms INA228 low-voltage alert (detach ISR, disable BUVL) + +2. **INA228 to minimum current**: release the ALERT pin (`enableAlert(false, ...)`, `setUnderVoltageAlert(0)` — a latched-LOW ALERT would waste ~330µA through the pull-up), then `shutdown()` (ADC off, ~3.5µA) + +3. **SX1262 Sleep + PE4259 off**: `inhero::prepareRadioForSystemOff()` — first `radio.sleep(false)` (Cold Sleep via SPI, ~0.16µA), then `digitalWrite(SX126X_POWER_EN, LOW)` (PE4259 VDD off) + +4. **LEDs off**: PIN_LED1, PIN_LED2 LOW + +5. **Latch CE pin HIGH** (GPIO output latch preserved for P0.04): + - `digitalWrite(BQ_CE_PIN, HIGH)` → DMN2004TK-7 ON → CE LOW → charging active + - P0.04 is excluded from `disconnectLeakyPullups()` → GPIO latch stays HIGH in System Sleep + - Without latch: ext. pull-down on gate → FET OFF → pull-up on CE → CE HIGH → **charging OFF** + +6. **INA228 + BQ25798 minimal current**: `inhero::prepareIcsForSystemOff()` (raw-I2C safety net, repeats the INA228 shutdown with readback) + +7. **BME280 to sleep**: forced Sleep mode via I2C (saves ~1–7µA; harmless NACK if not populated) + +8. **Configure RTC wake**: `configureRTCWake(LOW_VOLTAGE_SLEEP_MINUTES)` (60 min) + +9. **Clear P0 LATCH for the RTC INT pin** (a stale latch would fire DETECT immediately → instant wake → boot loop) + +10. **Release I2C**: `Wire.end()`, then `inhero::disconnectLeakyPullups()` (each held-LOW pull-up wastes ~250µA) + +11. **Save shutdown reason**: `NRF_POWER->GPREGRET2 = GPREGRET2_LOW_VOLTAGE_SLEEP | reason` + +12. **System Sleep with GPIO latch**: `sd_power_system_off()` → nRF52840 System-Off (< 500µA total) + - GPIO4 latch preserved (excluded from disconnectLeakyPullups) → FET stays ON → CE LOW → **charging active** + - RAM contents are lost (168h statistics, SOC, etc.) + - RTC interrupt on GPIO17 wakes system after timer expires + +SOC is not written during shutdown — on the next successful recovery boot, `begin()` calls `setSOCManually(0.0)` (low-voltage recovery), so SOC restarts at 0%. + +**Why System Sleep with GPIO latch?** +- DMN2004TK-7 FET for CE pin → GPIO4 latch preserved HIGH → FET ON → CE LOW → charging active +- Total consumption: **< 500µA** (nRF52840 System-Off + RTC + quiescent currents of all components) + +**168h statistics are lost on System Sleep** — no persistence mechanism exists for the ring buffer data. After recovery, statistics start from zero. + +### Wake-up Check (Anti-Motorboating) +**Method**: `InheroMr2Board::begin()` + +The code checks `GPREGRET2` for shutdown reason and battery voltage for wake-up decisions. + +**2 Cases**: + +**Case 1: Wake from Low-Voltage Sleep** (`(GPREGRET2 & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE`) +```cpp +// InheroMr2Board::begin() — Early Boot Fast Path (simplified) +uint8_t shutdown_reason = NRF_POWER->GPREGRET2; +if ((shutdown_reason & 0x03) == SHUTDOWN_REASON_LOW_VOLTAGE) { + Wire.begin(); + inhero::clearTimerFlag(); // wake was a reset — the ISR never saw the RTC event + uint16_t vbat_mv = Ina228Driver::readVBATDirect(&Wire, INA228_I2C_ADDR); + uint16_t wake_threshold = getLowVoltageWakeThreshold(); + + if (vbat_mv == 0 || vbat_mv < wake_threshold) { + // Voltage still too low → back to System Sleep. + // The wake reset cleared all PIN_CNF — the sleep-time GPIO latch does NOT + // survive it. CE must be re-driven OUTPUT HIGH or solar charging stops. + pinMode(BQ_CE_PIN, OUTPUT); + digitalWrite(BQ_CE_PIN, HIGH); + inhero::prepareIcsForSystemOff(); // INA228 + BQ25798 to minimal current + inhero::prepareRadioForSystemOff(false); // SX1262 back to Cold Sleep + configureRTCWake(LOW_VOLTAGE_SLEEP_MINUTES); + inhero::disconnectLeakyPullups(); + NRF_POWER->GPREGRET2 = GPREGRET2_LOW_VOLTAGE_SLEEP | SHUTDOWN_REASON_LOW_VOLTAGE; + sd_power_system_off(); // Stays in low-voltage sleep cycle + } + // Voltage OK → normal boot; low-voltage recovery marking + SOC=0% + // are applied after boardConfig.begin() + NRF_POWER->GPREGRET2 = SHUTDOWN_REASON_NONE; +} +``` + +**Case 2: Normal Cold Boot** (power-on, reset button, voltage OK) +```cpp +else { + // Continue normal boot + // INA228 and all other components are initialized +} +``` + +**Direct ADC Read** (boardConfig not yet ready): +```cpp +// Must read directly from INA228 ADC registers (24-bit, ±0.1% accuracy) +uint16_t vbat_mv = Ina228Driver::readVBATDirect(&Wire, INA228_I2C_ADDR); +``` + +**Voltage Thresholds** (Chemistry-Specific, 1-Level System): +| Chemistry | lowv_sleep_mv (ALERT) | lowv_wake_mv (Recovery) | Hysteresis | +|-----------|----------------------|------------------------|------------| +| Li-Ion 1S | 3100 | 3300 | 200mV | +| LiFePO4 1S | 2700 | 2900 | 200mV | +| LTO 2S | 3900 | 4100 | 200mV | +| Na-Ion 1S | 2500 | 2700 | 200mV | + +**Anti-Motorboating**: The early-boot check in `begin()` prevents the system from repeatedly booting and immediately crashing at marginal voltage. Only when VBAT is above `lowv_wake_mv` does it boot normally. + +**Power consumption in System Sleep with GPIO latch (Low-Voltage Sleep)**: +- **Total: < 500µA** (nRF52840 System-Off + RTC + quiescent currents of all components) +- CE FET: GPIO4 latch preserved HIGH → FET ON → CE LOW → **solar charging active** + +--- + +## 8. INA228 ALERT Pin (Rev 1.1) + +### Wiring +**Pin**: INA228 ALERT → P1.02 (nRF52840 GPIO, with ext. pull-up) +**TPS62840 EN**: Switched via 3.3V_off slide switch + +### Operation +The ALERT pin is used as a **software interrupt**: + +1. `armLowVoltageAlert()` configures INA228 BUVL (Bus Under-Voltage Limit) to `lowv_sleep_mv` +2. ALERT fires as FALLING edge interrupt on P1.02 +3. ISR (`lowVoltageAlertISR()`) sets `lowVoltageAlertFired = true` (flag only, no FreeRTOS call) +4. `tickPeriodic()` checks flag in the next main loop tick and calls `initiateShutdown()` → System Sleep + +**No latch problem**: Since ALERT does not go to TPS62840 EN, there is no latched-off behavior. +The system can boot normally after RTC wake and check voltage in `begin()`. + +--- + +## 9. SX1262 Power Control & PE4259 RF Switch + +### Hardware Architecture +- **SX1262**: LoRa transceiver (SPI bus), sleep mode via `SetSleep` SPI command +- **PE4259**: SPDT RF antenna switch in **single-pin mode**: + - **Pin 6 (VDD)**: GPIO 37 (P1.05, `SX126X_POWER_EN`) — power supply (must be HIGH for operation) + - **Pin 4 (CTRL)**: SX1262 DIO2 — TX/RX switching (automatic via `setDio2AsRfSwitch(true)`) + +### Shutdown Sequence (in `initiateShutdown()`) +The SX1262 is powered down in **two steps** — **order is critical**: + +```cpp +// Step 1: SX1262 to Cold Sleep via SPI (MUST be first!) +radio_driver.powerOff(); // → radio.sleep(false) → SPI SetSleep command +delay(10); + +// Step 2: PE4259 RF switch power off +digitalWrite(SX126X_POWER_EN, LOW); // VDD off → PE4259 off +``` + +**Why this order?** +- `radio.sleep(false)` sends an SPI command to the SX1262 → ensures clean radio shutdown +- PE4259 VDD (GPIO 37) powers the RF switch, NOT the SX1262 directly +- SPI is powered by the nRF52840 3.3V rail, not by PE4259 +- For safety: First put SX1262 to sleep, then power off PE4259 + +### Boot Sequence (in `begin()`) +```cpp +// PE4259 VDD on → RF switch ready +pinMode(SX126X_POWER_EN, OUTPUT); +digitalWrite(SX126X_POWER_EN, HIGH); +delay(10); // PE4259 power-on time + +// Later in radio_init() → target.cpp: +radio.std_init(&SPI); // → setDio2AsRfSwitch(true) → DIO2 controls TX/RX +``` + +**Important details**: +- **`SX126X_POWER_EN`** (GPIO 37 / P1.05) controls the **PE4259 VDD**, NOT the SX1262 power +- **`DIO2`** is controlled internally by the SX1262 (`setDio2AsRfSwitch(true)`) — no GPIO needed +- **Sleep current SX1262**: ~0.16µA (Cold Sleep) — datasheet value +- **Without `radio_driver.powerOff()`**: SX1262 remains in RX mode → ~5mA power consumption! + +--- + +## 10. BQ25798 CE Pin Safety (Rev 1.1 — FET-inverted) + +### Problem +The BQ25798 starts with default configuration (1S Li-Ion, 4.2V charge voltage). If a LiFePO4 battery (3.5V max) is connected and the RAK has not yet booted, the BQ25798 would overcharge the battery → **fire hazard**. + +### Hardware Design (Rev 1.1 — FET-inverted) +- **Pin**: `BQ_CE_PIN` = GPIO 4 (P0.04 / WB_IO4) +- **DMN2004TK-7 N-FET**: Gate ← GPIO4 (ext. pull-down), Drain → CE, Source → GND +- **External pull-down on Gate**: Defaults gate LOW when GPIO is floating → FET OFF +- **External pull-up on CE**: 10kΩ to VSYS → CE HIGH when FET OFF → **charging OFF** (BQ25798 CE active-low) +- **GPIO HIGH** → FET ON → CE pulled to GND (LOW) → **charging ON** +- **GPIO LOW** → pull-down on gate → FET OFF → pull-up on CE → CE HIGH → **charging OFF** +- **GPIO High-Z** (unpowered/reset) → pull-down on gate → FET OFF → pull-up on CE → CE HIGH → **charging OFF** + +**Key point Rev 1.1**: Charging is only active when GPIO4 is driven HIGH (by firmware or GPIO output latch in System Sleep). When the RAK is unpowered or unflashed, the external pull-down ensures FET OFF → CE HIGH → **charging disabled** — a deliberate safety feature. + +### 3-Layer Protection (Rev 1.1) + +| Layer | Location | Mechanism | When | +|---|---|---|---| +| **1. Hardware (passive)** | Pull-down + Pull-up | RAK unpowered → pull-down on gate → FET OFF → pull-up on CE → CE HIGH → **charging OFF** | Always (safety default) | +| **2. Early Boot** | `InheroMr2Board::begin()` | GPIO4 not yet driven → FET OFF → CE HIGH → **charging OFF** until firmware configures it | Before I2C init | +| **3. Chemistry Configuration** | `configureChemistry()` | GPIO HIGH → FET ON → CE LOW → **charging ON** + I2C register for known chemistry | After BQ25798 configuration | + +### Dual-Layer Safety (Hardware + Software) + +```cpp +// In configureChemistry() — after BQ25798 register configuration: +bq.setChargeEnable(props->charge_enable); // Software layer (I2C register) +#ifdef BQ_CE_PIN + pinMode(BQ_CE_PIN, OUTPUT); + // Rev 1.1 FET-inverted: HIGH → FET ON → CE LOW → charging active (BQ25798: CE active-low) + // FET OFF → pull-up on CE → CE HIGH → charging disabled (safety default) + digitalWrite(BQ_CE_PIN, props->charge_enable ? HIGH : LOW); // HIGH=FET ON=CE LOW=charge on +#endif +``` + +- `charge_enable` is part of the `BatteryProperties` table +- `BAT_UNKNOWN` → `charge_enable = false` → GPIO LOW → FET OFF → CE HIGH → **charging disabled** + register disabled +- Known chemistry → `charge_enable = true` → GPIO HIGH → FET ON → CE LOW → **charging enabled** + register enabled + +### Behavior in System Sleep with GPIO latch (Rev 1.1) + +In Rev 1.1, **System Sleep with GPIO latch** is used (via `initiateShutdown()`): +- `digitalWrite(BQ_CE_PIN, HIGH)` is called before entering System Sleep +- P0.04 is excluded from `disconnectLeakyPullups()` → GPIO output latch preserved at HIGH +- GPIO4 latched HIGH → DMN2004TK-7 FET ON → CE LOW → **charging active** +- BQ25798 MPPT/CC/CV runs autonomously in hardware → solar charging possible +- Power consumption: **< 500µA** (nRF52840 System-Off + RTC + quiescent currents of all components) + +| State | CE Pin | Charging | Solar Recovery | +|---|---|---|---| +| RAK unpowered (no battery) | HIGH (pull-up, FET OFF) | **Disabled** (safety default) | N/A | +| Early Boot | HIGH (pull-up, GPIO not driven) | **Disabled** (not yet configured) | No | +| BAT_UNKNOWN | HIGH (GPIO LOW → FET OFF) | **Disabled** (CE + I2C register) | No | +| Chemistry configured | LOW (GPIO HIGH → FET ON) | **Active** | **Yes** | +| System Sleep (Low-Voltage) | LOW (GPIO latch HIGH → FET ON) | **Active** | **Yes** | + +--- + +## 11. Statistics Persistence + +### Current State + +The 168h ring buffer statistics (coulomb counter, MPPT data, SOC state) are stored **in RAM only** and are lost on every reboot — whether System Sleep or cold boot. No persistence mechanism exists (neither `.noinit` section nor LittleFS snapshot). + +**Persistent data** (survives reboots via LittleFS): +- Battery type (`batType`) +- Battery capacity (`batCap`) +- NTC calibration (`tcCal`) +- MPPT setting (`mpptEn`) +- Frost behavior (`frost`) +- Max charge current (`maxChrg`) +- LED setting (`leds_en`) + +The INA228 calibration factor is **not** persisted — it lives in RAM only and resets to 1.0 on every boot. + +**Non-persistent data** (lost on reboot): +- 168h energy ring buffer (hourly charge/discharge/solar mAh) +- MPPT statistics (168h MPPT activity buffer) +- SOC percentage (set to 0% after recovery, synchronized to 100% on "Charging Done") +- TTL calculation (requires min. 24h data after each restart) +- Daily energy balance (7-day window rebuilds after restart) + +--- + +## 12. CLI Commands + +### Getters +```bash +board.bat # Query battery type + # Output: liion1s | lifepo1s | lto2s | naion1s | none + +board.fmax # Query frost charge behavior + # Output: 0% | 20% | 40% | 100% (LTO/Na-Ion: N/A) + +board.imax # Query maximum charge current + # Output: <current>mA (e.g. 500mA) + +board.mppt # Query MPPT status + # Output: MPPT=1 | MPPT=0 + +board.telem # Real-time telemetry with SOC + # Output: B:<V>V/<I>mA/<T>C SOC:<percent>% S:<V>V/<solar current> + # Example: B:3.85V/125.4mA/22C SOC:68.5% S:5.12V/385mA + # Example: B:3.85V/-8.2mA/N/A SOC:N/A S:0.00V/0mA + +board.stats # Energy statistics (balance + MPPT + TTL) + # Output: <24h>/<3d>/<7d>mAh C:<24h> D:<24h> 3C:<3d> 3D:<3d> 7C:<7d> 7D:<7d> <SOL|BAT> M:<mppt>% T:<ttl> + # Example: +125/+45/+38mAh C:200 D:75 3C:150 3D:105 7C:140 7D:102 SOL M:85% T:N/A + # Example: -30/-45/-40mAh C:10 D:40 3C:5 3D:50 7C:8 7D:48 BAT M:45% T:12d0h + # SOL = Solar surplus, BAT = Energy deficit + # T: Time To Live (N/A if solar surplus or <24h data) + +board.cinfo # Charger info + last PG-stuck HIZ toggle + # Output: "PG / CC HIZ:never" or "!PG / !CHG HIZ:3m ago" + +board.selftest # I²C hardware probe (all on-board devices) + # Output: "INA:OK BQ:OK RTC:OK BME:OK" + # Per-device states: OK | NACK | WR_FAIL (RTC only) + +board.conf # All configuration values + # Output: B:<bat> F:<fmax> M:<mppt> I:<imax> Vco:<V> V0:<V> + # Example: B:liion1s F:0% M:1 I:500mA Vco:4.10 V0:3.30 + +board.tccal # NTC temperature calibration offset + # Output: TC offset: +0.00 C (0.00=default) + +board.leds # LED enable status (Heartbeat + BQ Stat) + # Output: "LEDs: ON (Heartbeat + BQ Stat)" + +board.batcap # Battery capacity + # Output: 10000 mAh (set) or 2000 mAh (default; LiFePO4 defaults to 1500 mAh) +``` + +### Setters +```bash +set board.bat <type> # Set battery chemistry + # Options: liion1s | lifepo1s | lto2s | naion1s | none + +set board.fmax <value> # Set frost charge current reduction + # Options: 0% | 20% | 40% | 100% + # Limits charge current in T-Cool range (approx. -2 °C to +3 °C, see JEITA table in README) + # No effect on LTO / Na-Ion (JEITA disabled) + +set board.imax <mA> # Set maximum charge current + # Range: 50-1500 mA + +set board.mppt <0|1> # Enable/disable MPPT + +set board.batcap <mAh> # Set battery capacity + # Range: 100-100000 mAh + +set board.tccal # Calibrate NTC temperature (auto via BME280) +set board.tccal reset # Reset offset to 0.00 + +set board.leds <on|off> # Enable/disable LEDs (on/1, off/0) + +set board.soc <percent> # Manually set SOC (0-100, INA228 must be ready) +``` + +--- + +## File Overview + +### Main Implementation +| File | Description | +|------|-------------| +| **InheroMr2Board.h/cpp** | Board class, init, shutdown, RTC, CLI commands | +| **BoardConfigContainer.h/cpp** | Battery management, BQ25798, INA228, MPPT, SOC, daily balance | +| **lib/Ina228Driver.h/cpp** | INA228 I2C communication, calibration, coulomb counter | +| **lib/BqDriver.h/cpp** | BQ25798 I2C communication, MPPT, charging | + +### Key Methods +| Method | File | Function | +|--------|------|----------| +| `begin()` | InheroMr2Board.cpp | Board initialization, wake-up check, early-boot low-voltage check | +| `initiateShutdown()` | InheroMr2Board.cpp | System Sleep shutdown (called by tickPeriodic after ALERT) | +| `configureRTCWake()` | InheroMr2Board.cpp | RTC countdown timer | +| `rtcInterruptHandler()` | InheroMr2Board.cpp | RTC INT ISR (sets flag) | +| `queryBoardTelemetry()` | InheroMr2Board.cpp | CayenneLPP telemetry collection | +| `getLowVoltageSleepThreshold()` | InheroMr2Board.cpp | Chemistry-specific sleep voltage (INA228 ALERT) | +| `getLowVoltageWakeThreshold()` | InheroMr2Board.cpp | Chemistry-specific wake voltage (0% SOC) | +| `armLowVoltageAlert()` | BoardConfigContainer.cpp | Arm INA228 BUVL alert + register ISR | +| `disarmLowVoltageAlert()` | BoardConfigContainer.cpp | Disarm INA228 alert + detach ISR | +| `lowVoltageAlertISR()` | BoardConfigContainer.cpp | ISR: sets lowVoltageAlertFired flag (checked in tickPeriodic) | +| `tickPeriodic()` | BoardConfigContainer.cpp | Main loop dispatch: MPPT (60s), SOC (60s), hourly (60min), low-V check | +| `runMpptCycle()` | BoardConfigContainer.cpp | Single MPPT cycle (solar checks, MPPT recovery) | +| `updateBatterySOC()` | BoardConfigContainer.cpp | Coulomb counter SOC calculation | +| `updateHourlyStats()` | BoardConfigContainer.cpp | Hourly sampling into the 168h ring buffer | +| `calculateRollingStats()` | BoardConfigContainer.cpp | 24h/3d/7d rolling sums + living_on_battery | +| `calculateTTL()` | BoardConfigContainer.cpp | Time To Live forecast | +| `Ina228Driver::begin()` | lib/Ina228Driver.cpp | 100mΩ calibration, ADC config | +| `Ina228Driver::readVBATDirect()` | lib/Ina228Driver.cpp | Static early-boot VBAT read | + +--- + +## Code Fragments (Key Sections) + +### INA228 Shutdown Mode +```cpp +// Ina228Driver.cpp — returns bool: false if the INA228 stays in continuous mode +bool Ina228Driver::shutdown() { + // Set operating mode to Shutdown (MODE = 0x0) + // This disables all conversions and Coulomb Counter. + // Retries up to 3× with readback — I2C writes can fail silently. + uint16_t adc_config = 0x0000; // MODE = 0x0 (Shutdown) + // ... write + readback retry loop, checks MODE bits [15:12] ... +} +``` + +### INA228 Wake-up +```cpp +// Ina228Driver.cpp +void Ina228Driver::wakeup() { + // Re-enable continuous measurement mode with full ADC configuration + // Must restore conversion times from begin() - defaults are much shorter (50µs) + uint16_t adc_config = (INA228_ADC_MODE_CONT_ALL << 12) | // MODE: Continuous all + (INA228_ADC_CT_2074us << 9) | // VBUSCT: 2074µs + (INA228_ADC_CT_4120us << 6) | // VSHCT: 4120µs + (INA228_ADC_CT_540us << 3) | // VTCT: 540µs + (INA228_ADC_AVG_256 << 0); // AVG: 256 samples (TX peak filtering) + writeRegister16(INA228_REG_ADC_CONFIG, adc_config); +} +``` + +### RTC Interrupt Handler +```cpp +// InheroMr2Board.cpp — ISR only sets flag, no I2C! +void InheroMr2Board::rtcInterruptHandler() { + rtc_irq_pending = true; +} +// TF clear happens in main loop context (tick()) +``` + +### INA228 Driver Access +```cpp +// Direct access to INA228 driver +if (boardConfig.getIna228Driver() != nullptr) { + // INA228 specific code +} +``` + +--- + +## Scenarios + +### Scenario A: Normal Discharge (Low-Voltage System Sleep) - Li-Ion +``` +t=0: VBAT = 3.7V → Normal (60s checks, coulomb counter running) + Daily balance: Today +150mAh SOLAR + +t=+1h: VBAT = 3.5V → Normal (INA228 ALERT not triggered) + SOC: 45% + +t=+2h: VBAT = 3.08V → INA228 ALERT fires (< 3100mV lowv_sleep_mv) + - lowVoltageAlertISR() → sets lowVoltageAlertFired flag + - tickPeriodic() detects flag in next tick() + - board.initiateShutdown(SHUTDOWN_REASON_LOW_VOLTAGE) + - CE latched (GPIO4 latch HIGH → FET ON → CE LOW → charging active) + - RTC: Wake in 1h (LOW_VOLTAGE_SLEEP_MINUTES = 60) + - sd_power_system_off() → System Sleep with GPIO latch (< 500µA) + +t=+3h: RTC wakes → system boots → early boot check + - Ina228Driver::readVBATDirect() → VBAT = 3.15V + - VBAT < lowv_wake_mv (3300mV) → immediately back to sleep + - configureRTCWake(60) + sd_power_system_off() + +t=+4h: RTC wakes → system boots → early boot check + - VBAT = 3.20V → still below 3300mV → back to sleep + +t=+5h: RTC wakes → system boots → early boot check + - VBAT = 3.45V (solar recovery!) + - VBAT > lowv_wake_mv (3300mV) → normal boot + - Low-voltage recovery marked, SOC at 0% + - Coulomb counter restarts + - Daily balance rebuilds +``` + +### Scenario B: Critical Discharge (Rev 1.1 — no hardware UVLO) +``` +In Rev 1.1 there is no hardware UVLO (TPS62840 EN via 3.3V_off switch). +The INA228 ALERT on P1.02 serves as software interrupt for System Sleep. + +t=0: VBAT = 3.08V → INA228 ALERT fires + - tickPeriodic() → initiateShutdown() + - System Sleep with GPIO latch (< 500µA), CE latched LOW (charging active), RTC wake 1h + +t=+1h: RTC wake → early boot → VBAT = 3.05V (still below 3300mV) + - Immediately back to sleep (CE remains latched LOW → solar charging possible) + +t=+2h: RTC wake → VBAT = 2.95V (dropped further, no solar) + - Immediately back to sleep + - Board continues cycling at < 500µA + hourly boot (~0.03mAh) + +t=+∞: At < 500µA the battery can survive for months + - As soon as solar available → VBAT rises → normal boot at >3300mV + - NO latching: system can ALWAYS recover on its own +``` + +### Scenario C: Energy Balance Tracking - LiFePO4 +``` +Day 0: VBAT = 3.2V, SOC = 85% + 24 hourly entries land in hours[]: Σ charged +800mAh (solar), Σ discharged -450mAh + last_24h_net = +350mAh → SOLAR + +Day 1: VBAT = 3.15V, SOC = 72% + Charged: +650mAh, Discharged: -520mAh + last_24h_net = +130mAh → SOLAR + +Day 2: VBAT = 3.05V, SOC = 58% + Charged: +200mAh (heavy clouds), Discharged: -480mAh + last_24h_net = -280mAh → BAT (living_on_battery = true) + + 3-day avg: (350+130-280)/3 = +66.7 mAh/day + 7-day avg: (350+130-280)/7 = +28.6 mAh/day + (168h window still part-filled — the sum is always divided by 7) + → 7-day avg positive → TTL stays 0 (shown as N/A) + +Day 3: VBAT = 2.95V, SOC = 42% + Charged: +150mAh (heavy clouds), Discharged: -500mAh + last_24h_net = -350mAh → BAT + + 3-day avg: (130-280-350)/3 = -166.7 mAh/day + 7-day avg: (350+130-280-350)/7 = -21.4 mAh/day → negative → TTL is calculated + living_on_battery = true + + TTL calculation (7-day avg basis, ≥25 °C → f(T)=1, nothing trapped): + remaining = 42% × 1500mAh = 630mAh + deficit = |-21.4| = 21.4 mAh/day + TTL = (630 / 21.4) × 24 ≈ 706 hours ≈ 29.4 days + + CLI output: "-350/-167/-21mAh C:150 D:500 3C:.. 3D:.. 7C:.. 7D:.. BAT M:45% T:29d10h" +``` + +--- + +## See Also + +- [README.md](README.md) — User documentation and CLI reference +- [DATASHEET.md](DATASHEET.md) — Hardware specifications and pinout +- [TELEMETRY.md](TELEMETRY.md) — Telemetry channels explained (what the app displays) +- [QUICK_START.md](QUICK_START.md) — Commissioning and configuration +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) — Frequently asked questions +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All CLI commands at a glance + +### Datasheets +- **INA228**: https://www.ti.com/product/INA228 +- **RV-3028-C7**: https://www.microcrystal.com/en/products/real-time-clock-rtc-modules/rv-3028-c7/ +- **BQ25798**: https://www.ti.com/product/BQ25798 +- **TPS62840**: https://www.ti.com/product/TPS62840 +- **nRF52840**: https://www.nordicsemi.com/products/nrf52840 diff --git a/variants/inhero_mr2/docs/QUICK_START.md b/variants/inhero_mr2/docs/QUICK_START.md new file mode 100644 index 0000000000..5c3ee7ce2d --- /dev/null +++ b/variants/inhero_mr2/docs/QUICK_START.md @@ -0,0 +1,206 @@ +# Inhero MR2 Quick-Start + +This guide walks you through commissioning and the most important CLI commands. + +## 1) Prepare Temperature Sensor (TS/NTC) +- Either use the 3-pin battery connector with TS/NTC, or close the onboard NTC solder bridge on the back side. +- Firmware NTC type: NCP15XH103F03RC (10k @ 25C, Beta 3380). +- Purpose: The charger uses the TS pin for JEITA/frost logic. +- → [FAQ #2 — Battery packs without NTC](FAQ.md#2-can-i-use-battery-packs-without-a-built-in-ntc) + +## 2) Connect Antennas +- Never operate without an antenna — risk of damage to the RF frontend. + +## 3) Connect Battery +- A charge level >90% is recommended so the battery can be fully charged via USB and the SOC calculation starts reliably. + +> **⚠ WARNING — No Reverse Polarity Protection:** The board has no hardware reverse polarity protection. Connecting the battery with reversed polarity will cause immediate, irreversible damage. Always verify correct polarity before plugging in. + +## 4) Configure Repeater via USB +- Connect the repeater to a computer via USB cable. +- Go to https://meshcore.io/flasher -> Repeater Setup to configure (LoRa settings, name, admin password, etc.). +- This sets the basic parameters on the device. + +## 5) Open CLI +- https://meshcore.io/flasher -> Console +- or MeshCore App -> Manage -> Command-Line +- Board-specific commands are set here. + +## 6) Set Battery Chemistry +- Command: + - set board.bat liion1s + - or set board.bat lifepo1s + - or set board.bat lto2s + - or set board.bat naion1s +- Defines charge parameters and low-voltage thresholds. +- → [FAQ #1](FAQ.md#1-which-battery-chemistry-should-i-choose) | [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Which battery chemistry should I choose? + +## 7) Set Battery Capacity +- Command: set board.batcap <mAh> +- Example: set board.batcap 10000 +- Important for accurate SOC calculation. +- → [FAQ #4 — What mAh value?](FAQ.md#4-what-mah-value-should-i-enter-for-set-boardbatcap) + +## 8) Set Maximum Charge Current +- Command: set board.imax <mA> +- Firmware range: 50 to 1500 mA (BQ25798 minimum: 50mA). +- Choose to match your solar setup so currents fit the PG check. +- Rule of thumb: panel power / panel voltage * 1.2 +- → [FAQ #5 — Why set imax?](FAQ.md#5-why-is-it-important-to-set-the-maximum-charge-current-with-set-boardimax) + +## 9) Set Frost Charge Current Reduction +- Command: set board.fmax <0%|20%|40%|100%> +- Limits the maximum charge current in the T-Cool range (approx. -2 °C to +3 °C, see JEITA table in README) to X% of board.imax. +- 0% = Charging blocked in T-Cool range. +- 20% = max. 20% of imax (e.g. 500mA → 100mA at approx. -2 °C to +3 °C). +- 40% = max. 40% of imax (e.g. 500mA → 200mA at approx. -2 °C to +3 °C). +- 100% = no reduction, full charge current even in cold conditions. +- Below approx. -2 °C (T-Cold): Charging always completely blocked by JEITA. +- Important: Only charging is restricted. With sufficient solar, the board continues to run on solar power — the battery is neither charged nor discharged. +- Note: For LTO and Na-Ion, JEITA is disabled (`set board.fmax` is rejected with an error, charging works even in frost). +- → [FAQ #6 — What does fmax control?](FAQ.md#6-what-does-set-boardfmax-control) + +## 10) Enable MPPT +- Command: set board.mppt <0|1> +- 1 = MPPT on, 0 = MPPT off. +- Typically enable for solar input. + +## 11) Enable/Disable LEDs +- Command: set board.leds <on|off> or set board.leds <1|0> +- Controls heartbeat LED and BQ status LED (bootloader LED patterns are unaffected). +- → [FAQ #17 — What do the LEDs mean?](FAQ.md#17-what-do-the-leds-mean) + +## 12) Fully Charge Battery (SOC Sync) +- Fully charge the battery once via USB so the SOC synchronizes cleanly. +- → [FAQ #11 — SOC shows 0% or N/A?](FAQ.md#11-why-does-the-soc-show-0-or-na) + +> **Cold weather note:** SOC% is purely Coulomb-based and does not change with temperature. However, `get board.telem` shows both the stored and extractable capacity when it's cold: `SOC:95.0% (78%)`. The firmware uses a Trapped Charge model — at low SOC and cold temperatures, the extractable value drops steeply (the bottom of the discharge curve is "locked"). See [FAQ #13](FAQ.md#13-how-does-temperature-derating-work) for details. + +## Additional Notes (Practical) +- After setting the battery chemistry, a quick check with `get board.bat` confirms the setting was saved. +- For solar operation, `set board.mppt 1` is recommended; for USB-only operation, MPPT can stay off. + +## Example Values per Battery Chemistry (Starting Point) +These values are safe starting points and should be adjusted to match battery, panel, and usage profile. + +The `imax` values below are derived from the rule of thumb from section 8: +**`imax ≈ panel power ÷ panel voltage × 1.2`** (e.g. 2 W ÷ 5 V × 1.2 ≈ 480 mA → round to 500). +`fmax` is given as a percentage of `imax` and only applies in the T-Cool zone (approx. -2 °C to +3 °C, see JEITA table in README). + +### Li-Ion 1S (3.7V nominal) +```bash +set board.bat liion1s # chemistry: 1S Li-Ion (sets charge profile + low-V thresholds) +set board.imax 500 # max charge current — ≈ 2 W panel @ 5 V (2 W ÷ 5 V × 1.2 ≈ 480 mA) +set board.fmax 20% # T-Cool (approx. -2…+3 °C): cap at 20 % × 500 mA = 100 mA +``` + +### LiFePO4 1S (3.2V nominal) +```bash +set board.bat lifepo1s # chemistry: 1S LiFePO4 (sets charge profile + low-V thresholds) +set board.imax 300 # max charge current — ≈ 1 W panel @ 5 V (1 W ÷ 5 V × 1.2 ≈ 240 mA, rounded up for headroom) +set board.fmax 40% # T-Cool (approx. -2…+3 °C): cap at 40 % × 300 mA = 120 mA +``` + +### LTO 2S (2x 2.3V nominal) +```bash +set board.bat lto2s # chemistry: 2S LTO (sets charge profile + low-V thresholds) +set board.imax 700 # max charge current — ≈ 3 W panel @ 5 V (3 W ÷ 5 V × 1.2 = 720 mA → 700) + # fmax is omitted: rejected for LTO (JEITA disabled — LTO charges even at frost) +``` + +### Na-Ion 1S (3.1V nominal) +```bash +set board.bat naion1s # chemistry: 1S Na-Ion (sets charge profile + low-V thresholds) +set board.imax 500 # max charge current — ≈ 2 W panel @ 5 V (2 W ÷ 5 V × 1.2 ≈ 480 mA) + # fmax is omitted: rejected for Na-Ion (JEITA disabled) +``` + +Note: `set board.fmax` is rejected with an error for LTO and Na-Ion (JEITA disabled); `get board.fmax` shows N/A. + +## Solar Panel Notes +- Maximum open-circuit voltage (Voc) for the input: 25V. +- Typical panels are 5V or 6V (MPP below that). +- The board has buck/boost and can charge higher battery voltages from lower panel voltages. +- 24V panels or series connections may exceed the 25V Voc limit and are not suitable. +- Wattage class: at least 1W, typically 2W. +- For 1W panels, a battery capacity of >7Ah is recommended. +- This applies only with south-facing, vertical mounting, and an unshaded location. +- In worse solar conditions, either use 2W or increase battery capacity for "winter survival". + +→ [FAQ #8 — Which solar panels?](FAQ.md#8-which-solar-panels-can-i-connect) + +## USB Charging +- The board can also be charged via USB-C (5V). +- USB-C VBUS is routed to the BQ25798 VBUS input via a **Schottky diode** — the same single input as the solar panel. The BQ25798 has only one VBUS input and does not distinguish between USB and solar. +- The Schottky diode prevents backflow from the solar panel to the USB bus. However, current **can** flow from USB-VBUS out through the solar connector. +- CC1/CC2 are pulled to GND via 4.7kΩ (USB sink, 5V default). +- **⚠ Warning:** Since VBUS-USB and VBUS-BQ share the same bus (via the Schottky diode), a **short circuit on the solar connector will also short VBUS-USB**. Never short-circuit the solar input while USB is connected. + +## Voltage Thresholds per Battery Chemistry +Thresholds are optimized for maximum lifespan and stable operation. + +| Battery Chemistry | lowv_sleep_mv (System Sleep) | lowv_wake_mv (0% SOC) | Hysteresis | +|---|---|---|---| +| Li-Ion 1S | 3100 | 3300 | 200mV | +| LiFePO4 1S | 2700 | 2900 | 200mV | +| LTO 2S | 3900 | 4100 | 200mV | +| Na-Ion 1S | 2500 | 2700 | 200mV | + +## Low-Voltage Behavior +- **Low-Voltage System Sleep:** When VBAT drops below `lowv_sleep_mv`, the INA228 ALERT interrupt fires (P1.02). The firmware latches CE HIGH (`digitalWrite(BQ_CE_PIN, HIGH)` → FET ON → CE LOW → charging active), configures the RTC wake timer, and enters System Sleep with GPIO latch (< 500µA). P0.04 is excluded from `disconnectLeakyPullups()` so the GPIO latch stays HIGH. Periodic RTC wakes (hourly) check voltage — only when recovery above `lowv_wake_mv` does it boot normally. +- **Solar Recovery:** In System Sleep, GPIO4 latch is preserved HIGH → DMN2004TK-7 FET ON → CE LOW → charging active. Solar charging continues autonomously until the battery charges above `lowv_wake_mv`. Without GPIO latch (RAK unpowered): ext. pull-down on gate → FET OFF → CE HIGH → charging OFF (safety default). + +## CLI Examples (Compact) +```bash +# Battery chemistry and capacity +set board.bat liion1s +set board.batcap 10000 + +# Charge parameters +set board.imax 500 +set board.fmax 20% +set board.mppt 1 + +# LEDs +set board.leds off + +# Status checks +get board.bat +get board.imax +get board.fmax +get board.mppt +get board.leds +get board.batcap +get board.telem +get board.stats +get board.cinfo +get board.selftest +get board.conf +``` + +## Getter Quick Reference (all relevant board getters) +- `get board.bat` - Current battery type (liion1s, lifepo1s, lto2s, naion1s, none). +- `get board.fmax` - Current frost charge behavior (0%/20%/40%/100%; N/A for LTO/Na-Ion). +- `get board.imax` - Maximum charge current in mA. +- `get board.mppt` - MPPT status (0/1). +- `get board.leds` - LED status (Heartbeat + BQ Stat). +- `get board.batcap` - Battery capacity in mAh (set/default). +- `get board.telem` - Real-time telemetry (Battery/Solar incl. SOC, V/I/T). See [TELEMETRY.md](TELEMETRY.md) for what the app displays. +- `get board.stats` - Energy balance (24h/3d/7d), charge/discharge breakdown and MPPT ratio. +- `get board.cinfo` - Charger status (Charger State + Flags). +- `get board.selftest` - I²C hardware probe (`INA:OK BQ:OK RTC:OK BME:OK`). RTC includes a write/readback verify (state `WR_FAIL` on mismatch). +- `get board.conf` - Summary of all configs (B, F, M, I, Vco, V0). +- `get board.tccal` - NTC temperature calibration offset in °C (0.00 = default). + - → [FAQ #12 — When should I run tccal?](FAQ.md#12-when-should-i-run-set-boardtccal) + +--- + +## See Also + +- [README.md](README.md) — Overview, feature matrix and diagnostics +- [DATASHEET.md](DATASHEET.md) — Hardware specifications and pinout +- [TELEMETRY.md](TELEMETRY.md) — Telemetry channels explained (what the app displays) +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) — Frequently asked questions +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All board-specific CLI commands at a glance +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation diff --git a/variants/inhero_mr2/docs/README.md b/variants/inhero_mr2/docs/README.md new file mode 100644 index 0000000000..00dd8707b0 --- /dev/null +++ b/variants/inhero_mr2/docs/README.md @@ -0,0 +1,382 @@ +# Inhero MR-2 + +<img src="img/front.jpg" alt="Inhero MR2" width="400"> + +## Table of Contents + +- [Overview](#overview) +- [Current Feature Matrix](#current-feature-matrix) +- [Power Management Features](#power-management-features) +- [Firmware Build](#firmware-build) +- [CLI Commands](#cli-commands) +- [Diagnostics & Troubleshooting](#diagnostics--troubleshooting) +- [Regulatory Notes & CE Compliance](#regulatory-notes--ce-compliance-red-201453eu) +- [See Also](#see-also) + +## Overview + +The Inhero MR-2 is an application-specific hardware platform designed for autonomous, long-term operation of mesh infrastructure. Unlike conventional general-purpose solutions, it is optimized for maximum reliability at hard-to-reach locations. With an active idle consumption of only 6.0 mA at 4.2 V and 7.7 mA at 3.3 V (USB off, no radio TX), the board is exceptionally efficient for a full-featured repeater — enabling long runtimes even with compact batteries and small solar panels. A universal solar input with active MPPT maximizes energy harvesting, enabling compact, low-profile installations while avoiding costly over-dimensioning of peripherals. With native support for Li-Ion, LiFePO4, LTO and Na-Ion batteries, combined with autonomous recovery logic via RTC wakeup, a consistent "install & forget" approach is achieved even under extreme environmental conditions. The design minimizes long-term operating costs at sites where manual maintenance visits would be disproportionately expensive due to difficult accessibility. + +**Hardware Version:** Rev 1.1 +**Key Features:** +- **Core:** Based on RAK4630 (nRF52840 + SX1262). +- **Power Path:** BQ25798 Buck/Boost Charger. Enables energy harvesting even when solar voltage is below battery voltage (critical for low-light conditions). +- **High-Efficiency Rail:** 3.3V rail via TPS62840 for maximum efficiency. +- **Robust Monitoring:** INA228 Coulomb Counter for precise SOC tracking (essential for LiFePO4 chemistry) and long-term energy statistics. +- **Universal Solar Input:** 3.6V – 24V with autonomous MPPT tracking and integrated protection against "stuck states" (hardware watchdog logic). +- **Environmental Sensing & Timekeeping:** Integrated BME280 and RV-3028 RTC for autonomous wake-up management and precise time base. See [FAQ #23](FAQ.md#23-why-does-the-repeater-board-need-a-correct-time) for why a correct clock matters. +- **Form Factor:** Only 45 × 40 mm – optimized for low-profile enclosures and minimal mechanical stress. + +> **⚠ WARNING — No Reverse Polarity Protection:** The board has no hardware reverse polarity protection on the battery or solar input. Connecting with reversed polarity will cause immediate, irreversible damage. Always verify correct polarity before connecting any power source. + +## Current Feature Matrix + +| Feature | Status | Notes | +|---------|--------|-------| +| INA228 ALERT → Low-Voltage System Sleep | Active | ISR on P1.02 → volatile flag → tickPeriodic() → System Sleep with GPIO latch + RTC Wake | +| RTC Wakeup (Low-Voltage Recovery) | Active | 60 min (periodic) | +| BQ CE Pin Safety (FET-inverted) | Active | GPIO HIGH → FET ON → CE LOW → charge ON (BQ25798 CE active-low), Dual-Layer: GPIO + I2C | +| System Sleep with latched CE | Active | < 500µA, GPIO4 latch preserved HIGH → FET ON → CE LOW → solar charging possible | +| SOC 0% after Low-Voltage Recovery | Active | SOC initialized to 0% on recovery, auto-sync on "Charging Done" | +| SOC via INA228 + manual battery capacity | Active | `set board.batcap` available | +| SOC→Li-Ion mV Mapping (workaround) | Active | Will be removed when MeshCore transmits SOC% natively | +| MPPT Recovery + Stuck-PGOOD Handling | Active | Cooldown logic active | +| PFM Forward Mode | Active (chip default) | Enabled by BQ25798 power-on default (PFM_FWD_DIS=0, REG0x12); the firmware does not modify it. Improves efficiency at low solar currents | + +## Power Management Features + +### Low-Voltage Handling (Flag/Tick Architecture) + +1. **INA228 ALERT** fires at `lowv_sleep_mv` (hardware interrupt on P1.02) +2. **ISR** sets `lowVoltageAlertFired = true` (volatile flag only, no FreeRTOS call) +3. **`tickPeriodic()`** (main loop, next `tick()`) checks flag → shutdown: + - CE pin → HIGH (FET ON → CE LOW → charging active) + - P0.04 excluded from `disconnectLeakyPullups()` → GPIO latch preserved in sleep + - RTC wake configured (`LOW_VOLTAGE_SLEEP_MINUTES` = 60 min) + - `sd_power_system_off()` → **System Sleep with GPIO latch** (< 500µA) +4. **RTC Wake** (hourly) → system boots, early-boot checks VBAT: + - Below `lowv_wake_mv` → immediately back to System Sleep (CE remains latched LOW) + - Above `lowv_wake_mv` → normal boot, SOC starts at 0% + +> **Note**: All I2C operations (MPPT, SOC, Hourly Stats) run in main loop context +> via `tickPeriodic()` — no FreeRTOS tasks for I2C, no mutex needed. + +### BQ CE Pin (Rev 1.1 — FET-inverted) +- **DMN2004TK-7 N-FET**: Gate ← GPIO4 (ext. pull-down), Drain → CE, Source → GND +- **GPIO HIGH** → FET ON → CE LOW → **charging ON** (BQ25798 CE active-low) +- **GPIO LOW / High-Z** → ext. pull-down on gate → FET OFF → pull-up on CE → CE HIGH → **charging OFF** +- **System Sleep**: GPIO4 latch preserved HIGH (excluded from `disconnectLeakyPullups()`) → FET ON → CE LOW → **solar charging active** +- **Safety default**: RAK unpowered/unflashed → pull-down on gate → FET OFF → CE HIGH → **charging disabled** +- **Dual-Layer**: CE pin (hardware FET) + `setChargeEnable()` (I2C register) + +### Voltage Thresholds (all chemistries) + +| Chemistry | lowv_sleep_mv | lowv_wake_mv | Hysteresis | +|-----------|--------------|-------------|------------| +| Li-Ion 1S | 3100 | 3300 | 200mV | +| LiFePO4 1S | 2700 | 2900 | 200mV | +| LTO 2S | 3900 | 4100 | 200mV | +| Na-Ion 1S | 2500 | 2700 | 200mV | + +- **lowv_sleep_mv**: INA228 ALERT threshold → triggers System Sleep with GPIO latch +- **lowv_wake_mv**: RTC wake threshold → boot only when VBAT is above, also 0% SOC marker + +### System Sleep Power Consumption +- **< 500µA** total consumption (nRF52840 System-Off + RTC + quiescent currents of all components) +- GPIO4 latch preserved HIGH → FET ON → CE LOW → solar charging active + +### Active Idle Power Consumption +- **6.0 mA** @ VBAT 4.2 V (USB off, no radio TX) +- **7.7 mA** @ VBAT 3.3 V (USB off, no radio TX) +- **+0.8–1.0 mA** with USB peripheral enabled +- USB is auto-managed: enabled on VBUS detect, disabled on removal + +### Power Saving Measures +- **WFE Idle** (`board.sleep(0)`): CPU enters Wait-For-Event between loop iterations. Wakes on any interrupt (radio, SysTick, USB, I2C) — typically within 1 ms. Reduces nRF52840 CPU current from ~3 mA (busy-loop) to ~0.5–0.8 mA. +- **USB Auto-Disable**: nRF52840 USB peripheral is automatically disabled when no VBUS is detected, saving ~0.8–1.0 mA. Re-enabled automatically when USB cable is connected. + +### Coulomb Counter & SOC Tracking +- **Real-time SOC tracking** via INA228 (±0.1% accuracy) +- **100mΩ shunt resistor** (1.6A max current) +- **200mV uniform hysteresis** for all chemistries (lowv_sleep_mv → lowv_wake_mv) +- **Manual capacity:** `set board.batcap` for fixed capacity + +### SOC→Li-Ion mV Mapping (Workaround) +- **Problem**: MeshCore only transmits `getBattMilliVolts()`, not SOC%. The Companion App uses a Li-Ion curve for SOC calculation — incorrect display for LiFePO4/LTO. +- **Solution**: When valid coulomb-counting SOC is available, an equivalent Li-Ion 1S OCV (3000–4200 mV) is returned, so the app displays the correct SOC%. See [TELEMETRY.md](TELEMETRY.md) for details on how this affects the app display. +- This workaround will be removed once MeshCore supports native SOC% transmission. +- → [FAQ #11 — SOC shows 0% or N/A?](FAQ.md#11-why-does-the-soc-show-0-or-na) + +### Time-To-Live (TTL) Prediction +- **Time base:** 7-day moving average (`avg_7day_daily_net_mah`) of daily net energy consumption +- **Data source:** 168-hour ring buffer (7 days) with hourly INA228 coulomb counter samples (charged/discharged/solar mAh) +- **Formula:** `TTL_hours = max(0, SOC% × capacity_mah / 100 − capacity_mah × (1 − f(T))) / |avg_7day_daily_net_mah| × 24` +- **f(T):** Cold-temperature derating factor (trapped-charge model) — at low temperatures part of the stored charge is unusable and is subtracted first; f(T) = 1 at warm temperatures +- **Prerequisites:** `living_on_battery == true` (24h deficit), min. 24h data, capacity known +- **TTL = 0:** Solar surplus, no 24h data available, or capacity unknown +- **CLI:** TTL is shown in `get board.stats` (BAT mode only, e.g. `T:12d0h`) +- **Telemetry:** Transmitted as days via CayenneLPP Distance field (max. 990 days for "infinite"). See [TELEMETRY.md](TELEMETRY.md) for channel details. + +### Solar Power Management + +- **Solar current display:** The BQ25798 IBUS ADC is inaccurate at low currents (~±30mA error). Therefore solar current is displayed in steps: + - `0mA` — ADC reports exactly 0 (no solar current) + - `<50mA` — 1–49mA (ADC unreliable in this range) + - `~72mA` — 50–100mA with rounding symbol `~` (limited accuracy) + - `385mA` — >100mA without rounding symbol (sufficiently accurate) + - Always integer without decimal places (no pseudo-precision) +- **PFM Forward Mode:** PFM forward mode is enabled by BQ25798 power-on default (PFM_FWD_DIS=0, REG0x12); the firmware does not modify it. Improves efficiency at low currents. +- **MPPT VOC_PCT 81.25%:** The BQ25798 MPPT is configured to VOC_PCT=81.25% (instead of the chip default 87.5%). This value matches the typical Vmp/Voc ratio of crystalline silicon solar cells (~80-83%). +- **MPPT Recovery:** Re-enables MPPT on PowerGood=1 (readback check: only on actual change) +- **BQ INT pin not used:** No interrupt — pure polling every 60s in `runMpptCycle()` +- **Error monitoring:** Diagnostic commands show FAULT_STATUS registers (0x20, 0x21) for detailed analysis incl. VBAT_OVP, VBUS_OVP and temperature conditions +- **VREG display:** Shows the actually configured battery regulation voltage in diagnostics for threshold verification + +### JEITA Temperature Zone Configuration + +The BQ25798 uses the TS pin (NTC thermistor) for JEITA-compliant temperature-dependent charge control. The Inhero MR2 uses a voltage divider (RT1=5.6 kΩ pullup to REGN, RT2=27 kΩ parallel to GND) that shifts TS thresholds lower than the TI reference design (5.24 kΩ / 30.31 kΩ). The shift is **temperature-dependent**: ~5–6 °C in the cold range, ~2–3 °C in the warm/hot range (because at low temperatures the NTC resistance is large relative to RT2, amplifying the divider mismatch). + +| JEITA Zone | BQ25798 Threshold | TI Reference | Inhero MR2 (actual) | Shift | Firmware Config | +|------------|-------------------|--------------|----------------------|-------|-----------------| +| T-Cold (charge suspend) | VT1 = 72.0% REGN | +3.7 °C | −2.0 °C | −5.7 °C | — (not configurable) | +| T-Cool (reduced current) | VT2 = 69.8% REGN | +7.9 °C | +2.8 °C | −5.1 °C | `set board.fmax` | +| T-Warm start | VT3 = 37.7% REGN | +54.5 °C | +52.2 °C | −2.3 °C | `TS_WARM = 55°C` register setting | +| T-Hot (charge suspend) | VT5 = 34.2% REGN | +59.9 °C | +57.7 °C | −2.2 °C | — (not configurable) | + +> Calculation based on: NTC 103AT (B25/50=3435) for TI reference, NCP15XH103F03RC (B25/85=3380) for Inhero. Typical %REGN values from BQ25798 datasheet. + +**Key firmware settings in `configureBaseBQ()`:** + +- **`TS_WARM = 55°C`** (BQ register value): Moves the WARM zone threshold from the default 45 °C setting (44.8% REGN, ~41.8 °C with Inhero divider) up to 37.7% REGN (~52.2 °C with Inhero divider). This prevents premature WARM zone entry at moderate temperatures. +- **`JEITA_VSET = UNCHANGED`**: No battery regulation voltage reduction in the WARM zone. The POR default (VREG−400 mV) would reduce VREG to 3.1 V for LiFePO4, causing VBAT_OVP at normal battery voltages (3.3–3.5 V). +- **`JEITA_ISETH = ICHG unchanged`** (POR default, retained): No charge current reduction in the WARM zone. Combined with JEITA_VSET=UNCHANGED, the WARM zone is effectively neutralized — charging continues at full voltage and full current. +- **`AUTO_IBATDIS = disabled`**: Disables the BQ25798's automatic 30 mA battery discharge during VBAT_OVP. The POR default actively drains the battery at ~30 mA (IBAT_LOAD) when OVP is triggered, which is counterproductive for solar-powered systems. + +> **Background:** With default BQ25798 settings, the combination of the Inhero divider offset and LiFePO4 chemistry caused a failure chain at ~42 °C: WARM zone entry → VREG reduced to 3.1 V → VBAT_OVP (battery at 3.47 V > 104% × 3.1 V) → active 30 mA discharge → net −45 mA drain despite solar input. The settings above prevent this entirely. The WARM zone (52–58 °C with Inhero divider) now has no effect on charging behavior. + +## Firmware Build + +```bash +# Repeater (default) +platformio run -e Inhero_MR2_repeater + +# Repeater with RS232 bridge (Serial2 on P0.19/P0.20) +platformio run -e Inhero_MR2_repeater_bridge_rs232 + +# Sensor +platformio run -e Inhero_MR2_sensor +``` + +## CLI Commands + +### Get Commands +```bash +get board.bat # Query current battery type + # Output: liion1s | lifepo1s | lto2s | naion1s | none + +get board.fmax # Query frost charge behavior + # Output: 0% | 20% | 40% | 100% + # Value = max charge current in T-Cool range + # (approx. -2 °C to +3 °C, see JEITA table in README), + # relative to board.imax + # 40% at imax=500mA → max. 200mA charge current in T-Cool range + # 0% = charging blocked in T-Cool range + # 100% = no reduction (full current even in cold) + # Below approx. -2 °C (T-Cold): charging always completely blocked (JEITA) + # Note: Only charging is restricted. With sufficient + # solar, the board continues to run on solar power — + # the battery is neither charged nor discharged. + # LTO / Na-Ion batteries: N/A (JEITA disabled, charges even in frost) + +get board.imax # Query maximum charge current + # Output: <current>mA (e.g. 200mA) + +get board.mppt # Query MPPT status + # Output: MPPT=1 (enabled) | MPPT=0 (disabled) + +get board.telem # Query real-time telemetry with SOC + # Output: B:<V>V/<I>mA/<T>C SOC:<percent>% S:<V>V/<solar current> + # Examples: + # B:3.85V/125.4mA/22C SOC:68.5% S:5.12V/385mA (>100mA: accurate) + # B:3.85V/-8.2mA/18C SOC:72.0% S:4.90V/~72mA (50-100mA: ~estimate) + # B:3.30V/-45.0mA/5C SOC:40.1% S:0.00V/<50mA (<50mA: ADC inaccurate) + # Output variants: + # - SOC:N/A — no valid coulomb-counting SOC available + # - SOC:68.5% (52%) — second value = cold-derated SOC, + # shown when the temperature derating factor is < 1 + # - <T>C becomes N/A when the NTC temperature is unavailable + # Components: + # - B: Battery (Voltage/Current/Temperature/SOC) + # - S: Solar (Voltage/Current — accuracy depends on BQ25798 IBUS ADC) + +get board.stats # Query energy statistics (balance + MPPT) + # Output: <24h>/<3d>/<7d>mAh C:<24h> D:<24h> 3C:<3d> 3D:<3d> 7C:<7d> 7D:<7d> <SOL|BAT> M:<mppt>% T:<ttl> + # Example: +125/+45/+38mAh C:200 D:75 3C:150 3D:105 7C:140 7D:102 SOL M:85% T:N/A + # Example: -30/-45/-40mAh C:10 D:40 3C:5 3D:50 7C:8 7D:48 BAT M:45% T:72h + # Components: + # - +125: Last 24h net balance (charge - discharge) in mAh + # - +45: 3-day average net balance in mAh + # - +38: 7-day average net balance in mAh + # - C/D: Charged/Discharged mAh (24h) + # - 3C/3D: 3-day average charged/discharged mAh + # - 7C/7D: 7-day average charged/discharged mAh + # - SOL: Running on solar (self-sufficient) + # - BAT: Living on battery (deficit mode) + # - M:85%: MPPT enabled percentage (7-day average) + # - T:72h: Time To Live (only shown if BAT mode, 7d-avg basis) + # Format: T:12d5h (≥24h) or T:72h (<24h) or T:N/A + +get board.cinfo # Charger info + last PG-stuck HIZ toggle + # Output: <state> + flags + # States: !CHG, PRE, CC, CV, TRICKLE, TOP, DONE + +get board.selftest # I²C hardware probe (all on-board devices) + # Output: INA:<state> BQ:<state> RTC:<state> BME:<state> + # States: OK | NACK | WR_FAIL (RTC only, write-verify mismatch) + +get board.conf # Query all configuration values + # Output: B:<bat> F:<fmax> M:<mppt> I:<imax> Vco:<voltage> V0:<0%SOC> + +get board.batcap # Query battery capacity + # Output: <capacity> mAh (set) or <capacity> mAh (default) + # Shows whether capacity was manually set or chemistry default + +get board.tccal # Query NTC temperature calibration offset + # Output: TC offset: <+/-offset> C (0.00=default) + +get board.leds # Query LED enable status + # Output: "LEDs: ON (Heartbeat + BQ Stat)" or "LEDs: OFF (Heartbeat + BQ Stat)" + # Shows whether heartbeat LED and BQ25798 stat LED are enabled +``` + +### Set Commands +```bash +set board.bat <type> # Set battery type + # Options: lto2s | lifepo1s | liion1s | naion1s | none + # none = no battery / unknown (charging disabled) + +set board.fmax <behavior> # Set frost charge behavior + # Options: 0% | 20% | 40% | 100% + # Limits charge current in T-Cool range + # (approx. -2 °C to +3 °C, see JEITA table in README) + # to X% of board.imax + # 0% = charging blocked in T-Cool range + # 20% = max. 20% of imax in T-Cool range + # 40% = max. 40% of imax in T-Cool range + # 100% = no reduction + # Below approx. -2 °C (T-Cold): charging always blocked (JEITA) + # Note: Only charging is restricted. With sufficient + # solar, the board continues to run on solar power — + # the battery is neither charged nor discharged. + # N/A for LTO / Na-Ion batteries (JEITA disabled) + +set board.imax <current> # Set maximum charge current in mA + # Range: 50-1500mA (BQ25798 minimum: 50mA) + +set board.mppt <1|0> # Enable/disable MPPT + # 1 = enabled, 0 = disabled + +set board.batcap <capacity> # Set battery capacity in mAh + # Range: 100-100000 mAh + # Used for accurate SOC calculation + +set board.tccal # Calibrate NTC temperature + # Two modes: + # 1) set board.tccal → auto-calibration via BME280 + # Output: TC auto-cal: BME=<temp> offset=<+/-offset> C + # 2) set board.tccal reset → reset offset to 0.00 + # Output: TC calibration reset to 0.00 (default) + +set board.leds <on|off> # Enable/disable heartbeat + BQ stat LED + # on/1 = enable, off/0 = disable + # Boot LEDs follow this setting; only the + # low-voltage recovery flash (3 blue blinks) + # is always active + +set board.soc <percent> # Manually set SOC + # Range: 0-100 + # Note: INA228 must be initialized +``` + +## Diagnostics & Troubleshooting + +### I²C Hardware Self-Test + +```bash +get board.selftest +``` + +Probes all I²C devices on the board and reports their status in one line: + +``` +INA:OK BQ:OK RTC:OK BME:OK +``` + +| Device | Address | Test | +|---|---|---| +| `INA` | `0x40` | INA228 power monitor — address ACK | +| `BQ` | `0x6B` | BQ25798 charger — address ACK | +| `RTC` | `0x52` | RV-3028 RTC — address ACK **plus** user-RAM (`0x1F`) write/readback verification with two patterns (`0xA5`, `0x5A`); original byte is restored | +| `BME` | `0x76` | BME280 environment sensor — address ACK | + +Possible per-device states: + +- **`OK`** — device responds (and, for the RTC, persists writes correctly) +- **`NACK`** — device does not acknowledge on the I²C bus +- **`WR_FAIL`** — *RTC only* — chip ACKs but write/readback mismatched. The same write-verify runs in `BoardConfigContainer::begin()` and triggers the slow red error LED on failure, so the board is flagged as faulty before deployment. + +### BQ25798 Register Verification +The diagnostic functions enable precise verification of BQ25798 registers against the datasheet: + +**Key Registers:** +- **0x0F (CHARGER_CONTROL_0)**: EN_CHG (Bit 5) +- **0x15 (MPPT_CONTROL)**: EN_MPPT (Bit 0), VOC_PCT (Bits 7-5), VOC_DLY (Bits 4-3), VOC_RATE (Bits 2-1) +- **0x1B (CHARGER_STATUS_0)**: PG_STAT (Bit 3), VINDPM (Bit 6), IINDPM (Bit 7) +- **0x1C (CHARGER_STATUS_1)**: CHG_STAT (Bits 7-5), VBUS_STAT (Bits 4-1) +- **0x1F (CHARGER_STATUS_4)**: Temperature status (Bits 3-0) + +**Known Issues:** +1. **MPPT disabled**: BQ25798 automatically sets MPPT=0 when PG=0 + - Solution: `checkAndFixSolarLogic()` re-enables MPPT on PG=1 +2. **PG stuck at sunrise**: VBUS rises slowly, BQ fails to qualify the source + - Solution: `checkAndFixSolarLogic()` toggles HIZ when VBUS ≥ 4.5V + PG=0 (5min cooldown) + +→ [FAQ #9 — Red LED blinks / battery not charging](FAQ.md#9-the-red-led-bq-status-led-blinks-slowly-and-the-battery-is-not-charging) + +## Regulatory Notes & CE Compliance (RED 2014/53/EU) + +The Inhero MR-2 is shipped as a hardware platform (development module) with a pre-installed bootloader. The hardware is **CE-marked and conforms to the European Radio Equipment Directive (RED 2014/53/EU)**; the corresponding tests were carried out by an accredited test laboratory and an EU Declaration of Conformity is on file. Radiated power certification was performed using the designated reference antennas (RAK FPCB antenna 863–870 MHz, MHF1 connector, antenna gain: 0.7 dBi). + +**Requirements for legally compliant operation of radio firmware:** +Since the final transmission characteristics (TX power, frequency, duty cycle) are largely determined by the software installed by the user (e.g. MeshCore) and the chosen antenna, the following European limits (per EN 300 220 and EN 300 328, ERC/REC 70-03 Annex 1) must be strictly observed: + +1. **Standard LoRa (868 MHz band):** + * Frequency range: 865.0 – 868.6 MHz + * Max. radiated TX power (ERP): 25 mW (14 dBm) + * Max. duty cycle: 1% (or LBT+AFA per EN 300 220) + * *Note: Different duty cycle requirements per ERC/REC 70-03 apply in the 863.0 – 865.0 MHz sub-band.* + +2. **High-Power LoRa (special band 869.5 MHz):** + * Frequency range: 869.40 – 869.65 MHz (MeshCore default channel) + * Max. radiated TX power (ERP): **500 mW (27 dBm)** + * Max. duty cycle: 10% + * *Hardware note:* The onboard LoRa transceiver (SX1262) provides a maximum conducted TX power of 22 dBm. To fully utilize the legal limit of 500 mW ERP (equivalent to 29.15 dBm EIRP), an antenna with a gain of approx. +7 dBi is required (minus any cable losses). With the included FPCB antenna (0.7 dBi), max. approx. 114 mW ERP is achieved. + +3. **Bluetooth Low Energy (2.4 GHz):** + * Max. radiated TX power (EIRP): 100 mW (20 dBm) + +**Antennas & operator responsibility (EIRP/ERP limit):** +The user is obligated to match the configured TX power in the chip with the antenna gain. If an antenna is used whose gain, in combination with the configured TX power, exceeds the legal EIRP/ERP limits stated above, the TX power must be reduced in software. + +**Disclaimer:** +The Inhero MR-2 is a module intended for professional developers and qualified users. If the legal parameters are operated outside EU norms due to the choice of firmware, antenna, or manual configuration, the CE compliance of the device is void. In this case, all legal responsibility for operation transfers to the integrator or end user. + +## See Also + +- [DATASHEET.md](DATASHEET.md) — Hardware specifications and pinout +- [TELEMETRY.md](TELEMETRY.md) — Telemetry channels explained (what the app displays) +- [QUICK_START.md](QUICK_START.md) — Quick start for commissioning and CLI setup +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) — Frequently asked questions +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All board-specific CLI commands at a glance +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation diff --git a/variants/inhero_mr2/docs/TELEMETRY.md b/variants/inhero_mr2/docs/TELEMETRY.md new file mode 100644 index 0000000000..988cae697b --- /dev/null +++ b/variants/inhero_mr2/docs/TELEMETRY.md @@ -0,0 +1,139 @@ +# Telemetry Channels + +The Inhero MR-2 transmits telemetry data in [CayenneLPP](https://docs.mydevices.com/docs/lorawan/cayenne-lpp) format across four channels. The companion app displays these as **Channel 1–4**. + +--- + +## Channel 1 — Device Status + +Base data from the node. + +| Field | Unit | Source | Description | +|-------|------|--------|-------------| +| Battery Level | % / V | INA228 | See note below on SOC workaround | +| Temperature | °C / °F | nRF52840 | MCU die temperature | + +### Battery Level & SOC Workaround + +MeshCore currently transmits only battery **voltage** on Channel 1 — there is no native SOC% field. The companion app converts this voltage back to a percentage using a hardcoded **Li-Ion discharge curve**. This works well for Li-Ion cells but produces wrong readings for LiFePO₄, LTO, or Na-Ion chemistries (which have a much flatter voltage curve). + +The MR-2 works around this limitation: + +| SOC State | What `getBattMilliVolts()` returns | App displays | +|-----------|------------------------------------|--------------| +| **SOC not yet valid** | Real battery voltage from INA228 | Percentage based on Li-Ion curve (may be inaccurate for non-Li-Ion) | +| **SOC valid** (coulomb counter calibrated) | Fake Li-Ion OCV reverse-mapped from true SOC% (`socToLiIonMilliVolts()`) | Correct percentage — the app's Li-Ion curve decodes back to the original SOC% | + +> **OCV** = Open Circuit Voltage — the battery's resting voltage without load. The OCV curve (voltage vs. SOC%) is characteristic for each battery chemistry and is used here as a lookup table to reverse-map SOC% back to a voltage the app can interpret. + +The SOC becomes valid as soon as a **reference point** exists — either manually via `set board.soc <percent>` or automatically on a "Charging Done" event (which sets SOC to 100%). + +Without `set board.batcap <mAh>` a chemistry-typical default capacity (1500–2000 mAh) is assumed. Setting the real capacity is therefore required for the displayed percentage and the TTL to be accurate — not for the SOC to become valid. + +The reverse mapping uses a piecewise-linear Li-Ion OCV table (3000 mV at 0% → 4200 mV at 100%). This ensures the app displays the correct coulomb-counted SOC regardless of the actual battery chemistry. + +--- + +## Channel 2 — Environment (BME280) + +Data from the BME280 environment sensor (always present on the MR-2). + +| Field | Unit | Source | Description | +|-------|------|--------|-------------| +| Temperature | °C / °F | BME280 | Ambient temperature | +| Relative Humidity | % | BME280 | Relative humidity | +| Barometric Pressure | hPa | BME280 | Barometric pressure | +| Altitude | m / ft | BME280 | Altitude derived from barometric pressure (reference: sea level) | + +> **Note:** The altitude calculation is based on standard sea level pressure (1013.25 hPa) and may deviate depending on weather conditions. + +--- + +## Channel 3 — Battery (INA228 / BQ25798) + +High-precision battery data from the INA228 coulomb counter and BQ25798 charge controller. + +| Field | LPP Type | Unit | Source | Description | +|-------|----------|------|--------|-------------| +| Voltage | Voltage | V | INA228 | Battery voltage (20-bit ADC, ±0.1% accuracy) | +| SOC | Percentage | % | INA228 | State of charge via coulomb counting — *optional, only when calibrated* | +| Current | Current | A | INA228 | Battery current. Negative = discharging, positive = charging | +| Temperature | Temperature | °C / °F | BQ25798 NTC | Battery temperature from NTC thermistor | +| TTL | Distance | days | calculated | Estimated time-to-live (remaining runtime) — *optional, only with valid SOC* | + +### SOC & TTL + +SOC and TTL only appear when the coulomb counter has a valid reference point — either a manual SOC set (`set board.soc`) or a "Charging Done" event. The percentage is based on the configured battery capacity (`set board.batcap`; a chemistry-typical default of 1500–2000 mAh is assumed otherwise). Until the SOC is valid, these fields are omitted. + +### TTL Encoding + +The TTL (Time-To-Live) is transmitted as a **CayenneLPP Distance value** in days, since CayenneLPP has no native "duration" type. The companion app displays it as a distance (e.g. "42 m"), but the value represents **days of remaining runtime**. + +| Condition | Transmitted Value | Meaning | +|-----------|-------------------|---------| +| Finite TTL | `ttlHours / 24.0` | Estimated remaining days on battery | +| Surplus (charging > consumption) | `990.0` (sentinel value) | Effectively infinite — device is gaining charge | +| Unknown (SOC not yet valid) | *not sent* | TTL cannot be calculated yet | + +### Temperature Sentinel Values + +Invalid temperature readings are indicated by sentinel values and not transmitted to the app: + +| Value | Meaning | +|-------|---------| +| −999 °C | I²C communication error | +| −888 °C | ADC not ready | +| −99 °C | NTC open (not connected) | +| +99 °C | NTC shorted | + +--- + +## Channel 4 — Solar (BQ25798) + +Solar input data from the BQ25798 charge controller. + +| Field | LPP Type | Unit | Source | Description | +|-------|----------|------|--------|-------------| +| Voltage | Voltage | V | BQ25798 | Solar input voltage (VBUS) | +| Current | Current | A | BQ25798 | Solar input current (IBUS) | +| MPPT 7-Day | Percentage | % | Firmware | MPPT activation over the last 7 days. Shows what percentage of time the MPPT regulator was actively harvesting solar energy. | + +> **Note — Solar current accuracy:** The BQ25798 IBUS ADC has a resolution of 1 mA (15-bit mode) but exhibits significant measurement error at low currents (~±30 mA). Values below approximately 150 mA should be treated as rough estimates. For precise current measurement, the battery side uses the INA228 instead. + +> **Note:** The MPPT percentage is a rolling 7-day average. A low value (e.g. 1%) means the panel rarely delivers enough power to activate the MPPT regulator — e.g. during overcast conditions or suboptimal panel angle. + +--- + +## Channel Assignment in Code + +Channels are assigned dynamically: + +1. **Channel 1** (`TELEM_CHANNEL_SELF`) is statically defined and contains the MeshCore base data (battery voltage and MCU die temperature). +2. `querySensors()` assigns each active sensor its own channel starting right after Channel 1 — the BME280 therefore lands on **Channel 2**. +3. The **battery channel** is determined by `queryBoardTelemetry()` as the next free channel (`findNextFreeLppChannel`). +4. The **solar channel** = battery channel + 1. + +`querySensors()` assigns the BME280 to Channel 2 before `queryBoardTelemetry()` runs, so battery data lands on Channel 3 and solar on Channel 4 in practice. + +``` +Order in CayenneLPP packet: +┌───────────────────────────────────────────────┐ +│ Channel 1: Voltage (INA228 / SOC fake) │ ← MyMesh.cpp (getBattMilliVolts) +│ Channel 2: Temp, Humidity, Pressure, Alt. │ ← BME280 (querySensors) +│ Channel 3: VBAT, [SOC], IBAT, TBAT, [TTL] │ ← queryBoardTelemetry() +│ Channel 4: VSOL, ISOL, MPPT% │ ← queryBoardTelemetry() +│ Channel 1: MCU die temperature │ ← MyMesh.cpp (getMCUTemperature) +└───────────────────────────────────────────────┘ +``` + +> **Permissions:** Channels 2–4 are only sent if the requesting client has the `TELEM_PERM_ENVIRONMENT` permission. Guests (Guest role) receive only Channel 1 with base voltage and MCU temperature. + +## See Also + +- [README.md](README.md) — Overview, feature matrix and diagnostics +- [DATASHEET.md](DATASHEET.md) — Hardware specifications and pinout +- [CLI_CHEAT_SHEET.md](CLI_CHEAT_SHEET.md) — All board-specific CLI commands at a glance +- [QUICK_START.md](QUICK_START.md) — Quick start for commissioning and CLI setup +- [BATTERY_GUIDE.md](BATTERY_GUIDE.md) — Battery chemistry comparison and deployment guide +- [FAQ.md](FAQ.md) — Frequently asked questions +- [POWER_MANAGEMENT.md](POWER_MANAGEMENT.md) — Complete technical documentation diff --git a/variants/inhero_mr2/docs/img/back-annotated_.png b/variants/inhero_mr2/docs/img/back-annotated_.png new file mode 100644 index 0000000000000000000000000000000000000000..2979eed2e47e899c9c90e9152e131583e0ce3b6b GIT binary patch literal 431874 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 ?3<MaSO(kz}DDL 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≦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⪚zPG%-! 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 E4>B+Ot^fc4 literal 0 HcmV?d00001 diff --git a/variants/inhero_mr2/docs/img/back.jpg b/variants/inhero_mr2/docs/img/back.jpg new file mode 100644 index 0000000000000000000000000000000000000000..395b0f36f9080f4fb82d1a127ce6cc57fec1e58b GIT binary patch literal 168168 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 literal 0 HcmV?d00001 diff --git a/variants/inhero_mr2/docs/img/front-annotated_.png b/variants/inhero_mr2/docs/img/front-annotated_.png new file mode 100644 index 0000000000000000000000000000000000000000..3f70e9fb3daa64e23e80935b74f6e2638916bccd GIT binary patch literal 593503 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 #-{xIhYDpN zk-mQ)1y&$6FVDOTjf}wEIk&Mf4O&`cgR|D3^itq>*>f7dT{nCghqXOYMi>9e=!E^? zT{x{5F(F17Z6x#KlEAjeNV&XEr0RcI-l9_1AIZuY`mkM^zG2?s=yq61!&65?ze6de zUvSkZFM6|HYmLHTHa_N6;3Q@YN*;dSuZ^<nDffH6Js>AhW-5*T%(WyGojw<|bJX0L zOTSh3BSm1zV&{jdqwSK?)-tR8-7s_60zt#)0rS5-pIr2OiB{e1VQ(hZj~Ui`w)Wn4 ze5S7dbWLG@KEQMoX9cwx?X_O$er-}7pOn&G$*b!m#-3E5d`2vY`mGY-uQ~DwA5jsj ziC^$GI6>>C1k0ssh`0~gEP?ahPzFyJD4#}|S}~jPU$>}}vvcrd+SR^#bGaL?kDe$i zr(tdU6VM@Ks{@6@KexGg<~Dsr@^{2SAP$_3z<tF62<J%axeD`TaYMson;1gCM2b@V zl<DEB&CQtB^X)s@b<kY=h7rIOHrHn_IjvI2Zdg*Zg6ioF6cbq9XHI}?ivs=kJ2^;j zFj9yC;W;4EM65ZH0yG1c*!O^)Jcb~u+Z|;MTFi-=nJqTPjup<|&*t^$GrZFOAzLii zT_Xd0hM*fQct}44mh*JO7kClu?CohOaJ9_L)B*<?>i@?D0R09s{es#X7pkQg@+V<v zv4AQ}@nSO%=)ffV$)t$k8GM9wR96nLghY7AJw0;B+WY~KVG%40-jw0D8U?maPU}G4 zqD$&W{9qwhd<gD38NXw?_>a)HSRqnP6@ye)C-VG|j02>d&7~Z0?*KP4fVW})fgl3F zz)w=3pKg6A0v}fE%4JH^p7kK-$S7FEd_m$e;7k5mii7O}Vsbr{&PBIjfZcPKd^7v@ z?ud6ju2lL}9Z8fPx(jhbQHXk=3Tw=!YW(gNHE|-Z4DV<Z0XaTOIicPCO-UN`iT5{C zX$FG@sO<9|%D&T`>DRL~ASn7Mi(bT_sSs>U6B06t8MFFjBNcV3U|t2^;I_PrSmVd& zFoO7T5%IUD|G1}~<Z@lGOF7t3D_}M!XO4`vT|HUE7?#dZ>A4!_o(t;wpx6qsf=3=6 zJm6hdSX$bD<pUfPB;Hqne)H!~2%6<3|4Sl2zQuc6?1UN^BmruhKR#6Lp^J2SGUtcW zMot@O&{svmFSBs7%U8Ew@7vzpN{}(MQY>b_o~)x|7gM5HBN{1xI$oG-q@44exp#W} zCExSlv;hLkW~&4|l)T!|R<Bx)>g*N%`2M_ll)S2B+MmKIWQNLiv$XH-eeUj-)u+*9 zX@5|ER$YEK)vxaLl=#W3FA=8XJu&T(p$P^$Nxj;NeXJkcMQ_PE`_xaa%_W~Y6F)H; zy%_p6qG#@#O3;71;{Lu~d%d?s4XxnL`>}t_ovrSwz)v`HVqs%DOi^jqIXO6R2R-1| zsS!t^t*5VH<hllF&D&Hi0|IC&oOn$vMySR?zCm)wH`7L_q5^upMq9g5d>Mg@c?vX| zA;e1`WQ5Xi$~oH3xe+E0^uRVyd5|k}=aFE*`^whWkWNj;!ho1(BA+F2)QfY<xt6GT zFGgphO#Xr~z#YsG1bs!)8(_RIt6Y2mD6(S7gzwqh(lAXe0MwuojLpG!fp~k{a*&E6 zr%{Em6PDa7A5bxA5X;(TP^bXl9HbV0GeU!h5;R`cAan7H|A)w5z@*y)6t@442WqSb zT}{#e+X9UgV(pgx(1#y%iD25$&cTuO=y;G4bn`uc_6UN_g8s*6Twu@14E@3~tlrIm z<}b$L0a3*Nt=ZadQT<`Ffms9@w2eK!@Xf#2E=N{LejpN=?Se758*B+Xpof?SyFz3K zf%s!0COC+;^Y71Z@XaA^b&^47h=T$EhB#oVGz?So1@#{Cdi@u(06T<DaQ%l@ta)Ti zJUmy}8fIw3Ef|S6{0P2@w&jS~48s0L+<X7A{QHNJLNdHdO#kT9>OT58%HO+bA}pUW z7Cea>suY<B>YVHtXC~!Tn7!@^r|<c0ODH*pIIXPP5)sHt_eAdhlg~N$v$WXL-s5iK zNTabRy*;vPutP6w6sL>A;y99`p-`tQsARE1OV2DIZBX{+=R3?oLIs*?tMK@Ha$&q3 zD9V_$UdiG6+IqqQGY(gmKUSjfz&GeZulX$z>+#^*4lxcc8^2qY)fqdXLjzXag_<lm z!L#tB0A<DkT<Z{*ip51!|7-=uB=~R9hJqBhXX1=3U^D|Av=&70upu7}fbazs6}ukC zLOCD*z0010QV5q)^#6+DMiA$N;8`;ZfyyYuKMDLwZ_C~((cX_3AfPwIRMWU&`txZG z$7s*kgS$+F9%qMQe-m^D==wM5f`j{|ihk>uC^?L%c6U9)P&XH=d4Jl3Cxz#JkM>bw zqKbe<mW)2R9&>UHzLI*Lbk}#C=u7|0Aex}<lLah}aWJs-qzkpiQBmtJ43c?+J4tFA zwomvt5cbZJC_N23Z>Du(R|&BTo$==N!ml0FqQCg&Qz5BjVN<(cTV6|cn{OcA=q87M z4vkIUO)W2P@5V~jNVx((&c*C(%EIJU8cPMvi3X`29nQ?0$rg?|OKQdx@vk{rWcZjN z2#^F1@682Gpfq&HfJ-L$`K3e5UWQ8OGtpt>JOkVSCS4Ytq0sGlyTaV&4tQn~G|C`> zLg37k)wpBJwsdeBkb)Z0KQbx^u1?6I1WE5Jyg+?+7)g1MW%32~Qv}_D0UE4~=zG^) zA-e^U*Fz0Th80bR04qov)PNk(f%KK2#qkJl220jgdZy1qzzS9a<mw>O#UihU_R<oJ z?GeXp<S>H(4aw`^K`h<?bV4d6WVxR=fcpw0YLY^CyymwKVIgH@R^VRvw^tgy9ST_U z$@eJ4cnuE7FW3)9-xYY!%jW`jWay1h5~6&D>vei|9c)Yl!Sd(RiIe|19el%wm6q1l z3}7*RXmUYL4(tDe!DcWbKpdMlcXywR<;x;GLKX(ZE&{o_E3TxyZU|bQ4wV}OL*NIO zjF@7<S}q4xUGvQzpn?AL>Ub(m(sd|V6Okq(W^q(N^AK|L4;;Bg$k=$;+csLepYbPh z6ulI`Lc+%Uus264KWgiaTy1Z~2hN7-*k}6qDVRoop6E28=!GhVb#xU4DIA&0vsK;a zsBfvdX$a|=Jz2w((q7flFEUVzn6kcA$g$mG;l)f#Oyu<B(@8dB=u)Cppa~D|NbY&u z)F6eW+D9<0V1*VOFBF>)!Wr*laOug_d$Yg8oN@AA%5R<T@2Lkco0ry;PKzsl_;htO zJJ{RjmzG9A=I*};N?2LIaDxS)l?3|AhnsT^s=VY31QB?+VK8vf5MrK2+zwO}48+20 zPY(zcd=Iii_&^<(S{Fv9$tkYx<&C1q;mZ<g$l#mdM55}#FRQgWnsCTzQiu&YmBxF` ztuYvjh-?GK7r7d$9_kV8ls5E*T4S^ppY6Q~o#yVs<u_F+FGKn45_j}i7$aUYx0cMm zD7k3>hnIEE6#Ls+X>Xl-m16({VS{UR{r3BK<KA{f*4f5}l~HL$&%_(vXXFbDS)w2Q zJbW`N{A*k@xJq4em3wYitg`nqR3Uy7z2jq9<}aUiiKeZmv$uVnqhoT}ENHmflPv}` zl+MsXFhVPS8z-UmC=BzZ=3TM+skhg{0u=ECfwTc6FsvD5#enR7gcAr07Oc4jSiA;z zuDlUs34PNi-+DLC{UM1u87IAGwp-59-Z>Yk@Ka`(mCC8+nA;w(Fn~+kGB{hoX<8P< z1+)aVBTJ*T>`@S_5HsieAqJj7Xg>f?(q~V#y!QG9aATW+E({xBb>=R_$QJ}^uRU(V z|B>Rj4h~zl9y{usfJFzYAC%1>g{1<kmj4`3hB6P~eCva<4VMNyU_54R(USn-$wF+W z0l%>}XuU2B7u~seJ@w6*q>`c_#nBu=^c)dxn9%;`8%SI0{&U>W0|7??!aVKLRaA^H z%hrs9_W<Z2>*6FxAB<!E3M>&}xP9Ys5sU{^NW?36se7!!3F$o{Nr4SS_~CK|0J5A} z%_PWE_9I3FU}De0!NEivb$SM9AKvAm_*D|v!+-zXwA6Ecb}&etBWMErU@)+I<I<Pu z)8Y2!^Wi)9fBsN_wV+C?lkrNF6TbEj^l6WZW2&~DsY~J3JIu;hGGFR1Q1GmepKb_< z&V169Yp6u4sJ0&YxjtWEkdc<6gShY}bGhhLTiG1{lLQ(Orq|sVG}p`B=CM1zus+tX zEq@!Hrm15htDrEiLf)%-y+XbQBWBbz5htKzh@eA6ZI2nNZ$pBnMjc&JP3<;hNd<RW z00Q>!i)Co=sZFB6>CV|l&XLp%Cdjxr&jD^4T%(I;+N!Fm$RM4Xn)>FsoCAk$ZU$E8 z3g?GkHBsW;H#gi49dFG!wr(G6^e%t8OYh8+fek--Ti&1IcO?(@583sRYa~nf`&)s6 zIT8F)gn_<8t7}tCPwM_dB?T4|<tLUo%jFGhMUq%j+|jP6P5cd2V--@EY!0JqtZuv# z)SS)ouN7q`Rjc=Mq_9G|jJmzYamP~^v)Q-C)co-{yZ9)tm$;5;7TmA=)N%8E`#3Q% zO|Tcf(nNiE#CW7;u^Qz_l=2eY!h&*H;XK_|GK%&1Sd#V0ko_mdlSlV{Ib32r2mfV+ z6#!%c1r|ldBv`2I!$7qUJDDCPt<(o5!nt!Mc#@5DF(i6&N)efE=&~I`mX6#K&)w|H z{Hik##4}p~-G`+LOnyKBI+2rMOv?N8X+fMr;b859^y!qCkMn3qH}4|d+{Y8);_@6O zkvFAFU9GHE*D_k71F4r5hU;dME&DQZ15*9(6($S)ZiqfpsZu?a^N4T4q_muCP)ojf zeEX}}4e6h2F1L^F3yM|i4{<ELA)$9W*zVUWN^d}m=%60c)zBELd}D5gjgeM)z_Ut5 zzZJN{>GmmbF7N{5sK16C?ERp9-qwp{8ML|_+}jq9Tox>cC<VlzI{*Fq!6iz}5O+dx z#vfqrZsIi)f(WMd*&8|?%=Q;IM=VdHaIy<>LNdKJ?VMI#{VvE5bEf~KnrY`S6Pc-~ zMPBpKV8OF5)c)2AbzP%^`43Giev<c`5v($)y#$xv14xDj&K&c`W+4a13FG^3_wOl0 zrjC;9j}2(pmCa`eXlgbvLkOww51xq)RCuKC#Y$NoK1Yu~m%TYy^9*XfevK6dJm=IP z_5-2_SaEdu$(%@>e0-Nz`T86)l_eP5p!R_%0;<$!0nm0Jxhk8RpWP_L@#SGShtrA$ zu21w?k0!o;MIDVR#C+FufKPvh(|k|6Hskqt4LiJ8@Z+=MCTlB$_Y3Mc@`3<;bRV~k z&HL-d|L@aUU;J--5xg<8VIb|t=>_B%h0v;GrZUZO*=AfRWp?X=iNJANA?Z+Fyau{y zT~el1a|4u^109`KWm+pm?!Cq#0)57l4|*T4G?UzT92X{KI<_P+6+^KNt$6e?MnW{! z{<IIiT95A`dZ5G_yk5Smj3I@=@lu4J?0$S6vlVaZaQsi_k``xl&y<w9<6;;^4ruYM zoP;<`K8C*e8a0E@QxO!>hjsY)Dop%50Abb%Rop?03lY8fD2azX3^~&c$DZ8rW5n!J zq*?%?{eq1`wuOb_QU#w}Pu~h1dWh7e&<!$+Q#pcXXnn9xl==URoG%(vzW}s`!N1C) z(|!006Q;_KMgXa;gGM%3TZe>TDIip+k#{h(6oOtV)r+=``7R30{=H<C$!Wmfpq*i= z#&h?Bgi2r5!jJuXW`4yj)EI>HZh>b(>+5Mmj+SD1X=<}KN3dcQU87ab0#}VT4N*;) z4}0mSL(hG9uNG(VXSBkv-Iw|ElBmx`8CDDkaVA2h!$ldGH87eKg7G3g-Ny}1I10cU z`s<T=xEC-o6Y1C+*oLYZ=Elw9`XXJl0$*gJdr~!1LLVJpuE13rjiIIxKYNZ6y^ff9 zm7Q5ac|E~ISR~cJYcOZ79%cQ$XtIn{a_<0!e5XtSzvc@pOiT_=AI6N|#PaIQDeVn6 zJBX?I3`LlC7;bZ&U{~0NtrBW$&NO_1F%7JyX<*?1!x|;b=fC^t;^O<Q&IO;FX3=gK z*WSOnyySNJSA(9|3}k+UgD8Hnr3Rn|cn&MG6Bkrhk1=g4D=AHbmDEMEP*VRsFnZ3E zKAY!6zt543FXWEGgovk>2bxM(A_Hy|;JkY8-aY7HvVf5dIhRT{HYJs~_h4;>n7cA% zKg-W4Jvz)+Fhw3=*>jKoEdfwoUpp<h&cJ1tTQ~fVz&_?ayOrD>nrKb(UNooc3c+k- zi=2s9^H+Cyu_=}4HKmv-I=-N-%DoS4uBp>_zEyTGSP&uctbMuuKzCIugEyz*DtYSa zQrLmNLNfGI{mUZNUnLZVLwb}7g9q~jwQ{MGvr#N%L{iT<Hd6_icgzj=Z6n6X>6uGM zHJ|VD4oKO@)g|_c9V=C;SE>A}GG4no0LK%-fiDzTk{*dFM5Yhf!$&G{rM)S69JhRg zK)%4hg3Bv~{!6`&#HNouj|evetlYl1o%J!zshl00?H_{*1V;MnudKMY_U-}<j~J!= zekR(R#kOI1%MT1@JCKMDe^0T^iYGsL$#Ajizxd)NlAq26t&K_)s#m#4YSK@q`l2xE z`|Z#B9<a213?S4zm2*`e(+-cvN)(ZhJYb)0pw1(t|A0o`m@C!yHA(GH#?Fnb9DirO zk0s|0r_X28uAWnm*Q@(r=8b+j?8Yd#+{kD}P6k3r5t?#<&K{WpkOlqwik3(ieISMf z)IGTHC<(@D#V51Lgk#bC!>E+eB}yS0cyX9`M2w!iYK|fMQ54M?ZOW~>Q^QyyK~lkm z>ocmqeCFP@i1?XjFKD+LiXS%0;2E^1NU*q4kmR)!1Okd?KQK@|N=XwU^&VU5+3xbA z*}RfZnO3Yp?nD*tc$&`)u-!iWp^<uQu*mzquEY;#k;?2x3n|Givc?0iJY+QowZzWR zv8%!95~!<gz&_)C+!g-DN3?Bm`9fHoHg?2=>LnQgpP+a-Se7FkylB|DzkA1Owm|NC z6tiu{ogsrh67vn!)Z1jrdmSfn?8gk(k{%k|<`M36*ktYOz{GW*S3uyb7v5xKCIg!( zQlRR=PanA>;8p;-aCmS8W0SOwHtq${Cg}XvXN*WDd}f7_`f_LNN|y83rGSmV(2@pU zG41|c{$=6U0~SOwtN7Yz_H6coyCS_@w(2*sb{6U!9VGkN@z-0>iTb?K_~PBmAB+@q z3E~boYJDVe$b9#X-0QA*NXvla{M9svohlz)VIOO^3fZaLyKDCo6xb~+jc6P#ER6UK zTWqn6i!>TKVqa~)az{=1R?l0aS@*O7pL{;NL)KQUnxTe170)U{C~leO-TOdi(d*zH z=sIl?_LoNntNd5VgdLcF5JX@<+X=KvbDCo=0{VS4h0yqt9<!J3rKbR@VV<x`=FlY! zZjk=v9_`P<0HkARTebA`^x{X|ZnUo!B?ExL4c38e*wV!rEh?vsUIVf7%(rOc1J7=8 zzrZ4s4nf(xH8>#7(H0ZZ*E3@8;g^ZIGsxtN*7Br%=SFuLhH2Zm(`m2&Bv*R_5p5}^ zNgTDtlUSaCPT$8{gQO?zhgU>>Ouwk7OuiwZN3R4(z-SyCQoz;oP>17*%E4+cj?9|H zV>K2cg>Z`s9j^c>hr;2O$8?{b-;N+AxD`=Alxj^^mqsm(9wGBw%QH3O_^bZw)@i+& zdoz%vU3N@Gu+x&Pr=w29(d+dwUAMx$+9{%dx1*ttSyfs2R{s&bp~18l^Bl>jA$1{Y z8)n4hcvQW@mCbsTsm)*wa&BPq121=ixLz>EMW>mzPBTGNBFH=lzFLe~k2a#8(<BOC z84UYhdIxiO#AWVbPkF*{0tr@kaKlQ=%24-pbmZ<?XLBW)(+QRc#jbu>d5ztm!~#z& ztQw)Y0LN@(v%JvqZ7ExUp85X$BH-V=eoc<}tOA>51f2GyR8?_ce}1)#+2V*rbH0Z% z5$3<{VTc@2jjqqk1p3Iohi_OOU!%0J7JE({EMdXYpQ<KMd$h+UDQ$9w*R%H!e+#o% zE#r}i=RH-UhJ(%3IB=}_)l8y~qHJi&|L$7A`lqt9Z_icnW=}Ytq}()(f5yUqgCl*q zi!aahv`@X2-<h_u^|&U@dNg^fAKSM(K(9i=9xDo)7&DK^(9XE1RtY7bhF+;Dmz&y& zb^DfNU2@~%v&`(eC(mRlXhefl14v}_Hv{dtH+hZ@ywUXby$jDVoc)1R^Iuj3tY}~j zvTc^ur_&7AwAOB-ctq7b{Q{;1p|!-*tbQw7XXhR_3fO^ytq;gxxHF=uf@ewTq|h}> zlU<hK)WCvX3f;_tAvhOkhJUxG&ba(A$^1`)BP4BXY{VZIj6NgOtXSJ)lNm)lbH)~u zW+oICP!RrcC%%0Zv%d4IMj!KoKi>N-I5INpxBPE6hzRzy*92C?pH9)5y-f9A!j>sp zZxkoBY8kye7h8L85V#5zV-WA28EX3_8jh!jiSd**>}BVlPN;(G1Z&E{f(_2|lKSE1 zjX)==@Lzv$(VuK?N150rmoM4?m!)vKroKK2-!k;h`|ycx+t$|Km<#(BZ;xxW(*7e* z`NQHaX+u>1a*9i&%`Rj-QhmC(M)Z*amO^vcsVl?7hzD}9WRl&>_T1#N!orXlNW-X% z9zsja{;}f|X|&R|<J^s;7c?2$X~7wdK=L|YBSV7)m^SOTJ)yAq4M*yfQnyMT%i|Gs z?2LaVQ$+;@ooX%SKY1(sPBCj#7+3xIf0hE3YJ72Vw|7{HG3n2rKe_dcFrQXmAZ#cE zLveI01e-~~u8=QpzIPh15;Suw1n=@9JBQ-?;E{MZEr#xY4`|%~4Qf}DoZEj|$5>GZ z@DygK)Y0#3C`t<_bf|vNub^H?peZY`N|u(s;6x>M`E*9?!0)GGSBJ`!($nxTUx7Iw z)05~A8KqO;Avuq%&Gx~(cCvbQ<X~c%;W5pi7<uQV&XuHz>O-22LfLV;<hp|xfqR=t zc-b`cebjx=<kI4sG+(Sc+^wp<pV>0YtzC!mA^&yS(#0#1#b<H<{^bQrn^L>z*-~ub z>l<3t+F7hL8-5oOx3}mZyKQTU^QXhKPu~oJPY_>0z`G`KQ-rS}fuLYMSWs9<FF%&3 z#=Dk8zf9(y<M)rH!D)l}F~l+s!X|7B7HCT^j}g9gkEe;)$?^@vWFDsBX+VjP>|dDr zZJ;b6ZuQ`8h<HH(c$cnKX>A}1JdX3fmHvOfF`V|8iER-)O#oOX)8DaG<n^R!?kPau z;1R11D+04UgsTD+JvHGha9`#E)?Blh`8jn00sRYP{SIOgFgb(Fg>F4T*epVFsv2#= zes4KQPN05%)|&YUG;Sz?+^~ATYEfW;!*no*7)*(8Hfu)08UkA1hrxJAXafk~0@t3v zU<#hituFKqJJ$Gj0htHbpuc$-_?+-fse_XbH1p>^RUbZNHZH!1+L|cYure?PCMlBH z4XaaFeQbQqP$~lN=lH!NkctjN4l|6&DsKeGsJzSh5Vu6IE6uN~OIA!`)PTIAJ!N_V zBw-ZD0L~wFe%wm9P5#M@?{bX$){CP+|4bi#1$Rsuz^cBVZsZ_@a#)??vM?ahI(P@5 zql0%Ap(lV1kr2I%n1z10!c7T9mj~Y-NImmt9A?cZ{L^>8h?+2pptNi`D}}0dZj(zJ z*O|I`U5k6`LGY2(Cx@c;anoNCS4P)H>RXmb;~DBc3aMelMA2gFqe~6s+jTO&7Bh@< zH|8%w4U&&76q-==(F2e`N|&_8IY8<~#WqTSHaUwd|Kz02`+t}wl>vPTz6|lF*v&Hs zXu6-)d){wvZCM~V$mAeEi)R?9Vrm4D{-|=@$!awj{0`+8R(BE5D0a09@NsdGya*#5 zBcnms`6B2kP@chg9%MrxMZqB=BJ#^U_Wj;(9Cfb$qWz3lQ1>*lmV<}?hDn+~zoN;1 zH_~6^e@n=Ae;U5*=fVz3wj9<isp<lc(RYjt$5_7XSJQn?6|^I<!>V()b8(^}sG&)+ zI7oM!PW?Pdu=PX-<7D{$%PXtYldVG?No7ex8(Zb4Rn5=Y$WrnO-rwlek)Z=LS5?Wb z?ibzEKjyMuj76gg-1_wBtI1yzQ~8ztzPKJy|Czu-({LhTjJJ{D+1a<Ek4KB{zn<ZI z!wGV&F%^|kN{&An=M7lGD)1idF|oO|dS(#$mfDx#LEKla-di|9FjK>Q3JQEj?D3Jt zDG)8#AWxt@GRT@SNfGgvzgGMxYXHDGpmjlE0H4rDFu;=mJS6^aEbcAnwP3Da25!iW zT!4{ts>_of!|j3sO!S#aGFq5H-#Z=~y+!jTk=p6Y1;Atw&wB)fI{6{crs(3rfk@5} zNF88iztK|=s^uW){KzZ5_@CQAEL(%2wxGBe-dkCq(YKv+b0Eudgz}A0+u>l_@<y%- zBA`AJwpWt<A`&rP)+mrmcvQl2|30{kJLkb4hZ0t6-i`v<Ez!w|(4yVAE&4f~3!$^z z@YopcZgBEff&0J@cPh!_>Kd|BL$G=HGH_|&(f+L%kGKE>=r}{wTkkN1uu%RBx&W39 zu+Q?;!x7mG0^&h#CKp&9ac5v7YH!5iP6*ic8C;g3F3A;uLnT4BACmS01U0O|niCM+ zG=t&<80K^oxV7MQO6l{93(>;C|EeGHjuxdXsjW?d1_mMXfV$@dlqgMLd<}r(@bDw> zavB0Q@ydtnOOeO&k!{om{VUJ}A)b544{Gtn_I<dquoTWMDG387F(hht@d`)ie_Q}W zSPPM~W@8f*(oRn0YT?A1M}+oCcu)9oSUGCXYOx5EY(bBmtSx}Mz5rRSU(Bv<%Tqq3 zF6h|{Rce&1N#YHRNB4=s>F7zYpvcdag8Ea&Kx1vef~Ch?h$oa`@Nh&bWVNM9iH?rO zN^mVi2ereRE0HWL8ik|)cY-<P%L~%<hxPHMPo$k5Q@r46{Mcj^vN6OF=sVsUZKtlI z6W)h8ti{ND1&A*U&7hhM-T^TbaFedzqLAPvznDM%L$amTsyS}efI4Er@iyL*A`BsI z!%GFF0lGiy&Cxt$a09>w(LlgGx3jg~ALKu*(8v!I*m!;77&7bl^EM?Fef>d7!4-O> zjLv^;p!h9Wl=lcCZ%19ThGlrhGTsiP=$)+?<5CtX?f$N-bhHX;L*niPTzzWxBux`K zV_Ad3<gKLRTw2}0aw+sFw4#@*bS2LJY?)|K6#}B7EFBuWoC>zC&WY-Rw(WzH(OE{7 zjwgiHebQ`c+(Kj{nHQuE=C8_%w3*POuq#|8jbzG67qVDVU!HK?eQl&@8&(sFW*^EM zUwxlq$NcZ<?ZAV1170i3IR`vSjpEwi96Q-dWiPRngXgAex47eDS_<mwzTQ4C-8>1v z-V4xe3+gdy%~VnUOGy7!g$#HxCMGz~e!m<N>vaR3^GN@u4s(>*W%|vSx62JRH8m6= z*Z-6<s)(d$B7!2MezJq*FCcTlfD()sDI?K(&jIN>1?zs0FVki{LP8U!O6rRN=0O6I zEn|g3sV+9<K@EjiTO$fcpmHL{96mesB#3v$?`IU{d@vvtPS_#*H4t76%aWML!15d6 z!62GSzyQ8O$Ie6<hsZZ9=J=7UF~r~uFh2$a)}H}-Svttblvpa7e~@SU9w<T(bcf#* z10g1t<1{Cdkqh@ZNHY>1xZO|3rijcmR`@5gc*QtkzTOjiZxG7tbc-h&0@-13Tbe)N zCd>A}e2%DN5w<#zXKnK})Ly2mFd~{z-*Hv+k^6rTbsL>r^fJU6N}#tR2HA+Z7SK@e zIP~j5(rf@jQ38rFkP;YSQOSRc!u1*uewYwxT+QHv0x)nu2(aLL&jUFmZNvTogxp^b z#ijj8RuE1B2)huSDg>A02H}1OL(8`35CGSN0ExgOdJgk^pA|RYmmu`aI(*}6YAJrj zGBw-u*Lp)~C0`aTgjQEq>7r`o<K+q~zw_d7c9OSs*D^WzHtXj^8EN7NWXVPCu?f|z z3I^r$DW7kSS19-B*ecV7$bG<!ka3Wm#>K}7Q7qxE^QyZOB~$85(KY?hn{FZV@pQTd zvxrQ7Emk>$rlIMP9!qs$V|u{;*A_zu|5!fLnbRo3_U%Ji^u&O^_Veb-_;EIW$|V@= zOiWDt%2;6h`}NBTT0Iz<53uUjqo}8Gr4KTf+CyH!%PvZ}0nF$_qWn|0s-f?p5h1pO z<?Rh*-qZK$Mf}IUzu&Y$E~O0qmGJ+-_&|R8c$#XI(1bb#wp&gCWmR~ova?^P>m-Z} zNKnd0m1ydzgS*@rbbGYS6d4{$E8Wd!%PsDA=4>-5!b=UoBR4X#or((iE{r?=|9JZD zc&^*;|1#gCvNKZl%3e{DJ(Io39+?p#E1T?{k-f^^WUC07AtO{sCA$#O?_7QE@9+M{ z<KZT6-q-6o=RD7IH2dL1Qx%cxPNj^T-%sQ=B^YH?RvB0cyxArzTSx*Xh313Ajj`&K zk!0r->`IdJENLQj(&FD1-n)0hZFo%I(5&Ul>kk)1tk%X2OljhlcCcRTd*0_Dmu-tT z<P4a+`IVKDIht$mGZIWfPSH2LY=-Qh8u^|1FK-vae%3hA&NV_yDORJkqoY=QSt=NO zhCu^j0A2xk>Tlv)S6=X-G_Xa`Q~O#gRo~XSQ~fuz)*DxEr(sH#F(IoX<NmEbxj;QZ zR7;d`i|8wtZvqaFGGh*9`_boNVT=zxZ4FruK|+PNG|1whtt~4tkyJkRVn4cE1=69e zNaTTk0>o~^T!<K|K-Ge(Ha0%qgR1{)3)m(4|17xd3esn^PhSZ5>j%jjDv*DWYK;<g z&`%s68-vV}f|8QH5eWn6H~aE9+)aUABVW*wX$rh*w4a220c=q~JtYN9DQMZ3P)I0h zB2btj@bV+o_%i;N=L2z|VzybXcu3TK|ASH*mq8C`#KnM_<5$pFQ4s?b4f)|G^;;>H zy!*4vc2f!?1^H{}VS`7ypsfw=7@6>MuU#*~s_>5}6cin3nUTN$*0g1u>s$W5KXat| zQa==r%{N@YgQX<d0v3bINC^tvg`~p}SnL5!0lJET&OKl_Tm<5r?{NFE0de5p<2_u7 zgL6ZM4AyuYT|;)yf$vk;mf=JzvitRZl@>)5zxjuIh4+Xx^NQrdnGHkUe8s5JaU|xk z-^J13xW{$I9d9tx?uMSzI_cT)Nco=TSQUl*OhsE-k8OLJzPQu4hJ=kC4@N)C;z`qU z5pb4S>JY9s=hoR@uBc5vcicV1S$&xF(=_>FKU?We6Mp}e^s@D6!;EWI7S~f79~YO+ zn-jew*jmp1K~d7*Ib@t$Dl^G)249U0u$Awu5e&zL?roOFU?&(t!6QVJ&-{q0OaB!- z4)f0%)Y2*hfznKlYScxA@=F#5SSm_tSs|yu1kg1_nqxh|C{~hw+gDM@Z!?P~!J|*G zY|YS{heae+FKj8OEMa!gDni$8#p~Or;Pqe2mMx?7>eJ25hV<*~$%^Iiy)2=mJhA5( zw5iy%m3wt$uQ(*sxFvF8H^vat<OybPuih=M{e@G1O2XXQm;hhIIi}{_hYx>Ruypo+ z{#>SF|84bzI0y)4rl*BQzk8kxcr)PYo@|GGU{6-PqL_<2a<$ucs3X@$<=)E8#V3QF zBh-p?x^IT6Mh{vlRp3qrIKMxM4L-OX{$piYBRUu|Ha;GBUS7Too~k=*CZH)q11h}j zoM1q2KgoG=vfo*N6qheOO&#s*=qaOWz={LWs@GnC!F<9kRvB>FhD_Szl$766*=u0C z>f+MpVS+;b&{7>()L&sN0Zb0jxp3=vIg5bGjr0jX)CIRFVC<sRIW(p5(CO7rmEUPc zSQapL<>5G^pmYFiY*2?BkOTDzB-s)j+c7TpUXdsq6sAsPAi)VTCdhPt5!t%&Vvx-a zU@(+9fqo5O2XF&mabs^f7;O`KYPp~(<po$C{ZGX6gc}+Zo)S>2ANu&*CwJ*hsZ&=! z3Sjfq_1W1}+x5)``q@SQgHM3m9rlI3H2*S^GXkCYEuc+70f(@;>B~oE-q*`btvEOn zV)kuMh8Y^#I@|R1bDg9NgDTkzEDkU)=#;9?Z2FEzUopP;>GSL(>rZmEwNfGd`sT^x z&C0p;lJ=1~UNW{x?#++C4~Vw6D-maK52?C8@YK-Jjhsl7txb!yI$!w{>#2jDWjL3k z5h+1B{YO8mhRb@RXTDCxc@dJThkl8oGZ~cL2>hLXdABO`Hy!f^yb-W3^B>2*fBF5? zlz(O8A10~@s=>HmyIDNH?V4!9D*>)uz9L7vlXpW8>zINzOrNzKdS(j#BYr&)`M-r? z;M7doLvhmnGydnY*Xi3oZea0Jw5ns)>Av9#T(ILFGyKSTuc3Dgs|d#|uVE#nAei?_ zuliXlducDB1h+aTlH9f@Y|5>674hu6>iorA1z!n6Tt{>n#xPf9-qaF%Z5t+Q(&O4i zmUWYohA@-YJfk+o)(jkFC#MM|t@LbuAZ6Ein>%F8*PB^a#6K<fZ<O!WCSVB=>|N;3 ztlFWHm7E9ym3_hSpeuisIpC%PiLV%5$nSO0bD!=#@e<$YlLLXv2t!d&m~!=5We#A4 zA3wMtpuQ6W_`MRs^Q^Vi<#gb-#@`(t`Di^1Nw5s*w+@%VO4uNF;5o5|8HTvv8XsXW zy|?wO!{M_A8=yh~#!!<>`ZlW$dKF3@V{r8%69u_%_5bK#DEb6y1h6rXwIkv@>KVJ@ zBAy}~UZ6~;!Y|<5{!15VByIwa(ogW`1v4`;K)?e|CjmatQUalPetw-yV$6<wuoj-C zRiF>&Ld}8=S`GZf%8o<(Sn(aj!ek)yArBFx#t^+&TvJ2B!2(TJqgpZS^<06|#Sdor z==nv~JoXL_8p`mrdZVZ*VFyak0AbMs<;Zd$r2PC&vqGrzgNFd|KGExLhG@Y*4s}j* zB2YMig8<L^n4T5x=Jl^p3PQxx+ns@bd`{|SDckzq@}uA)fQ*pKi1Yk4_(?E*{;H}V zNOl_FmDT<7e$ge9p`!k-!lJ|`+x03^5t5RwM%SWOk<*3TN;)2Nl!;DG+*XCJ8gP12 z+20RJI4GSlva7$nRD4lQqYRgaFi!}Ua%Zv9#`Tk5%yJrDzpielc{@XO$f%}p)q>6G zOvvhOX9I>ptP10<D}A-%7o_vrHyO`F-lLHA`EGpk#O%?dfy?{6kA2f#{NW$Yxe&5t zTu_t@zAiOum90DQG{@g!g%@lM1F=6=SiqO|tedO&tG_<}$%M6NXyiw6+b<Kj_M^Tc zkIMt<k3%WhJCuoJ4=De~A9?+M3roE0h-V}GYIbo?wsXaQCG822;(ac*jVX4-n6uR3 z=sxH+R<0+tTYqR!B%5<&X8PJ72%EPpIV#P2V5zcg(sbqFa*8gG;j=aYygT!g`et(C zo^RX<zZKSS;a&@_-Kur#=gLWOoq3TL!@v|y{8*ov?mbg6*BL!g(bOGd!rdUE)!5)g z4i|BJed^6`-}+rg&d^+z(gZFLKiK<O)aZA*MGqod3Did)*Q$yYN5c${I)NIH)>Xss zjiv*@8^I)7O~-83LL0}>!8A0*#Tb8HgXr`ws8>LMrf}eq`9og{`x``Oa)72F!{ybH z<+Gy?OdzJag9efMDTtSi0AV^vj0hXWnz^5dbi8<x0g5~=t)!b%#W%ny0?kQ~SUERR zPT?5NZ=>4#8bUY`YUmHNe{fb%S9XPYAE;HZ`v7DSophegKW>o7g8T<jiX8ab{D6M} zSzi2s(+%z1hx5(O1DosXF#f<1ZvmMB;*+HV7g-u}$?vDeM#qu!@Qr<A6nxm|vUnS8 zp`kDVVF20jgQgG6&`tDPA8<p1Skl@$H{#U{saz=h0#Ju$priQ-Yyim$N$%{{pP8W- zio`<bi9yH-a=n6#4baqcAtND36#4+maZn25gA5pw4TrLQHu^z+A_lfX>Ehl3m1}M= z)$AbOM6d@Tj*%w_f0^Yzu7r|C#X+u%{)WK)|De(pul##y{@uG^r@4-rb|%u*oETrr zqbPdCi3~Tm>(JGLAS4ifAO;%R)k6tIDg^{v!Ft&b6cR@XwV@MXp=aIc4)_hQvFB=W zIzuJxW8#CNGo|k0YJU2te#bycNW15Y(_BptB_-C%wP}pw>DYo%tipOlw()wQ2I49n znKR#pas~$9+Rsobx5AS{92q*Z@IktkEs~BfZ%h%`G1W!Px}>b~PpTaX8lu*0MhCVj z`3fZ&<9Vhz%l5`$AlbSlr5T_=n9J+79#r!?$O9*?UoU`wVH(~{fF+<Q2Duu{<Co)! zk2v|`6GgsaIU7*IZw3^BAh;OOdcf);wB?Y(0e|b*rGt$@o8hY?mV9^aR96O4k_BOg z*Fz}{@dn-=864<ww*ISQCx3$&1JMHZhw+x))(y|Day-HW9ZK&7Mn6K%gd2F~jkFh} zc*~M)BfPdXFr}^07F|B+>t*_P*Nf~&60Lc{F7_AOUFCgiWwI%2M$zG7u(0-cN|eT! z1na5{PB=q~hBPOzgPbJwLkd+R>GEL_Gn~yFxvqZu?5Ao~d5rNoV@M1ojnk(Zll+lT zKHIIJz5JPsCQf5G6G#;rVC0`#>}&a|mTU3&oSRk?_Rqb&ao|{5KB7*Ost|_ZsDuvq zZ~(V=I^HkW;7V^??i(J^yZ&S;hBi;*kNblMhjXfn(s}Wn896Q!xG7k@Uj;TE{C+lj z>?7#n8!SuhH4q4J5MmNQh*uAakd~7RHQfV|S%kI0txS<2&y~SAd^|+qxDWPQ_fhGB zY36xZ*>STx5*HvEJk0K|Jxl=A%TtFaZin}kE3}ITc!<FRPbe%65<!;-@sv`)|Ap-I z{W#Ma3*2D5vpW<nK#~A1-#-E)sCSTKI>IkLT2qyQ=iSOcN{1mMO-wD^!fsOrw%bWL ze?pMs8~8;f!Ss_3hE51TF^z15@>SWkqm2CDr1OYj;)1mTgiVTpC?C<4k#kJ**Ze40 zCRu?E4ajcy*5@?-Ww1aIhKGxYRwNpfH-GO4+=OlrqHRJDe;PeAa5KRS*Kai*H`4&6 z3${{^G|~QH6#g42+6z$8;Ey-|W8lQGoVW-2gnKX|L2XuLC;$BGz3D0-H#T5N(+1uL z|E#i54hTH<V(H5}YqPHNHg||F#;p#kJ{Xf!=B>@!H)3jFjegZ{g>jI3*Q-Xr5SiHH zMykkguYO6@;aZ5MxolxbA)dnB+1cxn$+GN`p&DL`B&jP2x7lOLOf1IuWbh`(+bUAB z7p$gUU*xJN<>D=Q@q#b`Z!&%FGn;*AGX3eI_Qg~@l`|pZ)8q0jgfYWPvwWjZy1Vw( zJFtYC@0kVFTyWbxw?Hc;S2{Jz#t=Mn_H5p7Yo!c22K{V;4(IPgiSoc)@LhK>EdbmV zaHv;mXao+@9AK;aKdJ*n<$(E!wzf80TR>XgzCireQ$GIUnMCW*+H)CB-L9DDX2G&k z7Z{F%R{txJlezy<EGgWlhy~2E#e4b%8Ea$NW}fI%Vgh9!c6)kE5lhn7I{RzdNo!iD zbPbVeonpUfqn$&WXRFOo(N6K;{ZgcO0oI7gNG$_x<UoKJtK{K<-<#)owRrIp8N}3K zy-ve_7Cy<oGYN6W<KlIWX5r4N|56ZlwZ?5;eo92R#`WmIbG)mXhI(fnq^fHf$gm$3 z^s_z3)SH<F57ctO@AkRs!77;oOh|A{;Cb2%0wDk9?GrESv&pbZxeu}8z$r$O@f$a8 zpj<^DG62;Cmh#I;*4@yM0zF;M4?>%_ATU6RF;KGteG|SR+a(@0pyvi_srW5IOg%?M zzy0{J3@%bdEiLH~Vk;kaX`Rd#{G2+<V)(7V>rfvygwVNynsm{m68281sgzw>*+WnG zAxsIdF9<vBWy^Rg3Zdb^$68BsA<B2ZrV24hm~Lp=2KPJmZ=fdyr4GOu1%U1gxF~%_ z!Ac-KM*?x=&T0;4R_y&Vc#jdM2Q~uDu1iQ3ehPxg(4)ell3EQj9#lIS*gGIr5^}i# zpr6*cIZ%<g2ik}kFr7rY5%fGyPEKC*n9xAZIzmE1xeZ?+N9pqu%UJWDU&nlp*GyNz z7S0A94JfyZCwo^B!Vh+Ee?ESZD&R}%UoQOuu3YpTz~Q<7dnIibxn@9Hvi)?^7u^K! z0&XL}On_w0-}p(4_+qBn)&@up00gBp2(+nz8P64{Dm74k5B8tBa@<%+)`H0grGz67 zI}k9OW57XM7KHo&$b;BIT&5ja@V#R*GyN#V4Nxa!z6U7pKkGUeHsNaB0aOTubpFz! z*?7AlY17u^JU;*i9;jasgJ5J)xP1(O{s|PRB?u>6fjROEG?P}asr|K-O2KJMZznk8 zt+499C+5d{zbujT!UYCq%3Qh&lQU96@1mZ5FE&@FYmiy1d6TQ?!!x1JEGS}honmdy zr^eD+6vnFX;$q70_>=0omtN~|X2z&n8r+eWQfNt*f0-;KGWua$UPXb{@QS^|b9m{{ z0@A%#sn2Vu`aC{+U*iHz2zJFBP+;wg{CuwTXOlAwstEDBEx)<gFd=CvJldF>&mC|& zFP_v{VZVT(D<}%TINMj}y<Vu<TrlTM?&B%(IjFSIe1Q%P6jf~CHX;$(05+j;K&N4S zyoomhqPD&gTCgz%qCF9{KnSuP1+gX6064w(L?K*m$l%l)7p?eeLY`q9f-+uZ`SrK= zW&SM~ItBl4aoFV}*4N}0RF%L;drIG7{WUlLQRo(iE#@+>3MP=;;B{=+UgLw=7mW!@ zVt3-r$M#7bV&#$wsu^jIUL~5PD2}rbuG{nGR>x->6_B5}c3cV1@#ovJD5FTtWc<Mz zaV@BOOo-(tDT`{a5(D>{kWey04KY{pcdY&~F%|27Hval0sEIgB5Auy=xP_4G(}cJY zGrIVObS2T_U{9>Bk5Jpj-9zrffYX6C1{yd}%C$k4g_=%eQHqkf=QsV+K(@fkc4Vqf zLQEJ6CSF=%(8B@C_hVtwZ3|Fu173~dnh^2;)#)YRY9ITGVMyAgQ0X;8+_9@4?qLH| zw*p6T8NMeUlt5?~h;ldexxUy=4C?Wq(8@OWIUV`mpoc|EZAgT21FyO-h1O}BZg8}B zC$!W+QSY;ObO}t`x@x(Ql>Ht!WYdRyL?GjZ&I7O$+-_Ywj)fhZfWkNUeAfM8bI1wo z2*k_2c6Xvw17g(Zi%_7`2mhmW6x3|&J|+igguqRNe-p{|?ACF`0w5d+B`e+!q6J*4 z8Ze^5<PYG^>E8}XRo5XBS@{37dC1HHDhhfOFW!I44;($77hf4s6Fw}qdJ##8;IB0U zb|IMXm#A=->(>BWM0sipx}zkdb_A3bMa`le3jEnlb)j6VrD(xFu2;YFG2nne3oe|4 z<zfv(6q|^$6u-b-gZB~K=iXAcf-$WBR`BI&F#d%_Ab_HSkxGpK72P}d6uvvRc#;a7 zf}`#9Q-A|2si;J`l+$=j!5(Irwij(LKrH}`Ni6cagcl2Z-f8%I_`M%PFALm9Ah-d) z3yCiFz(>e*Xuq?lZI(nr&1YwRsD6)>7NFKTxR~IXQ-ocKC^9ew_uX#TpLjf2^z(#s zu++ys5Vxya`r~6`N9d#6pYP5Gg(igBGgnSD12ORHU5A3QyR;8D`?CweYmcTiqAzMH z=ok>B-VVNZub#1hnL}g1;j)v>?irUv_lsO}c%NQZ%)aore)hqQgwhyIYOcZNfL28g z_1W&)o{0%<3k5D5V%{rqhBOs|iX5YrYp-v<C6%lMp5_^2V&z&t6*3w8vnw}k{@|xa z%g7msC3T1dq8aTzZ=cr34BRKao-YC`b<|a9vW$WU-hIs4HF$rKuy5&5@52adgs*>A z89ns{_cL*?Euc0Y0Eu<`Z9e3p0rwp>OR&5|O(QU&akl3D0GC3#9cT?<qYmR$X+=d* zadEGjHVJcO(2TpPQ4q65p2!91d(lxyg82Br{{K(dhD)oJq%&s?9okCuY=k@2<g6nY z8A2|LsW6iC^z;-rT^;IknBp&gh-su7hzwm$&@)(-t*8n4S$pwtyIu%f{RRs4U;Ln} z-@zhu(9%nNl{lcK{|q4D@~8s!Fza!<i-lAA$_!aJsqf^T5NSM>vX<<}+~$<i)4MWV z6kYyobz<q<>O$X1SML`a`zxFn1!+uz^hattLylWGo(U<w)E9aKKj;%BYoh7`!o47P zM8UrS_HZaO_ydUdkk2s~JM4g*J{?8BAp=AxUB4|a7+d3m9W~n4L&1j!<J2F?j|K8E z`LMc%Pk_1Xmp&7LvR#lGuS`x%j80E0!iiPG=;-P~ES#eFrTrrkM{uHo1qN6?sVnol zewKw9P#LacKxU7Ll$Ka+lXX#djy=>=Utj(3mwo3CkS@ZQ4g^U{V9a&6E{UFl9kctj zb=s$2vViD|V&)v@_U2lkuvUY9YHV&UiZ}=w8!pP-vt?vz;t4Z#wyW`Mr=Zt|U^LUW zEza^Y>JZNhBXKV*n}Lf1{559MZIdoEj>6@33n&kt?unLk0No2+1h7Gg(tHenHVk*8 zhT#26U)lVb5EvG&CTVCBtD`yEoC&f;2-FMjT%-!sD!%mzwDG`LK%y};5w4l_+C!Ui z(S1}31`Qb4i?Xf(CjrLzKG%z;zpTG!16A43hx+F&AL!hT;Y+b$b^fc*3_v_nGcBF} z;{trR_wp>vUW`S|NIV4%2ja-j&(EKNM)#omQ}FSh#h$c^>x(I>m~PM?BhD3COj1EN zjJ$MUh=E%WiX}9V(7FAc_0^>%q~4cSil^Zn3t1T&(k%FUb8kW1IQIGQ-+-t0pFeEz zYx<Cx>32CI#N$ylK`j+|^uPvIki$Kxk0h6cut%`5A2T&~=L*DL6U;yGz@yW%BEgfo z_bHso4ihhVih!YC)os71wQN|d^XBv09v+Jw2E=@>-=D62*;}8z{j~C$NzT4^=grHX zCioJbs_RFQtJ7V!UCYU_m1pR?zHlhNmpw0&=@LKbDlQmOZ>jGf$<EnhD~ow-K@>-* z`Ko2jvCvFdzS>&rrl9TZmm@2T7LSRo%4;<U9b^jG(gli`XwqI1J6Qb6O~9NsG^&p! z9iz3Bq7|oYn6Z25+Se9ax46wCZK<y4CO}ir!xw#>;m}1P=P8qBVX{}Y0&KZ~Bcp<$ zXTZV6#)eP$_#E*hsa3I_&eRp-)~|k)m&Xtm76v>l<qq3-NoT*gj&;Z64S#-m>8J$A zW8LEya89qdr3VI{ZiIdeR$~9&2pSp-cXy#0OjBbcf|3wS53TYO@HhoVEZ~x(laq2l zIGeN=zAJN>y-318X~*WG{c+uS*%P{dfgeh5Fy-i@R5iz44esr#m?W&ZX=*mc8M3kQ zjJquD&$KViH9E?TjQ%<94v6EuajVTIR8l#RJeKcX<IN~x*~n0SDze<7FO5eVX8PLw zYEJlfNdzREvplanO}di$nC0vkM*16BKEW-Ds8_o;N_7j&c(Q90jC%1E#zf3=UE*7+ z40`UeT^hXL^4p~szqMa=y~i;0wG1XDtENm;-^XlWJ9zitKr{yyecn*@k-V0JGRk+& zXz_D?6c4DRqLA_(3K{}zhr!(O1d0EU5f?<pDN&q`d62Tb?TQ@r5LW=XZh<Tw0#t2k zZ(E*AL@RkPw;Wwu9MMv{p_69TI^&}7F*+uOUsUuBgvpb!#Gk=>SN9!;p9E|6#+l}> z!Ci3x3sv&ebE~T2Ha0exANfMwNB@c&_|6kl2zPA014|4@3Wv`S@V^tKT^t|REXh~Y zlendK&z+qzDrv8v%>V0xnu~2kkvcnbi~0DgpyWi08qq*sH|8X!*740&r`_Ma^Afbd z0{h^%4_eK6kB^5<@NRBosBA788hJ+hO5FUE!AVX?7P~gPE^!@yWcPb)+Bu%6*A_cs zMZ1g5B83FCy%K+n9yJJ``Gj`CpncgAkL&K1>NuRNN*r1B2B8B&_mbLduamWv+`OOg z$CP$I-&m_5#5ZyrmwuF}JRq=h&2csBYWABy!;DKtz$f;)B6qpiqd{Zql*3pEy-=Q} zS8+5iR$)cH<;enJWTHfha>~ic>Ee;EJ=4TEiUd<s?qAE_Z(oSO<@oHzAX1yu%0I`5 zX^5O?m-ViWj>K@01q8A)Y!|+wF;eq=WlDHm^NVO=@3ST3TmbG!LvY)mL}xhhK+Vhn z<wfniPdzV`eXp1Oc-Rmx@fT{$PHIzID7Xeb1+H_#$SOyQa{rC5imO8XKNR2b5v`T` zesite_Vr!t+xG+IB=Q1$n(<uo8S^56pPwJxdOLkLPx#ZttN&3q;Z7a|pyMq#jHO2l z-~FL{`Gh;>0+<oMslHCnRE<9Nbrt)6AN>CM{6@@3B+sRq2^$YwcD2`5$$8pb^4*X5 zF?sQ~y{%0;%DnVMSZm8wMcGw;R(}w-Cd8h*^XhTwLrTWy)z)-zQ;N&eqIcWQEaYoN zT%qsv)^+?7EID2JkWnOV3`^@Q)y#{OmK!&2Ik@B*UXmK4<`|RBs(Xnm@G55dv`fml zTjAm1Xq9pBv*hLwAU1rxd;nZ698NXu#Co<d^@~ly0R$rF$koo@s!%^uOHZ>h)r?cd zjE!k@?4(qkN=W>Q{EJ~kzdfazri@QTP5tTe$*0TBn;l2hQ&TLVE+T{Npif2;dTb=` zXZ>9iM6bAKP@zkfzj9;K`}`*K+N?OLXg)@~o$OUtK(Sm0xtq)?R^U<Du6CW!fh z3RPIvgW0>j;C0ir?+1v~+7FH)n?>45ycnskR=V72v|LYRSn1e{ZjRU-m9<{dS}QcY z%F4fRCvnwgPR*uCsfn$9q<8u6(Cm9E#p1c?gKP7#y^U%%*veN9GCsM;-AG{7Ku<Kd zjZo3it$=0nDaQP<m2~K|(D*?>Ae#QTaAt98h?9Bps^XpZ^PSrkQBpVz-CgumH#Vp! zRo4pxj<2~}U#!o2UWPG}e)5LWnVX$qtEjsU@4R08%ih$RCAB+LbhIVLmr5p5`=0RC zhW4%3$-kd4)0JPBBwo2)ZgM7%Uq4UsInAdPa%<V8CjK$u5?Md<$e;WD!#z~USEL)Z zOhX9SW50eSg%I6iN%?1E_5%d}2uF}Bj2byWl*$TNj+sGgjL`FP!v?}4^6b@5-gl(M zSKP!9HwiieINZ^3ae@*O*~=u3BIjBh`gPP)FMLpRc_$jX>?VeIL8aEg^tqbP5Q6c~ zTt7Vg_h`6;w!-7h@5ebL`sgTc?J)j#lo=_))Rt`>vs_+r#DAC*5g_Aa>E}3aF5^o* zCs}@bn)#bR>a^ig873})a|89l2OSEE5yX@Xj#;nfatp&7%<L~}e;9D@NK?FCT+ME- zE+UyvA|Fh^s8x6>>Xl(=W8&zc-I+XsXLuBb7(4DSRHGCjXF&i(>O>@PF1uXm*U;^F z{Ypa<*q_6ArFiLN70MQ<tsp#8aP9eFLsJv{qIa%d-`Jb{A+?ArNKB%*;Q`i$a1Hl2 z@^sx!x|pIIdUA3in|Dfh(4au>CCjF8?<kBtww?EH@-#i>4~vaGw+FoI7goJfhW=ps zxeKx`h7dS~sDTP0MoN3Q00aaCH1!zDwc&SPekY~%!Zahnr{6mB+M>KbS;CLNjC_u# zk6K*+US|xXnM-5Mrn!Gf*txU)V>$J+NiRPkrk@`kCOvDVIVv-_S(H|!^s4u`ct3ri zvc@!{!AVX2#d&z!e!o$W=t1RRbr(k}KE4&Mab#%7Wl)QAFgV=)fcK+NovXhzeMhgG zvc_2~!tou?T^r(5d}=y6Y0P=28-%3g+WKW|rH-Ky_lcFyUpe-QPEnN1JjK93BrM&$ z>-qF_&qQ(?276Xk$AlYm1%n+$Oz0%VgyF)FHJH){i?C+I5d)KY=h{Gnb=F1CafdPk zQ!xu=j(>>^-m6dhfGLhlBdh$@9qs}jl}N^Sv1;&rz2H$mL;R(`S>r$3H~o0QwkFrG zf;Ch~#QDP;7y!MIudUTO@?L%U@@4X%^}vc-V%aE(NoBJFPnya^KGgrJdHqy~qFXAX z{hOkx$g%C0Bb_Iyr*{E}2M97=fi!Y6pkTE6&a25M+Cs2}Ojsuobzlm7yn)xhWGRro z$>qJh*e}~rTH(~q5?o7FUhjH}%-}38rMs|l&+V9xZi3&({0lzl60b<dapGsN=e3f0 zY35qVK2*xfU)P+Q(`GVZTzoZU=aKA1M}~Vl;XxGpt0XF%yiiFa=?a2qNtG?b$J#Z~ zDd8G)Pcfgrd+I8zlF#X6ahFW-UjMq}MXPsuG=a*TinVUyE@>Bwp^J^BQo)$WlJ_OF z8-QPfJnHqUg$rQ}nIcY%7%bmK<lsX<-2iF;%L;2Vvq!-0u<Mb?%p23ZDj?7U-Go7> z{|)3$ljFC?KqLc<58&AsX(xWv!+^ks4F+^BNzFi2Wk~2WgD*L41^^o@pZN*Kjc<yO zGA9jvE_t6B{ZpkXZNcA%kh96DAfq&a$l*tyjg|V6f7AY*hX#TT?_(Pm?*uq*dL<>8 z$MiW9?XYPX6}`X9+_`5ZbSF6A?|#4t3gTG4tW5SWhGOkvMnYUnj?vD3$iq@u%cL00 z0|%}Fl3GR@hWj0A9bW}6MO*lV)<{e}w96-~(`Yw1MNspipD-}eemp+`!;rxGT;)oU zBDqeZMsmijd((>ED~}ytB~hE(m1=WRk?G`~m64&cw@RKm<MiQ1M49*Xyeig#V9#iw z)A<d^8HMXkn`n#ayA&<cNWviA3&uVs5;7%jn#zE^C&r&_Tssp)&!F*iencm69xQR7 zXh+A!!ZRxk<J9r-F+5ONovU&b^iQ7;?zV;G+RIC~9xbliaZkd^UL9LpR4dZ#S1g6* z)@nK?{@?vK%|tINbe#uhJGs5CPs-wDrsOC_(jsz4*Wi}WecoFaNA<J)4mte!uf+<` zIB3;P4}SuwPvtcR%E&G=eynKT>8Vx%UbdQ9#sqzC2O6GCMw*Z=eKI3c3*1K$7!D>D zJTik*p|X8}Dt6M*<Ln&Uaw(&PJFmq<_s&f@f45$H!zXAn)cyGDle;Ci4L#&<&92|N z+3I9$wv5Gofv+XE|Ci3Sk_js*ZOe~vmkm(p8Fy<a(8*DSK^spWg8I#-_H`%Z*o0!7 zKe!EYBZ4m6bZA*rKlKOFe|VA0OhG|`(xa;eeCxAchF5`Jr<0%m0xgSx7C&luAM|3i z01TBkAQIFUDAhnd1PjTB;H&VMznEw2H*hZAKq-ybJVHOh7x;aZ4l07<r8BiQ%1pL( zIIN}NG!*hNewioNot~=f$7nG%9}6+P8Rsmwv3fmhAs~I%w&}M@<6OG+b(w)8f~p&I z8;44BWfyBkf7H1tE9Ay9-_`z8w7=-pR(N<v{7#gpK`ZS@MFb}nAxTWIqFkx)q`jig z0vls)mwj+gE=Ec&#gv=oigjTs)>T20m~ma^#j~2d-lwg93^!^doOj?JC!ND{vQUZU zTEHsE(<CU>4*KdxO=4+C3*}~M_i<-V{%};^f>&FP<ARxhj``t@tCY<?d|=y|Gr8gG z1Q}#XvGql~esnD%-;|$)cyUrjA;X>`a@dwJOG+=mQk!2$=+*Qz75rU^&YrD-IRnU1 z2FOSg#x*$TMCZ@Hd;ea6DvaRSN_o_8-)xJTC-q7WPj3|y5fLFA$jE4}(8^0th*REk ze}oOxKGb_cRyexoqhz7A-iF@5`9yIudBI&$J`u*!5O*mGFU|bXX|szC!c!sJjpMFX z4ftx`E-4mJdtzf2;{;FRW5}m6zWOl~q@NT%YwR!g<*p<V;h!)o>Y-;mohB?9QLiJ8 zBR8VS-Y_O&$vW4|`N4m)irxL^$0qmuia1{KsW%W|E6R}iB;;czMj;V?D_3X-#}^mR zcY)>fx6RE}*kt6xnuH!RYPbt>g-vzqq=hP@%4Ej0L6+`7rq?}uR(5uFJspL~$;vE` zUc6cw!Z7T&2(zv{V0mZ4r^A_&=z9n0HWGgstFI&md3t!T1h%zaf*ugoK(Y?1K0ZDs z3n~4IBo5q@_9?*cVX+q}IdD^odC6C3%!43ZmdR~nqY&bMfkP+$K<tOX__>2tk>)3q zzyUz#G9V&F#ysz57)%U)1M^}VmM2J_0SvwDpDr!NHuEn$kg?(7z5x&%1a01WDea{b zwX)IlH_N-Z)k?PW=gh=bhQHtsv|&;c4~w!}7U?x3u{*<=RzPEzeYA`B<#P2C<w`|w z$BUu8CDATXBxB56`jM`bviSsff!#8F%$nNsqa2z^?^8qC+z3qq6?e?caeIT}FD)%u zY6r)^Az)A7bka!Se<mk1Y(&!Uj@$p_uco8bkXxg0hqKN4(;uR9TGvik?27H|<t?r` zjug)++80IU^b(LW*yB=_H+WFG>h<e7483`SfvXS1HNqNhXW>N6%?-lzkMMaYzLA`_ zFj5fRwsZUd&|2n{bD7UfJSo$IuApOfN8-O@##iX*9jQ8k%W`*K!^y*vn=!qpDnUt^ zP~3dGkj1vZkLHX(tmKD;2yEI5*aRH>Jr;!wUGznAoKZjXe>I%t*X{d|5}AS*6d6~Y zAPxcB^@P|VQw7TB&PVa$>K;=0$_^L!*qp!izBkn^WpnZPjL6UPg2%!~S}BBTisG5) zd>x-U$h`{8_t}fZH76M7WVLN+28j6pe3`Sk@S6cN{|)gc={VHpRO9d72{LrqQ!W<= zpJA|XQ4FFt1B}kD;@kTAzxVn^t_`<4LA2VnZ_Mz&V4a8JW{~49RE)P%=ZT2;`1oLv z4b(WcBRA`JMaiH8xgmDj@Z0h%XOWec*Aw7gvT_PB<cEBNW)j$9EZ(}~tBvjSZotzt z_WBeGpMr$wZupzS<Bo_nuqqHk4m5C6?$pHjMFWgEr9=I8#jS14Wb-rhnAY2$U!yPb zuz!vy8*zR=EPY`@S^{-cL1$+UV1?KXUEmm|W(AUGW6ybytb08KSpg@%`&Szvl}lnb zePk={??IfqhsQRE2~v>;30?GLhiosiV|tG~yu3tfx<zz9hZs8NK@X*-rk3dWEZxxQ zv#>?dAI+Ww1)dAJ6-~|#mRmbwRw`%C-|R>|-ZzvTDgXV`Y4*`M`F@pZFKs6(RT_*` z1Y<oZ6UFUK7J?<2qsZgy&Sp;f^|4-&tK71+%8r|q+GQCDHOk^G#D1N!jJydnT1=B^ zgP|9mzE?ToN-S2D#u8?FHtr`%onavPSMyeJrK6+eVTPS{R<TY|l4^*M^QM2v{>lz@ zF#*rwKIkAVAVLdTU1sW>d08cRB7J?cPEPy}4-b)#A-Knw+1W*CK6?dK?lmw9?p!5^ zmv|qYJn*j<JSTvK&alrpE~Tw_U4uw31Hp*tUIrFBA$k1}X2z#{W<&!tR-9T<F*-)g zok{6G+4~}yYjdb>X*a0Lw`i%S#uEls<VXG>tubYJT^1R(Na%2*zB)vjPo98DIIx0# z%#O@VE_QUV?o+7$B_Er!0me<Sr=O+2u;Z1jc|?&*z^{3V!R$Mh0L}UN=?V_(Wd1M? zt>SyI<78<hEM0l&DkXE+)F8s3Jbo-OvpQCK0B7fdC=j*uLGPkomspsh0}m})BcY+L zZH3$AQ*owqkKrH;tD>+lPSD)xz1oq0`fdn#*afBP(-Ge<f=WlmU4A_TY-oR_&P7Q! zXE9rg&n!asXz|aNt8M%3o2sOfDjWbV`L14H`~-{I+d)O{rm9nY=PWHPk;U?l&c7$x zWjZHd@4pLGEfU~DiM^UQ^XNQ%F1K#n3)N=bLE2_SU`_IKe;>s>#DlK`P+!VJ6x-Gt z=R`sFgR(tAw2|e1_^s`ms>^dGW@G27?d@&ZZ(k(v|LIGW4jlo?gzCo3Trid4E73W> z`?h+Oo-QKX{0-2W`oPKa<%=5n_F<UkP}>1K==5CQ4;!wfY@6J~t736(X0J7M%+Hbr z|6+c(XZUKiFK79>=R)5zwzgQYUCIPO3M)SO*I{OZH7Q1#a+)dJAp&ufcM8oyUp0S? zrFnO_{aZBj`6)|FP41M=0eQp9PoGFQS2(k`Yvj%5y)Fgd>*o`O5vw}NhSU}g$99lS z8+fQ?G|y14Ovc9U+vlZcjF{IxZ-|+@ZL^|!rTN3+-7*Km_Latc@i-tR08*3`8U52E zr}D=W-7b-A6}U$Qth|0D{I7$2Il6p0O+P`{JV7<$VvJ4OwP8E&WM%b0(ZJR&#!yu( zPWnnCIg@FY&n<qQ7!JlIB}GT;NYZEO=X$BB)-CV3KkCBSj_zbIVbj2n7?BsW+kYZa zj$^23S?^ZZdS0-c&!YX3Q};^(`E<ScnGxsNTX`i>mDF15kmpAdM2;yS(F}CAijFCG zHQ}0|iXGBRy<t)F1{!*yz;gQ!#WRivR)LC3<vuiq4!wPSWOE9$nosVq5y{BQ%L4!i z2RJwRGtebe+{|O5qnVH18wy^#rYw=8wv*9(KNCoUa4bB2TYs;laahBmvLpid;cht7 z{oGVrdt0s$XTL{KW|5lk6k6#b$}9+^yr7MY<qwn2>w-5Mxq_QqR^dQ20Yn%0S9xuR zam-)|i5ge5=QQSleGP;dg?w~7iq~Xi`9?c8JMEknC9m8M!{`9)XnO#I>rdv;+7o4& zs*ET2d*Pp}DHxmVLfHqI)Zy}dwMDhTG+v}>QA=#!<QkW|^5J?jiAFr*ISYz{vl`rT zv#Y~PW50MukKSDuyI1x5ZT5I?qTCtw-%ba~HB-6VIMNyk+{sRX>dT|Da#v-`D|?16 z>wo^BOA=C{8Y27BHCg?VB%u_QU6{N)Qxv1C#1-0=ez)HwMe3L<TGD1Dt2cdD6k~0c zCQX+P7Z&)N6!vZvPt7iP-g;;{G+`C<xT5~rVEg+YM;ym~%M;;z{QDoR*5}853(JU{ zvxZUkrD<4n7hH2MH*jrTUk;_K)fW)YsYaI$Rns~+%wZHH<OYjQB_w_D{%b;h%xKi) zEYA^0A{!X{Q!?B&UhA^WWCn}F=5)lH#7e(y>}RV=*>{>!Hy36{x<*e~Uk{6C&G_cY ziT%m_)bL}hT!NI5M*FV$xJoI*n9GyCeTFfwN|IeHH=+%2n3mq^^PPWMhr{{&4m%e+ z_g1~Mn0GLr5-(|!NMvmUc8iitE$v`Tt98udDEE8S1=Q{rE?&IXbsF3Z)HzdtpRItA zdZrC;b?g%}Pa{|yg-V}(WX#hCj-jIK_3zLsNppaiqiXIilv6~2Ehu2BIsam>sKU?r zxTc0533D4#VSquK;#1J#u`-Lgh_511gXXi4Rc{=rF4~1Hyz&NU0y`@Qj4Zp78fjlN zdS&+^<G-|ypDh1@W7O2t$nq6#G`2o2a>BMR!c}=7p9h9gHYg*a;8@X&?0SJxcg(O3 z;#Fm(8ewY%f~Q166HR6K;mxvRlT;DHUr1HvM4>Z<Q?6=q(<X2_JI?)-KVaqmE>5?V z0p^4Tt;Kb?VcP&3Em3E8Omlzo^9HSLM(vpFDG}CR+ypJw<&s8${0!N)-<~X}*3?CH zFF5`AJSJR!<@Jw-%&nC0idgd$IZFZ}jE>dZ6IQ-U<Al+X&k7H`diCS+q#~ksEeV(+ z+^j<RM|ktK!*#JFELZq@2WZsDPf_b-G$=A`g@h-Hi5IDlGwQS%KZ;X`=o*-9Unu=N zlP=-IF-<oi)oRf+M=`flS^hryiAz22ixC-)lv`QNzi8Pmvd%49^*I@*o^15@4xvl! zVDP`Oc)j{%-_(SoXU69Y(ZS6-a${PXjYI4O#8i(p<px-A@YKl~U8eX*R<uYoh?BA% znq0HF&Nwc-NFWYQVP#Fq_#rBWf2NoIMktBItgKYJ2v&L>v3>Fzk~fS6dAOYs372MZ zsEAUDStxR=z4X^6cYJ4r0x8~ktKPn+aQ=Ogfe7oI+QZCxfihr|L0fq4-xg(R3a<-n zVw+)elgO##Y{bC=cN3K*2nv@WD)jb`%jQ)1$&5q=##ggfk(1ZG1@Bdsma<0#&nw+^ z8X&eS9<fM#B}PD(IRG2@XiZKfu1(H*;Y1NB;w{v9`bxwR2LT5>+QoN?c6rx(=eIAN z*hDG)JtsTnIJcIIz)g!3um=prIN<mfU_DlI?R&FPYJT6fkhU1DA9(-n@S?O{&}94X zB;{;@xINvXCSr<)g9XXty?_V3hV>P`l6CdHz8{}cxO=BbKs#u7P$ziMVS3@?I>+?8 z*(3Wr4Q~{Qn1o)*A9!t*Opg|U(S{galO&Tv<brbwNsl_6YveL#kE{42d}Cw32~tsC zvbAgL`C2R`jU5rMZuk6}q;hCA6aASd#(|@~Ry7pN)RUGRsWH3GVy`LkMOX=GNlZwk zi0#7g6yh}*oRSMol!%oJzhH4GM|d$ZX<93BV4Nb7vCdxCw&}?7YUnRpf2zimP*=Ce zP$iV%r%*K6=v=NghwoWbK`n(qI-)A^|2j1C{BW6sKQHA|a?4{<^rT<)w&@2fCzkeg zCu!etEQ<>A41UeLCMtcJCb(kRTqKo<IaTrsu}CEzE>#}?9oc(wr?qcHl0OaEy&}KK zL7l*iAz_KQibvZd^IOdQ)QWP-m>abN%ea@9CYk+c&*z;AdS*P{*{Um2PwE#R#i;aO z6_2|*$Sq*dk<h;|m%gH@45;hc#En>X*T(w#A|@x6WX<uJnRNCi<KAjnJ<pAK>cAjx z*^7ry37_+uvhM8~3Y^o(8XuI$%89kDjm-nv-_pG-iC{;oG<UznSW}MgyMvMKm0PPC zAR`%BWg|9*R!f^Rg<0=CaCT7q*9>ez)-cV!5;?>gy;Q(?7lYJ36!O{v+}!V&Qgmhz zPsihU<w#;_X^G(Xd#bD=9laLgN*;VeON(Qo03%pJfo27?%+iSSUmoLTNe3Vg>cPkf zLyJQkm;C137o8Pr&lcn@`A2u#VGo$qXg}8pN$XRt)+AMoyL;b;acgF}HB|ks5X}`K z&YcL$=pOb+5>k$?urZt<O;RTh@dvGr;R*H^PI1Ju(zwLn6&4y-o=G|4{68*$=A|me z&~Q?$5$q5-_UdtqQ27`9<H~#_k$1Sh5G22%C$P+PEz<NhxLGn!Hw1ywEgoA{q3#q4 z`|tEy8fRqRRx;8GLhN?@rxiJQGbnTBO)r;~OUY}b1PCrsFLM!mOS&CiRLCrp5UR`` zIi|62#nO>fJN;GpS8d#(%Uuo?isLVWW3=^2zTp^BMQ16JPCB_b{H_ln*0&_qr61GR zVkqGf5%Q81{4=Gz^IXzLLqMc>yFng%U>9RmI4zCgB6N5v-u0`{ht7!8q*ZqJgKlMj zDdG5B(RxGxfLK7^Gn(HPA7M%xJgre#RPR^edh_n!Q_aUf9RWyN?}B!-UtyC+V1&w4 z6!G#I+>?5HifqktgI1A&5hfO1$LX$PP^yMXXM<>i-)~kZB;t9cDr9XB4-YqwFk(5u zDAOI-9g^&}J_o}M^v^H%{ovp21BxZvPc4a@zWw7D`~Lf_i{J$~02LCPu~gr1zE`-* zUWBYyU<<tr{*VliCxKRT|JHMd0|sR89@n{d0w9$FZdh#V_@p}{E2GLedc|A^b8^@8 zul8<b@3)2j1#asn6jgx^F{gzHXVo2LKGQlanW03w%|ZQYJQi75X(hQ_;VDev4zaS_ zV}mlL42kUe_^C&@-1*9Nvp64>3T<ofq-n3PhnB|pY;S{C0d3MfdHNzO@v!i)(OJfn z+y?Dj)h~=?xzQVEo<%s$_Q)$6aU6_nE)L9l&dU`U$97yO96@_W5W@?0KmOykROK45 z!P#Bc8pAN8_+IE)N^fO-tHxN{^{4kyOZ|uYzpbhdgPf$W1fdbD22K%Kp_YqE%@h>3 zn@fp@Q_oe!{3c%EY+cVEvk1S0<$$aCFriu{C;^XpWMFgpJoSuz^4T{9>4FtxBf2E! z5sb2!C{6F4Q-;Tcnc+=aJxNSI-)1Uxv`e1CP_S?}MmE%V-xThptO_eCGOTa|e}V1e z&45mxH?GUkn$LL_ZyyHUym5Vlv<AEF(^;2~i+_(7$v(5(2;P{`cfM)pfXD^N+faOD zX`3zQBi*JiJ}jpJEchy_x%IbW|L?)c`Hr~FBV!O<w{7}uGUW{3p9aERPSc6rMNwLu zAocKnkZYOgZ$eGkNoo@#R5b1Z(H3r%7T`6YUD5bNECdTsg6~iWe;8smAY&8Hwk0}H znFV)rNXRQF02HF?m`Y5d2fHLdEAo;*Lu%I&Xlle?TO{!MeN&07y;8xqwz;YH-2OCq zl-%RjjOcztvg&{4qd+4>+fu-Mufb$`6=+fbq%Vh^)`#r`IIjy;`OL3nB-&H&ITmg< zKmi5c!xl6d0_!)a?e5ToUTY8@o&EQZ8sqL9jzT2n+|tkO+C=corIQJ!f3BAFb13y2 zYUh%SGbTecyci!2r`n{w)dE}EKF6{$l@s+vnr_2DK1w1*vJ2mdc`m1w$#R~KYz)fF zBdNwxLo&rDi7s*+TOo{9;^IYoRP}s{&+OK|Sy-*n^Gf_?ERqh)H_hz~hyciN`^EeA z%8fe@S+?zyWRsp%?2!wtRh54>L#OM<!hgJ$M#bkRMNB!eQp^5P)8l$Z7t=9JwF5T- z4D;zZD*Z3b9Dio%si3;A%cwgm+nOUvOS_`}jKWTh+&t(_Wl-dgM<UN9r<*Grs#H%x zF?8c5+P;70ZPiO-KZaWSQd`JIZ0!=oXwS@EeVbpYds6>^PEBIx?^yf2OD1P7sJ{;4 zD;1ThVVX+Zb$iO98Eu$_|0RX!!Nr8c;kzqbH0D&KI8qj>!I3MI@8(+CZo{UD;`BQa z+3?;hL1_$BF);{^U?-1?P8<CB>laJ6)x+K!L^97O?Gy1|Tio5WTLq_x$K;n-Z~t`o z1U;-`>?(${DeluJ^MMtC6*upo46dA!cT-cnut(4+A#O$P9l)A-yy{J$(FDEhi=E9= zD2@Uk06t|7#C`w<=`fnU5EPSU<gn1@jXIw{z^A$Ylm(%{tKf690?;f%2YkWk=F1t= z11x0@*c=RilK%;F_vXe1^!V5jJE6xwNk!IOs+^Z?4(1-Uo;>}2?jy3cK*7^6Fo1gj z%f8M-+9!5Qw>s1Ayq}()aw@o}<*cvV`_e1(&Bu~_!oWPKIK8iaC%A9lVD6XHyS>fB z=c}j-DZ%ct7`3}HTH6(tK<MzWNn@zVEG1l$UqGODdW$_UrrdvA{(+Qvz7n2X@_Tj6 zs5FUT|C=pQX+>X_t-_-C-D;6n`xMf&hJP4CjW4YmB;(x0J#$C!azNg)+WF(aXLKg+ zp6)e=HEee%&&&?{hkaXYWqP2XS(@-9G_C2pXUYAcf9Mp&|A5s8KKk~$QVQe-pS5)v z8*U4ZB}e!LP2j8C4p<@ApPG#%EmAUE!s2ggC&v0j+T#$V&1qj1v13L}%TZ8XA<Sq0 zFeXJy<W<w@mVr~DZa29bgM_ThZJ(v)z58-^jfekeD_H+wSI386nWnp=vklP?+%=zE zV|gzB)&H}l+;J+Q<9Nvhe5WcLnhNSz<{iHr(9|K!Xe9;S<H!`8nzMnm#6d7;A*n1L z9^Ur_&%WR{8CQWW0`NVu<%o$njTDf&Rd-@GkA6BYygfPEP$(5{Z_k_=Z^e}@tgn7F z8MZLgUheI7R&25Aj5wV^QA2V3NZlXR!6eyLAh*hKy#DynO!Gz!*rLXYV?7bO&kCe& z8R^`X-KW4o^Y?9oa=BCC;#W3&?He*H%Wg{>TseT#al63~5ulinPdAbY!;!^GUp<m| zZ2@9lbTGk?!5oUJuLJ;|YE}(6XkNqFKUI?DMhLugOMn)6cPA6gJ*5t_fBEG=hA%IN zc6Hrcaevvh>%3+miZl4Mjd1}MQk=T9VNH%jo3GEl{cdO5->ow3GG<IUvQgYlzeT_= zU%+oi9;laJT@$w|Qq`A_sfheB!OBd;iSaELelvY_W62y_#@p&51O0mq*)P65>U<*C zF0r_z#Si`-bB~zRCz5_Ob3P{KIVYjQgEO3y#8I)EEl<j$`a1N+rJGCQndj;zj)h0e zZ6h1zE9U=EFajw4x8<I{)PS#W`fj#T1PvRLy;QvFUng#jQu8kPma61rS>b%v^KXrL zxH1{b9c8fGX^S4Q)zgH;ktb#ikQl}Qy{K0)-D2)T7%458kx1pkqVm^Q89I2hsx9lE z5Grf)&&DT7$fP_{ZEs)RnTOgD<=OFDwve~k^OxXTXAVs}4*B2uA%nl9O^mw7oT|=^ z+hZ%dg>CE;#QX+wF3Vccu5Qc6V*c%x<V2A1AUTLDdYl!PH;@6r)-yG~$1wIFH8+yK zLQPyeSzr8T??n}6?7RKi7djm|<$jQw4MDa~#*Yya@tnUORu2w4PaG^<-PiB+y)#7W zY$PRx??$>>WcmTKS*2%tRL;rI5)87WQ=ZU1*J2zCC;QZ|ZnYPkJHN%jx~qaIdz>I_ zzH!PBK!Zfd87Yp}Fe_&Gv)=B<Q)ed!f1rgz$_yX{vh_K-xRf+B2+yd6b#e=7X*AT= z3z<}HZwe{3wm<4Hmu0zeB7a2jD4aC$(}|NKbnda!p8PIi8+I?0y=ARKjJ@N7PRT_y zFwkH^<AiA_Vi`TC3;e*4v|2<mm!yYH2#f4Wjbo{|>-@uPlV3uboae+(hz*N9m`Joa zDU7${q`MWobL+dzNR-V+UC(jHODB<qB{&)N-@Sa7Xn;_h;=;R#Nt-Eo3PQFABPy4Z zGD$+I^J*RJn2k*%PX>Dj{~?dw{~?c-^cFYG{XTADt|Zh_$e#{=cTMRueK%pWh$2Iz zW>u7aUh?Rjv-st>CeGgNnf%XBQKeWknc-;mGxt4C$yI$aeZZ(->f5G|YeS^J6w&hL zHhYoO+9~t1@|fy7S!#m?;sWxUyCeL5pNwydT5xpw{h)r%WNoO-ZKpC+ZRg-b5&P9A z#Uit}Yv9>=@e#|tA2Z0L++*+^&ReU<K$C{fpS41fD?hxUe?`s~dwY8Xflp!PuDrue z4v@G<E!X^m3Sof6J?4tzmb7odK2CAM5=CYi^JsCVOxx!8W$Y;x#IXAfe>+hm^SWDj z-+$fF?PKqW{Rhv7H}Cem%}b}@dAZ2LdgjZ!_fmp|yCbU2;q#7gziG`S=yPbAL>wqs z$P9LU;l5aX@3f2Gyhi;u&fpQ3LIDxkvGaE`1yh0^vl17^kk%O8E!ZBnE3Z$0+;ZXs z&Pn}XVvQ9k1_~@ppUm6R)3}ZH8k!`!j1F~)SR4#F`|$#Y*`rgW#QC9eUW6RN*#y+I z({Cm2uhzJCzC1YTnh&9f6n4&MnVKaOd)B2FamZh4@VDe<CY_&ut6=0W`z9yb37sTW zW=EIyr`;QW#9%;Tc$ppjKm6}fc!(QmO`e*l;KD2XKkWBL74z)+o75d0%)RW0KM&~K z*0HXrqnc7GCsmY<=~1rH7twuSKsz*W=B(EB5&<EBw_beNvpFmR<IS>00yCWvPTT_L zK1Y+=F$A(tk9$!ur=E%rNg*uoGy1xb(OW<K08hRzK|YZ9>zio-25bHGUuFC1^NPuK z6-hX2(0&xE8Qx9NwersXH?$Dz4MmVM;J_LTNwcBTtbxXqUQ-1PJ->HX$-)?lG$Y|{ zO9kk6Ym4v91s-M$7W5ud@=B{FMrD%_;mM-G-STP|xLOGbBxqmmyQrYt4-COuMVfhK zWo10id@Lm=et6V*WUP?e%iFKt+L~<MtgoovKJIt>Wz{|Xm#%GMWR^;X7{_D3Ei$E) z@ger79}}2*C*l&q)0!IGaaz=LD_sTW@??}6#dpOG@fFY4KgI-@b7gCf+1cXev1v#% zBs12hJ|FYa{Nzo@k>6;*T(Cq@oNOq`ZZn*NucO4DQ&QkS7*V<vI7PGK<CRUHHZsY| zN&o!ddsHc3#Mswul81&nS-*?PI7)R5&q!b|nLGVy_|{M2dGl)N<GcPNPA)&*Yz@$_ zEulws`uM*`wVj^kj=Y2<Tj%5E9K3u^gY%@;N%X@-L2|j6KIvhJ{q?t5*Mk3^jGg!X zl)f6zz-}F%7wN@HhEK`p7vkkYF!OPb;}iuinHMHRgloq3=57CXM*0o*!k&M3c(Aze z$P%2UnAerv9vXDXE1$kXq$_J+!i9GQ_gW(^4FTpdOIFbs{bzbrnqVPP2WHl9Pen~t z3Sz1kT6Q1j8d%uUE5-AKn8EtScdssI1xTV`4ie1|Xp}-ZDga=tnhLDwse~Kfd<DKO z{W*N!`32TY*=D@rYvpzS3b#bgDq6t<qYf^3B)$YQ!m){<rP=Meoa1N+-^Fp@zWnDS zK0-gLr*_aML6U#0@8At<QKZyte`UY=rp%p|R)-^rL@tQ~k4CAy{&5+<nr_|uIW14s z)K2#KVTieUb8V{mgHu|gl*sj*-hDs`Edzwt>UvkYaA<AnmV~aeHJQ{&%q}$g<Xfy4 zHHu-dpvhr1X49wDQIZQH-qyDxk!IW`zBX`~y|CLWtV^5y@bS#N$=7XuPIJXlw@32S z*m>O#6S$3u>5JmX6TWbg2aWc=uO#SS^)pnFJ3Q*E_9FU;TmL2M*1BWK=n{XYrAxB9 z-R0h3PQTz|FJ%i4#hTH_n=0k}^wvUO47XBpr}J|isi?m%eO)?ddAn6D!1QKF%9{#j zA>D9AbAHy^>+*hUy<F5B<BT>gY?vkalxnR9>-y&PH`<cd>Svy8rPY7p4Xqetr{>sr zbdb)FAzGWi*Y03iWF&BWW4gQ(=$mkJsL1>eTiFj+oWaiQhP|C`vw}||&KlKLp@KtA zN@J=BxrBLc4QuVz-7D%C;@FeB6Zhr1gS8w8IL732NvO#6BPTV4pKEp~I^?BHrRs{W z6nNlT{L-~3QF=gIqogbQ?LAXpWOM*d4-K<f=<ApHvJu*(WQK(~O!0{c->L5SsQHeQ zkm%lAx{R+-X?pT_WaOLi?OrOx!v(zkj!$!%uz<3IOihtBmcgVVPRpXR0aaN4V(h&) ztGn)=p6?(Dp+<ih4iFq3wC4dQh>Yhg7tO~eCsQt#fWH@<zWn5T7|>z4!xZunbcR>o zm8eyf{Xd@0I;^X$>)Hk=-6=>(cT0D7cXvvPG}4XK52d?HN<d1wQ$T5HB&9*>Tif$K z-yi2XT<VcHd+oXAoMYUhWar|0#X)SR0!M@9x`)cEnMJ<X&1D+oxT&Mp3q`uweESg+ zc0~yGv)q>pe$@Q61zcwATzY>m$1v2AGH)#QiXyxE+!VI4!JK^A`b&!$J8n)x3XlV^ z1LKfOo5e}zUEILi^xB`8mklhGxQ-(BdajZRZ*j^|Wmu(5QOHho2>ZOMB9OHun&Cnp z+cJ?nvCKREQkS39-p*El0oOOx(tu75pXo@Yu`K>Hf0MmU|7PM@MU7{B0q}8e%2sgy zoRFYrWQZ4=(xYb+;0~z_Vf@7VRG(0M2g9Co{(a3eg9b_Kj|xkAVvq8Q_Li34ssvQe z9NGJ99LBNE@qBL@v!L`bzwvO7IY_WfIxycpM8EWV>9>M-nTap>XgW?+zu`BV5!#a~ zLc;9Quh6sd|Hp8b;n6;60`Yp6EL!?AOxO+K^E)4Cy}mY>I7o<uikTHim#p6kH$??a z1}1&#?CWPczAt$4yVp@A;e3?7;#sIf6zx}6ycgEkvgN&I_ehRRS~B3pA{cW1M*_{Z zT*p2Su2(0SQ5_YIsqz4)rRaD%Z1fBbjooKUpdun!5h3Yp(BkgOjzaM1K}0zx@$dB~ zLW_U7cjx*Z(Y|!x)LWhs{_O~KR0Jd>eFWWCSDt3-6<XyeXlN9L1v-q0!<&f*ne>dA ztxE(+8&`-yWOD%xdX^Rza4VNUQY*W5$(it7CPK%a?&C0=s0c7i)B-+0nFc+`bp%O~ z;JE=~H$E&CIaz`*pdFl=pHDmM2gPdBwfT_PV7Us6Z0kFKNCWJkkV3^?s;XCN5fTyQ z1I{;9E-48~)`V0c4roZ;gDKC~UyAmMLfOSSjO;=}N*Hh<rk^qZW)hgxLLw^kfBV04 z1iq9(FCudS0)iYsdjw|sGxNWnU~=&03bn*!0P-9j4!&d{C85M6>+kPRx|cP!zV;RR zP4g~Bt}sZA{@TIt2K*r6)xcLdpX{q(9Ddlwnb6EZU-!~f8zIzi$+*trHHo;KY(Ri8 zxHn12rJgy}vdG6ueCVy9&?Sjoh-}ug7s#D>@hn{W_u)X2HWCATAlKDYG($^R!6~{N zT-JNyU%Cj2ilusXwz+lr!GWEs$ru_>M^9PaShy`0>kODPCQCCAU~hhznxB|4%A3}E zl)GL{9362=OTVc;ut_+ZW;XWf=vwEcnIgih1SP@byV%*9Cj+x(?NWZad%>AEtzWVi zhQ6{SS?m^F+*?qp{9T@#*>kjRT&SsaxEb~+GZZUw)$CiCY5Tlzx0@bQzmj@R^U96r z#-<iA3M!xjpZET6Y_n|RJL_hFCsB}CgV>xb(9ox<me&(GNJ)qLBvKOS01yT}H953q z258g0U#_a%xb(+-u%@_)#v`YuDGhrT9X^X^ys6S9&O;Qf$V(Uz+_>?W2d%bV7J<W@ zD)$^ARI1klfdRJ*+Y>%}wyG3o{;OAeKr-o)pYZh<^T`2~7<PQOxYWLZtAO-SAxX1w z`?wWN0`>bBq`xW~Y6=k|ZW@c!$}mM@dteJI_C}|W+&=f~`3qbTu;knVMrJX&K`5~h zsQ$$PFAc&4IC*vxA#}%o04znY1JA3<RFi{@E+Ek<Bsmd^{{!&UXN5RW3j~4yg~3h> z^63KC?75D8GXPTYfaKoYv6dQAvRZvZ&|X2d=-VA>VLAGCUfel|^$6wkK70N=>C&n7 zSPD((%0ysX9w86frLy=RM?>QpXf*SF-0#qB(PP08v4%1vM~Cqw7u_!cQXC0`*kfpN z2}Vtj{>fVSMi+_|>0;f0pavjXwHWA6feYs(b=)@$;udjp_d&HE;Ocf|Dj{ztB;kU> zp1|IXeb9F6?>(R?LiEd3{*`Mq0IPFTOPE>(yE`ioI_wMV$rdIiWHkx&g$P0KA<rnl zZlprUN8jUUV++vWU$u_|cZ=s~`bq|dniv99Uw~c5Wf_tI0N)S%e?XS(``_8nrUfzR zJp@@+240iFnj?V9b8R-5BB|tpL;`@fa@CIh4X`IhxqcXQLs6<gF%g2H+77hZM-N-V z_v^x}ea>J#3~?AhGqNjmBn2;D_bs6I2Y>WO{nZ*liq3@S!_&9$=n(zA*<d-2f{8F= z-CwrjBgI#Y0fRUfdoS<qXBSz1j|#`Q`}(CQhU?=!jTXb%N-0AqYF|l}$<tBHlwl@R z5|yV4RT7z-m^c#@NYG0npu~Itg7T?T*1*1yv{|(T+wa8`u)a_6wC{4e^av9S-d76* z$-!FVH!KQLaE~{_*b;&?h=L`5d69teA?67kl_n$NJZ83POPB|zM~hJXAxp@OK$;;% z(*B$68I#x+`!AV_ccj&)SaB_a3Ix{Xn+sKk)vAR2b1q+swd5Z><dzivN$yctSpK)o zleqoHV&~+5Kl_4`<XIkNhnQJ}hH_w_F7lS!nQHYb7EQ+!y=jK<sf|eZm>SwuOtVQ6 zf!B-u$ieA@n4?X|4CaNf!iyavCsGBHu*X!QI+3E75yb0xkHn-TKGl;6KH2<kv`=2o zbo=`{cJa23pWqv-&kB_d{7?{U!c@iFDF}7Y-O+Z#Yf??12q`ID*GNt;P=&#d?P@(3 znIBS+!-1{?TB+`F)`dCF*GB>l57v9X%cYMHND+)AAZ;#5z^x0A2ZBrPpissTs4GBB z0!8~`ia7%~+%b5Lz>EokYC)O2K(HH5>i-E~MIV0#Xbi;N7w-;ju}ntOxNZ;Mb(lLl z$3q4*0O_SU2msKuX29Ww1YEp;wh^y(vQGN&2?BBexNr+#?Bi5&LB}0R>zu2%RnHrG z@)H0<AOzl1(kqcX?o+>Ph`@tN#O*wzsSV}y)H=+uzX3#Xh+YB>L%<nsJ{e-*1u#;c z{m<Q3Gu8gR;2>O8Km26@qkJ%DgNRxCAR&2>ck9#(LL33>VlS{4G_Qsc?H;BBGhA-6 znS%qUcW6R?0?{e`avPvgEZBLdF@J=<Y^d4Ba%Dz%k^<POK$-za{}$k~wcUlxvH{lR zYvsmw^ln=ts{o8Chhu7dyN2Hk2n=4}D587=e;kTk*RzM-H$W`h4<<LZkn0qh9s@|o zPr%{x1as!J_!O||1Oj!|>)Rh7%|Tk|1QQH(gpVgb_;X$>fIsB{WjR31E>IYo0V<d0 z*ZZfQK-D&P_EkBb4MS-=%-*2A{7U}I5-tzS2oycwvnW%4Ui86OdW_24<SF6$6*1-} zGET36BS+EcuU*X%(BlW=kC;1{Fsxp&dKDfEU`XYyJ3hq;OmN9XX2puBC9wZf2*)|4 zK9a!&6JwKJ`Gx`e9L0*nz!+FVn;)+>0jA{@sY@~}-_#^&v8iIE$t=$X7(?O36dIzs zC}MlVYVH>OcoF~j4t^6MRTemg+dR=RGz~BDp|0L-<|qh%)eus$ncS`S8QX15QDkxK z<;&vK7u9noGF<$+L`3%~{O`tC`ne2#_!qxl7^8DiHsqSSiG_1thm$K*o13xv&jfSu ze`_)6+)3(RCx!^*tf=2df_P*&p9P8`;g)``sKY_JHA|R{quU4}h3ViwA-5DzKlJ}W zq7xh45hJ3H3Lkpr$7xcjj`~<@8dFQw2u-F8RqtSjNjAb_S}yB1gZk$e<9Y(*pSyzK zDw)OwTjIh=y@K%nKKoOwXgb!Kx|4w}MuuvFGv$qq@VeiI7xtau<sx_8-Hd*5i9TAx z#@cVkv;%PjRqIK&nI}tprUVp)J(qV9y3h~@G>;Q{(2zHt4-D-fpoMC0H%P<|*>}OK zcQ@v%m6A)X2hpIV8fGA__Yv@|_4V~(5v8lkH~aC_{__rg?ncW8(jBOOBo4Se2Ky_Z zUAvn9(cWioe4_`=8o}-85zlT(z9-<=UmrLH3<Ea#KSN{}e)~7bya1W)FvzL`Ab1Ao zFc7D);)%?!jz0v9{Q5-(rCNa785E@mRUCkOje=CWV8HkXDun>R`Y$3_@LU7h)z*N+ z2}X`I8O~3@KVq)TwrXPp-L}P<T9;np7Bi;;AAr2qZQiz+YKXOxtB(LG4}cs5=*<$f zM`v6$05<@A6;N~-AWuTUZxGDqgWv@L^yUFSBM8X_y?p>}qu&mnfSA|<99)3F%YeA+ zfE)m!FI|8K(-p*~<|UhT++C~#Xtw;=V;OM1>-oS=4%;%dZa@%d>mc|7cuSdAZi1t@ zB`y3H6O78`%xK(yD1ZH6umT2>KzO^ew`Xo+LrYFZbPyAJ`Tg+y*_{oLG;b(Yskt0} z@N@W|7C>&on_s&iBev`okx><kLG*HQuC>V{B;aB0W$Sf=Jnt1(K>u`VX8l!IRArt5 zT5w#HflPMU2<8<@AlIklztcSyNhg65z<e$zEzQuK|0=or{WqJK1{^o0`V=`FJy!%V zl*e6Rm@ZV5I+3i$8<DK<$x#?EbuIGc>iZ;GRZ7G|LMAj2yV${*mnq|rBQz8rOED@} z(6>Jwo8Pyq{$7ytXjjuU$yB;uuDY?@S+3l$j+W0dt9xwgW4ZR_Ov9@?L99xwHYXY^ z-Im0~wuBr-{pUnKO0~)d`C1m*G9dkm55<2KuLakmk9IXn)%?x#2!G`P_tj~2Zu+Gv z2??XQ2-7ZgBOJ<n1XPI+OR70R5pJeb-@hC`E&oi0gAg3~p^7Q8c9<H`LXzqCO@TFq zhzuvm{3#*I&@C|8<Rbimqcv6aw|ILd8FylmS`$@dy=oTqUB8q*wv(cwGwtWr6b1$t zu_KN5<));%z7(;5r<`fMDBT?Aw^YVY%Gi_u+(7)%$lDf6f!}Ns+$z^VxVAK1FSw5l zp##24NC=p)A&^702;x3Iz5*KJ(U#?N=86VLcH9bdMiO+IA3Gqi5uiGmRc->zlkC1T zxDsuHj~@Smz&KD51pZwh45pmza{t@}wn0#a1hnUd_^tq&^9IVm0pKf0V+U%Yf!8KX zmcOzA2MHdc5mOc{CQ`{moO;ML0`fjBGx<<+4463t1QamfXbT56UBM~Ws?>wRd9Zv8 zYIH0Be-aS;k%3qbpz%`U-+?tY@Q{Gdl8oU2ydeKx7oe2_p8$xk#3DjkgClalcPg81 zP{k_EBS!~pit;k;V66on=iPxCP~{*sY83#@fSqZe%p@xhj|}h`W^F@G9Vib#2wZJX z8>;<cU7KUr!oXJG6jtp^CEG&^_ZZTk1Npv)L_BQR^6$;fUR9%7sf19rHGl&_WFIiF za08W*ra2Q7DMA8*UlZc!iWhD`*yRSu;J}HYZ~e;sM@5~aT_qtYsWot%fNx8g>|Hul zw3CN0*BVO=-GQA-<{R_6p_oy0th<8WaMF5(jR}1w$s(I>3i?;?9Ij8ZuUGHTPg{g5 zE${1@Q`!z?is~Cp&S(+jZC-T^%MqYab=iYk)buf>=xwN(0|7Px64mv?oX@56VAS8+ zOLa~Ax0mfB%RU!bdsbE^1XfM?Pbk(<H6&s&g9pr8H!dmrDF1F06I5g3O7_TS(MDZU zvAvH}oy-SmKJT$qLh^Gc@TH%H1wIaI9?zP)Tx!#rxx7`?1gGdQP<8SZ&E4)qON(|j zxE@vNX*#v7Tn=~T`b*HcT2FQ^j7UGyOFqe6kV;R?kqw1M4Snr)d9a{IG_4@kuys@; z#Vz_~uidyi7nL&a_DQ5xNqmr2P;j2zE4vG2M#SaY_PZO`mwlhlSKhnxeOn<$z*HBw zk#oF3y!e`3OKc-G-lSMD?COI;nM6P7OZB9@M1IEi!Ly%U7<+!f?`AvGm$U^;7@5Cb z9ZXPt{t7-6_QZKQG+TI6gz0R1J14ZCacM+X|D+OrkG+<$qSiiGt!UFz@Ap=eBV~6z zTCmBw_MGO}{s^a3dY6wJ-KOH8Ih-k*9a^v++~%6TvI>`mm{r-dDuKFq1<exHabG8w zdhgjehX9|<LoK<LB~me?9FCN&0&RK8Z08mB?C&Fj&518w*h|i+nb@3J0-vcqWb$A# zV5?7Lh%gj>%E;JAv#+w%eT<Kp!lbW-p#t<}#C~U!Oi4o9#L;+6W}cn|+r)ql{tDbs zUs7~|YBwL3OR4NL{~aPM>y0sm4KjiIr9BhGnSz8I(18P{l&oUPx>;8csK>#}J1B4b zS1rR0vIqWCp`2GbS+2DEalSwWMO1I#u{{%LtQdC9K*}1F2L)}}Ubgi@OT6XNtjqXq z-dQ~*-c1~%%dbD!K!5k`o5=86FqpA&bxi~f;hgV|IH?)1<5Yl*VsL|n0xQP&_82qV z6qJ-)e;0l{0bb#172dWr-0EMFEZ(Xv0g$7{LRTuqa@vk-`K;)5jae_!Bj^PqbdvA^ zr$Z1Z9H7p2;56eUzsEmSCIsg5Zi`b}Zrp=R@$T-)pd?F#fRv%Gqdj;Q&&L#909o4y z8n_<b?Tl{x_CKL1vKv4%6Xo3j-UHy$jSZSmQy0N@@Xa3s(L!Sh<vk#vr)>*t^8%+H z2e9IT{{ect9v&WeIX3)y_Mi_pO0LF!jJa@pcE$;Qkj4p>)jQgsgb^=(blk=5I**s- z+1p<K5qWb|G9;jqJp7%Gv00#*Wxhay%ZAJ$nMGd%-n(msL$WhBUSU_`uU&<}n$7M_ z(cHyAzC*LqbM)Aip+8+li3M>s(YW|HYKU6ewx4h`f-qy7J`d!;xo~S_ic9x?Lcpzb zNnCeOO4L%BCsUe8^nMVHgj3%iXq%edLQC$9q<A-mty$_kboyay^`)>`e^sSq7XoJZ z)C+M2#Pz+Rx}g#`B6_A}fw5jevMKfJ2hQJ_XwQGYzbm!4eAoIkps$|U@OlMyH<h+f ze+VM#RQJUx+f%;eyH_zeT^QeA7bdT5_gE|G^EkK&AH8ES1Qi6|@RoZAO9y<|tNz5L zf{=#a1($1!RBej${>_~!v5il#v*J}Og5V5&Y%?#3-v*|4x!-cm>$sI}B(FtFgE?Fg zhH7Ft`n1wM&ht54Qf~^h3<j-t3*DPrqIAj6D*e>NHN=?l$~p6H>j(8ZX=CLX&QP?R zXOelXF|p5#o=~IgW`5y$CHnhMPxto9^GIC8ii<(VL`u-txB}z~zNO3*=X5jrYd&!I zN!LXZe<qSM0Ef^X_nnh!m>tMuFkSIcM`3D!ngB&C)z4b!YQ>w5@tz1s_xO;$1kkmS z(NWyg<9Y4x!}rvdude6jbc>3L-fMLv?Ra5he(+k4eGS}b-HNZ5G(t@7emxid#Z~Qv z3i>ag{mjd-gcsMqgQ2c0X!5)C27toY3eYOd%hEHNiIlzV>m5y_AWQb2qz1q;jG#tq zXNMLhS2!@BU8&`@ifpW7z+uk>Zlex^0+&PD?X_eviIk?G7DafP{{@)ZPugv}n!PUg zj5_aU(<o)ZQ1KTy?9eKPx$149nklfd35?4ohW!3*D|FdB4lU=81JQjUh!DhlhAzs? zO~0N19;|dC<;chgD?h(HuuW4eo9{vr97z2|3Iu0B3C4udpMA5qeS#lwjL-D8mM<i@ z&yCUe^y<ZeM8!>$VIt*ASn#p8AP5UnP*%p@u&8KJBCnrfD=O{w=O61qml*!qu_APT z!Gw(Ta$4wgOt6*`OP;FzNZkmg;b}ttlLBt+I=-qWo|)jAmiJ(Wm2%PVJ;J^s-c$<< z=2Kl`$w0XpzD|1QwIJ`=5O_3Pe#;EndUo35s3M8yEJB#c*!6P0qq=*zW;XR|HU~3` zUWX;tc=e(*bZ)VHN}8&D?5sMQSJ*#ljysotL-M<^df_+KGyAEoynWKjjYfuZ=}iA0 zw%0}O$?SB6LB_B*OroNr^~UWf*(5*R3cs%?|0(ynv7vEaKVEo8sGfXv(@O(SKK)jd zO49hV6-UJLv`gYM#kT?DQn(N3c|k4#3${Jm87I;5dM|BgE%5)HlIKCpfiuuy=_E%( z#C<OGNJ}+Tg~Xx1vG@IV^09~SPwwuXLYPp8l`pY<?k`o5_8i=v5I#HYBM|P?2pNo# z(j72(n$Bb7-zVP;_~K?-zD0ChWfe&9Nlo-bq0dxJF{e$2EKP9HqS=CUqEq0Q;xvLW zJDV~FBMD`=%EQpbh{WBtXn1OPP?+J^x$RB-1@DAZwLT`(?1+ntw{8m_tvWjS=pP%V z5<D_K0*+C5Q{2HK1Wa4RQ+^-?gm{L(_x6BOv4iIjQfsUL*&{xsWa^`6Aq9x;0?p)* z*$XRTBKxDN69yuB`hdGj9K3c}fR_j`I~cl7DN3;e@*B2*Zfpw@p@Pq0;5N!dTL{{j z4G_h)3T~4dU~EV&|B=}e*es#4*W3OG0-tjHH$~*HR$9N2DX9R_#Nble+xt!xz7aSy zK%p4RJA4uQ40Hi&fESUYRelVa=ClFF=KVOUC&VOPS^3}=$EnB*MkPGI3zGEWbhY|3 zeNP6#8FaC>vI4SdKE5GP+ysD9M6Y&^Zu4#c$ep0WsXwio+Pcv4jwSnU-x{hLq*vdb zLljzdb#(*3^BM58y8##8A25J{fog{%^|w0UZV#w0Hvv`l-;4xcWraZVXr`*HT8gjv z_Sie6`kjL@rk=fB!wYbe&E$WF=V*F!aR7=R9-|Ix^-|B>;X>nwnwlE3>;y9TL<`|N z1IpYq3A=rDy~e;Ije4)er-+7s-y-g7!EfHOzvKH*GJQg!8oGVm+o7GKK=v0#t&Ud6 z7)P8BS3Me{K>SMnquW(Nc%9oN+J)kXDc6Q)wpgqfLpThD&FI`BS*)2@MTqbjp6U?3 z1pCTmn5Wf2Xw`jk9tG!FAzctwCohq=L9iAgt+?QDYFd_LI=L%jYI?UuC|CH)p})pL z2zsUpQE!(w3`2t>&?J_y1(ws!by=C+cYh4aQObqLCM0~e$S^u1dal6yk^pU5eD_#k zI`Vk)(GX6wEKY&?b$`?rO%RQc`K;tNVkHkP27Ytl+KlnAlGNYlN?+enyoXJx{<^R~ ztOhqYaCdtu`tjQ?xXs<?<jAd`UW?DLUR{i&Xv?pPADDfL%HH4-*B;{kEH}_yAj->H zY6Yfpu<m@DVi$xl*t5biF6><Gmk4?|)SimXWuNUmK5DB)<|HGl$FROq!&xR;{<*Y3 za5I1jZ{u1#`Jzm&WTWm=>*{4ytF(fo_Ks?b0V9WQT>4JGrrK1Nk*l?f9a{cNdToOA zwY$c(ukN<a%%kKTiBGegZ@=0YPcoNlnhCxz*QvKrJ@!le91+njx*1<4Bji3L!y_Ot z0{opwp@|K6<|ttP1(7+aWfQ$f#E*GY6>(5Y^QVdo5ive!YEA4fx1|GdZ;i@%{SQgs z(bEiQ&IYFME`Y6qpQS|6b+dda)P8s1begd(5Dxss;m}wB%2<09#}gzl-V8V+*Wj-o z13lVd3Oj7UijrxK?NoqemxbOh3p~=$!wX@%ok4724WRm4Sy@2?#h-wrVSGKLeFf<{ z!A+<S1P+dkjGzE9AJfpBl1g&qx0AQK(<ElR^VM(9ex!kPp<2<tBVdbi89Rp3RiTvv zGIP^=fD`jLT2@Rey8WGfPX_|qhuQkT6%vXc1q|d>=)5*IeuRE~(f4!|dJ#eW<32b5 zoQlW~wY5iDjOA=$ot>R|cfB6?FuUO3U{Km?p|8~1dhj#@Qa%IcRvH-gj<pD3w!AyK z_#u}rQsQIQzxicggj)6ZH-C&sUQZMXxv|>(m-qR%xhsk^6fM}~Q}@<;+@tHs?wO85 z*e+_fV>g@)$_u!9zAN;m9@Uu19<;Hq^|g_xX3H&;PnLrwlUUV>zx<Uk3K)A>OAPoL zB26-f5ZOhq8PCz{x4UxHA(@7Zpom9V(pf<Eq8{l!JnvOByiSj<9etryIj8FYhO47X zU*ZJ;b^q2+4z}3*CpzpOIWqN67{%#gFXhixw{W(NwRqu;8Sr;`tD1VGRb1$Bf@rpE z{Ba__<;+GGYk%eL{Vhkgc=`wdrX{JSTPsm2T3<y_$_>LGv4_hgF1mJmlu><>gAl#D zX^>1q+zT&OQyOtG&W<fp=A11Nnr0*6<s|<{_Z1gfG3V4;imty>9|x-4;hKP9_;$go zswm#4azW9$HtIVVCspoO6?1r(+Wr4s@Q8W7!fAmrcKkdRZxgM4CweHl0c%B?JgEK+ z4TaA3K(A?Ub(npnEIn>n0|}P39`%DM3(l(NSKeD~x!i6W{_oAkms~GC%Bvqpst{cz z*@V?_{^)6Q72#E5k}(gvC*e7*-&PsjE}?!=$QVSGfTI}8|6^s??}Ok_)@XW;)BA*A zty~5=uL(MW!U-i<*mmX9jg=ps&FV6$l#z$PXXh0n@8fC8E5L#UX!Yix&3J-CUnawx zESuo^)998z%%&mS119^~u*CyPeQBWmIz*qMWXg8z37$f_m_c*A9?vn$TF7_q6mYWu zxoKizVsQGlDY}M@F4%?6a?xwR-O%Vy5WX|Om;Lind~Dmd+@EiVhJ-NCsRNmv<v-sw zXAQm0v?TP(!r!fAS9RY=kUm+%@Ax<Q2YaPVhz}0^VPMkW;Na-a67;!(z)#Sq24dNP zU7iONX}rJhfa$8+-e(!AdhOl!^@C+hF6^Kzr)eDe2Ec{;IF!XVm*=%Tlau%N^q-AR zq+t9*2U@musDi8ZJNfPD^8((1K91rTFT@UqsLJ37LlFQni6Nkc!jYJRCZH>KODm86 zKqC*RwlV$ivakq&oNjuRvr`_!yDiYhYYTA3X`l`e95slc2Xs3Hl5E;l*;4tPBO?lA zv+37r`mh(LGjvsiaG~@&71V4baZ`)3wqKZ-E_3bXstQ*en8b!#np$?wuy62`pUPk+ z;?9)PI<Li!Qhml8bvvO9*6PGC6mf_fb)%OhjpU}(Gf$wtUN<8smWnP))0iM|-BXc! zCAI3X^G>sQ99sfDhysH`%s!jIUYrh>4zVZ9pZ2E_-6UrPSuDynR))Hc%LWe~X?+YT zy3<xJlfKuoY(E)ueq)MReS85Tj8gO!<qL;j1-`JJ_A&S>Ij@tx1{U5D>QbsQvip#q zTE`pNb*7yXPr|YP@)jb+s{9I%3jelVnlqn`o#5a|)vi~!&u!0nd(N{fjIZ~0^;;ov zp0EB1VK8FuJ)X;`wQh~ypHR5iKC(3x`p36|yEqY7A=F5|HUW%=xx{B>j4RGv9=S@$ zi8Zk~_V)(?EQK?rGOfAabff9laQsRaW_k@z%AiWO_FDSCLYKuCza}g~tP_lu{gKAJ z*If}I^?94uSM2b&DT}&{CYTu^C>HR88hi!F!MgakI-+}I{uJaxN!pvGIb=c>k_~A7 z$gYa2zQsMcr@UDF($&G%l|+Snuay*o^U)AW%i=!?#p#_3P`j;;#iBbOR5sSNB-B`p z=6))Z;tzL4i!D?!uP>j7h@LL{^yiLwqAD*+Vj8S-yui@gFkbCoAqBBQhE`%q)P5BF zs(vz)rCJ#_IUZ(!`Z9O>hmBbXP6R2r)*9Kmf8HmXZYuadNu3~~y4a}t6v9}@v$WN( z+xa9?{xj1Mj(hgCRs=%ZXJ~;2jiEsa|F;eYXkh4756TI&41(e}LGz}{LeT{!8(IsU z5`vps)Vc&rtC$^>$76sX&xRJ(;7axf{oxNfv?TzB<O$HKLHl87l?KYvDC7=?5_FQ) z!0ii~0M@-(`WlB_0~OGK`|W@?$Bfb2Kf!+ltrcFxN+EY*H|l?Nr-M!eau7|TajaA@ z$ox&DL<ECAgM?m|*&9I7j6w-J<}(CCjRIQ$nS-S5y)6C-%gf7VPf{%j0n082h)LeH z?HPhMNIAlK^pA$>>gu1>YEcmI7##2#kAwN39zMt&zh66i1w5bPDVDyQ491Xs`E<9? zFmQVqbHN9BWqRtA_VFZnWQctt1{0iue1J|K+`LZB7T#%O>4hVbw;`AC$1ibWkzJCZ zia9d3J;HyLytwR5;zZz2UM;W4<-<CEeIm#<G4l<Y@sk(DNrRJDXDfh<nT;4$9rEga z`$L2QKsPm!HLrL}Q{E^?8Vk_k$OKy0G{3HYa)5|<^tL1|Bo=}B-A1!mh6)>^6d_|& zLF30ldo<I9<u(NcMYf;WwVtA+=f{~FvCrl=HDZhGIK2e!{-~Ug$Oe6Xq3_8uUovBR z!f@4_IJ@_2g}=t8(78ET4DRV2HX;X|kC>{S0$oBX6aL4PartQ*ePhL%j;qY6vgY{d z+72vAj7$~UFRd%)WCV)S+|Qk)ReMkIlCCyrO?|eB^>E~TJ_yn9D#7JrE1S^;P`=_F zvMlI}k1lRAyDCweFRzj`?Gm(b;aO7p)*Jo9VYWT7fo6`f$_0@&SS@H4kSF)lUc$13 z|8Kxy^}hiJ*6Fjr%><8IT1HoCH*8E{!Md@(fzCfayw-&g9Bc10SM~G{Dsx($KfP}9 zCZ=}5y4<93;OoPgAilyE^>e}4YpsqlncUED(WsUEyHD95Ag!_WN=2sTT=y))?D!i3 zi_a_~BcW~&e#cuupGM)niJ@MC1MOeKMYS%QtzKG%y0)s)%2^3M#eOhcMmak01PiiE zR~E+2`x{?0M@dL(JeEu>Qm}&wGlVnujjye2u16xAd$$d6Yu{I?)9SSFl>=ZlSZd*H z6N8yTMx){4HduB68kl##+dgPns93yYRom?vhCtxWI0#&f@v@|QcmwPe0B2o8<#4o< z|KZS6@m1gt02c!5tv=xF=}O^K8M<+40~DvMckQx?I17!&#+XM`=TX|NdA-R3|KTm! zs{JI`OSH;eK)z-@?aF*NhIWO{WS)S1K&&OS!;V@9n2<kUHRqhQ%aF1P7)_Z!!sZ(v zm(17+fQZAa;$<RWMg!P;Hy6htsr}>I`SBkeU$GJvDU;Ged{lmijCh6OzTJ0yaxJJV zf&B%>laL}(Bpf&2=R|m}+5V6ywp|wG&+-N{$x32vh(kLegT*q2L4&z{++FX_NOBi% zb=Twze;|Hg=j9N6Fd^ljNAG8&tug&!N;*ctE$%S3mSCzyT8kCkOJCh28ty}B)Uwv@ zh}G+246mzwhW+ca(K<E);vTUQ@jTtWf|5`c`I>Wcp{mowz{@e(lnOoB@iU_f1tr!d z6U<?$FdmCR*2en{@{COLJC>uoS#|PpaZSlmZBLJg*`Lmp4S31O%lcU7;(S6eYw#B{ z5!%~x1X!du4>BA5r!nQcr=JSc>UiJZuP~$)+PK%;eTlEpTSFt=wrNM@I@iY<>utmi z7K=7cmYdv}c-G@pJ5Cp?xrYCt0-fP3?6$p<ACtJxCkBz$TK2O>%(#^8vF<BDalEX7 zF=Kotp%{&rZd+U46$Cn^_G`wsX!T00dgfv!C0)4_1TY-aNz4Oey8k;9-v2uj&s+*S zPT$=GMg<>PAp~KEM`+XA;^-xh>lG$vBjE5m&QRfCQ{uPT!fiVIDW|vm<f<r)MwhZA zZaS1C+?rZF^DLv&hLyRPf|qOX^OQ(B+#dU`8*h@2Rq8@}G<<h7kL{AFLgujn^UdKo z3KLOCy_yBTT_SUhm4?fe(mjo3;$|bE#ybk1WHo3o0FcgKBw<ss<QmM%Uc#17<n2dK zHix4f>0wBa*_O9|XJ<#i5?jRB*cdqwOViM@-p8&1+o(q1AfVsD%SDYH5S@W2OFFFx zRFP3+r@f6%O|AHbaMcvmi%oiLpM!R_g92Ha-ek6-(4TY0gyy<K1;6gA^ix?G17@od z?E@UE!%v)sXtDJz(Q94jE~O2=92GBW@i$ywIIdZ5ULF%19Q=*k9dO$wx1dka6ho&{ z3lWwMDv@pKA)$28$G|pC|K+!RlPi;^9?$!dJVA%0A)$nuPUZ`B<g6=mf&u;S#x;5o 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�UFtD>?f&`C;xq2?Hc=6 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�czVqEyqO{b^c(`EX-iFGB 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�hVk^N6ohbqKi314flI(Y#rTpiap>$clvgoOo+@6_hB(P|K4 zXh{1I`^Y`l&up{f+M6Cb+!=zb6Vp*vY%13zta);xLCVbEOA_{CR03$>_Bmq_AeXhT z!LhY8(8a!QDU0OFq7;4D8KRD8vwOP~!ZgE;8<s;?`%Tu+Aixc=jB5YT1FzoH4u*P_ zjAC7f)tk3PM0WHdjMU}yfYkKuAW_dUnD;dvu4}6+ctQFFSKd*I23J#%ia$ON%Gbdl z@Y{!P5D<6T<D*Dz+a;A6Egw7>LaWmFDEs&0!3f!6UX$xow9;acA$W(^x0zRzE~x5s z?ZCXks1ooX9(1bNa0N%-gVK^$`{1e=h?dp%+RBRGKXHtc3S|n@T?#F>chbTy08E-V z@s!6RiR?c>v(ZF`Hh5bWO!;VlXp6Gt13>nd)?c97nhI3(6s)Ewko-uajH!&lvC+JI zIPFAdD;5bu(KKlaAEH5&C&BT&eP)$viC4jbZYe3iA7afP@%Fup48k}d{M@?pxG5CW zd5%b!yuGCcSQ-0gTk9fUzS*<!d55n-^QhwNpwwqF>QvMpClGzq)V7i$xv(>qxf%Wb zJe2)Fg>VOMvxnRG_f87F{0Y{uFl2*Ra!E}PDB2)1WL%TP_9K?#X|njg4s8zQmn7cR zDOgM0biY@HZSZ+e^-zr*n0iNYuqJ2m?gsBqQZ^RfF8x!rn17Ui<qGb<Wdkx80Ml<* zyH~JR<wLgVKJpnY{jSIpMwv^gn9i{c>cK4QXFqEmdEZa`{f{mkOm^}bPaf3A>}m?5 zp;)lc<d@Ite7(`oESt5L60So(DBLqb*WGFz^T+#tj%fW&W?$bHL&XewEQA8k?~aE( zw;NZUx>=89A(&UFqnP=14+p3%x2?8h|Nc|)SW_&!WTdFI-}fz8#eyfGTQ)@<*LDHw zA7{M00)ApNc+>V;Wus|@`cDW+NY+pmR?45Tnx=+fL+|y$c1KV^R#t&nRL75`7|^h^ zGS34(1D#k-N}IO^4vL}wFzY+XjHMZFX7lg9B9iecgrH>hMpr(@^;~z;;j+H^Cy;$d z*3^_HC@X?SK7x}g8sA3imO-^|0<rLWP0zda_WgoGDW#pRW0utqB&tJQ?`^XSULWTC z=gF_*E7+bOJ1yVEy7Cd-GHdx<Rh7dA82a;1AF9eG=Op?}krKBX9kqaDIWhsFWPwF0 zOR5LAikYcxl`Ts!OB7EjX@1)cq2c|3=<p56x=k2)EQa=}KG<dT^wWoB9AbRY;K5xM zG@NNM^ja+EVxz1q{aK?S@_m-&1Id0$m7nqo1E)4p3Xs2*{o1Cl@JKE4#X4k8=rK`g zf=KY#(!r#cy6A5DjgTUta#U3u6?IWLL%U+4*i-B@z^Q&F#8~X0PpBLJgfI>t=;(Hx zw4%|<TM866ZZ1^_g8waB#fgSlv4RvL%5EDydcuGs>PNVtwrZ85@zMBApYusg?iVK5 zDRff2E=v)f75epv#)rU?vKsqLoouX(+-rpgF^+@N)l=TKc0ObRQGuF7i^ifL5{$Z7 z{!5so9H4o+iUc<jUahd=6Mq6*Eb>DQxF<InllKMDqIkKB;t$-q*XxU+Du(l<cz(`n zWHqTN#71~6JdCEV-7TVLK5}XG&1+v;a|6E4dggdLqwel%W(T-Ecy&44(|kQYqcih% zN4xSh=|497H3$Mh_JyX4dHKE4?B4=^17-xDF{oMi-F*WP=N1z`Na41slGHR2z2XH` z{US*co71rVgg<WnfA$q|7jFc=69hYJy(j@|Rn;ywXkgXyD|u@6(_340qT(BFW$s8| zFa^TTKTF<4#C&kNoZ?@xtSM$%9~g;nhR8(3pw6n9DZW51#3+QOk-t@5?Y28T*9^_j zuuofb?h*=R^-a!v^-mbg7sAt~`@FEfOIGY$eB-z85RxEgm<h|yiOne74svo`_cci# zZ_m?%VbcB~7BcBRW80VwU>9;Syd;fd#dMq@YKhs2L2*94FeY?R6IXSxnjH14t??K; zn+gk$w-Bu_EmMD`$(&}g{p+WijQMa<k+axO&hT-oLWtC#Wj`ZFxj$n5sF5vN0VT<P ztk@PHz^9JmKBYG1AtaBhv%mj5dt5KC#eh8#R9rIPd{ZjRSq^o4fxAZQ^NK)5fGd&b z1Eg4?CJJMB@i~eX-BkhNTy+8mBZSD}i)iYM;Yo{KDSIvwV`j&ZLLq_|W^2KAY2W<P z0N5EggvASEw0`+CUIwSXaFbQ`wa%XsCk?g7(^%9qBh`&hG;!OmbMCwr&cCRZbrkGD zn4$R-VcE3l4(*y{o#^Oqz!@?@w&2Lz8aWRJxIiRBI+SkV4DtDTBo$oQ!wF3PDQfWe zhbJm)BK)r>cG*C+5S7$*&5atEsiuHun188!MI5gd2p{)}bKir;U^*+8jp#EoaLkO2 zW9Ltus5EWsRymDao5DDW64Cn?PBj&1FijOGIr+HZ(gv(#h$PFwG-!Cvt1e?x80DPW zevF`sDSla2QdhA?t%IlcdsEa?+4NC@xAt3EI$eX?FlhbDn51Um3hwC-dX5&%v<P>X z*J6WlG(+oGiQrVD95xazLwUH+oG)2mWDWjfii&J1Wt@?LhAgcbQEGmYG#(*pi>0O4 zv19zt_##Uvsy_xYhY0&Ss{8`w;_5RDVY$N-#}1Z41qAy6yA(~^fKSsGou_(fMD6%r zEWnhf_zM$0C5hof?stgql4FVD5ii)F{MgkVL$QlJ6|pHZ@HMXSG#8I~`nO25*I_)O zzw5T!8tY#$j{0l)=*bK`z(S<1ed^j`O_$hsCDz`y@y`%t7Po$V=LPi<r$9pn`AX;r zKmu!L)4zYuI4j++oC@~Yhj|e_W1IcB6v-U{>dm^n8fUOetPQ;j`>iu;Qx>12Z>!Bu z0+Tgc%5g0yc9uIqZu$>&N?++;ML=?Zrsqm$hCk4Uo9IL^=Ie2%;dKwC@xg@HM|}d+ z3WRp8ag0DYh$kGpS}$o84B^rNO-=6|db`){d-pL-0l7~XDHbzC!7h=_8K+k6n?67o z^$dRZ*xS!H_=yRIuRY?kjK{p&z93S>b6!(%u=5CzxKOof%aa_$#yB7fAkb#K$P;wk zxu=p`%^z!4$}@cc5x<GOpga!Y<}Z^jw<iAS>}V^Z(i4BO7<u7>b^37Uu5@3;uIPL; z3RhAU+U^Lg*ZLlLJg4AS2LN&zK1Up8LCz+0>YI6PSo~KVF-!RNyZ68^p(B%opeLC$ z*4vg=J0V__%i2_Ab3`2r()QG)Ia^KE5}2m%zi&YqqLE=?&^h$yKUj;7r3U+TK-`Rb zTn-ej@07+^`i6F9aj-<bU_0{+wk4|IfL%2!nX1_*LDauRJ7JV4j8sykYwb4N>3UAM zouC`9nEyqABIGN)A6kEf1530ub9fJBf>E4OqrA=L2@v_!globAvmCAVjhJ_!J>5V; zXnsD{5uFUjf@E=$KsFP<9J<nN!%EvVxF&6M(kF6p6v~f?*!t#e@f)d{-0K1uG5YM1 zZL?HyqWUImgG7x7QQiQZ`HZ2*swZ<&^1QB{^0e;-H)ddB&Iewb+^!6z$hSx+=-3~- zGC`HUcIMjeMRSeHrkkbcj7}!;Y|U?^>ZC+90P<pRv2h7x>R~-`@QIStP&YWqs%>O^ zW#52u!OZ>XGHD0h!Nf6$cd-d^AeCm3AyVOT6MPl~e<N>9OpK`)3>RM?6*vS$|E{;7 z|9*+^n5E5kgTDDw${zojm6v76r{5bn*t%Yf8oJ(?xrt~}>*QV6(9DM>`ThhO^*F34 zkW(0VZdDJe5x6ywx_BpM*NS~n|Lhms;ZNH`|Ape)-XZ)U{gtI0LP#}@s5Tn28yQN+ zuXU!j1Q?pcfOhz`L!U|R8N-?;5`^N1YG7u153hhh=+V=Uj;K;eBN3=J^!tc$y(KIW z0-(0K6Y;%||3`&eiSCyIa;bcX(N8nq?`B}y3~8}*>e*c-J9`fVK!VI>o)rr-uc$7) zBs1KPPdu1^Rpp`wLr8CVEOpj;r3eFv@V3f*-dnX|n!R}WB)ys_Ba6vJa8e8~{V-Fu z8tlLd?HD!Oe#No@n0zJ8?Y?Azt(O`n!?U@E#v!kA?-@IuH{2cIMoPHI?)@18wbE3* zuXU;_Xn?(4e^=FLi4Aj*I)?@K%rMKHr&?97exE7GIl6yK)_B*Lp)0yC=TRA~g}juN zhNghj$aV7O_=mrL?tuDvH{U;{`|GKet;Ge~nB5E!cCdbp*Z;0HAR^?><zmeP4SZ@o z>+fQeC^(z+B;UHGF0ad_D9<^=MU7te@-0ZvxTXD;T1(M;!4@4sEOna$qE!bvzH*oV zeW};Nu=fGSCjpl>IiDfI1#M6If$RuR0e_dhhUqm)KAW85Ggo@jrfu{?_<b{)XMD{U zT)YjQArQaz4SsFt2;CQ2AQ@KszaL~<{ElU~M1{CIQ90iJbf?;WU~0IV871T&Ig=J1 zp9g+28JUIYp$J07z4+c3eA$cy+;PLx)8~B7e7)eNT3GG`;6rE%8}dJ(e1cbUZ~j1h z#Z^V_D+%}lp7tCuDs%$`mF0ifUokouU9#twvwL&YG(T_jPMt7+psV&i`P>V=X{p<{ zfrFj8ulYS+ms%NZ6^c)G9}uQ4@IG952-|?EgOUtDtkPTvjW`|~k9!*VuN&dBLnDP| z<`l{+t;idq^{)hm`YQB^zhsg~@1d~~%Y{LBJ^Nz~Rj<CMCF!^Fz4za;v`Xi_URQo% z#iM+T<vVVy*z>aoa{UnK{u|d9ipGJFNnhNPVh-|{W-%i>F?DT3n-;WSPQU1monYz; zJ}sx!CTC2Wplnf6HW}K@A#Y9l54GyL&b_#fcBCB1sloRzYxNG{<q5dQCfcVrKIO*P z9A$<54rIkeM3iS>uARqq5G{i+Fy5m2Q?8Zo-$zM75r>PoN|#M!47;0uC{>brURtc# zestb9W*!+HzOzIUq-^+8_hGwA79GcFWHJ$R3NXnO9xk*bB8ziE?1rNvV^$5;{o~<p z#kN@a17xTne804)5qQ2Q^Ql(~vayOCh$UJCr!)wz!{~d>1H{26q-?}3VJ6QgS{D~O zPP}-Cfpg}`q5uAe0~}dW&C%{^k-+4jxTz7VFjiaJ^09Uo6ONtA#QylZRvLYBFsfu# zbFb-$SenZXG`2|*$=wHve@yTDW?V*EgIhd-S8!ClEK|=ldKC`n)p&d$(ajmEm^3A^ zJtW~mx^h>2Pq%7e6>A#>tPp?0Q;>`fzsDW|8PeNUhQco_oTNR@Hfu;(_6Z47hAV@j zh)Eej$nToY(E$obAjRNi4p$NmFSZyCX}e9PS<I%0=IAt}5a5|JSCv)*t^uwUKak3U z@dojmqYCNQhw~OmAXExxM)(wX>WE5m)1QYU63<{}GzhK<R1-%tS^A0JV4%#`!w_O` z;Y;^)_s*&Dd9qyh^H`Hdg=M50|CXvTjs>3~fa0BHvtFx-nzVXdW?W&tVHd<dt08Jf z1rlq$68;gNfP}tE#cKVqvfd&h1WpN*De!ryjl3Gpgc=bxasomBSd_0`VlyZA%%yES zi4pV2S1Zz!PK2r4au=qc(LA2Xe82aZ41+9jwtiW1FS&{fo(Gs(AQk>Y9a5SS|KF|C z28j`CaB6IIULR@vm<Bn@2~9U%Kcto=N}Gg}PKLmK^yGT=%ZzPb*}ZEY@b+(ZmdX<n z8QwsjOs}O%4vKYcb>UAZ^_9jdbeTIrLvZtSeK`QK!+%PyM26zc-u#8$uQ%m$|M}A# zR{o>b#`f^vz6%#uTTM0HX`kFZ;LG!Gi+_1;#+2>7tJd0+K^0_hU6K1#;JQA+uBx-} zV-`ePcm>x1mS%r<lvDZv;Zig*FfJ_=40`X_*EMm^W%Dv<Ph-|#%-!MV596eLt$YpS z`7mv@cE_dS+lv@iEH2?Y{CQh$wQt)7T~~zhn>DgIw(DhTX5EGP;|hrG-8}_|#sIpk z;>nh$5`<>FlSd-F1%J`89@CN88A=j7UaW!WF?)SMkg2F|Ep|FyYw`v~!H0=zi5Z%~ ze2J1fHzmw|i5vO-wQ8c!CXnF3S11ibHe}d4v+uzkViSiK>mAAR%x$rEPrCo6?K(3F zvMHcWux$vujfFv>@k1X^0rG<oA=EQ2$L2~mNg8_cB;k^L{}fBV*_oO};t+Wqs&ts> zQBhN8>IqdFsj*^q(eItinOq21@Nd~8CW~ZcY{`ysLa<_bLx55yJ&6fTO<0Y=F-MxI zdi1&Qhf>KkLkuD9vbe+so$RmV3IfXs8xONrkg|UOW00~D7`(%mFKi@8I8uvm&oGLm zBLnlSA+5?R`^<yK*nI;hEt<qiIWdz0J&m2z`qNX16tUhCr;wzOgrK~;g}R$LrTEBk z>hZX&*=&s)4dF#;#*4rg%l(z{$n~LE!w*K|>+O7hL6;SOLx%DNvtftcI{Y#LP8~3G zR=jNk*M0JR&X*ULip||1(a~X8aZG~ZSXN;|`f<=nxKIZNl?3)fEj+(vpit%GWUt0! zjQWqf@Vu=0=flDf@OuXKnZU6_fRD(CHNY%dyHx_RD($y?rnk>O>K}!k)IG{|ki??P zDVP3MUI|*{`#ri&zg~jI&mj7y7o`8)M0wJ}vW10<vvt-FH$$3&sN&IhR65ev_51m( zERgQkad?mjewuYDw={{xSeXUp$047$1rjBP@totdSYPxhPaq{Zfa@t_YH#4$s<SSq zqufBzQfOa~$PIc?Zsgcf{3oI(W$~;QqAI=>W3E;4tXVd5zYhmq!6jP;t}0pS?P@jB zeNku~l_TFV#_E7Ytn@;z4Qwn0NqjRnW4!mHE*_-C>Sj$b)+PfCwG7r%i^~wLVyu_m zHPp_S%g-pq!;{3p?<}xt7(X-^C767^3Ipe#><mymn|T>-bOGrADKGulPa;+Y<VCmk zTs{A#2AUNCb<=k`@>$n+T37ScUG9ie*W+AAEHTZDvV($2xPdL-3$24ge=a|r?NuJd ziYgS?P3O_eKcXYKi|EKQlSV6I(^6Rv8*BqwHiy$829&N8><GxnDes%DQz1oKT3ieQ z+q}lnkx+cO@ZpLO8cwhGbay^0g;5+5c+@%C+SGC)Vz2;u1$xB>UCk(2p<)d;7ykSu zp$+ERjYr11>Eyhj8sRS&EdPCK8F~3)i;q>8U$>2n7dr_X%@aa9as}P1>N~jy&$$85 z5jp<bcSs!0HB)CARnN{AQA0b@R3k2#-43?hhI0P3n-4V}PG=DT8OJRfQnJ`rgYNH- z4(#t27P9j4#~79NJu5EF3oU|WEy#v~t7+JHnHdFdlNLYq{5Y-LQa?9#;ve6Bs8xO4 z5H}uFJ9Hatq*g>LD6`*$2+MdLlFK3@R`q^drfJbZEq^^HWO`lN++gd92>7j|zIpVx z*npiA0!e)CUGqO|H?Ovy&eL333fdpkUG0zqPD`FAn1#<X_ON?b`H&hNe91vm1jw5c z6|U_!eXM{R>?zhCN5RbgiH=99X%%ihq%S+;^W~~J-j9v4^z;f}?=$QV$-?cF3qYIZ zDWnM2w7|NsJ9gtiu%Qgk3lrkeAV}Ef5aDOUTjYuVaRGXDEE*$QvVSyzOB|U62>8mn ztY5O9H<Xy9E^y=WlCu(gD>ShJggniPu-mrn_oey*J@hBYpA4oHJksQ-WFY>gW3^rG zR&RP;tAE>a;h&g5L|Ont^ZECU3#O{3%K5Ye8<1{gL3`=a$ODX0EUE}q_I+p9^<Ogs znaMd>o8bbHPAW~vNRePTM-y^Qf!n<17F3shgj0Ov>)SJM&f{8p>**9Olg*z0=&}h~ zbo(OXX59^(u1!^8?X3?Q4ec58<Pa5XU+rD@Y2;)!S0$x)T9<I#PT&+42GVi5Q4wM@ zzMK4dxcNt&&W@b6-{qq4NY!Tfqz^JCN(uc9A=r`Aaaq?KbL2V$7Zdnrd5ydDo37i^ zk}I_j$mu>8%U*-q))t9jk`iw<G7CmQ4tG<vkcbPkU)=SjX~HX}qF%zhh`e^^ks=TC zlJ|Ejwh}zAc%4IkcqPlpTOBq<aXuCh&HhOdcOdI@zcklec`mSgy!cBM$C}2Wf)dW5 zDE_a*y7-YG40<F5iG?9BN@fE{TauWj$qz9CHiKT_wp@k>vKMDwhtLgfT0=qphmWY| zIt?}`;8?|kOQVVlNj|>L0uiZ@uE;7&WmQ{}wO*BD9X*fRciSeRqSlCHo8n~Nx|@_0 zV#iT{)%6pvQ*0Zlq14eL{#kc)fQbImI4gjBDxY1Pb7Zl}86Or{E*8-dZ}~k&q2=2U zG~zHF=~|JNG<|#x^K>po7hmh?aUC!2TWfBP4mkpO{nyk?D*Ku~?NMx$)`C*bt^n5j zxyw&TOKF2_nvjdWu}mQI6+!ds$YjlE=GJB~(-C#<QmxL0y0qN`SId$`*2+u2ql`l7 z&aq$Ec)`@qQ#9l4->87{W~&YTx;QY%@>_!2nkf>iE&dksG0Qu4$r6P4AJDqj6gM1D zSA4F_NhvU9GW+-AbZ2zNc&6aq*?^>#tQ!qry~?ss?_m{CD#CW7MR1nurpm&pUy-~1 z6*i!6Wal0EL8E8BXY|?c?F6I@OBQ}KQ4n}r+ZFum1K+%Dh`Y<oR1uv<`$k~7BW~)9 z&hmnz#~t3AohNkuI)7ddfFv&X+J0htULBoXQhPT`FQlih`dIlwsAy|%ZxLuU89hGV zMCt9DnvS35U2($J3++8bfAo7@sOq`2yWe@4UJgjnPXKM+dys0z8}!*St@57FgKKYd z2@UrhEA==1DC<rb7zzUCT8jpsw`K89<OtRqJ<b2sp?_RAU4Xsg;|%|YN^Y|RIM{D> z_Y=Lbzc8)bmR98enIhfTU0?yjnEzFQ1NSRiVGn+fhTH7kD0R%6L)q)R?SwC$%CA#l zQ8-%=tKm;FwUf_N3t-XU6@ALC6*mx*Jek?=)C(xNvZD3b`n4=^Gt!{)Yejc39z^x% zQ1-!_x@>iMuTOxsG>A_RxLncvY&O_vm^|2d$-M+(6AJlm^Vx2QkHX|XLp@A!L;m;O zCdWa<i-oUO1NIN*ucPCL;}y&790X_=T!mJPJN!Sq3RzG~7hRo!cZ7UfvS(C#xdjwC zAPc@Haxk#5Z{_CHqZ6eWZ%*}3Z)H}9VE5k10(((AW7NI3xMI{9|4eTqp=#c)&OHZ~ z5~N{vi$;0(X7_wNXWl-e#i_p)^^AC=N|6acWx?no<OsM&rw&UpbzY0*;PlW>4~*up ztB3O#%~E_L6dEb6^+MVjgRdAT(8HV}#di+~>DXJnNe*>n-HK8&ucDD@*s=^=y^^4p zou?V@cz}@`$E`+}Gbu=jC7@Cp#(dbSU-{gOd-0g6sW<*bG8Kz&AU9@aUQH)^iM!0a z<~6C5V{M;4IdA1woU8fR1aTZ2R}G<0`;8)y4-tAwN&P!2fW3fJtC1!mYwz-P`ha4W zbwp|j?a$9&f<MKr@y<95Y4V7I<OIPHv+ZSer>w-u(Njlt9|#4mI`jT*_<z~8Q6RyJ zhfn>sF3Qd|VdVMQ*%Ixd<?>I(c}N;T#;l4rZoE6<o71keKaNIenl?TbDkP_3@dmK1 zdr6rbejSXq2&oXEs;1gyM)1k;!7M?{$ro_Yn_WyD@3PX*PfE9<d#73R5^sa5*cR{n zw)GY0dg}>QBt;gLg5a1V4*c0eWV~bXQI{gMzX|OrT8+&Wl${h5`k2lduGYXgkP$*9 zqii*3dZ)j%DoQzMCMwN%F>OX-!{Lr}!f@a;Ii^TH)#P4<E-FY%%SvUue01)az=FWq ze7YxsRQ9MPKOrI;F?jF`Ep9F9iIK--vMfnA(0$q=FXHgi-EIq~^Y1bOYO-kWpY1DJ zD3G3t^}}1Fh&3&5)mJ4Bw`)3f+WCWRXDE&!`KAX~?N9Y7T<yPgwIbXC3`9}Pkd@>R ziZRFTxoEZq-QPjhw20L)K|#=wtx6O4I3qF&6&!St2>hiMv||)_m{~cp%4{+k>ubxc z5TUlgBGdLeH+0*h#YbJF7iP?cG0t~vK0?Bd$y;C5gJ^YDYuMF!O18eiQ{_pAgAE+o z+14;g8#77q%d9@X0XxufULQ$CHUQDsQ##uHpU`-Yo^;q{e3<3rRaS%HaFuRx6sXLa zau_9vp{_a2?JiV^w8cXxj|{k068pN}7Fz4~12yrm+0Ll#dL2x(HXcQ?Kt332+}%;2 z1^<(bk(s=kX#O(K?V^Vj{J|+%KLOFc{pjML_j%Yw-{+_`AUk#EU9m&ik1m&52<@wF z6b;y&{s8jJsIr5_*m?51yh*P0r39^`71w}n?C!|z7=72?g!FP+bNx5%|5jvTQ%Ceh zy~%{hV5&yLn;=m1&2N66%zh@XF?6T(ve04!Y&pc%1=LNk@Jmz5H9qhIHVXfOPw*W2 z5DW159Lvvn(CT{9harCb(TS)dc+3i>&~sk`V+cMZ^VR$1QR@F_v2hnIg@tn~c#{Lj zxm)KWaDIK6vA8Z*w)5VDDs$+`R26<7yzn07FC%&=o8tvUC-xBEENncYwiXSiG3N3O z-{SB5I|J!_RfXRg6}|?TcaM*IZq8$Q6I%F%dLD9kIlL@d;JDLmgP9hB7_224@3=|_ zUDbK^kBxZq${k~@o3(C_kB>cXJ%lq8cAl-?d0eO|g>LH;>Ku*pfc~2vtQ#AmDOrfj zYoiH0*Dsr{8*!Vi6X`te`}!`3x)M!dP*)uXN)>XeogT{P|61U}@pv$n*o1QV+_Faf zXE1m;b=lNqsf<0H?mI9tE~@K6Rf1=1+t26Zo^FBXrvkgxMNhQlQ>k+DVG98y`e@FP zBA;aJdew*TrV)|D5L!nnKYxg3=DrG8Q=*IJtL>jm)uBSQ#)1}lZ?2cu?AqDaT9P$1 z`T(s?JRV9YheEozl)7G|*(lS9Nigtq_C?9KQlGTOW!})GB{Sb2y4~><{V^g(mN1+u zWNxYlLj=dCW4JE!#SL>i1>C%%e>du#YSzbz(qPa+JM3xp>`m$ne1y->{elrM)|#{H z-_0^-NiH`dX&YKPlsM-|i>hHVw~Ffv`7rcqzBV6py-rg-ftk5kd(bm};CC^Io&-J~ zSHpYPsV43Ehp#gM(MmI_HXNd6v{iI={A8yz#e}io@z$hXSo3N^@^)Lmi4h|tm*14^ zT}VUGDxw&Q1X<!$EVkB=W4SgF1^=)nQzp6A&Tbir*!(SVv+-ot>Jxas&%90fnZ@Qx z7!9SK+9QhFXSdixPtpdvLg#b<-FegPzIowe2+n+2H8}-rxhWqwd|ohX>FOE-^KxNc zC5C-QdEVrGGkYaR<B=o|TjuKdg^O7gBNVv(%w!R7G1=NoT~yW&TwO?;Vq&7fLoU}@ z-R<h##hsTGEpYFSm2*s;oueV&P=4>1`A#9LC5734{Avrh{0Ll!d<GHLEv+^vDJhrH z@JM;2$AO;ToLBkM*5)^M^h3vCp`@*=F8i0IF(>A&_f$%#3EMcl!}+sUSS7PNA@HsK zRoJg~$|@A(ktSkRTk(C1`vxx*LCcnA8YplPbDSEBv)=I1a}@iw(_;6QmhG~W<8fX) zoE5$|Dm=YgOibvfzMT+sy3%#5qm%D+_bJq02`UdL0p=M8ErO<Y_<i1yngaegs>%U; z>p*;YYlSY~$0>);tZ{4m?$iZlU(${aIRUqd4_&p)k0k@>SWGq0-sNcBMj);Gv<TpW zs5AcaRpX&0;3#*m|Gv+t^6sSbk-NisO@~-JaY$hgm`=R*mSgx_RIYz>_;PohZ{IHM z-R8cu^Ep{n#}y0Y5S|&=*&bL2O=VPjuMsD^9-9q_1vRuiESpYGo!tdkSoaw2b;AOw zNJmybBjH#}tM(3^E%moAOB97I&6*3wEG_M){YP*|@jQ>ZXZY*1Fz7^W$qEnRB=>j! zmHY6#CyM*Nza}_84Avg=6F=z@@LaPnb+{5^>pmjoJ>LIyKA9C2@)-Qv{;|u5^opFT zG@Q5rJRa!AuJc)8`q>zio){ff@W=F3G9rNhFk9H!zB_=(<K)=GLAZO(#IlraY;R9J z@j+=Ed;cbWCFq_K!`vNuB{4l9;dC8WkEL^_1|A-Z3^2Xts^w)^5DCwLWIWIQ?sQ#5 zxfFeKOgzZsT7}3#OhL}wc+rzxfL$Snk$th6Ax@xnv!>;y<=Aa%&%cnA0jbu|e2U}A zHNbw!CuFgGUR&GP&>@ErXSP2q_7i5X!wioHfC_}$Uf{vNj&}>@o6F8Rln%IGyU58X zA<wM>FJ3G!Tn?AQx9>Qj=TQ5mV>6n>y-Vv^LDy6josne4$!jHyj|7{kD6tU{*|gQ# z)g+^)cCpqNQEKIA!PJc#O1LbJ9#wuy`wMBd!G4SZlH^xjwnJx>vfmztz~%a1Qa4j` z=Om?88-_Z|4sK4!?XSHjr^BHw8EjqWNNV=AaUR*BKULLL&NGFbYh^acD<bgy^=)+` zdMk`P8Y5Xb<!Y*6C0J!C^*XA)%aO6HY&f=#&(}taZc&PHcXg~6>?h1@Wv~=+ftQnf z8nZ=;$pIGwv0!>qV6$)xQ-x9GJmV&TOjv2^ua@uV!$Crb4D^N0d@$Qs1)8h(GJ-B! z>)(TUAK!Qu{zBK^_OUJ7z{Cu#(r5^tS?7IDTHI;`eD2)nuQuCY_t+AUkdMgCoig>Q zSdBQxv9kDd>66cH0PuLoqG*b*4@u_Dp<P7|5ZX9{QMrRMme(0E5S=dHTP-AD<ec@= zvC?^*Pgt0Jjwagg=O=j8m^BwVCxw#Gz}$|1t)EpNPo|y(LDfcoE<xIuLH1uw$wOPa zd`ag$`I;7V0cN)K=p^KjY1=1ZrnLo?*!n1txWjdyx>uZ>KY3cWoiJ#rd@&p1)%9yP zP`_@;esj|jJjYXemIVWb#tymw0X-3Zjhz`eImT{0yNCM%`1MBRz43^Ix=E9v%@)mA zeJzu2iYCRDww!DJW?L-|E{!tK2_rmm1DFsly&$+*)BV_Av)%GR-e?DQUTCZ+?s8r5 zA$0t#{632^=d*{{TUzAGv#G1@j_$+k&$?wHP%LPFYsPGH`cNBzisS!z$KkOp>p4V@ z<NJOvbTGQX5Dq{l{$+NF@(CseruH9}==>V}5}~5T1?kyxUK5E$bI7Z!Sh_yFnfSa@ zOx~V0$Y3vgH#Ran`w_ubpYy+x!!)`p7+;Hur8jnfD8b(fY;0_OcOi9_*%_JgzTW+J z8p!j2ZDC=c7&e@Yv^6gVM#fx?1Nn12Jstip&h+$+mTqMmJXg1e_Xlk~!P?oP(oiPm z{MM?*aeZy$BSr^NiHw(2gO{us=8FVHH(DdfjJvs0_nYms_Hm8HL8=IN>u+BRk6ruk zq}GLMYg*3Jnz&da?vFZWJjs@uy6(}rcQWV{yd0U2zml`6&`b)k&_j>fCIJrZLD|5z zOg(=0yE17%*o1&hjMZirY}iL(&={vT<0;^|+xK%Jf0TM}XzoDZAyc`ag6=isflPzD z!sL<Uiq|*eU{u-p#Vp-rp-`v#QWYzuMTXNIm{V*d5`fxBE`0c0o_w*@nSH8{f{Do6 z#Dxe2WDi7h!oe{kDX<|_oFXMrT)-(~oCX6^3m1nZir#(9)U=TA7<VOO9MGzeWaW*Z z!bC+rqjEZ1q<zKLl85W`Ul}y40~ecUT088m#Dhsb-?BD<FGkXZpi&ns)kq=xco2#~ zjFE5~T1Cwfv)0tVTp(`|31;n9u=KMlnR%~=_IAz8$~^Au1!$LwrGHONNs+?$#jNU4 ziPCRBecW*I%rwhK>M^!6!;C-`v)o`P2RHwQ;jP?f$O6UynMWTOWL%g)Gnzms9#~#Z z8=45_)$V~$Kk&NF$12s)UBenEA*~loT>_U>X7<lV_`Q{Znfa!B#h<zRly)J1Y_H`h zj}O$qzY(?X`iOBYg{T}9+UL{U4-LILroqdw(88vsrY_Hllp89JRIR8m5h*j@11O%0 zp6;Tvac5;q2I?Y!rMwB2grWqs=ek7ZQw+nDkg^TFMh|u}9LF|CWF+VsUN#O6hPvCv zhrkTKFrF-$+tKN8qxSm<&y(Xr79m*u8(HKbP!D&RYs9m_#N_1O5_sgrpXAGL#(n)c z2h)UKWfGTP<vFa}owPuma95rXkh2gIGdVfA>(|FVzDoP^#Khupsw{zlV|D$<?O(>- z+&%i?y1En<W<@#F2>EE!BCA^yk>c-)#SjgLpZ!4+T%1ZHCx{^=B}1U&x4b;P0HA&5 zNKN>IIX3F#-~PT;^6|2k2X{;VY>VH^6F7wM^u-1&Q5Rlwx?10eoM6>jrv>xOYY?$% z8{2M3z@5<Y**{l@VEgJ{XUL9Zdmt9`w-YHu(O$<LNr8v46(?Z5Pul~rJq-F-YV03e zG3$-Z=4_<MBntHAetv0g*D_eYD?xvxh*>)>P2%NEw`Z0RobnEgHdAk1CR#iUH$t60 zu2Z;20>OMKb{qOPERLrZyNwY01>rmPUmAMD*Dm?RysmJ1I)hVFDuSOk3ZKsj2h82~ z{WbfbQq=TcDY7&X85w~U>Kk`>A6Yrt&DT=@+5(zif+j<m>fHg4Gn#Zq74rcg+KSg8 zzGeV`AI(B+$mq+TPuXjnmw9f}9slNV49hFuYwKLQzUK<%9c=5o#^m`_IphgR_<^<* z)L-S!WmZ*X+<H)8?X8V~$p&GUPc!DXtQjAg4A)Kzi?h|UHbQ>wxz)EOrN5UEjSNr} zt<~ANW=J2arbnvq;A>)CH&xz>%B}SWQ(GQ7&u6@#F6SJm|1+a=m9{d!pBKmL#9IZY z#>K_;TxcPjJu2|Z`od1S3^U7M(O2E}T~Sq&-#ELPS0|(U4}usTq6>d9(NjMb!$tP@ zsdjgs9PMbJ6ut=@xM_C<O}rBI?221F^9sSs5L!*|9=q;MB)!*ov$B!>$~TyhLf#sc zOkt<2%3AM~s6lr0VrB-K{<%|EkVhm-=hKDh%=VTg$5G-ws(dt$EL;>K^XBLc##2KR zAB8I)sO8Dy<eb;!!_B^sTn%}d%P!5v>MXTH5WUODP{R{TOQkfEZ|*lJ@*Ti{YR#fa zIx?w*_dsN(;j^h~`QR8`8jaVc@~Xs!Psao4Qi19Wm$g-V2ZMwe(HolEEP`*c<xNZ^ z-JX^_Nrh2X5#8RNJ2^Scf<u)PvJ3q;(Y{qIJdh`guTWM~=e)74W&F&UI9)*2(9JLI z>HX56(ZoCa2Q+&0IUKqGhnyqkXgm?QE1lTi@!b^g@WFl<_JxJCxj30Qi=POQMo7(j zj*%|G9!!n1mVjtDkVjka_OJBva{ZS99$MTJm&~w+jt(&le6hdc$;Q*MutiC4n{$>F zyppPigZVEk+`gxGy6!Lj?iV?dYCL{t9H4`rv0YoZE4u7=VhC2ctSmIJYOPsZBWvqu zMCPvFaeJr~q_{NMnVIz$p_yX`ITPqAB?)n<DlE`z5<s+tNo7f5gsk;}Xn;8&($!Hv za%=$3YI*%-DY)3IDz?Ox9|I8&g_-HcPpgBQek#dXoiQWJ-OAa9GG`-qCDPy%OWk+_ zhx<3IgO?t^OUBE|*l4~MC_HmR7rzYaq68$IhVvxBu02MF{Vj(8Snf?n$jS+N^_h&} z$Hug|GUkz0gOYs{qt2rrHi$dX9wGI;!5J{=MP=;fhH}=EwWcDPdGD8;+(&$qA69o3 zzufCX!=%*<Cx-c%j@p&qnfxD@dIMn!nUV1qk#4=2pzqh4isIyaS-|5Qpgor$#+1NT zYWfE|O7S~9LzUF_=tn;zfB@v)>wtN?KIy4Kf8N+-`hc6nr@K97-I>pcC-${$<CRT& z3V0?S6DD(HK3OlU!+NvliZB~~W+>n)E4y^<LUC_>kat9Qv=qUZmv8HY1Y6ut)NJ9# z>26op=!#Pl6(u)B1o!DoZsT0xMGQ#L@?pZ+>cQNd-W9qnuYYT(VYbl|XZs(l$=K*j z_sjp}=%^PJ@J?CU`SJ^2F+iEFe?RY?KCILa>pdxYQ&Vrdm7}lRp(YZV90#=yrqX+3 z`9|mQxBCt!4B|mWnz<wLiaoC%1f-f-20Xe#KtL+|)8Mm2(9z`2Q$u>(Ws1EWYvUie zWx}sWY1^6^ObwRjLuy8a;?VCxfyYd3fr3CkAa6qA*w|gTBw6t0Oxx)j1_Z$Ug2zGU z)1=|k;OoH;LX%B!>R$PaW1-gXas{_i`1n^`i`XUb;@w>=LfL;m`TZlk$F|T{gg}bu zZFRIE;LAT6%)>}7m&YG{kc!R3=%Sjv5DAvkrqTwBDV=c5CF(TZwMlnE+fkAv3kiak zlnaemKo%oT-qKozX|E&CUmGx@^OcA1&_2gez5g4&9OsdngzoLhK*|=+WjPss4g0Ic zROxMeirWQbRWg71i^7gAG8y-~gf7_FMTj5v#fX=tzQL#l;aORZKszX;H;EUKR8t)k zL}}j&k$&RJILT6)g%ei|$Q|TYR*2e`NXT3x46JwWa;aj}Xfep^rx=?yGoo+yO}r>e znN=DyR6iFmEsZv_uW5TOiUGOkH=-pfZ1$qtfzty7Ew|$H6(Ke*J@;c-ItK8ZE_wF_ zgrKOr1>J$`Q{(F}RQp7V2m*-jrIvjbf>pdi0ntI~t`)MDq0|90PmZHgt&Y}aiA&zO zqU?1k=KY$+Mc?v6ITRG8CRuseWhok13HG7Xmsd^|l~BdpzpH)|w}Gws5L(6A%^8d^ zv=wo>Ou*oAK7_;8^90A(x-u8hY&Oj00cIFz{;{{_+hPjwmcbxbT+lp;FW1Rd&ytsj zk~z|pqo3S)c`B30)-gU1^Onmkx~z>H<)sYmL$za1*3zt)AL5Wpn`QI#Mf}DKaO$~_ z!+)@XPi~Uz=Q8`Pl0o0(!aE`nBw@mK7GE0bk|&X@<pE=8j@j&v6rVs$3u$?GBHD=R zIng%mmX0KrT4hy&s#e0yI#*-HRgRgO<Qg;;?<A_^+Vp4(v%uAFvGd!ihS)e-SEgvE z%EkDU$HyIL#1k8;r{}-FBs`{kQaSrwmi0Ikr`WBTWjQB#lY97fBo;rY-i~dNb#@w@ z13sL}zm`m*_K%?<WONvs`C+L5q;{#Ue)5J}M`Ww&^{{j7hu$>MwFAjm@qlbj8cRb% z6TimH-AW0jTnydLtu7Qc-t56}J@dk3tRTtk`a5a@_UP*?A3OWPAFBQO*i@|GY_?=2 z7tfm0XUh79;HS_Wv(&QZoNA8LFe?RMm6<BQZPts2Gaw7GrXy0L=S+=(k)gh0j=J=p z1RM=~7d4k$^ca{Ox{tZ}TDt`{;>2HEq&IbLt5$Uy^4TbxK?Qcq#x7pp%1)yV(9xsi za$~v$yecA6_OJLuD0Ndn1bxl!Q1i-qjGmrqz#if=KoIzux^!+wH*vW!S`H8x9baE9 z=s7J-Q{#M@PiK3+jz9xiU3DcN1v~*6niwKj|2wkmBp}A;^zAd)HYhf|!+tU<QBj@v ze?1BBuB^4VY^d)lA?kk2Guw@)ygX=TS2OWTX5Z5^<O+BNFZ=~a<HjZ3MoJ3=gMNQ9 z7u9#A+4jfj{-<snin(Lr#UHnSOs{F2X7&cP6x^$b0MHEuJaS3`WV0Nloh5SwMc?u1 zfb4tnmXW1f6mpn!KVvES_R1DP|De;u*n0m!D<@ZD{WUAVc27`I0mNuU(a?3G9PIB4 z%tSX%4CLbU;&7Br>Gtv1Pv>K(stM*<q*Wx0qD3pefwP&SBZcceWoqRAdkW)nE|1k* zB#tR&Xm1~HT_iu3=|m<|QH_!_GnvWdp*GRBPS+$m^Sq+%-t^cMe4Paud)r1MA`(r7 zrH><ZIqiqb|C2|7oV#5FOOk#Rl~DR82D-iRPz<@X9TFvVc3>hEm2q+;=Psda7#$SR zN89L)AILys{g!Mro^X$x_>0D<s7MJi2RjGB1%#^zHH4yLnA>9`^t=N3QMSiM>QIta zK^_BVO7rlkVK*%YEOBS$)_f|AZ*pvnV<Xj1LBpzl+b`xnTsw2q%8c)<70PgU{NH)- z2jdcX8cNk&7=|sg3^JiZXgI~MF@GMh0={#wS;Fw#lz9xTzYg?`sU$%=j|jNXHTox+ z=P6FGHT@<{pJCi9s}|Q<MWOtEG@WB`q+PVO<B2Es#1oqx+fF97?TIF~GqG(a9orMz zwr%6<_k8D6^;6aPl}hSadoSGgwKA)>ov5mzRT?m(u?tNbxsRyQ<k$~HVWKn?exj$1 z$sRZ^HJMUH`=4e64c+}&Af)D~mWE|WGg4Jes$zE}s3gL_=YG_*r2O&G>A{>>ufSWA zb)*6AI6VOC82H_LH*nqsDLQ>qpAC#J?B_%nv<v>X=vysq7QR*e0vC_@RCpS$j4Tn1 z4q;3_{m=CjoXUsR!<)Z>)KekWrJa@+9=sN!qBp@+L&vKJ5HtbSB(kf2l8Llq#s5zW z05r~RA}hAo`z1&t;S`SF_0E;7h7~(W)o)qmM15I#38<%@@-ls;=%(OPJg=zF_H3O} zu50{BVaP-<tAD2AW}RM~m%ytE8;j<)?t{MpqZ7qOO&Y;W)amegFNHw42sP4Eu?^vZ zXVzJX#$l7!DTR(KBWt8(mObTr0>jX8ZR9$60a_OF4ULB8C~kgV^0%=Wr^{sN8HR!h zK<B8b-Okw21<nPID5#W++Hd$c&U5i&Y$?9Z@qeP(cCAZ(4W^b*bnd}r_hv8X<82Df ze<r@y7UK$BkoR}kVGPgeUb%I3@5M%Bb#=UaR^Qc@@1lrmWXKGzDfqq5y@aOMLxtR( zRM5iK$3_!F7A0S}!#~WU&hNfA|5`O@n_ohGiFx05E}kCfn+36go>Fw2HgB6Qh(cQt z7;St(<B?+DL-SOh32TRTH(!y1(bPF`=ms2rNn02a=G>mvh*b8}^l`P@E+$;Mj8zb@ zbsY2<aq}B5fvwH_6N(DI7<>Uu6>HoSdP*_v>1gCqPHwr;tNQ+Is3aC1DfZJsU- zALS%>J`@eZo9Up9W<0`!1-7*e9Hi(CW^c4}0`Y!{PyU4fRp{%^Q-<01iC2a$wwMb+ zL%;b2Wht924rBc!VKLtxFHMZfhjwRK<ZOkXHa*zj%EF;s2E;+My@5f8p3SU!+21rB z--A$`T=~bQk2<XTts(+-g_{T09C&3J$*8oSI<bhuu^b$66RB~(@(0JIX=i{eqsXa= z6oUjXT*)u8;_7*R-|3%IA37uE5`LtWpW?Kn$`XxvY(bbY&Em~L;az05Ri|xoO(6NY zL8=q9WR{h|g^<kr#(bcVtO6zRB&=_)wO^-@7HD>zXKMV{UEf(s-^fYt?n+>PC^#TD zG{u&k^ELX%!T0a<)RlPH3y6Ii=HkuX$(`!z^gMQLLkTTtnna`u^%v0ZJVWU(CJBO9 zEwZyxHd8Fbkc)x^qW>t4`>BbcH{Q#Jm9x)fwOuJ9iHj4<>!*s~M_dTSoLmT%#+NK4 z>{yL-QP0m{(}gG!F}C+-VEPsZCtqp}XtIq<|As&(%R0O7VL^_fir&u&V>+`6R3R{$ zvDzzz#uXehFd8EsJyV%YOp|KZ!ekl`jh8n-xGn&**9?```kRgz6m9C12)ubmT2<S< zVyG{P$prL$-CYX&Yc+@}O_c@k;ihgFJXP9yBbB1Zp$1k@$XcXf#VK`)jc^CR2+B)_ zu5~$}huXi>khkndK<d2c{>|5CpI05tzbg(Wk0o0jBrbQPAoPGVK_nSh!2Xp~JYra- z+_R-aUlSBFq)vfW!(FYVCQbFQm8o*8Lt$#MsV-pC)^|)O-biFD!RHs0dm~$8n?nkK z^OHc&<nI*JrBp_fgi+?XN=wf${BwldS34*H%{Wjz$TKBwwG6b5IUPXN9=vszj&3r# zG8ty3kZ6C24Q&I2-hoof7nUbNp2^?#-+(}$%&bh%VopRUQqt_A7t>Qi(JVoUWp*AZ zU*llyt7rIVw(TUG=$}==o0VLwJGdMn;dcKU+>jRk4HYc{|9VHweeLI<RJR1AEp^6( zAMs;1dvb!r3H9%<OKWxxK5%e<JrKb@KzN7b&Fhe+DBUafZ=Kj(v7h=Mm<R$7D*tI3 z#;x^bo;0WWE|!Hpl4@#i4>|GuOnBY<3J4dnK@EU=y=#cqE3c9tb8J=DZyx{F>Vs*k zd-NT^Z|*GzJk>y6?-Skw>XufnSKp5%#G3A|g`ra&w++r3@a78=+y4%ZEZ=*H0pp?6 zKmTYQJfD1=;R)9S?fWBeZlIN;xX2Qj*t!0>D0sqjj*KMRI?i+<M3E$lV1rSVP^6`0 z0iBs^^J*2yLr244@dNocwTBJy7k|fC!5<FWOACcK9P|^8G%B<tpIF84*md%m{~GPv zU$LaugqE=gb_2)e71hwzK0tl@&cwwoRmo{_pzDWbhFQQO(A~2;OXK-?G4ezdE@!)v z6c1u0ndg~`uSyMS2&QJAPG>Dk`FacTHAFec70i3*t>C019MCSRy+UD{J)ZX+Y?xn( zOu|x<F^$f8HPR91B3)Rgsl=|RbG^$uzi~M)>e7rSL!e>S*4f&?Un>bKW!?!IUYpcf zXM(HXXaplEXIc@PZj&WNg-hcTY77kqdEfC3S!fwCSd-$WQa}-{UNbX=^p3ByNyrl% zK997|U?>4&XUHQczHjbO(p<K@AtMv<2R->0qs|H{g%8Zv)^&*1unJ-FmRX7$n1f5+ zy5k^+dc;UxCgfL{_$m5&XRWOKpui*4c5g9lSOK7NaKPLbQ#x)Y80A}rkh90_7u#L; zl5FC`CSYWeN@)*un=DwDMA690(zOm~NsX1(dR!DT-H{K01m%*dbRA*wRSKv#T))|x zMK8x>Q)(3j<p7O}n~CC;#4M#HQmosyw#T|s@&*r)%m?SiWFK@aN}>a)&Ob%W3~Pj7 z78BS74Ugdj>pUO%m;bURo55*X_xj%iq1$e_K&?hke9Tw@KG%{JmpyC>cU-EkvH;i8 z3kc*v#J!iQ#u<t|rn=;iyexoLOFpWz9t$sv5r#0}CNCk{ugN(%|3s?-cQHx+T}r;{ zi09ZLg|2M5a3zizh)i1!zBh$N4|Em-OQagW%^(%}L>eo5AU<`Cvn!Fj1mJzeFsq=g zklwGVN<%Y4sOo0qH%tov=GB{a!qSe?(ZY$2j;^+DcBo8b7@rt^^`;W>EmKF^z}yW@ zxxqY3R5C7)B81S2lwk^5=sXRqYS3_mFbXQ41AxjhgRD5;AN~*B>m|9SwxK0}W?c5M zWj`MQ$13_6Spu2J*x1&Bi=Fo1Hj>e#?#Pipe!yn{j+p~Mzw&#`9S?lSRHeXgj$Y+V zd;Q!0kN+*?|1?lgl`p62n$IUWO#&?L<P@g?gOX2g-8t8_p|;!-Z5#Bg2Me5A<L|V3 zz%sgy=B<p7|D+3Q$BX+i`lGKrn=@UA;WWQ6JF&Z;KR5hfRcd_L$3Pm(Q-Xd*FMs0{ z-H`Fg_`{=KO*0lwPPc9$pzYg`VFIJ?3#7_5&WPcA36qR$!6=(eaY@Na>s+ezB*IyR z_4@C*Xg^TC&arUsh1lcdam3F<kUuXM=xnlmir90&Z&NstG$@GXJk$YI==ggbirhh{ zR3+gk!t|aNxtZ+jlbAf(;+8H`Z+Dc)9iUn|4Hz)JStl2hTu#N6xa8}bzeh~b`vd2a z<zI0g#&a|wgt5hKmFte0C<#kQMDu3@8R$<zEmtLZkH~4Irmm)WQ6q9&S%ai;^0<=b z|IHSc$;OFTds`~9|7bOt228nvl{}b_WPolkQ`u|{Q|a;7YiTB{Pv^PJp}*1Yopge- zT_nZX8K46_UPW<kWz<T__Br<hROu!tyIShPD6=RMlhq0)oIJW?he1MeXTiEeNU|{X zc@#;pn|zZR=mU0qKlD;Zjz;R&$Y@IbMXppnI#)P6I}72-&|*S&W=813J^0!KR*6c% zWJJS#L`*|FMti=>mGaiBJcE6a?MQu5RP>WOkF-Tev52uJ6~G%akE2o!h}(^Vh8)yk zp<HMA^9M?K+=f;nc&Gx{CrU$_J-$OCqT#pO(H{w95MB_=1ky<b(C$J01VBC((qSCF zXyKbkCvm_*_H>M#4~Qm^@{8%9AmF0g$VU_?3H>A6bwqQ(RkUPH7M}=sgyzNb$4VdG z)-wAmI(J2yws*y{tvSt=!<iNJkJD)s;aT~Wr|jh0PdPGijrPYVnEoY5{b=!-VFUqm z2fMTyKdJWv$Ha_0Q1K1U%kfb^?s2x!9>CmmM1uu$9Gkf@<;P^KL*o*q^D!W?moL)c zFw@WQGept}^}%$4-T%o8Sg&Q^g)~(z_X2CV##Qw00W&vW7TmtFZI_`f9UrcvPx3vm z>EySJpp+PAD50Iz#hr#wP%~ghJIT?ZA=`a`93gxJ*w8R=JDVOnVZO--_(gyR;g-WY z`X=y*diY1>cZV?(!Su;*2hz&#oB%dov@(J`biv9AglF2_vW$?O!C1p?LmZ^kOIO~` z7;~pOiBiE%%6tpxGL~)D--6zOXnE4lBYtxxQ~qGpXNoBng+gAF=UTPG^x-VxV7>@g zvqss*g2p~r2RFW5ZXuuo`@c`S@Baj@Y+ZjSO}w(a62mmxGl<`G<om*Cp7To>@v4G% zVP*_TP#3+rBfj<PnP`f;>+QY-Kk#$_4s2}j_S}5W^`dR-iRrH96BASfh4o4ZSTW+t z1x`+_rIbs;p1<3F+1498X@m^apX+Sdt~EDe!UW(u&$9=@iJdPIARC%`BsGKd*oRUT zvvA<52yn-)w5Nu)^0sv6f9VJ=$<4Wq$YXSKqvCI5C#U2ESqes}QPCAC;n7*7igbAi zuOQiD$jdTK!KB~nY;q`qbF+H~{dQhs&3P{@EuxZF6bYmX{9!|KQ3`jT<Mzho6_|P2 z1AXwem5HZ?RKrB$$p@%~12GKOAr?giE33%4yjbXQkCNmWnOK1-#u5tCTPQjS8oZr- zCT_4@B6~b+yAI?5u+affjfsb|Ld@Q!g_{I;wt~U2LG!T6v`|_@3#N;)+o%sM%iDND z%E4ACiEosptf($Z4HiP4(BnH%lL^W_=%w>J34z67{pP6V3(OKDGet&<2ts`1d8j1p zA_#F25F^?jQskD1u(A=6;Br5H(Hi|aO;w~J*GhLavaOEQYGOkzvO?t?!6nNA){z!2 z6KgtX=oW728((d13_{Ey;%G>Z(UF+u&b+>c2*J-18-YPEY&#z3ngKM-?VcEnD?HY0 zrdcr9WSGJooOak$&=X|a;EW1}b1CMfo8f+EARGFb5@R@!M6&Uq*!R%>3}W3f^k=Z; zN7(2>3FQNUr&G;Va!IX{I=f*C^As-v{9;S-i(FMo5z89Jel^ripODBR|FGZ;EdCdF zKTs+efC9-{Mp{UX*Bt1dQ5>i0fSQCCi6;YNRS~cA&yP^I7&YskJyaW{MCvh$RG6sO zEx^SB8IGekX~TZ5fx%9%0D^%Fy~z$ubwjZzL~xD;{vU#Jw6FsblsbB~t1xN)YOJz| ztV_E%91`+RDL5Jz+#`TMxf0uc6nN6o5_9)jG%?{@btQrPtp;7WDa>iZfk`Y^<H2gC z3Y1)HXTCqee(MqZbs>jqJcZ6RBHOMo@wkio{*!LPQDxm`<=TTW*2PjL3Q5fwH^sPK zHoAHBl3+U=DX9gC!lA2Dl#6NKJFZqz-Jd24Xc`m*gc8}3H{ql~ej)**gsxp2{1%K; z2N=9KIQy6BiK)RFaFlk&1kv_fJDS!YsT9N(<V<r9$Kc>#OhpOF#lQU2$RaImn{$rY zpk_%@|HKdcKqL^wu2b)C(t>KfU^6G&siogOy;z8-p|MNPNbt|oHba1gB&qvNWsxL` zX@2wI{5e}fJ!`3ZNTWzv?Zco)JbC~E*GxFO0eS`j1cCD`93*)#6NDhENE+h$k-uT@ zQ$W?iA6L(2qbq&NppO4N6Egmj8lhBy!o2=W;VbdMtvjO^WY~IqyQnU_|MQ;~aJ=h8 zE`vR=O?S*p-BqXp-f#0R=Q}8;zTbLa_)lVt2y<~+oRMyHn^a@+sO|%umc`djy2<)7 zs$Tcl)V#7qD*JKg``Nf53w!P}<*DIurmgwbFF;Pu&}8ZYvX%X?_omIVuCe_N(n#lj zbajTga9<oLt6qF$l_7vmEsnZ#^2SLeGwQNV#S%JV0u>|B0)~pNJuA@viZHL7hC2(H zbJLw{C}u+@N|VtNF$xc;RR|4Sr9Dy{a1K=er<sUK0x>pgW+*RMcU_nG<gAN@zyVuE zb!VcFhLGoYs-dlwS7u$^u?x>OnAtnNOhBP%CvOxn8t3_U_Cmha*p(6}pfK%c9aLr& zP&Ns5ibg{52hWKrW4ln8ZJRw6JvpDb*@y;z6o%s^!crgg%mtD^1QH_;p0)H|vCV>o zFEM_?b{<QyB&a2Ohd%zgEWZL=Dq9c!zO;@bo*2WH1pyZoEy*a);FrhJn!koX#9gsc zeEkp!W*)1^!ivzrH+Np4U>afdAJo>hfL<JC4NbsXILUTs_BI8qVZ=PM0kLJ>qZBIo zK+0lXFvI55t_W!hb$Nro40sNK3b#LHJX^Y66y7p=hT)`zDe*5^aqalhX)3mGKauo- z)l(WC*Yjcds#wH}u{I-*3k*X5K|a6vMt-fiti4q&&>wqh(;GV%FaV7n#QBfZ2$@x` z2WU*Gp{KKRxprmdVjCSD%+GV^>U2G=OTgnXpV>tm+pBvdf{Y}yeQV<|_-L)^Ual#D z5F*1~$G@HYsau;_s*}==oV{Hx;f9LzI8Iwh&a1?;?zCpO`Q)!KXU_rfc_KYi!XXz^ z$9qNJKt)lx<gc$3g~rBTRH(lGhi_;6dF;1l-x?`z4ihIRq##C67-G1w^L#==^m?3< znttMF<>CM0xu~Jf7js3Qpi>w$hDl*C%Qic&obqqi7=gTTRfCyi<fdEg6MM*xuWzUQ zJE&<BQXmXhh{b{zyo^gbtQJOrhmyq>r{y3u>69;F_t2Vk?5f*N)b$8B&!-=w{*nYY zU_oJABn*}@k6WM^*6T3>lk;H{FIq?Pu&r}Z9Pk@1gj<4R12(a*m@;u&=aVpmT1X=p z&4##Z3E)^SRhwTolS*lYm{#{mvMSKEEFZ#M)RzcGkwWjY)|NGx`{47mqp}jO@H4Xj z@~!-0lcC5Lxk{H`FKuFR?^JB(3T)n@A^f}HwigaZ4}B$mrd(^O3Uz??cLWyw!%Q!H z^rA@*iNEe;W(TqQh`vPmpI)YBx0ZWC1xcBqTM*4IF6C7?k#-@!`wn2bt1EG$9`Vps z(K#D^Vg$~|#-nkkVU}Z&$|*0tA)WP`mN$ZLY+{^op<B;OM$ejHnfYrK%)Ba+MvFsO zohv#LlLY2OxaG3U&g18hS6yzWxe^iC|8I+6$^L&@1hZ!|o+C2Ho%=t*3ehRUhGIw( z60lfO*_j4yUypoZPIBH_>&Md53~vt@?M0e)fyRZ#L$NEGeg2R~(1B)K?`ELq(Ei+~ zP1nr#K|KvbnY8SBRc+WB(svq3&fmZ$<ZUs<MW6CO#{R+ch_qn5)+I-GC7a>P^ciBI zCjnlZ{nT+(_qFrg*u#VC>UhnKbMqObc*i@~a7A5$7uH_U>^?#qT%Z8oeuG7dWgaSK zg2#}#iv9-bY^H%1C98rkv1{k<&GNdgI1qiK?`R2GQjeFLA{$$|<=hr{@yg`S$o<P; z{%uNj-4_g4N7yghZ(jmxXPB3556JRA_(oG65RRn_Ev@X@ULwaCbHr)qGH>`(A(Idl z>!Y0I+Sj6D`T(zI`15CHTwdgL$M|-i?IQOIY+esB1<Tp(!JBZ%jF_T%F@3wz{h<CF zkFzu8ol8!z=aPnP$b1{Jj0pDz>AW2x8Ix;ySRloWzQ&%rTd=lWTWGWkPGS17U{--8 zDd4Z9V1T)Y?(;ad-BC7riN;b$fg5986QGA3q0)5;Ndwjj`4{TL;HyOoGx1|+i{bvZ z!1!I-WLC?d<L!Oyet=8nVP!lVWCFRvQ|F!6KDzIaa_8twU}PbZ#jf8z?>BXOAstAF zO&7%pFLF6R4S+eC{(U%)0?rZ#6_dYJ&vAEiPF8LrwFU6={?{#ll~Nyb@%8Mt+j*`m z`bZ}U>_lx|e9vU-#vs(3pIK94@B}qAoZPQVF8A*sVX~<(A9|;y+TSd*iveEUs}?Ua zqSI(-GOoGeF$@M<RCoiM>e1yE`TS!B{~z0`t!I~F1TjU8?8K-8=*9`)1`=pPia)GH zrsOz@VElh<c%Ms7rkazRXy7n=;9w@p+}!>+U*#E_h43=H(UT|8-Z%W_iswhmz{&(o z#7*VjcC+sN1j2kqkcWp}c(=d_R3uRwkFH&$Z$n4JP~d0B`@=G0$;||a1nu<EaQb{+ zO+)p1v}IKT8ww*$Tn%QfNg<Q5d~jun+bc1+A;Jfj{&8^MR3@GJXq*M5v<e`{+A_>w z4uqm^$*{*sx>G*y&rnc)3lrw6jXlYipqN}EaGNbAuVq>g4p5FqRyw-b4Ud<MZVYzI z8W*SKw2>lF9^qaIU?^w;wvvVwa(I}}jG^N`l#J2oAuO<6%Q<@vafD0q>kY2*{C#0v z>xMoW#Wo?AZd^c&WJV2`GCcEh4w9ah4l85cxx;ZzZH<|zeEX(n3+*%ts&-efat>bh z2?i+shI0d(8pI<aR1{b%aV_K|g%c8!K0%$U%Y%Q6ugsq(0^U+E1-5r$Dxm!dbMv+b zIv}5V?>88HBua&e`q~bQRgK=jW+=1`;-FD<d{aOvTplDpQ)!Y=CyX4qyJec<ZU?o^ zJ~=9~M1w(plRyWQLku@%4pn@E@QHb|OS{d&pEcse|EXQpI2ZmK5XQE8zd5`;daI1y zV(WzwjX^xovtPlf>%DC2c&>HXR-WfVUW^&a0yolNV0&3vS^KM+H%CMH?@2Oe&AMc$ zn}kP#{Z$=Gon%Mq*pU^p;M6vntHrPYuA6nFtq>7{<U6#X?$GA#Cvl|YcF2jORrL|6 z#>eQD^ffp0CA=%Cuq$~{Bk+s+if|g_niHK8e;uE*``<TxKl$*`qB+Rr2>9Hi7`@Kx zb5T?R|1=VTmq7eXm*?QgFUr!k{E;{D7!3b0f1T|qAiu;F@&OJS?FVZSq?!88XHM!t zO2jbUe0{FGow)LfNL8{S&1k~z<K6i&o3bR0p6<X$LhxR{kTpA>9U;dn3cIC?vIzY) z&l4ClKzS8;Ui<Eqd@>TDWk@eZ+P4by^xq}G>mi0SwgebQZ_i)WC}ANp+&(RBfzP16 zLm_1!kB8H*p#S6YQoT8-S?}#_kC}cRNT)E`yuc1}0s1i7AV|BmbM)q&q@_V-eodUC z#@~+AWE+&v8CyC18NirjF^l%tE$ovrGA<}?u80m~$t7OtM1B<k4UE#V(*C`T;wX>w z^d+LnBk^kMY98E=sJv(B`|v5a_ZeG;ocXcVf(xR_5yVRdjsCW2Bgu6XL=O$45|g00 zJ3bdzv8jLm>B82SwIy0q-uC{c|3y#nC#IamfmwMkQ_+PWD;!ziKGXa*0GpRc(xL$B zWEx~d3JgmJ^CYa<4+1aDG^}MhQqI5i|K9Z#xbD8EeyxXMZc%3$Ks_nJ(B;lp<MGgK zaCLdY%fTx}Fp0l4(#Pstsy!pAJoh0r!;FJ?(~CoK+5?Sl`wiu)?lHsI+a+u1D}!^o zEGitsi*kvQBwpwr6<dFL(Aao;UjVoqR$Zkr(7H-Z0oPu8`30xwprb0K9T@9NZS_Z! zl_t_KsS!z5R6l-Oc^e4oc9Ye#z|RQU&}C3sef-F*SNzr3MJ|?Mo+@9u9WGTrZjdj} z9`R7+?*&uXkO8shmatYtMUS(?GWEuLq~%?M;rzDBjiExy!POe_l)-_gvw4lfJWKx7 zjVnvAgp#0^D^SyvmZkAZ9u(15)_Rr=`uoqK5gYusqg^P(x@A^9ZGgLX%gH1~+D4#O zCNq^ea*~rke_LMnVkn7Z)^pd@ADSgSPkOg?*Kb5G*P$;xq5Q*l*>^g{6y{)cn?x3P zT25iTwN(ie!ARD7|6auSKY<E$Ox=j8#O@MVR^{6uod`l&=CPuxf3)HL{s}Zl{EdPs ztSS`c?$R<yh_^~Lt5Nbze<z>JVsRdw-9=<VD<GYnL`>#0csw~F6Sk0TA9uJm`{wHZ zM|_jF3aB_){qKjbi>hmIokbNi0VglfAfN6j@oxKdyrW~+_5mF2V$tp`Py$r7v9rXQ ziou*NK4!oK7@NU2H?=i0j?RQLws4;dcNA}q;E(5(Jh&YLaxL!nz=%osI~xhE<qDX1 z7zR^*B~S*sx1lEtu!(xP&S#0R#aRHloZ^cXOnuG--eLZFoEL;^NITRmMqwkEt4NWP zj+B``SfwZD83$9uTWeAHmp9}F?@-6snZxHrmh_>*#Xp~$^N+1<y{HG-5leLyB$k#V zPjWG=`EuF&?47N2I)D3VQMJWJ4wcgBhz`bpWI@6cBBxav%Z8+T1!!fOs`+~Rib7C? zhV3=I$Qu@|F?#CKeIKCx#8vP<Rk1M2mzNHtj^?QYVe#n75#hBcItN`36Z$Qg3Ym~W zya9!;{R`r_@NkAeGeJd(EEs_5Y1<C&low3RSNA8o^;t#fcZ?5eRC}Xd{)6jLIMMR) zZ5D|YPv<sc!f#d^27O!ZF(Al~_U5hH<N3OEB?rOj_|B7&ER#-8IM;HPd?<x@qLQnO zQXU~9NW+NnHAL%!CN=o(bP!QKFbFo!Ev}aQ<@>nFyBU90e)Un^SuxpqchSXHuB~Ey zPrM^E$kAkDLq@C-5(|Y!8}ba=ql_RW>DQ66@BJ>kNoEoNhRg4tO8)%M&lm=OM1<Fm zo>#ibR3@2SV{zK5Y+>W{W%4MqymRTz_(Hd2@?uT7*#>t%v*_<@wn|Beu4lPc_lI_O z<EX%=#23!hj}M{mj9BFwOG&23P9O%~u`3Ti-Ju^}uYc-uTtO>@+1wjX?o|#@#~)8+ z!4@Ll%rmmo<>Tl3MD)qpsh2~U?H*9G?oIS{=j(%rDxm~G$cyL;Pbk6p#m9dGR8U5O zDaI{%^rUA7?xrhokKY$dNyy4g>#K0|JS@1po_Q0xZ!1Ciq8+0d7ZT3PDkKA3lKsHP z(u?!q3e~19c0x~kQU+j6%>!ySzEHYfE572;hZJy9>2u>@*r|T~pB4bDLX>t?69E-L zm*;)}{e89j<8Q}ZR<~_WlK5B*)gU~AOYT;U$99~A$DUY<mf8Sa068+|7E>onrYLLi zlqeNPoh0X^qln#%nc$N6A1NcWB1AtJy;WQz#nNcQV)pa)W2evA@1L+L8<v^w9kh5% zxstE)^ZrFDC0ri6fC_8cAQV{v#(PCMLtp9w!?I#vAq|x3>1v(nAro)P=n_+{D3w+e zfl2BIb7542m?lIvj<6OT>@yZlCCF)Z=&OpLG*=4H$GH}Vsbm359BjxVpKwgOILnlg zqEs%{#&uXJ!oJa6@}ksVZvP9CR`gdcdDG}CMIs)QDLZFY1RR@1GMXD><V+ah@G~yG zLZ0Rx3wnHvb!U8?nSY_W=-$1ibmN8l|Mj}>_qrA#0ug_yMoBj+D6IxO=Yksc@gP*i zPT*lk6w64fYlEPbPO!51+M8Jg`1~tK|AFZQMY>+*-b0t9sO3f^Yvk*bRp%DxpYicy z4bTt=6Z7R=K17i$E14LKa1J1$lW&WAKF?`Jdb$%zMBCaJ<F74GE)0S#E`wg_qr?M@ zg?>{5ZFtp!UN#0_-KBXFL5NDTqr=$!;Q<TM-4)!mZeM|K-}&WzcIM6gd0^y1j14w{ zO2WJ*sXseg&wMHLhfy9zlkCW9o-%YbjP;B9LMl4OS!k>{?Uu)JlCy)P@MmLuiz!Rb zyVzIT`h*`#7@MdCaAA??o>JdkyM`VG1`ECm41PUt2$&oO5`ljc8zSRBDHlBkTo;j{ zt<*7rGT{%ZjTi~G-7GBtu16Ucb4Q(CB+k4m2>(I!`8=edb&3v|3x1VE7Mio)v-i#Y z$oI=0O4X<`E;muRuBBtxUxH}w$CW!J`UY~jq6ES&in$giLns{{B~rYWhU{9F``mZs zBF<8P`!>qe%f{2pg=;wTLY|<eJMy`}Fj3bNq}NVNd$<eIF5Mh0u~GgNm)Bq_?V)?d zU{XE~07E4AvIbpvJKM8+u=6|b@P+<6?~gVNQXR(w{%X$ynY3f>SEXZF*lN&T=LYzc z`h2MX3iSHRYM!gZJ)-U;&}m2d6R>2Ggh0aKUAlEfLPJN-=)656@zUJ=PHVHpqCoD4 z?X^SgEku%?&jW5c0^A#F*^ZDw3mni;Ovlm4g9nY+uG7`^6?ULi=A><!Q(0SaozLI8 zzF;zGWv`_2T@YN5WXkB^rS+9vx!3=kQF7hx8<qol!hySV_*rb@#7m;5;tqL+XLQ;8 zlPBmUEjMyoQv-!uO<9u|%v5?&jfUejhN%Tl@rPiL?(uKdUuLz$aCG>!rfUWE(V7I= zhH7JU9E4<E7hT_4?_`?Mje?(lkyYCPqm24j!%wd#R~5xhzP}Ri-;xV_E)p5LnsLA- zTN|k(m(-q<4B;SQgfT~F2>PGoX_A)#ht<@UJZ=Zzj4E$7QGdZHl?4LDehGOYYs$vj zqrLfRjj32$r#DhpJ&3FV!P~UgoJ&;+RZEFy4l$3ie)5Nn4h$g5ODAKgx9lOfp`5O= z2rQ1io|vk|WbekT@lWjnRqj2#%iBneTqsG%wRTbTSWy%+Z2scnSj`$zVTH&JE)TFM zA3E6g9tJ}R;tn2!F&CPPOOhO}Hn<@Wk+X8%y<cVZdnkbNMYHq;bJ`W;G+;9LVBTet zjA5~gib}^zmHiIm$3u6N=yOliS3)kTKHl^XbnD@gn}>TTagOGCz9*J9o5GAjU?Og5 zu?$6J&6E2{q<%z@<S|n2S?l#KLRxl~*%h>B>ZLsTsbI;R5DMhWe2=SWx+iL48!`c( zV<y?qUm#Zbyf2yd(NWr^>$KiqE6bjdJ(=-~)qspNgQ0VbGZ~r0t}*r{pKqRS7ey!% zVUQG*(oJ?N0Wi=vbTySK3;x`T03s?Gfa|LiGA}SkuM>Gw*spV{bDZ5a`KnXOD>i#= zV$L&4|Noy9^+v{E*8d$D&SM-N)Hb4dcM&cS^*TFB(K?<NjXGX8|6tt196<gbkVD+; z4<Gth=j|x1rpB@~EDULy&vaU4kY3Hu$J3TTosrL@k(mUp)3ASV8MWKGH|R*YWh%kO zK2hbf!ah&$T_z^&k7Z<}K)P4}wk?|5Sz##+8UN)o8^`=sdNLL}5FH#Q`uus-4Sv<Z zwTl*RB#U!YcNr<63h>%z%K2DNdFcfi*hhjretD9!Q#xZUTuMr6F{P5><nJ9P40%jl zb){Un-?)rVOyT$)7#KOlgVdkgi%Zzy>4MZjINuVXJ097?kuYhvyL!f$+SSV)B>j}( zS3#~K-MK>}+4hl<fF->znp2@1tLgr2S}8DzeN0AQX4N0ZRW*BALkEZn`2+i`X5I~S zl>1V(n!g2!pZyAXZ&VTzI^Ing^CF}%$%5g(3*4g&De#V***`Pby(82>!vwX2IHT4e zyTl7;SO|w8Zbz+q9Bp_VvgRBe)VSkz(IJ*b!b#2+4i`mWOTe-_vnF(0Hr5Op+GLi- zDMAMJv?0^o8SCU>TdS$5%TaNKkjO|R;XnlH<zVZ6LV$RNdq+{K<fv?T({Y)uGFq`X zL8PKUI^9w>ZxTvADjgxs-<rBwhjTd}zxRSTcYY!HiK-yGtop&g@WNy3H>7lbB=|<^ zV%z+*if)mIN3TFijG$I8=FDZZ5F<uR6Tonv*gazYSQGq)ML`?49dPm^oD!ypju$Au zy8`+>C_UPCFI4*Pvqxd_C|6-{fQjTl5mlRU9F7A)885@UaeI%kjFnbrPa_*mjaAs| z0!_DYvq`2yUA95A^xt_HSMY=a?x|~+&uApS7N@c-C%Du#SV9M$f!BcEqc#BKvIPUc zro=2Nu4h9HOvfyedEOpxGB9nU0sL7~Fu`gAcCA8cWk+XZ^^{b<<-%2x<(~38(H?Ei z2kE_4(-eKJvmxby%{OXzHp@(piClAOEn<&LrW=Q!=7)26gCuM=l^wA&$N0rp$xvh< zTly%-Ll!9`GoQqVP0@xvK0Y;ll87NT!*nVfh6n@s`auYSlp?++1?OS+iJAwToLGX) z|DZ&FqA_$Sg>6u{e_$*(3}Ec>4+r3KigESasBdoS7~Xx;>>JQl{=8knKi<O?o30gT zswayVGf{s{=PEBq;URQ54jH1!fl2wZeA16tHKGiT(927phLSYl=ULvA$Tvcgfu0QC zeF=}vpXww^$B92i^DTZ?<6+@1UKKzso`Ju8=byBHZ~g)m*JRtZC<pRFl`x9XgwMB~ z1U%Q|JWm(9|7tp8>gZCPt~Y8tkbEyBe4~P2E{a{sAloK?7MFqB(QKxsmj7C%9N?$5 z9`kzMBig;w@5=HyFS@ZpWagk_LZUV4Pnp<Mx#j8oFPi{HU*Oj<`?3G`h07G*g(pfE zBrmU#x(4u^yRF~+bk(oTP+W3%1c7y;Wf(gXfAF|EZ1)sU+w`(>am}DP6G7MBZiR=3 zQw)%unPh3_)q_km|4x#`oTG$$JS3#PrQoo*sB)e|i#lwARVu?bz@N9f6McOy`6RWD zP#aa2mI)<1VnZ|2@LN9*3?wQyChhO{Xx%3h_wIR*ln6X&f?7Wx(CcP@p)6^z0>NeV z#TWJlv~e<@-s^oIeVtcKJ!dowci4+n3T&%VQrUAzHJhjh!XjbfO-Cvasi@gv5>UI@ zmJng!DX@}g<5dXb38SQd)|J<U<r-ww<m4MnHPqHAGErE+sjlry<PD<;l}j_xl*;4~ zTVh~?#W3;*^m^MtG*Y{d`<&?uKy}xykr9F75+pZ&<V=RR8WcH>hWYc~@Irl%7vz@l zbAhqWWvvoe)5nA;j}AHZJ6^eXVgSd<O87+8hzOH<tmrwQphVtr?r%5dmA4VQ2@0BM zlA^k}8KOT9Eqe0QIW0>Cm9-1**(kfA!uHQ*5s2UU`KNIPD`=fKe&^^2Lw>RIIe6j< zqc9Z6j=FSbDW)}*ui*L`zRau_Bv(;zfa7nFV09cAaitLo#6cz@iH+H&b^SPm;!><t z<%;U=SGF;Jg`5XfUdqZtqtd6)4}_|rA>1PX89T`VO9*^g*|6$-yvjLhYte52D|{gm z6t-e!o=W(H$k9prSzv^JDF+d*8W}Z@DchqdghdCfhCWfP-a}c!u9nT=ztrUt*LO4d z`&h?0oy{hRpCqX*<1v=-a*%@!0@m3a7908v9B_FY5JpHcwAKS)dOx&_%}W2Ad3}7o zd0c0|rKP1BPGxV5|1PE~?AehV(XOgtdy1{Mvs$gzC`Jrihs2^G6p@@rYlQoOHqhsy zs;Q}4umtjowMc3vk55fFzF?|5J*cWX&WK?%v+|6spVMuGGk|s{nXdGD8V{+dim9sJ zzj-e%ErPa$8d^HWNjzR1`F|ta-XBRI;QJG$*FChpPEgOvDl4a;l59FVju%2?W<a|H zOlp*AW)&(qzP|i=<hft;?0C3(mlH;Ozqx3xV+m8#a4!gB!;3YqcZRNU$|%;fHt{s; zlTIf}Nm19-YziV=Mdkl<Ml|ObBg4>@DuMiCTS4GKstsW0^K^B$OI!U<Y-g0V#%wCP z(;~|K2#$o3N-`4nC*Aqx;6jS-h;_9uQujl)+e}tkVfkAS4%MhspTR<enxLGV>cb2U z)qwM!zB`!;I=a_Eh1<=sKO_}6rSy;|Mf+oizUG-y0pcm1J~u<#vv9WC0cOW3PmTFk z!JEhK^PXrK{&mFS^6-3naY}PVsi7s38&RP8e^tid;{@>kP6OkMr@;<o8T6326_{$x z5v07sG5t@LNlKDOl$9o1e9&c}&4eP3iwKi!#4~URzY2dfl83X>x}2JHeV&JB8@e%y zZ-m4$&Oj4f^p(6lT`o?$%+;Mxc48SoQ&B;CzqFK#oVZESXnO917q;M+i+O4_ogT&< zJe?R!pR^KQPiK$&&ivjh2%RJRRvN#jn~`xm-l{GPG3PX_W;^LHN|jnM&eJQ^Bb6%; zmW&=60xy)%Paci`%R&efLd#$~FhG3^_TW&lS9~4Nt7c1)stFNl#8g$(2h~82kDIId z%0OK?s!1e899<5s5k1_92WzPKBMc@4EFGM5p+{}|2lY4=uoME^1z8=I`B$P?To2K- zLGaVA15GIuf+a%SI11i8W-j8Nk3>kNbV*GmIm9?_$}eH^;x0@Tn3_sG)3n!ep}*y) znlJO8&9$0q0_AYel(K=`i;KR~7!jP6=Eg9lqJf!oRWBQ+<`cMnxg?4hFzyy?gQEFk zh0Ginomlfh3o54^s1kzFmOEJw{Y(~MR##D)=JM5zwBf+x`DgX;P*$f20#b2^M$syL zbJyJR-~>3XdpdH1Q82(&CODv1!(bOtSxJsb6Cy*I5`q+1O-10Ybe4mMb}TwNk+#aE zZks+7t24wL-CXRM9|t8V{!7IQ4D}R+%kiCjXi=V&Usqs3=$GxNnX|ggJmp`m9|0P+ zUP=WV+=i2BO^JoeOO-qGOy0_GStIX`6Yr=-VwI%aejD115H2m-4w$@;J!I={Z@TBp zz(78pCq<(k>*(-(^PZmSq{ft4i-~cj88$WNJ}?Q{aER4NWEWUafXe6agSN-QGxv;D zx5pfHZ$s-i{=)>(`BY^U<Umy(HBZ)Wsk4-H!QsdE9CZJE>r^%M+~!SVOONo6zr1~r z-@URz3ID`;UUsJR=251mr5O%AUi{|%F)E*iqYfNNPMI<uXBq-^`h=36I^VvB<9VDZ zbVn19h6;Qz<Ec6d%&V-8XCrr535?-k{ph!{Z>A<4%+<zsxSh|BE@NY;@X67(^I=3! zKu2T)WfQ+?TJ9bhuZOxl5f}iEm#wjBCnp2@7{(kF*Ge76W7W`~GhcVEu6k`LY2nm! zqb%e(MGNdr<CDs+l&$Y#Q^tRW2-X;vL$C-3_9Ej?$~4u~)Lv@3AM`yezWS4GlZQo1 z`u}0;4gayv`UaxlQ_E1nd+m7aAk^%b`<`C0@URcPkMoB974Ua6O~A?3MV)w)*i6nL zxv&~l*-}w|``_E0*9Otxzrw&1Iiu<GhmWGFm*qGyWnSLb5RRt4eo3`8NZFv8l!`4? z=*>z@!$a-S9nJV`zJx1fUyrY5s|p#2A{$sfCq`QY3(eSZDyH+4pHk~>$de_Xf&%HH zTi;gKr{4AclkjCVFcAO?f(0_~SjQQptB%}E8j9x*qD(W**C>shAH~CRYiV0(upNdi z4NOM7e4-`B;}DY{PBK+wvT3$tM&|ampjeSaO`3+tX{!Oy8jG*9Bf!WP{Xz;+O>1+4 z8UFopiLa|_JXK3DW>hQLMT~Xaoxvea{Zx&@#JhMd=4Sy=Xh<qI*m%bK1rpdD4$I2~ zXkqN}QKOI*KM~yU3rV0U0c9ielnZOGF%%&BXFH3QGeS;|GPhwRqcEb8RbiMzxJA-A zwA#rHdQCs2_{Q;Ybs@Nf3n(G`6$Q?asoB^_0_Eoi`dCX7{fSc6Yks4VDN8{n29TF* z`u#lm86JJapF?m8li9#6qRWplqKWr2znVgteAsUotOhj)By57RGZm;yLLEPVXR!%} zsj>1JOKpgAYK^yQ#=GVi7q&udL}{EMqQTU`bO@(UJYzPS@fATv!?Ad%+O@HX11D2Z z1kz<P7y1Aq;Moo)1O*A3jULWLOHT!N&{E@XilMwr2IUbs4vo{lM+qG%$0MBi%H@YZ zF&+7ht@D<GH{>VF`V-tH4;uGHX%W{K^BdaE8W^4wL#XlJWcOiG2`l}Ut?X2b0kuy) z+}0<$bg_ZPZ^-2+a5!OQM#3+%_gNUDbgjNC-T;Yyel(@P`@mg?#Ld*m&Q0zy5Qv@I zB|^TW{~$#lH0XF12f;+NKruErKmUt$DwI1HSWIZq&o6?8vKZ92x}~wkOk+7IJ>HlG zqKlQ3wBGkcdTdzhOVlhGgS7TtUPmb}^CkTMblo<^RMr1GJ6>KuyWW35{t#g*wr{gO zf*JscbX|3JUWmRvHblSKe~u7|WZe$syg_wxGsFLo(^NqX?LV-zxieo~L1yc5axsl= zt24n4VB%pOsjjM*6)*h;2}30$)bFQa4S8s0zT!4h#5P_86`}HHt_s7@@rI2OTLEo} z7TzV<OE~I9r>wT4X)=6H21IO58nMmxUNi5d4J<D{RVCm74(G-o!tlv6W(}s)x;Q0g zIcuk7q?!4+Ce!?SE;s9}1~k@1(eluNdfWz$66QvDe-%{ptH+eUFmF4|N2vCr{@|CD zmDIcg|9|DqwSv=w_um~%(3nTICJE2A6f{vP&RujQw$u@owu0*{ZDcYOlV!6~7Yte# zHJZ;fQ5xc(K;VpPs%C3qcwlRuSo#2QHeMm23k4?{ZlOr7fuphmZ=`>6N?zl2Q{mok ztv@7MA_9vkWF4ueqLI4MmwmM|ku~QA8Wld0HF7PZ8jEPMlbd^mIprGd*osW|2$Qka zGVS+D_WQx%P0T1DJ0}ldmsKI>1Jzh|f}q?1oKP_2p`EQ1SNH|Uu`+)CT>Yii;hyG{ zjY=z)lRM&zwa`w*?AD01-w5Y>e%z3gTtY~mOdG>=k~5pfrvh+J<Ic(q;gQDZR~=3& z-;st*{PLU^5A$QRq91<7?OSj<ZOLJE!7N+GP81T&yYgmuj_Fs*%5{q>4;Okr!p);l zhX3G%8e_xRqZ9o}{*k+U|1w>BCVtuiEsA(1%xQxkpqn1Fz)ndxJ?@HUrmOM;$uP2t z*%Xi!{e26Jp|?k7!ZuST?vKQ*g;n#Sq6Ae+ExQt8#hRbA`O_78Z7K;rW_*ky(_$R@ z++^I&m4|~=wfTr@H4;;4{J{1?LlfJ;fP1{_lhuN0JJD)MENEPZv0KT9en&RQ_D%Gk zWdoC#R440$C3bHpUd^Pi59=CTU_?H3<_vo+7WF!(c+srjwIWZ^EMA9w{%BNLGJefM zQ#?)(EHzUK!Kn?6w<3n{lIO9i*9Ry$zLW>n)<!QgrRfOI{rmvBvhfwLsW+qsz{LMS zAW|^2h@YO?T=h#Rk*{lL89rYp0Fm+pKr4+utUy~-(LmaDaO0+jw~r7@TKQ|Eosl@Y zN`8#c<~0KT@2fegY|OA#^f0Q>Mrlt?SIfOm-dj&M=^&fC1mVh5iNKxZ=l!C#$8lb0 zYDR|X8|XG|+Ym3PsJ1qO#n?QYe4*EF-HoVtDcJHPLOr1Wdeg?er{(t^GCvstCwa6* zW<=|uSw(56J8)QF%`IQV8M#|PVJ5U|zC0^E6RZ&+rYV+EUpil9nX=ZuM`K7|6DIg2 zidl|VzA#+%@%OHWPv5wlHSUzv`maCS;acDD>nV+ksv!aa%p!Id7<|WBK5+MW7fl)V zj&-i3jyNCDXn*-+t}--T@jDfiH0Ag+!`9vC*-EqZcYbE2GaUC5RYntf#OGZ;x4VP4 zOA+%UdOGd9K4~-i(d)FdBRNa6<X=9PhklDDzd2ae|M&jHUH#vn%&bG*mUP))0I?hp zQK+S53_ts<v!^yYJ>>)>&x7B3{3W;?cio-1wI~(z9C+9Yy*rx{>VUlFW@O`^wjta` z{dQ<kNCh*FH~&&Vwfi4>J$ORCYbv)5Ps%at$X`Gs!!b2I_X7m?&o1oih!kIJqK|^_ zz=l7(Sv)oRGW~^dJM@Lk$B4i8`-+ncQa;O>4S(qxwG^VTt{y4Nejg!_wp{+TnmNw` z+DBS31@&aI@63>7tpxFV&#sC#GXu#}xGR8v;ZZJP`F4$?GS&W^9JsPSu#76NQ=o5x z>@GV0)0XiJu^;n~<z%9NI|Ts^m$-TN(0y4icZl0Uh@)%??^Ys5B}spM{)p+(>k<~M zgWlrp>@aciY(UiH@7OiY>8R-SrE`I$W77lH)<wNqpv&!}p&Q;M=O1q#W9Ky^PaB*W z`mSx1L@Q_<&ZsDkacV?~HWN8Ae5Hmw9X5aaj6aR$cGgyEbqpC73s}=jIF1kq2zSr8 zrKL(a(nX5mse-LeQ~z{2tQob$;OUh)WyY)4pU@(u(Jg)r3DRwc&kZg6-a9Vtfyr&h zqYFm8nCAtON7Lh7@Stgw<YVBXD1OT`n1XJ<>FI_126)+5s&3i6B_U`xG_srWAnT{{ zwhX;=;r=1aG))&W3^X2c-wmg1*$zN>1`>Taf=p$cwbn}vqJ@TAZ6U#wWO*U8X4(fZ z{`C#|t3}Wb>{T@V#!fJ!BW2Xpt&e!wUjawXb8?(FT~D2Vzx!MVuDgAGoNsn!fc6Qs zZBz$)qm`Y3SJT14BOoAbZ$oywv2JpGp00gzlV)q%cVkYhyyGw!;oyi_kAHvjv7V!P zEB8Rj^r(q{M4G89Ojj!?5Ii0ju5RV3Ua$Z5iWxv=1qbZU^L)B{s99H#wP79zI{L|6 z2yXmIf~2zOdB#b&WRm(&O+FYw`8UhJ(K5}+DIRv-8Z*#Gtc1sqcaNJGysf(beSl7- zOD2!Hq7Wf=)O%-=&+FjxjoRDL8@#=lm$vb!+3e9$oxnrd8q)87>O_tv^Zx%ENM)`F zzfY%)tke$YAV|Ra_vY><Yug!`nc*Gr26M*U84txEt83JYwDoRm;)nxLOS$W1ZLh74 zSIzjU4x0_yIOK!c%H1~?)Mv6zYkj}S)^GC!cK2@`t<+T#2|W<IT)!aSqq|x9P1_j{ z>&6)NHqlG)bE&K`dr{DEC!8C=g@-G8;pQzgOshO&aK~f4dItAG-Xa==I+euxoF}ri zrYddC1I;QAS!<_1J?=U~mu#zFkhuBjZ<GBC@iOkL;o%}lIKb4fLZ|5B?yR{i{cZc@ z^CSFoPyVbzM5PBb+OgH+JEfWsuBLfEMF(w~pm;ogjKe3(O^;8kM(Uie|Dwmzxhp_E zBmSO6AZ)QbA%6YzZfk5S8ZC9t!^E{xL_<+pRA&=@qSY0Fp*qoYVwv6jMyf;SFtf+D zRL}g6g$5hd$SOtJT9|tNn^iX86KeJ(f71uMk!h@QFxgSu5{Mg3VlhsV&s-~tP)fjx zt_#cF?6ZqLZo4AvW&{x~!UVT$A{#R~<FVE8_XHPD5ZKZ(oF@{Rnwq*z2?FQ0+zjG_ z>h+9=FC6L!Ba^PtsFKGQjsPW(HOUMcmZQe01WmDMcdy79gu(apj0_On-kVn7UPNGE z0_3Zb;J-z^?EdlrIkknGY*vIdu`o6;;OT|=N|(7=|89ArUV&(j=88`qcWXYGR?~Zr z?E+I)op!S9Wh6h@aAIyq%sJI9rIDrH7H?ZNY@n<fknN({{EB1k7-NKk;i#{L9A~nn z8T^CA@|iSo%qpY`(AYV)Q6~kbGue9BJ|W~Yf3AlGs37Rq&>pK+Pzg&3?Qn0ClF$^< zI-Hg+((-1HI0f{ruvW+TQ!(-J4CU<&QU7vKLT6vVYVKeRvwC%8IbW0$7`|JqwQu0J zSGND(SJ!_1|6bj~1GXDm>p&T1oSr#tP>0tvEptPPJP>iPaHQg5Qj?=4?*1x6!!wD$ z=C=8X$Wh)1?G#IHRpn8cfNfVtDvEthB>~pqd0Gfmw+5fVPx`wfuoB$A@jf0K>$D!R zn3<W!VaS?meunhusxXd*K;P9vIwO%u#zUr$(c{8c6ImnM!b}Y`_R`|c=#1oXY)SKQ zUZ0d*c>T49C5Ed+m26{Yb8(ShnlRXX!F(FOwSi#a(9duhgeq)-xtV=`V}&Bh0H(sD z6nxkth9HIwE_M|dHwKp>_ajQgmfSJSTq|yPy<HDv)XQ+R+hC0leKfkf!!jA-(mCf0 zcXQ1QOnaVsm^H8oF9upy$N4{1okl$UpB6yJ5jhjvDCyrblIU+hW-7?W736QZ{i3nG zfbX|3Aa(#=DM!JpWJru!2FdVC63+5EPy=9se8`SOrM2UOo6A;QV&EJjBPa@9nW<&+ zwM1kB66_A{&(Ao%|3-kh_%!+B)d!-0{1x~FfFKWhgZTFQAo9iTX+@2lU&VM^0Eu%2 z5(E1Izsy@EQsI_Hc87gNYlfz{tzU)rcwZlcz319m%T5Ts`w`F9$Pj4NObn60WEY6< z{#z#VX#gy^p0f9So({Czmzl_YiaxQcU;k}uQ#dM4VdF-#@VZnb0P(F#dhrr1y%M+I ztoie2)tg=Y)M}2hWLC?#Mx==Bnr8sb#t8K<n3jCv|Hsoe21gogUC$($*tTukHafO# zJDG4|+qRud?1^pLoLFDaz3=_Hs;m0P^P{W#oPEw-d%;SGHrtZbN_HPW%VXwOQgo#= zB3T`95+E<+LWn0(4N4x7fGD_#3>vJcY0>>O>?4Z}QXhkA3c<nXD?+T}_J_Y_%bTf& zy?U4yQh@O0Bwj?N3%Z)FX>-^dM42p#_U@;~Rv4^HeSPgg+$&S?KOo-LW;!(bd)0qF z@Qn*fzwxZrk5-n>1#@zmYte6cYoEde6i{lV7ttCUwlqRD+qZaiJANH;((-xvwMR3N z+M<sVpXdeeQ^W*_*K}S$cY8f;@_Oz`Nh1KANKi}0EP>==8QmY~7^%pLq>~k{16oQM zRmM0&`O`ohloU574i+U{+^&t>Pg5i7tVVR6!|AbZEJ8Ks8aV|PFrAFLc-YTo;S$nY zt%lGDLx~K2>$BgQ7&Jlb;E$q)NqCN1><eXMvVyj@)3$5DzvIU5CTdp~Jk1;|aK!jf zPAqx64vcv3ar}ml*rB4mBD!#X!f6?V{Dg{J$4s2)1u<?R1)nmL%`rDxnhcF%L%ydI zwO!-+70RVbdYWzdsS6ejKOb>lM$T7>K6-)*Ehh+GQoo4QSH7oY6)nXQS>h?j;n0MY z$=F}?MCLiCCRR|mj|)M-(+f;rY`2)!Q>mAAW>O$G7Y-Zn<K@QiwueIcM?or#<%jO= zdExj9z5dv`CIgcRi(jv%yjbKQ&Ho$irDopP7+`6>ek`kYb=0fzhR@vQ_6JCb2gZ*H z9ESo^1v!9$WI&l}&sYc$ubJBX?XZUv*LFk3(~@5IM$mcA_ZPx<>(zZ5oNdGJ2_q~- zaJLLEg*1SOl)7E+B0t{jI|o2sJEG3vL~dOqxq%W>G7kXr=bWqU=@yjN^IZc(C8Pte zBwu?Q^84!Bb%r?tY#%SEISFw*W!-}IA%_2{K696GjH`gb@{e_{_RgdRX)jUeCQ8aq z5>j#_qHaU`4F0U|iSi*2$!sa;sqsS5!!zGp`>1r6g{<f4Wi^Qa`t#&i{SI^6O}o`C zcLhQq_n)*!&Hrgi-`raN2M3$KEOr<|kx8g%e_4Q-U3AUgg~SVjTsvFnBXg;Lmu2MU zA-r@*nAo^Wal0xXUt$CWNJgZBU(~a1c_!=M79U^L`h{56bcFJGKRV3ocZKs@cP5fZ z#QqEd_7Kl87&_zKk&pG=ox>=<;E|28r>-&kWkilo-v3a~y(?L89h#FIz`72wnp%w$ zstrKbZ+2hGi6-Ps*2xF!5HxAXWwwq{9!rP%y1SgeppIs7*z$~8+Jv#%ZrJTyaOSky zmPDeU-KL*%nxtCLG#Y`YO2`kL__802p;umO!^N;aBy`Q1d4tnc$E{6WKptFVtxbqz zq+yeoAEzV45pgnu5Erw%Lk6(2D`RD*3(KMXkrFH<^`$s(q{e!e-d<dxK(=nck53Gf z2ul#1#GwqH^%^6z11Dpg$r&7Vp3>G-(bUu`+16ILkEyq!^|mxSwJB?t(~#ftKI=Fd zjVHn7bohx$a({mhq=vBes=lp|<Cw!3aHq~3-^0c76ZA3*SVt6CXc!TJ)%1LN{Zkv< zo&%FaeeM!-i<Su-ZpAP}RJb>50-W=W+}vV(-{_A?uD=*7Zd!Vt5(hC~-n;aRsCk7T zN`4*Uxk6G^>RSm(rCTdMJL7a>O!^u(;zV&Cr)OO>bZ?cileyyy_(kngD9kBAx<-S9 zq_j1U=95UI-H3r+#V*-`%nh;m{>J{Rp$9#hWb9`b;icHHa$P77nb1H#EGU^C>P%VS zLBxIH0^=}tcE;RuH{LTSis%z_AgAo?P^U+EC<~$Pbt8-?B5gH?d|}UE&{Rp3A8=Xs z`h}L`|KACOx#|B13{#=lKx$@p)PQ&{FW2>-fIsrGOJ|yTdL`?p$O(-ovq+BHZleY~ zHVy~S)p6*@I-plzaIk0m3jCfcxWAL8besF7{=}n5cx?arip%`GlcTlS9!BUoWgsSA z08=4$WixPfO=s9}#F2=>FNq|i8XRdiEZg#om(qG*9SgDam6DBpWLRagXGFl_#`ni> zs_oXisGOu*R)_H!ZOszBWve$5KVxmIVON<}{Mj{>X7%MaoIKsvL<XMwU2hZi&C;@% zuh1-U_lrbBHu8`R{HRT>?6l64{abA{fXy{^yt-(nz@8~^F$pR(I^!TqIa6BtGNrlO z$jF&no%N!!<m3J&C$yc*%3S1Hysx*c9D$5*%aBS|l}?8{Gy~9i3b7hudlkk-V<6sp zQKbZyrSS6?1O`gk&PC2*cOoW_lQ@#;LG3qWWI^&_hk5~NUDX!O9l&TYJeJhtDt0e* zL;XMn_4)ZZF0V)2z%K-jb@Ahu*=wBh&*_1UA8I8XH4<svz@T-z&9U|EPq&)iSEld7 z_V4ESe$R&VT?feEs$yY%!he3WOxO~EAA(-Dr_ZInuPA)NAwEy&w(e5!YC)@(AzkCx zaI)t`nj+c?a2B)aaU7-0fH86tH?jbkJ)mmp5M|&6G#c=1qH=~;!s_|j9%JQ}8ZGPu z39R!~XSjhOX%W;R)EKn1GuhY3k&;YG4!dO9r>X&krKwylcVM6aKS8f=rglkGREG#v zXlrN-HmST+bE#F5rWyvl>W`fVg$;)KyzJ4^(+dc!sI6Y}6&U_PE>PCT<BdAcDqG## zdhq=*V1Iu(wf^tY(`os?YPa4$bp#_lo}Pe8oVcn=m}L4Z2m-<B;AWS6g52(|VKtbv zq;8-w)i|wqLajMuXo!p-=;f>I*0Hd#Ba0AekPrQqyE1M6@o0a$cia;^&d{Efo~{WJ z|L}=TA&<A8^Sh`2ltN(zruBXh(NRo@-jZfFkI8nb_fe}%8plR@q*;AWNsgNeCtbvR z%ehATy7=YO9F)c9zORzSb@0xWUB&#>msF?d2Q;s4dB&p%$K{~H&>~mjdUCo!INriH zy192e+d1|d54Vz)balDhD0(I^!G@Zpo4*>68RT^=UxYXcY`o?m8TX!dmtlVAu8V6A zoTS)NAo}9R;4YMRHoa{!JBm3d0Q>>czxUA(%lVI4VfOL4$dO|Ebv{OUDdJ>hpvz)G z6cq!%L6qPB^qS`!M`aglX%7n_ISlVd5G5qF*$S`+`osmuCX^&g2DXC{$HxVH_KVm$ z%fTWY|9YCKStt6&Hql9Gv<{qla60UK1F|tDH!_D-*E^IiuW^80{!OLa+p8|kcTenX z>|nmh4YW{1cf%Z8qcys}Uk>#@$+|yxf`B32rY;?Lk{wpq$(Py~l!K1r*IgJYFSog` zP^fK}TRe#6C>~`NV82?K(4ue2<+01zM(G?|Jo|+2jbOt(T5Ph(79#(8fl7YUaS_zq z8AS4Om<_>TYKH!$AYk=T*4KB59nUM@OC$RRFL2Yr!Pw&q4?W}!+TKLjehno26$*S( z26_FYfhh>9Pqg+fK}R9G_WdHLx3;5^P{1GZmZ$=$Uphi(fy5DxHcCfThp^uGJY-;I z(sX)0L2}^gu^8MHKO)3=sx}X5+U8h;^G~711>(OzRt6u?Tv+4Zn#@Twiwa`dcuD~k z*x>f@Zo;qwb;LzMN!0N?OkQxcjVkYy&efEwAjuDY?8iTK;g++Ic4KBgGfr=-Zbh?W zSRl$PSg0SyNFcUA)pvt*ojfg`_jy+kn7TyCEnUA9-o=DnDnEy25T@`F#XK7bGqLY! z*O&YJ<(}CkYJO}9S=mPJGkjHuN8GMdYVpj)LWOKBj&{8+?|}2?MQyF|kSOc)Z;VcJ z2xB?y_j1~s%IfZ<%|63$2`q_Y)rvs_%*)eqM!3<GfWmzAOlv0FwQp+jkPde8A1A86 zVrsb3JX7CinUieiI2zaiZoS$Lx`jRDQY$<`KGOxwD1=45`obW&p{r!oPI4PuL2x^R z>BDhHEm%vQ&H``-o#{C<?OHUlRFgb#!3!skqM6eX@Jh+TV8?u}aMZd5EAPfW<ZL4Z zf^ekF=$5Q~o*;*!zdGQ-eq>2xkrgn4PlbNY2~U$LC|m8uAdN>+?)7?GsRmX^g$;qp zGlFGKf!__G(l1><y}T~>Os%bD=+?UGn9a0I$A2#<@tOYC=|!#d)R=vJT9fEMJss!9 z^(&J6@xzqCn+lj?@WlWmS@(>6N)Q|s0G$u4tj2^j7l-Fk+CAwvntx?(-|Oj|zEt|( z*OF}AuKu=TsVl9R`*Vr4*QID3ZK!D|Nr?Tub(*#j61@QfbW{G%Qix_sirVQDwc@V< zq#)DR%p1J!CvUr*-gn=P_ufLdGP^oEkP9abe-+38;gIS?=LvW7K8T1xy~k`R@`YKY zpri^+rDH0e@K9_jFw&dyb^ZYzE~(i|!Jb$HEZi>6s*b41i$Scg2<9+0g4fYsEA8F^ zC&X;u^-c2Z_C4^YRM(>ZupY;Lul&!Q(0l2BBgHAr^<OI|I8od%^dC9jQzjDP4t6*@ zpHRi5%Fd72_?SCDw!q7n!+u1WG+OBkG?FwtTSvunhYxdKD>Yk7e80xMZ-j9v3X%^T z!I>Z9F*85Dp_WwCfy=K@qQlvdWC=@Jfz#|GuQkfuMAoP`RNk_h$bd~Ut<{rovvafb z{d#OHb>l^|4ajbxJA5+6G@Gm7ndAjsZX&2KM~WiQg3rSK-s3_-Ky_~rx~pDcD`7=R zzrigv{>R@c@9KiRQ%(D6%+!J69;1M3c}{YHqANQT!LX__G>*wBq;xOe*Le~WKsTa` zBD##2fgL<Pb{6GYlF?_1t=sm<Wn|=j^k&^Jj)VA8p2h>^VK=F7J2Tjy7bON-a{J3! zG<q;Ej6qXhbGK6eg?iidfo4X?WPAdhoEyc1V$#PvirReF=V#k!`Jr;vqngKa{x3~U zJwqp_7{qD>bH?=s>Z3>et*4u<sOn;)yl&<R7YsIbLhDc;soW{BJXrym!N!J$eiGos z`}Ngp{+M~5dU;&D_bjuojeC1PH{4FmZ`k8Hb0XYiI1O4|&y(!yRsW0TbF=4-t=nS+ z@1orR0R=_36Eav3FZmLN$FXLotLNh_43gucnxHTSP5<=_ugo2jqQ+q6Tp5LuLS})g zxeZ)n8?0iySk_cd+5$w$x<i>vo5vY;$vOpN8S}4|C||*tXzO@Ph%GMtIJixrArkyC zErk)5#}F_jax8_?YGQBBv%)WW1S<}^DgEV)d+zo}`ol?NLcu)IBdE|t`xO>*5**4h zSPM^u28wDq)ZcSxeXSn$n+mu=0afo@b?4asvfy(9{?`~|vG@yc$(@p|!_@~UJ&K;g zb<RdMw4u+JKtBSo13~(-3c-D_U5P7-*gygm4lRPUvRO|@GdrEIVCO7o!LGwz$aty6 zc4tY8A0pJd6Rc~y!7*eyWC_`1QSpcaPH2@4alx9@ozLP6v$#FLpfumen>M=4K}e`1 z<&v<`$fUo8pNeHS@#7=@QJ0J%Bb>!#p97&%VF!xt3)w4H|0eMq{cgR6`#}?;mtWSF zR8~{6tIOuAO7w&hTm*0lg-I7^9-3M2k>aN&icDC+G&xdlIu|9bpbBQ=`bAyi7#BaO zNnVX(7gB1frkMbPfuMxQs|u$C!@4v)7}0E+1{zV+m&g+tV3#k|vl4X(-i{S0zU?xe z?>qq4WX-x<nMe5DmFdA#3bELFF*BJ1{8vSNlwzziy0~ehnnlbi=2A<#6tyvUsbL!9 zxBB`M)J*kv#Z>CSFa}<w`84pQH@>9NrI2c%U;}U_6z%>ayu<j33Z8;rSL9UI)#GG_ zy7K&7#dXqz1kT=gI}%`RyWFT!Hf)9jTA?#2=%WC#=3`_h1WhSQ29MH1Mrd0EuLWD& zQ3Le-{&;%=u3YB+z(4-kIFm)opC9kNtL7t9OGlU9D`nfsvEz9gOV!#h<+-msC$(ST zxo;ch?FR`mX*n4!Z%;WL@DtNh&a+otoj?<KV=t!!j;<F5z+T&B&H8Qk&dk6s&gUHx zP6nN)wbcCioHZJuwJ52%4KR{>rK?1!PBhg1Z@(D1G?}^DqYsN!<>~16b){-s`}0W@ z>Xx({9d~sHRG2w=3Oi1BH9Zyv1Zk+N=>mQ_!|wfDp$Z3}=++J8%n>o|4JC4xpn5<{ z88-BNW08Bnf;w<G#<blkHxl&?$Ty0kAWkK81Dz?-oM5`M06&-?;8jp>&*qpQ`ycig z^S>1=Weo~0r8eAR;dGJ!S~6*#p>qD=NAN?q3^5q7fT_^PhWMU4y8+1#18LCvtb#b$ z(8?}rM*o_LjV+v0%4o{$rC2A6aW(tEQ=KoCqQ?nUpPLm(fpF;GNbzjB+z^)_r#h!+ zv4bw3oV~Obi(=!4tU*RMYppMnKoMky-7jpecyDsa8LkR0SwF{i=OYH1h3zF6dO5Rl zrDQY>GWQmWC{}V^wgzNZ#%6}hvDl9kv@vIr)?+0doTLrdDdkZeuwug|d~bwB$#Ldd z-4L5QP&s4@pd8rIfM61-k057MTchw@tAv-yNatYs$uQyh*e#<ezuQ@$G7LRe#8)~1 zYoXfAZ&GM#pcQIx(zu<??nLcGVsbNWyTbEjjCDU&AQOdXG$>^g0tGEE-AOaKs(v$7 zn9uL6)*4MFgBFKH&Yo*Ye^_^24&YX(vXa(ER)khpR0oy5b<qXxq5a~#3eZGlWe@!w zX@w|h3sZnfbXnsgZI-#0RcOP>4At*vA*lcgu;MdSa06EupHjjOY@=+Ko~kbiHb$0; z6_5a}vXmWK7$c*mqm0Q_1Bu|YJi|WhpC}%GXFq@`6dXOaO`TsXNLJgUVLZ9CA=_cu za4I-mHSD_=u6Qf$&KLqu&H^KIbI4Dd?gSWm9zaI|<zQ++QjDT{N%$dO&qvHxY{UGn zod4x7tijQ2_pPDbT7luc{KT-J5&V_uA%<>fXv?EVBHT54A>{^Ebf=yu)DXombH*~q z3Y&HA@dcCAp&_)U3ePVHyQ75x2}*8Y7GF?vqjkUG<%<nx+e{=H0-jG)dNP$y`5<Sn zCuL~~C!2<m*EuXoDUBEGO-jd4Zt+fr(-gcD^<dy8kCATv(@|di(t#*JxaTW0IPZu@ z2vGd?ebFmX%0lImiJ=58k?5q=VCx@4fxYF+)%O2*MRr<ljN&~p&s%UTQbpej(9zM` zE+WREh=}*(3Pt+3>@}mHCCaF;+Mn>f&aKOYl{~;z4gCB9Dr-6t+E+CZB~;ae5rKZZ zn6Z3*KNVG>NC#N!7>_0w22mM&|HwQKX8S{@@vEs6U${J99P^KeJo#sb8)Y!Nt#Y+y zU;BT+?GO`uoJer`-m%tpTqWzY90NfA7(5GCSK|oiAAll<0Sab~3+C}~H&N%1=AoUl zr?fE##FH>z(aDpsh?>+6df+Z}R@FtI&O86w(NdtvDCagO3PVpe@CAi`kK|IGaz!*Z zWGMO0I@Y;%QE{no$;V;#ieqKK$A(CnMY0Y%`ZJYvbmfMY37dyX{P1M9(C4)=muT>( za|sKIanTL_G452l+nS7?3*4rB`c;SIPC2Z?2c5~dMo;V8Sbj{2`k`Q!FFM35b#o1g z{(Jv19Zz|N9)1OS3@yAP9=^acX^;>cBsN+7w)jw9?wk{!{nF3L8TT@1F{S?AT~M3! zEc20^OI&^z#8{FJ!RczjpL6aRuXw;a^I|O+DYk>r(^UcEDMeZmye=IT<#SDHPXe9x zar<S=I%mBXb_9q+ct8R(G`B<*i7H;Xs$)T!DD-U`_sq2_SZbi1Dl#qNw1Jdq2`~W= z7-Ltl3U3}LKtj}nQ+bd3Hg9(Pejg`PLnm2VF)=lD#{$gscz>V%;)OuKKbVsNYO-Vz zn}@lGtW3<@Lc6@5?s%?!FoslqEpI;a{Y_owx|=bsqNm%<s=Mspv{)TuZ-a7ZU7c9? z<O9veJEmONt;lFN0rp!IksX7t;b==sYIJWV_#_EO)vS*N;yB)0NZB`~t()K|fo@5J zY>kb|veWX)TxnUEMiLU7^)3-Y_CF)zi7opdmT3HT;QRyTl6`i3Tl0tj>TGPn0dzBM zu&k9k3wQ3!kUCG<3`d^Zx4irx?Fx1H)K-!(DzGCYYd&^=dv`WQ9{$GzSpOdnpy{F$ z!8MGu9?fM`OLEF(DxtK(MssCsyyi_FQ36j+*J7qNEhoq5E#^{IR`zBz2*K&v_i5J$ zssa`qt=8iZ$iu<e`dQJ?)Fi6AESh(L3gkFt&zCCPdtZMN;0pL9^?M6LdZa2Z!<cIB z!6-QVY^7Bc0+peOtfH$XJe%de$l4yZ)_>CF#C_uP5EzNY-4|nMTN1`314VW_mTNNx zM+Gd5aQzw$%R56l&4Y{_=Zg$opoN5$oQg8-@0@2rk#*s*fHk?*J?5hiQL#b&{vw{$ z?QBQ}`^2?;p5-|;Io7ty#*XGN#i$4Ju3`ku?Z~N~hXj7^OZ-E!DM}scf+eo5WcxaC z6-~jlXCN<U;mh=|w;ih`9!0f2M`b|#^zlVetM2MVj3ZEOk!Sj};VmHWHSIT>7OkPi zo4cYeX=2n*BLA%LwX5Fdvt2y=9uIOnW;n?|-ffWhr?$Ox<M`eu{(MGsG@IpyZjaLE z&upQ>UGDa6CXi*8Vb>~yM{O}2Q&<sFfsUT4_8q1?5$x{3n>V+?%x!u25||FpD<pK2 zRI}sC@MTB8=}Sc5^+iX^P}|Vb9Z?B$<~M23rQq*7Lz*xuyk?Sbg_Pxvj<2B}?3X74 zvF(g%Ev&o9dmTu#;<{^h)p1S(^kfMO2m?IPyawUZocq28MWi8{1XEJ2id5YC9gN0| zulVk=gFbXJtvNwDUqy;3VG3e`{DQ~Z1JcS#E-Ffm44NBXZOt<4D|4tjuYH87%t3F~ zWEnpbWaxKu-xK}&{~>ERK6jAbPgg@+)+2~cqq`upP}i@M?hUph?0WC-)*9TN5w^cE z;-G$IUe+NmA*G6l{@Sg-rLr?7WmSfSq$W;sog^izh;LA4?5PVvIUmuy&4D%+!z#<n z-D0=b*h7gzJL9Vi`ksv9#WYhGi&IrsoMU?4kM6+8#wWzp-g`C&ZB29jw-WpKhk)h{ zhX0MYQL)dRf}Lrxf5y<z{$Fabz-Zf2MGpy8XlqlGw;H+$`RN-GfgAE8bhGxiE1naE z8UUyLH8hk&N;E8u+*1RU`QK^$zyHNC>^c4iV>p+DhbEEuuE}SIkQBoeNFrlAZlSRL z%d*(I)%TmnR8a*gydutPdvdI6yHbK6a(86heZqfVy*lmlR`xH^t+#!?o_pT(L3m!j zZAF$WUSAN}t};)@zK`nfKGgd2U3*^>kebh@?>H>2D51D7^`n$YhQ$Wh7)`(l9BNi6 zID6b80xcc*mg1#^#wGvu#c;`l9Jm}SFtDui%VWE(#Z$!IB7F7<6iMdCO~D0`HlS>u zKfHJge6)J(<Md=ILZE~%2^Iq72TBLiTJ}e>JdJMb414Wdm2v`og5QLy(+lvvW(Hz! zB72^#fucPk_%rUK#zda0voY*iuLl}PEknT(3rz{Zjwmfl8(nwEjU2c<Yu5FZItAs= z``zhgO^qVhP)+M8;Xu95?B&}+`%k1w!pT>sl#fbUZd$tRqivv2Ulg+GTcL$9x-;^0 zF2KXj>;d~?iVbR-rRqA`wSd_K>*(if0qx6a?&q7$c6T;6Y*augQZ&e%;a5P=`{Q+I zCazkNCdKgtm{$k41rj6Ngj1W=bM@B^JpASpC6LJ}J@*PT_R;DeGKV2GZ7%Zleg4(a zmR!ClhV9%ncZVdLa}-119m~w!cK1$QFG$v7Y1tcBz%xsz76caw>kN!4nqSN9&ey2P z^!qa=$+KF^1W@CKw7XEQjLYxSmhS9KiI<ff{*d&rw)Ry1v%InX_uBI2M2>CCl6cD6 zqPqU%^ykI&9fRMk{>{NI$;DP94B8NeC%@yxMoV@_jpwreE1lob<yV}{qi+B1AqlLH zTy0rgKa$8Gg?IvAhfR*vcmiB*G@UO!BOxGq=r8E@hwsEJTZ`^$eg)xUQl>Y@{UU>J zGh27@><Y3a8ERO>u%LTGq^xI3rK%MbR`B;q3I!!D!|{Gx{9;Pzqt=OfQ@@<Nono0T z022$B5N!yZvvVE$4#j8Rw)ypvZCe@ox2zoh`tz5y*^!rQgwEK_P58u3De`gndu3-_ zeO}>F*ZS3a+a}eVORE3qF;|9%|L+LVX(5kNl<00H%EBZuRf?)w!4T_P3i+Y;I+uDI zh@m&IwuVgrOnPa1yZWuEt7qtD2W~%#K`dN4pHC|ToOH|kGcwXeyO15@mda=EjqXyc zdiPz4Kl3#LnC)gbUqp)#$Kg|4`~oAxrO+Ysr?0o(d4K@<+!{48;<%&>(J6@KzKMCB zJku`$^Jbo>SC(i5{oaWQRQt|b@T23BFd}k3WM@^gA8Y^P0-$#>{0w~R`2zi$2%lz3 z%|hf^`DigwXMd0J9368SCKCC;!9WF(&k3#?jr_bz;D?f^jAvB!-F&r?^(W_5$2~qF zGLBki2#ytRq;WNg|5^yq?T*&r=8ZG;DOP^O@rGR{i{2pCUVep2a>#^jdhURfXgO@H zD|`Vcv@qYI1^$m}Wp?ggu-+aZqA1t0!Q!+pnP%Zk@xlSbB4)-5=()lPe)4w)nUcgv z5&g<ZIqmIO;Ht5h)-W<Lib;tR6SBKqP;C-&!pB(zz4_HWII(wA2tu?0n6f?Qx1&%d zh^v69ysb<<e-%)QZ-L~3HN^oXST&NgRbYb2sIs#1fDvw}OPEE2-rIqZb^u?g0-dAH zEoo2(GZ}F)R3bbR>x7Wp1-;ZVf@_EZFnUgi^z`*qv6gXo6!<Ux<2Mim%k`B+=glcI zab()K)A<gtoOuu2+7e!#{;Zv>$qhNoje&CGZ>h(v7_-*9$KHA#CfGsn`$9;|$u{yE z$5mSVJ2glG2}BbP0)FA|^oqQ-zjx4-Un^Arph5uFj62j{3d9(;oo*l}5-kCzisd^& zGtoIA<(A|+BW`rusEK%PwyVQ@O7Rw&f}&tbph>hK+P8QLyD%MMecNy4xkhH!@_uhe z0tboi8!<G{(E3h$2gs_BHtX$z@fuT1;3~MPrkc>r(2}%qnCa;`dkr-7hYi`kZ;?P3 z7k4`g&%Bn*aXp4S&tvhn`*;+}K(s7SxNN4^d`6hHK&?K!IU8eE|4&(Dv+}<iRAb9U zVm({09^t%|e<Q#uDmbfVlWPP`U8gVF{#D5BVna@K5trL14Kx;iXD^c8XuI1tPx_S4 z|Bk|6mJO5f<cZ7k4lI`M5wq4~h-RhBn?oX&fCSSuxPf-nx6khJVs)U@?gK0Vm*iM? z>|08<(Dzg|pYO-fF9$k83qKiP!cxet4(_0Y6@@{-jF7_k6(vx9qBG6NbKF}@uiiDd zi<VRI{9y3tQ?=P-4jR5#!I3=Dh0vFEIHwS>gfDMoB&Ogub%&)q(t*E?79hxA+J;@9 zaBN0^3JbIPAUXvXYmU<V67aUir`J>}dHW<bs-D=muhDh>uA0XT$-ELM!C3&IGSea? zgt%^(b>(WYZY-ccvr^z@JzuTI*FqQVVW}v1NZA4k9hQTxC8H>wZc=7cRzMk1vDSRt z<!pYWh2;1Z7S^nGgm1MRyfgXaX<%+zL!?%vG4M3})<vKvHM6L@J0pUS@2|wMM!MCj z)xpmac)1RNg@Y#|Hp%iVR-1|I4Dq{qHA(J+U_rCsa2vH-Yvv_GrhG3+of<Gm7A{Cq zJ+uZcyr8R9j0TAm6h12zt<mmUoFMPGJEE;<9M)?Vw%7ecCxZRDu9cg0fu<^N3Ayw( zOq9f8r=CEm#yS6vTAZ~eYaKU7T*T6fK1UVp_7DNttvJNicz+R&luCaDdyvd{QWUe8 zaU~7JUAr`(!W{?m5|GKj`Vact5FZU~k8<shy1N1voUN!FpsT$KhZ9A#S2`_Ol<WH> z5yw0~#Q;D%OBJpXorti)(Q+k6(Ng4uQAyyBa0Wd`wW};CrUu0>3x>I`(zs~V%%xi$ zC(cQr6<%r-(j!QX)~a4*pdl*;8?4SW*;@7vy=`3`{vIq9-$vcyPPDu#oC<e|5WM|+ z>%*?ac5}G8rz=^62O%F&ZZgJeosXP+8pV@_n=MEkf|Md^0RRNwjB(_$U{;-6=*U^T zY?YT}z4X*6#u$|q8~jj$RVx);QYD&vTYdox{Zk;>em>?!wj!v`QHh`d<m0<C_jDYp zN$aA?CJ>trp4@-|qpGH)L!`?O+EmHv!^Px83QNMjohRq7x7ZTZsD%rAHN=%s7APgy zc$%>s0$|01*fl`oZ_e1hbYRFJt8&YrN{2%s9NYLpA}iz!nrFpvY%frnpsLu{EcQL2 z2{e8n=f`cJEZ|(}vn!)=x=Qxn+%WRE!5UVvSYKVAJ0G>p#Y<auT`32!Djk3X0k2~* zK;v`=c)q`i@Sd}MS3h*1&mOq<jg2>+=X38)IwTr)){X92g^*N?rWmAov^A0-Rlku` zwa{P6;uOWFGxtLe=(>NzloG5C9+l?yW6P9bkvCkT6JGElNys30IT2d8(UvPKLGA00 zRU_n}fn<B$v^{wS#8E3lg+w9NUiVH_q*xkixS_P)?XJdqPhwF<=9xO}j~44g!y<=^ zQYJ@BQ&m%7Mcr4iV+RY3g{^ppVO_p%X0*pt3LZ@~NLr_wkiUt|Nqey65k>a8r9#-^ zo5}YS$we^PRY@8$J)il^K~!)i2LnPJ&3_Dc5NfY%kWhPggqIl9aWQVJQ&kw+{4n-D zr?-$WDuWa~0PI$Q>`vKNu$9Yq_K(S=LsAXPcOlipZ(7=xd8+N;HtIVG55+43IFY3Z zB>{37Rz=8=3W!*?z5!6%i3JY$jp5%UGAwQHs!Xl%JSq65O|y30y11jUPaFobRsOoT z%+9YyN0ACk<pR#!&G^E@MN1T^#bR6{vpVSFQUaQoh8a0IM}e<SOF!pF?EqL9$bGW1 z_CRPEszct5cRx@f(qd96<OI_1qbW2M4H2ZtOrcuUp-BmxF^z8DR@*bCdn(ajq%>hI zcK{vctKM7p_*dRLe!w+86##)3hCIfn?LZZ%g`?j_3UUhR?yy{lXi!X%ssm$YpGLdE zWAi*lC4pisS!~K&u9SitAiPiR+C*s~5aN)`)y3rNv1f4|8S*`<mvlH@e%J`7oTe#( zoU&Z<EMxX8IJc<*l8g}!28AlRqhw)G$ciq!oJF-3aD67KEk#O-DQBcCt5c#?X%yu) z?Q85XgwyHxo0w#U`O+$lv@Yb$`d)MOwB5Ea8n}*)pJvGG)+`F6kI5Pg<TZMmf}8dD zP(d&P5ONF$LgA{kTc>Em-(~Ay8J^=x;E0REh(iE#5O_d^KeaoM>(RQ^flfvyOdS<4 zsE!}Czmh%#BXdCGU}>0bH3lKQM1v>{pO65Z30<XjvVgTdhRVoJ(h|)6{<#IQA{Y`s ztK?-u1ydzU7;Z!9(M_}KScA_vY+@Ocl7uKLeON}5y0#y9FDXvXC!PG^)8rIEoOEqW z@Q4Xjfa$VU;(JA9W@mg20n1}uI;qJcp(lz25c8vzj;fa&S%^DBHB?Tz3AbV{V`k;H zZTm})Ralg<%*vIwIv-(^%l?jz3X&2PM+BJ>Tw8;&5^mJ7VMoF^%#W#NP<*>(Z>NK4 zjkJWs)gSJPnVV+f;Q?Kp{k6O@+NR76nfz4$@cpve%@si+q1@C&jc*nk6Dx-hKsLvk zkDH2#lU<;<T(e)~AR6E-?ykyReD08K6=69kq=Ej(R{Di}pM}!%y*TMyz5H9`EVgB~ z(;vwIbb~0jzV<lGS_cux;~-#z^<D^>)MIb6g^p+eDrtXFO{#=zXe_j_Dx|JJv6&1F zEo8;IWObYbhuM^C<B$wjJ&e)@9q>C>O92~PxJ<3G-g3SK>w|UMb@gEUAUu1|9w1#( zQqp#qqTO~s#gm?vmRDIB2^@GOC@b(KPfbmchb#?8<Gid+`wh=42t+rhpwXx~yq=ae zdOcV*Ee$$GF@aaJA@JUO>v<kxz$73j{rx+WqjMJy*L6V&3}IMPHOtu`-y}P!K}xP9 zdN*zWe*dCz`Y3{?Hji7ixV9C;SO>c*u3wd>8Qs>VMBYiy^h%3GNG_NRwI~gtg;N~0 zsQz$kgrI;V1bMC!U1p(@s>l0X2w;g=Kd6xlU?}2w8vf~!$Sc{Jvp7eirkf8!L<WG2 z>MLeqf9Deq-ggphLys$p(+W^Z_){d$2hv`KvpxffmET#x7){2VpfaBn%3hRX!9FZU z*>;GmaQ4GB;~}ETh~k1=WD{7?n`VdU^Z#4j{dp-VIr_&<J$6}#sRWCXlBCI!08{IK zprafch>ckf0Te{B<Vmy;5?6y{Vz};k^QbU>+S#l8)e6ckR`gGE_CA7<&FKlm+FKf4 zzuz=Bes5rvY6nTOlCu$_Qgv4-Ta{}J-3;T!9SFfti}wG1TA~dGsjOqCV9sI}`7JG@ z7jGz4PcAN<mWFBW;{%<^iYOWSYedI^lsR22QJ5NG;q!Ux0u%`eGFFSk(BTa+-U+R; zpl#x01v9!R0I{!1%bY5MtMA}}aSLVa3Agb{Q_=q53wkVMN5~B3A_(%da<#ujY|!L* zb-7AHH;%xgK^k>IS}2}83wnAFa8@^_A5ZU~8eibAM1b+J{v}f+&CfT9wZ@>|O$&qX zd^pg^5$I$ZEffEv?}%>wW#hO<w2C-tR<eA?a&OTLnT%{0a{EeHpQ!PkhPRI`Q)2ES zSj>RvV=1^dF7a;Xk5K&if)QG~3P07!#Z^h^Z;V88NyB={Qos8gp{WLnugC`w`E!1a z+76e+lVFmCkbcSWgTJJ1E2`qUohD2T6yigKO#vz-!5luV;F0Q1T=&(TM$}jC>QoFp z{=skSz?D4o_pgiF#qPB*<jvllPykslp%ijW_p4P+`w{l*+nZ*m2U9HnD`o436HL$B z=Jh{4%E`&ex1H{{tNr`jFJ2TBlq#L}g!+0Wzqj@6J0O^p(({tpv)i^GLn5~cHZ<+` z$WqgJCmoDPtJj(K`?@>xAL$ao9~i;zbN7c-YHs1ND_Jj_3LNHi*s{X&K683!8R**w z^eAB6{N;io7Ecn@?|PV;+IE}gdUk66PIh$-#eN)pjQj{b;2$kx+>FHAZHr<`r??i) z6Q(p6Riqpxr%-P@0<VI~b1g2APg3;_I4_lM*1MPPg|sCTmjs+cn*f7FB8a6A!`e`J zkkzfN9=H=9I@AfNX}g)taSM|VcI6ZlWpD<U>b1pjR8W;MQY3OcBVxMw!;Dz-_%shy z=GGFsb5@AUh@JNYHVXfp1MF)nPZlT||F*?FyygvkRjmP@ura}~=9iOY*J>LRq_HpJ zu^tPH07@=BNr<2)^4K1#vNV^7Q90=vXQJ)C)uOlS4~tChMc84QZd^w+O{_t~fSx<? z#;Zf_6sC^&n>F>G&;bN~?068kb5sqrgcH=tjfsW@@c1GdZx@(#{Oto(I%*b0gu#%v z#{1<Ha@C|!Wn0p@Qlo=~+)C@RUV?2`ffp=bJ{||RtwD62UapysPef6CK{SbFmRs?v ztk3msJ34t=@4D6VrtZ^iEXJpRU6y9)Yi3pzGaFlIZ?SGWD{W?Z&Nmyg;2y*basl@t zXIrs8buP*uAQW*(5bWA4wOS{B>`TQn+{pnH@^>CBf?7f~aARmplU79f(MYKplvN~R zB8xIqKQ=eBJKr|#i??QCHURQNPlNlJ&mY&zrh_(1OMIzelRxWXI-!OTBS@CCO3j>x z4+8^+KC;}_a8AxIN##%!G%Tr;(~4!#4dnu5@X0FGFagI!NiQi~AX6IiN%R~NFpWK8 zx9LNxs}Ko9+R~DU)W3hxX?G`mq}B>!O61^J^QA8dLmon0az!%A`wR)}&h=&ihKXe& z@^6W9RvsxM(Vu3Q*TqQYidtfZ)MbFx7tgc2YEU(8FuF2s_Lu^`4%`-2=|aV1NsF9< z0;p=yMgh9jY*)U_T|_Ze>G$OPn+0{=gfJXje_mZ{bo+2ES|yLu|Bm_xDy9NM20AZo z?Tvu~sB6Ec-zt@=pO5xmDe9ejXbb1AOEtRV>fLu}-JcJ&&I?KsO4P}iczB0%G7P4N zW63`6`vm5H63BSpZw7Qcc0>O8Xk|I{Lk&7+QT6seui;qS+1#%$uQ4(*_O>7AjE_tS z<lcruy<*S_Q|`{|J3c{ffAvFhU;#{8f=Cf|C!R8|fb!Gn;SvHFt)F3NY^I8mvQ~;9 zMJ=>z{yzp3qHhLEqU9fKzIXO@#ksh-67566RB6;_0n~p`kwshK8PW|Gxwwc|VQPr} z3JVLLSxTT5nKPCIhbX5gmpLUP0?bj7m=1Qp;jG*&kW(wA&*m#xHDgDjGZfeXu$K_2 z4gq!{VAc0L)%772eXB}u-IiA=yj<=_FCWIY!8ZT))U!z8e~*}H1=dOE-`^&?>|p?` zi(Y6!3fc9~P5kOy2-d*1Yv4q-+%$>^8JN~9Dz2w#Ddl=LnSj>sJ%DLDv-MOO&mPxb zPH^{#m5NOQrpAThX${N$BT29{1~Vfgqd+Z_SlURsBzOj?7!V>&i<ygE7{73Oc2?9_ znHb~rOSus<b11NSApmlI7v^#>5Ap`(>a%$x5u83`a4)R9am$GtWnY!xn44{VW(MA_ z`^7BvvkWz_Q6;V`)|}+qXhD58gQa5;Yz@d#K;_f%-}$YdOK=5c!SZa<)MLqE-COtq zbEv~5elW}=ELnygH6?4=YR8s=Kg3iOmm$^3046fWZ*f?vyRBpyEh}>b?6K4D8sl@w zj)QWJxZyKO{Om0nsTtH@m1=YY=;268Mov!94`DP;hyXn2gu~StgO?=o5kc<clAkp- z@bKI>-_Rf2_vfmbtYg_A0afZPkhM)NgUmG<mM45Tb5H1Qlr1yItDcCc)B}fLxg^Y@ z?D+M0MGk&)<Z)p?eqgYGo-LvBae(Mx7r!AOf|Jk{kEV~L@{AQ(g3<x179bUZrSlor zh^uc*N_rC8$U6pF4Vr~Yrx2$0t`fOtZ8q8*!9AN5QTa+DN-m|T{2nUx4XY0??frQm z@I45Zv|e9dIghiP+ddxG+fPd}IrpPjRvJuU&X;SCSBzs1ixTC9rKRlc8SK60GuvK{ zGCdFCC06PTL4V;oK`!gM;{lJN&aaQ_X#kA=ZG`$wg?d-SInctR*?QUOth{v2g4OLs z!|gClx1s~5N2@f;V~>Vww<ou^!}a|1>QqdOpHHP@L1=d|@XG7yv{>zcJ;E&jl&y(~ z*Gu@U0-3c*Jek<Vh;k%BB!)9eImRFF7rqChFCU*C+zH@{4g||npPnd8I-$Ebaz;Fn z9ebrnXhGF%sNs8ui6|G6N^5jN++2MTf+pavt7~H+ci^}%t0*%1(_f}eV~9Cv?C@bL zx#pZX#*|yH>^5X&bZFgqmti!c;w&%3#A5%FPu=e~*VtDet*f@|sDuv7zScrp?4FDN zE@JinzZbzX>xSt#GZp`d2Cf>8iH}=&yRbh9@ca>wiIYs-FIh)qE2AC!-ICT~Kdg$9 z{8=@<f1-uv<#K_#d{*Ohjy&pNEK&u<Q+cgTMOb@$=9%&14IwY&F(8wq3y_H{!DMZ( zIqv(!FSwc#?joyR9@(1Z$-dOzysSTdGXuZ%*Sz#L@I&3)b~G%6_Sqr71g*LwD}=bH z8O&(lmA^$#2&CUity(8S6JDIh9Mu>W509)DixWnOh;tpoWPm?zcVgwUKR*2d1_Skx z;cPE22;PC^i@Dz-NM-CHm&qdAL*zP&!)6sf<^b{cs&|M7OPsW38=1+yQ$QyzwRc2x z!{pNG{goQ3z%i=kihGOlw3f*m5{S=(v~^z?D@oP>Q*evo%2{JT7O(R@Z__4bP~BQN zL2+Sl6_aE#jy})#gi&sC0X?nuftU4faw7bdZs3y?<V9~<k*Eoh<yEg0&BNJ0sG!Tc zS!OHjs1r0GcR{=qLZwep^J=ijf7^3T4H($w(ck}8BD{()pWB;wi)Mp7znYa6mz9lX zVP;M!cEFHZasMF}qAf|F(`<z{g6ED~sa|VWLBF!Stxyce*Q+%bzetu2N$q(*TxCxn z&2MZ>?C$2rjs`b2HpVpe*a?7G@&EeZ0@i*O2I`;tF+4H3U+>4j$W^{9r!gwIkIq)e z=oyLj^q!|QlqrJCs>Z23g3sM~S$X*e3xjXf%1sO!dlh@HuEC?I8C)5ZY5hGIb8eZ% z)K-OknDD#?Wab~Ms~5|SS)<e(R3;x?Qb5_+uoiMP)35+lF=>4UTqeiQg(T^SDQPHe z+na?@I-8DTN6J2#7=h3jvJaO*GIc^wArh&Rvy%fn|62@LxNAX}=(vQ0sPvo+Gb^u% z0Mke&3zZ_q@Z#TvnE_;=vda|d73wS<>SAO1GA3Yr#69GBho7teZ7ujkGJCCnCqPar zqF)7zN1H|#vtTkQ1MeN8G=voQc=jMO2mztCwG?3TW`#1d)m{RdQgcYCQf*%Ms;IV< zLD`WlSq}rGk_|vru}Gb$oJh*Pn-3Rjlnis=_4W$<iaS45-;jo;R&c*Ft7UyYvS8s7 zh$e%HLjepCr4!On6XjXD3L~URY>ZB8{xVt)Q>D`IvNWaF?<xWIVNG<`3P#78j>lk8 zwu)9&11U~yf(c3T>vATbrRn#B@Chtd7?oqcWg@4d3TsHrKxTSwH)YkQbX{RR`T?yW z4pcR!wW67z4xNGt#S#j9$@r~NQd>Yd;s2n%ikq!FLJMHL(@)5mwwO8@N$vo8id_91 z=8lX-h_j`qP*DLqJbs1|bGe$pBr)x{cr$3CtbjI_ho_Ew!K!alP2yh3YJSxnBDZGy zJodYKzv{u8{)CCqc8?KWWno9}I|g6N#7ne%Z#fB9CFFY|4!i?Bhh*O$SwA>H-QP!9 zQSml4%b`#6B$^DG7}b*&fZADb7G-4OJMC-<7H|c46qh)(lGOf%g8fOffg)O>CWOj6 z5Gbht$!@!rqzbX2+N5>~^92t!eOj731$@ghdT<OQjxYrU1<A_E&2DeUCM66Y2xQs& zzpb}(btq8PE?PxJMFF3PM5i;dv5AV0NAmLa)@(455~nP-96MXAJiWLu0UAEAVn_G; zdS4rcT1|EQ0Xv=t2YOW#GkDGR@!k%CgQGJ{O_8BT_}OYgI}a-z(mG8MV2qAx&dUA_ zealLMCdR}kF#HI0g;mQD%6AG}raM#}i)nM(dW&FX<8Ab%`7*!sCzc5WXy&_0Yf=rj z!2M&l*+`O8jGSt*?@Xn}A@<?9Zx4+f(r`Y{U^u36g9Qs=37LQ)LEEw_krmh}r`~C} zcgMKu9_M&p?WgD4mNgU@o*n$n`#lhnGg@l>-kiF*z8+Bt#ElB0eM8s-{*`TBf5Sg| zfpUt@ltRmM{OGk<29DQ8#HVBSJOwf{GojtHOeF-!lq9DqrdvL*+L$LN`$G)eQCBrJ zHfH=_B+^t(&4Z2;`wG0nG4)8H6~;EdU!{Rg2r>y6xJ{u~(%}OLd`T-1)DPl8fZ~ax zcskzal_1iRfF(j=j0vgynIcIjN{qJH#b2H#^CF_mW}W<@v{0f4fuhAaXysT!cN6lf zhc&Q{o-5)?yN6+z`+t7ei!%s9h9t4ei2X4;eL9u>+pTCgxwI8>QK~6NRNPx2WFbKv zm#T}fMY)veff01SbhU=(B)?{4of$4mq!U7qk;}~{Um{CH0c`ud;dm#a3Nd~FoKjd9 z4K{Ksfp{ZW&=sP=uibM{A)%w+WMU4^j~@xuSm1kszl|9P6Zt$*e9q_gJA0B)mpnl= z6Y*r`y@I<Rj+Z$EFpI9CGe*X7&)2ew`cSl{c^gB{o>A*na(WZ!tZI&!*m+*|CDo`p zOH-RPEX&!giXMUqMe4Uc8E8~@4>Wd<kTMn%)DAx>d_(vP>5NhKqoSiHoi<=3lw4JL zTLi^J#wwLi4Wo$Ul>I)=^;uY12Xnt(a+S+ffPfKwbe7H`su+^{rYi=5z&j(2dd<O3 z5Q5ow3LUWO&H>vTDiaZbVMke1F_p^2D8`LctL!@4r*~w{`T*xCPnz8KgKZW*J~?%J zj2$1mXoXc)epPwY8qRI&&kT&86T{UZQ7TijKD<JG7LHr-N~lcyY{PJ0$Kb^JR5OcJ zafBu{m=Bp!*ieCCv$IewcI!uDLX_bxHG3t)bw@)CMpi}<Z7gQ95oAUE#M1TmJJe$D z&%-!v$DiJsymetiGOwqXRfyJ@n=L_;v37#ilS)9{K=P+uiR;+TC}lLOsgqaW>=~mL zDP}S;armsI8mtI-L9N5IZNW<8`R2jbf4W`^<J$j2fu?0xODWqqq-?A2GnpB6aLnJH zfvMX?uHgGi(6Xq8h_Z}wvZ4|?#6&`(jQsr4xb0S!H3fMxIFfwnZ0y|qCnuB*Rg&lE z%JC|;pqhZFaZ7R>Wt*-iwcdhxR+zLRR7^|6!}lL6FUK7iIwZ8hyDB`=w_ODKLEoes z0^{P=z(@e1H%E0-QSDTGm8bjtzG@&siYi?zw3FkgT*6heA&f(r@y3nRMw&M*7|JGQ zBaOvF>3pW-0_?lfOqj+jflSw+=?`KhY3r7)7x^!~kU4=`{ldU}`C{wbI1n<v{1hpD z+&}1H;~}|SFLN<BIP?jYhDZe8L#Ns8BZr&`^d?EnR?iy2ubqv38P6iHF{2i9vZzZg zy!x4qt8_-pMra?W;=y8RlvO$nSX@(?<o^)AKf74QdVWp0*|sF`$M{2={beR;i)Qd3 z3b|2L)NK|g3bM}uzot#YYZz43d;k+`^Z#*2Ei(-cRKrOZ&W^4zZ~NNRY)6VJ#WPv~ zMRbe$0BO6f2Q|Ov0RpGq?+`a7Kxbp|!uVqJP$*a`GGGz@=V2EW8|%E~d8|~f!tAP6 zt}^zjMI}}^Ye8H$$4VAq*6nmXSrI&G)%c$C*^r7ijwFHGH#!Qb%cl#bPZ9Y<+9>}( zYFk4)Ry&=C0qdJ8;H*n9<yVVPIs_e{*j*bUXgs@wWG(4K-7)&nSk>cB6^WctHcvce z&@4EXrX`Yy8IT+pGsKtW@%o2UypTj_5}SOubmK#g(u&-0b9lrc(Qq|_jP~lZs0t2e znQzS4T|ibP9IFDM(PuJbNGj%kTmbB|rJJ{hb6uhYOtp)iq?jvYO7}~cbQ+-n7M8f{ zUAuHDw#=HR|CC$yNA@)^HQ+7zwll=yg|vu;3LW~aBp@1Ax(&ljy+hZqSWKI-o`z$K za7a=HSK?xYX>{k&mj3y^PYwMWRAzEjDx|unqLvA6ym$s_%b+x2aKBdcqWrCC(}NyK z{F4AP=J`Z)G!)u)m9_hY`K0m2c<qcN5|bXDX#=~M6>@4kiAb_ornCC0_uq-$YBbNE z7^ui5-Be%!k|{B1G*%nAM!kC}P>Ykn2#>kf3|B;q^vDX%O58%8W^|IfoxhqMtk7^q z!Ph%|hK&!7sYys02`#SpVWmrD6H%5NLD_M@m)dUglblZVww{J<N!ByIXyW_Xn_ZWc zAcy(Vi3w$VZMj2Jrqe3|c5;(Y0#<bXwA9X`MwwfcJ1~4pB{)t-lM~f%)60_z7t-L1 zB8fE5cW({h!m<JtI+UFWak6D6-*)57$_s;{k{^ojsFp6?8`B&sbVSWj+|A&~!*h(h zCF(+!L~3`+<Tqs{dG@KhuAvEGvE`6o*@vPnoW!rJjes0M4y#<cw5<L|oN7NQhz#3L z1H$RCIXO8K&N7~+X-Ns;;ZWVcL`8>n+t%Au|CiLx$L3nHheXugsBRT$)Ac_e<z}bG zEBpIdo*Q;Pp>OK`{sLe7MTu>DV>Fl=4WrGI9n_g|r6n*#NaW9kLS<z%LBc4|U?vtk zh|t(3XwP{bbYQW+<Me8nFbzNW`Vn%0lZ<t9Y2jj?5_>6xprAs?atqRo(wx=dG1JKU zcv3dkIAm*}E&lw)3jYb9<TjaZoJotch<Qj2H{NXr31W_AMyg%Ka5lk|RG4Me!eBfC zfNN+I81_Rg?Py`_rfN`KeKKpU>pHE6UHke42nhm@`wQLw4M5?L%xqXR%oq3d<Dwn( z1g2=0jDqvyu>n|NBpfnT)kNqZ<wY!kPkk_L7;b1okVG>?aRY&DWs*X$O8<|hYYMNc z4VSUg*tTt>v28YXV<(N;*k+UL9XpNxpt051X>40(^*ra?u6?_|7c=wDFxP`@|9k~J zTyopA6A8mGq3m)A6(8~ZqJr;Q;<ZvF`MGQvrWcB;AvK)e?<QW)?>l?~b}ZyjcpqV+ z#GAR{XQhEqPX?xm&ApVNMtH3WQn4(SAnU`f#K6<Q@tWk7G*3KS@qKC?cSdx5^c~^; z)Q23#*s+BPyw|epYCbIZ>LVj_uA(}ncMdJEM>5>bkgjd>j`7<F&XXBNzHS30pW|j{ zBhG^T-EelPX=7>+x@}H6Pd4;+AW!r)hw+*whv1av(X}S0p@RW^Tc~L!)!*UJHDhgh zUN(o$%~XecjzNM_<gn)Kxe_Tk)z||Y9!)LW$mQiZF^zpj;f%j~Es0M{HW>eXoIWce z?P<=eUD@b@FH9)Dc9}=`S6m%sA}E5WcPy}gUYo~QiyOK>XOi{SVT;i1ye`Pv_4q|b zM&=Q?Sa&dazs|5xs8+(Eg-J<C`DgA4L?^`oa6r^Q^uWbWG<D1h0IF69_;}8Qd~9$g z)?=2u6|`4xpPFg|SxjG6Xn-P0m8Ln2h*2oD`??C!q~DpiU4QbnK2+W#ZWs;s8Wb6w z^kefH>u}wJ3ya0p;kN^me?9JcHs9`|VMeezJUg+pZy)TJf(|JX6qy*D$T>PY|5;jz zRRu6V#RhqjNUE79*fcN(eC)IA92_b(rA4J&B_QmvPe#(%X=QZZzc-!Yll^8?6si6* zgHcSW+Vcf@|K7REkRj8zOjKJK<uSI-85lLugm|ReU8%SUBlAh;j^`sa>=K#<?ynLo z=x8AheO6cLyRXyy3&H-MxP)Va_6fo@%6J^mNl1bZX`8O##s6;u8yYr62PX)9PR@}o zj({+~BEb2UbLNc`0i#1Ng>9ZR%s&W1T)+pMG^4*)nJFJb1#XA-&DmO3$$9pHVUDpG zexY?~w8X<o$*m@XXg#UZUD{Ep5me@BeyM^JqvZtW!zvI;2zNm9aPx!Q#!~T18XP(& zv^2`NHMpVu5np78afICirX4VLN$ExF@XP`?e&Em|o9!cwc=71v)V}$jQ>4^(3x!y9 z#UtxUkz*m-Dex+eAcNFrw)n=6ZHW4_a;I`T3-0usE<vu4>6*KCFpQdg1SgFB()Awu zL$-WgP_BC&zmc}za$mb*OmvZ@+`aX$frXf^RN4mJD*tvE+X3dwGzP*f7Uc^yv7^9* zv}Y7HrDA<{TfQA7r493TFcL$FdF&}`w56sT8n<X53u^{G8KLZIe;gt~`oqp={)T1B z#91d<2I-k$BZs(D&YOs2e$R|%X*4d?+?=(as~GAl7?_20)U4}ztr%>97xdeymE<!U zza|KJ!s;3N`oged#9;R3j1~_jXOY9M8PGMPug}jrF7{(gUnv1-IU(@WBG+S99#r1p zf;X?Vv$JF5HbV0+XCc>hkRaePj0^;*Mvg1<^GW^u{A{@iL3S&k_J7c)N$sEcd1>My z<*w)#B;|fVvuX-u9>w%eUth0=Zl>FRl<`#5Bs+^(`Pk-yK=NtQ@=*=v@7v#-ue8eO zoG+(TY3Q{T$`EF`CFoT%C;7=(s5>WGEb`2=KOmzAK2@n2dIY(nOGjIc;i}g<QP_bH z2rOdF92-Wbhxuu=-F7qB>1iN7tGbZIQ5Wh|QiX$bsyX=)yhb3_NvuW{W~UKR9hTbz zBkQjaW52rzd{H-LbFHeA(5FRE5|gmC4qIV%a2IXC5~f_$MqFK5EUPsh>$ee8d|T}H z8eN0{(|5k^dE^K3rg2S4v6yy^t=0haR3?cKL?pmwp(&Ux+ozR}u@?L7rBNpc&)ypT zvPR9j@PW^}@WZp8uMks1UiE37`9F@I??1|)nL&v;XgkF+cvbpNou%=b8i;3%UUp%% z4F?*;n0eNX7Zj+9&-&U-5{lEKPrl@N_DtjdeP8M)jFCiF7{x<O*b@2Md??3pgqk3Y z%MLNh&=-#WQ%S`qBDK%#P*gU1E3{*}g$ZrgFpXOuzNKpCMGD`|jkYdgVhmYg%=?8k za#g^Kua2Hm1u|r~PBh<6nZk7p*}>Ses>Esh^S4tt5LxYtZ7dzhFJ55ts5>fGb|fYE zn^kQXpuj{Pu6xsTD#8U?CW+ivE%Id!pJ+EfxyO=Y+OCbrjh;Z<z|Gp;_^jA&jn$?` zo|(g8_&M9I&1|~>ycZpi;)R>+Cd$o58c@T%U@$l|)cRh!*ywsIPfI(rCPEQA5DKOE zSZ@<jL|Cp-jy|MfoLzF>Rr)6tlw@h?m?FrUxMUKz7mbPUQBgliPE*rs6%yODY)?tG zk(wGC`{_@a@|RdzWvs!$A>1{(4v*kQ-WOGck<N#WF=;$wsp6Tfzzct}TEF>9PPg(h zr5wOb44^{x{<+=EX{zppk-d@w$btR!Fk{A;ho>iCnfK}Yj~_>8XA{jF+}uD2I`jSf zhqa=`8eScxk>YzhrV7SugT+U<p-TrW^_&Ch;85w({kWIMj~*#j8XimxguM%l!4roo zi^=jFOX{PelakUF<U;JHPO<J50ZF_49eIQh42kMp-FjX&Ke-@OB<!uoM-ApBm+n0j zv^b4CN3&{4e0hc%AJ3nzQ`>s8EoBKC8=^|~OC0>ebGz6{T1vV^z}-}@9Q7f+P*Jmi zi<$#9AP@UyyoZ#R7R@%hRWP+wRbA*3Q_Myc1KXts^%CjiQXEH|0(hQV6g*13f4dBZ zmfvjM`9#?L#&XrtHP8U$#x8oBvCv1bAwI)@e(uLY$@8T>YWHlMgaYUAas+Kh#D3g} zH6B))f^Up3{O*aC2OH!64}x$>R9^BE9e`^Xg8%Egbn<zN`4I^N#Amqxrx7M@p7s-? z52PT$y@o7KzhKp8RDa`Dj~lDZE~$=%NFPZlUxCHEQfmHquXmzt;+sQrZq+UK9<H|( z8Q?5PoE3vCWsSmW$^W&s=kliKshLyp1-4`x8`@hKG9?%<bbTQME`;k1=lAY<JD#`Q zX9TX*pct1sA+*2w9gU0C)ai8Cp%*B=G!2rJX*U5Q3m&VsXAxhAw_hUe#PtNrgg}a6 zO{_h<3&18h&K7*7Ng8BNg@~Rp8YyK{&Y`a!Lg_0wM(PF2vJ#WEieBA`kBd{i$?pl* z!Rdz^ug^n8@!Z_i6Ux(g%0;(i&^?LcgX<)nZihGCV3YqOkO=#@-Ojt*RMrIPP_7c^ zcEZA!a*yu_3yRHtW=OQ<RV4FJ0MSS50U$2$=NrY=lSoVBCIo;eETu*Jwkt7okmbVu z11*D5nr@T~Qp{z2JjU!(4dQ>tTHhY_li^a;9M@mD`-tGnX?QB`0E9;5M2u+s<)JrF zoFR>56WF#)Kb{u}2nqkb-b@_;oX6;#e&MlM@r*da?}Xr2i!OkKzqSd!w+Xl{CbL>@ zumagB0DBzD1~`@2@33&q|Dsd)e#wFu0F1NBUyQxirJD@)hN%)f0>5|}FSjz$mk|E2 z$y<Oc$3`0AkR|Jj29Npro%|7gf3%2=W=w)yW)Cl<i2&r|oz6(bYYg!k+~vH$TBKx8 z$ZRmDXziBoYqp2QeU3r*$~E(33VSg~ndD;KDZ7iN8Urpa?tib;(a5Xd63Js1G4>w9 zlP{9fsF3ow^Uye_hyG5l!)#ce`TH#WSPRDr$L@16QTkE2K}oC!USx?@^by&i1idau zB3iA7V$SB435Ii}g+pl)fhn3`<;grTWf0&x_@-OWcx6rG<?p{iO0~sSFS=jb;n6AP zJFpiQqvUxJ9;K+Z?_52osh5A_Sd!`MHd17V>-0P!YaMVBHUtQIf5efuhbgmiX<fXc z4x%<6jv}LX=q5+6L#I`_^HyjP{>Z~qYJ<+~!^^&;x3}QKlBSu#wYmYcg{eq`TDe{f z_O6vQO_hjtdt8e=gHeWJYMLXc+Nc#6zRkAuE;l?4qN;nG|EiGN9n)9#FwJA3h!E{* z3(c{rAhnZ4Tl-_u0!HJ<O-bGCNBFo8^Es2paA&X9G!*2hldFh3#XRhw1!y=idmo+3 z9PRzR1^H~$8a%`)kSJR2>N|tMQ$<AE!h=SN*(y3WF)!{Btt)>RuC1fL6)m%29t2xv zTOwqU=pcNxUhhP^o>ws-8>S`tr4X7}1=~hRu7OleJ(j`zw>5(-j)88i@yd=+$0lu5 zQrP<K(SfGU%ZYl=V$ex2(+e*hVNp&!OPgFi2S@QYjFBaY%}919-n4>@VCJS+XxB^7 zE(0BvZcTQe4Xm5Nqs0VD0Rm)%&=v1v7v6nG-8bIx3L8FLJiW1{@~A4ay$0~>17Cj6 z!^g>xxRMN<r7<ox=fr`hnb|jB93c&Ubv?do7y6|7ACMgwQnlhDwoq$&!Ki0lsh}GE zw8KH(Bo0nbhA>=AEyicYXCOy~?4)XmquYTE9hUMa<D72|kHjwC*|80tYA#IhniX<4 zZ$=8IV7UbJqOcEZ?r3bjBZ{2K415`QfF|ja&?);rBcZ!RQ&n$ozJH`45wD}!+w)zP z0+X_4JpW$=U_SBzP`)W1AiXpWuz685xyA%EFuu1lvicofEN^db|4X$vE$a>srbdXH zVK7fLna_`=G3)=ANyq057z!pI)pNw_y+Kt?FEN8P)&4Vvzm~^GXZ%veJFq`<27)Rn zDLp#5kU)@~l;(8%ENTQ|adLPs0$(+*C4V-k=)ploNP)^T#t{@0Vt?0n0#iiy{fd@Y zl96d2sQ>a54UUahX6F@*S9#@%MX(Fo%qncD{qY{+Z0X2h%f6tDh7-w4#eAOR%q6M& zH+4xufMs~(e4(;K`AbuM3p)V*oVVWwRmQM(=Z@NyQjA)SZ;{`bz9)~=2F48nB<xP$ zG|DGV&t<E*;2WaTVFb551x8@u$-4+RP<aF0rnAfi-!Ua`zQx~;(A8U5M0SZ5L4W%B z`n;&=yMEGOmGW|K@htY<_g1V`^wLLG;?;)=N)U@bJOu^xBBrYFn{T`+2b{ZuRE0w# zEgX~81n#u_#9s9O_MyR(8@I%lGu4<KJD9p#>OhWsMpN(ni<IntF~Cb$29N;!H%fvV zulrT1<J0IsFLY~GIeOg5>U#H^l_iy6HBmYOvw=^b$;4SrPSb&-qmdX^dz1I}leKHb zjQue*lyQF}r&ECym<5yGcukexu@kJpcxgy!nyTP~P~^x2LHm|wv8$;MrFBK|F}eb! zDOu45!&SSrAfcV$j|W!M_Pq$nR0WS*SGc?jU$i|e)wK!oR)Cu_Ug`~&mZW+0#7VpU zCev<bt+1E5;sG6N_EwzmGaUK7%5@ZOn@ZdQRkF?PLPZ5aGL(5hE!j3_R-e(|!ibF9 zpfr{fcB;6Dl<tM~*E}2)C9xDj*ENAzqCS#&b0+v{(|<Zf`XebTC!4?+fl~rjpqPCu zn*zt(5vt?ewSVTvMSa_0mkh^nrs;?^@;G+ZD7hx_vSYbELnEylUD>_fRyng)k3A(> zU=Ks*W+J*;G)>HN$I&^nX1SD9Dh90<S);GNp?Cdsv*l1q+{XUUkdgJhyOYJjo>!hn zE{k4nHI&h#%;pREk?womZHXx~dG|ZXsDlfF1LpWr;}pwkOa3y)0(qU>ww8!O6jXiP z7FVuIOY8R!a&W(%GFW532YL~rb+k-WWNK+EP<j#x_ngI*_>V0&J}GI5M)}VsMR`YV z!r1uu29KlJ(-qXC@7o3l)bZ?4<*=@dzT4S&4Xxb?!v;eomBX;N&Eo6+p)fFj23kZT z&L{B)!3Kw9_VNCS6WdpjLO@H9Ouha7azQ7L2^5eiyspa#+G_=c5#ZC*KR3kBXd?Z9 zR1>oG`M9zXyQj{Pcqrglv*7Pxaf0<kHczhmq(A`R;<^2&;GJ7Boq2nNuE6qSp*jFS zQUT*~Ix55%%atziN{(Q_JLVrROBK%_3MkoP`aX$fQYDBWF&PUALV+;z^}aLX7zo~# z_2>QZFVLG>NFt#(=Yo<4ax`oBPq^Si;qz(M=vcC`{~Oir4@JoEs&YEk_E3p3uevKj z2}6&Telzy)_EM{*nRDPFjKhu)SC9ZVDz#C`FzV`08?W4uX<lvUfedU=mW{jDR&6ax z*#X(<Wdyat5b@_BeH*Lp5wPMB|BIvGq+rZ3&*Ha-d+4%{>kO3cyJ~!wNm8|rZ8%!C z_Q(OC0N#e;jkj%%umxw00Ny~~8x#>}+1kS6xuz_)Dk{mN<w*S^qk!A@H&SUOV?PFK zAAUpd4vUMq87b75iYk}q(_SP!R5b&MKXXj?M_{DeF{R+G+Oz0~ui)lA@1WQX!CVM@ zyO&7-hXvV-UL)HQi8uS(+l6M(goEDe`UPcs2S;C@FHsCSR8iy#D&N1-#N6@bwOb^8 zNFuav3S3#12i@c_cb+vjlUtGj8lW?l@iZo8nC2O?XW+ND*8}Fa`C6}-eg#sWZ_mMR zco6mj(d+hq=Wuk{pT#~7Q2sJH*d(jHC4Bt!o8Un)az`a8E$A|QvHJ&#ka@r*4`Jyj zOX)m17?x9nB_?;ho5T{(C<A1koAw8cNqrjp7VeSBU#f>9#)wKuOYorC;c3P6>gG;A z7p>Du)2~7UvuXCI+}O}lrxx)HnD^fV<g5D`yIYOg%<Z<Hb8cX7s&Pzu5AvQ`SUxVf zE^cCAuamc>(GnN<d?;W**+7uI(0zF+22+OmbES9TM$o?d_u&=0y4j+9+hbj~WY(9G zC_P42e)kT22xVtpmIy`eyocPUIUI@0gexcPr~EiqyHKPU9tKJLA~|$vj^;wUFUz>! z$mv&~LaWKL5q~cusuzgo9NayUuUL@5gf2W3v^_{92X|rz-moZl=b+})74J0G7*cl` z1d-odV@~RhE}c&P!Xu39mTj%bFmO0-BJ6#>VF4)~VPURo5d3=dwX_Tm34x3kzLq2P zKjnZ>0Am6XH}uBF#y}2)6`Y-g6Fu%$GZlsu{THmpqF{l_j9T&qbgaT^sx>Nt-Ed#R zvYTbj{)+zHKPj2nCF+WK_Bx?cHpc8;CC*6iI(L2~7AQkx!LL<sl;LK;d-U+|_}R1% z2uO446TZdAe`;@U=L|hvzX;-cIcp(XGz}KX;dLqk)YQSRL&3ZKSgPZ~jnM-<_f43k zBk;2iAq(06WOe~JIh&U9A74Hh`F(rP^RTD0_|L9Q=!<uod`J>21THvIwtq+KFQ%vA zjrBWuME^=esjPK$S6<mnL+WvFr#4(d%g;YpHOCb@E7_F}_IZ?GD9i$0rl@wRc7MPB z<T!J^1AfQ&t{nUK<D>zp!%G{1K#omu9OYa#PfesM_Dt)I${+x9j}mQ&2aI#HJ<B2h zZv!xU^XP;7J}HPSB$5YSvqFdJbfx-ill!}2)p^y|s#_m{8D#nVL(KBHAM5D32OcR- zJFz7GKP0Sd<W?QRmd*HToxJB!{C2VD8QSZL$j3|zz1Lzg$oN<yp$p-~l5{U5in2`) zEUMtQ#duq$=6d{Y!<cEpQL9@`RgS9&w&{nqsfiBZLGn?nS)jySE1DKP^dfuv#X6me z{%em?K7}}YoJCr_O3H0S;Z3Y;0`i$a{w~4eLW`Hni^AD$h#1~+_cKm0*|XaFtP_j< z08&vO+K^5q^~3ssvpwX?Qe|Nr?>(HO15Vv*9G_z2=t$<)rA0{U#=A2kiPfwWRX8ON z991JKUh}cd0gkijsPSh7MrJqyL<O3N8AQDl_*&jIEXkj%uPxKZr>4>uxu^JjF@7a( zjKsk*4SPccXT^Jkoi|;#Q-0Q`-%DC<11ece`RL?%Nv60A>s3Y0#9T_>A56uK+-PRt zH{@UMxqcd%Tq;g<^;A{l!Zy>C8F7NMY-q#2{ESj#Mo{b(98mB=cCIBSI+>uN7bD#X z<N(1kFdxn(sAhamudIR6=MHA_8u-&`OTK>l7JFg6TKs^C<v*!+c1oP>PfGsO;_}la zzg*7Q-U=TL85^#Nv=jxVv|Ie%BNN_j*}#-z%D|>IKWS8X(r0;7JXJ=$e|MMq-^t(} zu7B9?-xB}wY5MzNMyD>Jx!#|lJ?(<!QsWX0Fo+^%lgYK?iiW%4+oGWJN+#J@d8nJ? zo$#l5xe{AgK&vV*U+C;d#MvRW7;!{zvZgG%tzK>`%6`s4@gIRwfMkIb#2|BJ%f?L` z;-M_gYAr_B6}!@__QlS4K&IW^0Sp1>lPg&1FP}k)5nfDSy=KR($_57je1;Zh)IFL4 z=d6@?AyKIfhStepQ2e4u#w-+Z-G#&5c3aPRxI85l+!0MI2+NWJ`M<Z1K-BS0U>iy5 z8Ton3{b`Bt?B!x7etAuScQ@&G!mNz5fg}O`-gA2ySp8Tjc&4YR>fZ#nAQaew1xRcP zl=oCWurY=plmfPqm+WysQgZTBbfOXgyGe6^YP_WD3RNxI<IS&P^PSiDBJd*j1=m&S zXuh`O^;oy~ev^!gyMK-*gTJ7H{tNJC9BJ#2)Lzbh7`0>H-2PEv5D*l65mlg>O}7t2 zt_Zbd*(rFnEKx~`!JT<IQl-jZHb0(KEC<>n0yy)1<3UdJI*C9kk3Q{C_`#?M@4s)y z-d&%sFZ<3jf$RipC?;l8){Z?i!N}uz-IOZB43<sWx_cJj&4`Lm!QxH3zdu1_ZkvDK zxW-NHxbSMM2UIRBeE&x2#TuHnkD&2przJm<CP#vq7*nN#j*Y!*kC3E?E<Qyvn6k|P zE+OFH_H^^@<0KfP^KrnPZ`c4R9cUP%a*FaFy4?!EXhN`oUe`o8Us?0zRkOf8Ieo=1 zuN)ZLkNLXg8-he2W@1dF4%!Z8-+rT6;|1?Dui~>ARe?Y5H#6TiKXN?&(9T8U03&$F z1~MD9;30X-Yjq3f`|?zK1Q>MNkiqe`ez89WkO8;GJ{0y7*~aG|yzd_&<bw4Ro4afU z0N~|IrcNK{9Q!*FGXuv}pch|}IW;G45Ps|NR}^~((`R(XfGnS|)cTmyI4?#vhCs8U zbS|A|MwhO77J7reN#rOlp2^Uy^bD_@?tOSDaCz;1KzTk*c0NYrxP*y>*9XG72wrTy zeB^5Ns=Vl%^lWfP?qTNvX7>wmnb!WsaARa1toejQfMO5I1V;utjAkW)xgKwGG)(5i z@bDLW9@C|qlnmz~jp0)$j6%dgKQT&O9#%tI!x{nGoEV)|d0RgJ)o(x3a|@?)oX9%L zP*$}wH`i6K(}HC`+|1Lmu48#G+%*qR1XN?YKS5_@!oEb9`RY=9t)P?DX*(lQH8K~G zr=&u6Ti{^+Pmozz^Dlo1fSlWMbB0nWYs$#Va?Q#(<Y5R&yOqiH%7M{?n5F6EV3QFn zz{r%b;`mWL$qR(3idMiLNuQ?R;r&2fRn%A<X3q5&TjX?kSKr~-=<1~i2`Tq4bB{p| zhK53UiB*iHJO`MQTv>B;&n>-Vab{*apX0qdku#HF5h<|UMLoCwtMz?gU|^L==XY%; z-K)P;@#3Y~eu3E&sxEN3E++T6H)@oFfR1f<=<l#hE$^?b|7NW3pEk&UT|4a_D_dN< zr<CIFV<Bj?yHlt6_gW7a_1*xU5}p=DH2S(*X74u3Rg2o&v|G;QUaD;Xk)DaSm!ewo z@|o<*_1~DhR*Lw>#ZNcmTuP??EPuovA+Kg+8y~YB)GBo~JMLGMeCO|UgQbCI0ih;v z#-03wl(OwcMGBkaEu~;w-s~=DpX=7>D`XRq3n=K1@?1?PZl@=c_0XqMISr(@+do{o zTG1g)wT=p&Ye2=i8Xrw-JTE;7yl|N0O?H#$(m1k6m}DGE`+qG!5-^ikKW=>NvHfwq zUq0tIy&-G{#{W!voNq@3ui=yKlXeEdR{$X%G+(*K`mmai<lV_6RHBo>@{NXXLk`#@ z*RRLYIj%Pz+V=|l7*7&-?@|9f>+i()U!OWe>66CNt-9kr`o#D*tJu?`nc%aXH<Zo} z#7YmS$O<0{-lGOxg2D)hJ*otLwm3Ug{4yJ~QFTSIUGt?IfkqQ2{+vA<_#2jMG&Wix zqUNEy;F_US?QM`R@{=gOkiba%AC+R)RVU@Kl9L6F_YqZ%j(Y=KV7zIloyvmS2ynme z)#!e*-h{;L3>5k!_KXn+M4CK7qmldhO|Q1_v3<mta<hGekxjSW>7;K4ixpKmv^;mk zi8)(xIH$Ww)qMRaeULhlpQF}~#>9<q5=uLxM1zPiK0~69BggR&_Zzk_zEwkX+7-N$ zcicm`{oY=guY_*?CR(ML*=k|S!{kgOC8ffR?Th7hE;ar7#)^f~@!W8BGw0^uo&9bd zgM;nr?rd)xzI%h0WO7APg!W(9W8Q)A0ok)MgLuRZUG{s+Wn&_2#BMRlYpcV0&_;BL zi<`8>!Z7oiyTwK&brsP~79IwagAHTdzNkgWH#-{n5o}RsKIa}mu>Q^S)24oGdxWjN z^ZUXn<E^So(fjWkym9jRDPOc&;)2~or())hj9@wqli%vL23S7`vh5)$e9b$5k9{vW z^c{jP%dj{++SqgWB_Qn86(rIG_tCm-=l6Y3&+o%;(tn>p_YO@KUpZdM3`<d1pQ$P@ z!vYW{D1bRX|Hd5j%r4P#;Hh8<Qr;eJTHwZ<=y5{B$oK+x9uzyN0c#HRM)n$$olw}( zF;?EdjKIME#V0(Nkf@kYK3KtPlS~0R<=q`@a<EldQ&d`8+xEt*`oocC&-z8!bY;`X za@pu5`>Io8DGz*nDvdy)w{Cl>ZlM>re&-=}jQ}NkiaO^2a5&b{8k<<>0#>dO8l%ZO zvdxWdUlS{w&Dd{U7U>C)66G4S9-d?#o!t$-#QTphKVUe_C}_mI1=7-2M}rz!)?8T5 zH!Q$5uQs)~j8bFk!$`lHV?U`DX(}$uP+R=*(2r={7t1u@hHy{p=4v)(r4kgvTOkPk z8mV#gG{2!>bx`g)g)ux3qh6^y)uFVB*Dd#?UHj!aSrMSwPAaZLsLE3%r7%V=f~PM1 zH~M<!buDCMG1SAG(r2USc%3SN{`?2PX{E4}L@#@CUz8SWZ4RqlJYgn?>tLs<A=DXp zl5{7;nvJlw4H)v7OkKa)z|Mr)GYR`g4>9=pMJ9-(KeJ3Sk_TS?CO8?RQEZs9KhkI+ z<+rM%>)JOE?SFt;g!l3zoLLtEGB}n30cAztx1)=|gx#(e2=972U?aT;{KXD<*@P7< z^1o_YDZP$$Pe0)WCmF9%WG-t1J=ybQ2kPnkp*wiesyOV^sAU2$(I!&W8jSveBBzP# zIRA1=MP@#;mtkXS$dGdr8mCB9ryjo195)jD(h_@D;NS}ir<ZhD?%mbx&MsfZjox;j z3RD4!Tkr1Pz<4>1C$Uet4$Fj1x%h<g%SSfHw&STGCi%tcz{>v#zck^;3CS6zb<GKK z0z+hbFV9S~;#i=WHR;a$cS>!4!yx9xuz^RMQW6mCmp%Ga08Q32?APZD!3^O7_jplj zW3TJA3f1A1xXWcK$&Cp-I(M|@Tjt_48w`mfE&h+j+?1+1Bl1dH9ls??NS=eq147k} z$fb`TbQukVVIcw7+l_`Qlh|@REg7%IjoQXDub&Jo4GwGr*-whfxS1M$wYjV*rQ1H3 z=LgtloR8fXdfr06LF5!H@4b0KLPI1}ZGLuA=Thk5fJo6^YRJnNZ!$|Be}B8>KDE4d zknr*Q@lkgY2wexmkGSR@>_REOmC?P{vHD6SPWP3ths$vLUZ~+h=+Yv9ZYg+>@3Vio zRdD#@OR(8JOgYeI$c%v<?=8cq;m;mpX`am9uRrV-7Sw3M;%*;r)ZUvDx2i#Z9nFg( zftvf-?I2HF0=C^&{g0Pqnh5gbyEX38k=^%=TiWsIX;#(V@fd;pA-AXNlHgJ_F(qIH zyKx>>YG;V88z2}GVBeyB0QFD0<`TS09ZM!?p8madIwknuaqfBxxQ!A$G+7hDieHF~ z|5Sw6NpHw1x{ohqLzgD@runxxL8hPM4yeSZuQyy)GH3fa`W{bvv4MZFsJ&Y=;uaXg zCEmD+iavjm5PPyr7X|B7+iQeOzyeJU7~e)MGt(Bk^SjuBFv89LopU|Yi9v$Pf)0dk zgN`-17T7v(!5+c4#ltj;_(C6mGXPn?48~oPLk>cf<C8@K_{HS|SAe}|$@d^h__gjN zp~=BJt0((?Cc!%UsHI+)!q2~v<F4vr6<=qLh;@BxWjs=U6rFT(u2O3Z!#V_{lCnZU zRc@fI?p`QAH2=$}8if05mcz>Q%Vz5u-6T<^6akuz-%M=tqfyIcMH*_1vP@a&YCN5V z*_3lj*$sJ!#lUawqtCCeid)&&&ocb;C$Ufku+oWRD@57+jQ4uS&7fSA&+qJorU%A* zY9||;{jtIWVs*;~{ovBp9QR87?5w65Ifzqda0B}?MdMtixX}~z<rqQYgcH(%muT_* z&#F;wjYc1X2=1nJ>6DhZ%W^l`0`>JjXXzUcpQMtLjqa6CA9qz2LT9IfdZwH^Q(TO^ z7(O08JXzm5Nf0z_<j?o;mBXzD@fASKjaMVpMsIl+uFKt~qYYNjW<*)KD@GLs-@cL> zF*d4(NPc6k_Z=fAd+AVhohu-obl7+`=(-AXnJuT5l#)Un+3~LKQzCqB_X~u_->f|+ zW-)G0ot#wRb=g4asnD(jqOHt)d;pU@(sXA1-kk)o^Er(|k%ceQddP7yc~|9#@dEF1 zf`0A%f2aHO7Fxpfn8GpeQ!S*{vk}VCdmF4L2tmm|Q7a7gW@O2BPBMbS0C$wez;S=l zMwUr{H8v5wEktt#WSo}aUk?uwq3FZK8EnF9--JG^YvVAoDinAX|EFqOA17V>a%p(= zkZ4~PU~j^4SH}acZ~bViGjkEGE~F7heyGiHZjUmk9{iVy%BN33BR^|q>C?Z?7oENG zRpd)ulKI;{oln4trqWUPoc%N29hS6NgeL80pKF}dK=-ElOG6N9+OM>~EX>;<kpxCw z>Jo>h9dBG?Fim!Hrk}Xf-k+()5%HSy$h?<=PrBA-23FMUY<n2$Xz42SQ0wF5=o~!o zNAzv-rCnUereK%+I+qXb1wI+pPF48$)_ie!aPe3&zj-%#nfj3WhvTch!$2%A%08vl zjt3OAJ9otWPEm1_Lj4K9{>CFLJJIZ<yo#(Z((B@|5V+w(<@e&1LHNnzZQgXo_4!EZ z2XXH$&mudoq9Y&KbNBPSfIM}Zr9AFX1XIBADAUo$VsKudg@Gop{c%hQr;z-B9lt*- zgZ?y(%eC5!@gMF0@zC<%4YU)KgK6&yE#<(1{i)CTiC()G%ayup{cfq4)$@>8$#b>K zzex=clU-Yhq&R$k7rUPn-iR+6f7z@!K6gJ4a!<+0S))!&gg}Hrbbtzn#Q6Fd_P15; z?<`*&Z==Dp;vJO3t;0k1n}+e>N-D-!ddf29Fk~n}bkrDgv~U{g5az_Q8k?h<iid=X z^FIg9ZG14YHj``xIqoX8^YhyCZ?DG>!c(7$aG2EA*FiUB_6y8NrMbyY9afXM?Q<Ys z52FB%l3KJA<09Ieg+{j_k|k<a=rnW>lOTbL7QAnhV{E0b1s{kTP89(!XJxsum_J{- z-<d3Ga{$cv9iGes5^AxQERd7o=zYGnfnez`(WV@5aij;Hws7i(zXfVe$K=O%vvPmr z<&CZjo1Y)>y#`~02fUYf7mu3x8=YzU5seJ8h!tj;-5-vz)n6jK*y?rKzfM0r(rnPz z2$h)PQ6l`BS}3tdjY6z0l-C!GhRsHXOiB$mm&1pf^qg+h`kO{wl1q)EjRiN#vDg1o zJN%PmEDk;chh(yk+Za-ox~k-^$zx|yHbITf&nj~CXnI6n^E2M)u&?XhH6Xp%9zx6G zzey&__V_Udd2Kh5?VCrO7N5`GYB#T2f*)YtpKGUztD6v&{&pllZfhi$B2jp=MoAYY z{nr`@zxll1^0e^L8EN-2(O1OvP+t|#C!%V%2cxeXA)eQee7SQWOX_!-x;mhx<^r+8 z5fwJ_Q>WmauSqq9DkPVLdeF^n<X$yygIQ^odX&oEJD{o<s=<qlxt00rIhvjQHM9B& z){)|-9<`32?1@wyPw)UU9BNy_xU@}Zp$|2MdIuR*?I}3!Kwm$N`th;@ar5p|h3?z8 zU5Cxyd(_yDg3QIS%UjlFnCRJCJ8n;2)%+d}>F>{qj_R0PHoR_Ld`k+f3zN2sMeWUp z{PujJdU5CrR<vo-%#en~iM~!OS_ik6lCoIM3@{iN>97t|5r{B<iX&6AJkE_LBP=^K zup`W3=*oCeQPra?l1pd}Vx+yoDRK-9j@P#AVbZ~l+(OW{7xu;A;<)oSKg7}pH6_Y$ zT)jeZ(Dp8ij|PwEp*YCH*@1rGoc?c@WC-e@<yFjJC*IRb+m9C!V}|$F>Caid(-NMG ziI^%H3eV3k3>jkx6t;GD6eypQsmrO-fn|3+NF0|=ks-~B*Ae(0UF7(YTBWcPiHd@f zNR3!sT^%l3cD;*95<9ptn5Hn&IApRm30!aTU)|M~qDz~x0OxZ~M0}KKy^m5zJP{@R zm=?&{@T3U(cT!Pj@=+Btx089wTIl3hM&CT}bnSn|xSsna>V9j7zvQQ>5uu`iiY-aU z9e6wtki&+G;y^@D6kIW&0Pb1Cp(tkZw>d#D=~4(;$_thk2(uX+7x!78oSN?$Ak1Os zqqm=wS2;L-Em8JOotb@);(tjYD-Aq<S6Yau3xT7J=~4}hwp<r95W9pl5PQE;Up`7H zEr7G%vGlq8U8dh?RK>`^@U~0GlObBo0Kh>$551R>RD;4cgsY=}<!UB_-w#&WSu}OG z;NVGq4LKE2C4io{!Xnu%4^K?#1kYR5T`QAI3#=cW4m8_#J{fG>v9?S<w9KjoNuK-= zO--x!n-ZD)BjwQBhgRU0MfBJw5!T~JpeB6AU6i5%)pNd~+~7<C&T;Wl@=2Z!{tc_t zeJ<#g@6QS*`|$Z2ro1mr0|+Z@OqVy#QyDelbFR#(ZyTrD*(Aw@gt)Ge#J#+!Y$ker z22E;B#iDygQ#crM*m~MnVk2Jf^DVLJbh!xaem=sz+Z3G-ED`pY!QdmZwq^UD)CkZL zJd83?BdAH5In7UX8Kgpjc_esf=e~#jQgUEmuXGm_A*mj>bt>v?6HoankS)m&(C(}% z40y#;ORC9Cn^x30e2v6|hxaWE{$>pQIn_d<D7$PlQ7VFZ0ZWM&b@xOPufuGZXGcUk zt~_;Zc=^tkYSUVQyE}dkf4uYCK@^i4QNn`ao&(V(*9rk%@?tomMmK%f9ps6Vi~*=V zV^CVb=<V($QIRg+b?u>SejW5MOk}>$(F*SRCa%CF&<DrI>VHiitnz~!-_5!0aws=8 zi7V8yB2By%Vu*JWnp+>bffX~E%2bA)MyA1)irvpOuBQTd>of&l4>Hpr+RxkpJYEy> z-<Q6Rs8nWUBGTp3omd$SJIx<<cC-N>ravbGkw=1G(SgcEY?zd$t;!M<uQ;1Xw|^aL zY;v}}sDJcjA2F}HU!;MZs*_eTNH(!D{WMq%E|MF$u*YBrA&`0&DYgt2ZF7%qTqDfS z#|Iy*m0nn<#aNg+sujQxmB$u`lbGnBfbffsNXjc_9go4yUSpH3s(zA1P;(doMsrM( zp8#a3p}^dE*^9gua5M3GozcCUWs?u=y*U=~0^hlSE;<l{XCra$eY*5}0MFDY1~o0l zhR11z`(IQiYv-*7fSr<kUAD?_U2`3x09R?MmQXL+h~5wYm)`%3L>k;rQBCaE<rsi_ z`!8R=qF>5GymoR@I&CI4C{n($Qsbh|7J<Y|0yUS6Iy~OoIIVsm1Ur7j*4q&n8S+x1 zzN0C8Yk;E>*NdCi#wIk!Vn>`spsv{fcgwC2#^Tt*=zI^Fl`E<iM_$CMf(l1NxInZ5 z-MV%gz0`=vxO+nCuPNzUJQ2V8%XnF#c2$IAKrc|nnqOXz5w!nB>a~b>%@@|d1a@*9 zHcIqCa+?WCKzLu$(i!(#krfh5|91J~^jG@fFcrh5AJa&?r%K&Vo(Y%0lgv_-{VDiY zpOwX-$(C*s9v9Mi?aH$Eb8ogWt7ZUS6#_OCx?Z(tW8lyM#n_8rCK^YtI*QD1IHLW^ zB0gIv!}iIo;$a<LVdi6bs;D3kSHPXNZ}aIBZ+u=S1C6px0jj^iC%((g1h|kpPI7~` zhRFf6pBKO;ak=@9it$|w&~AM1dQz4(@wF5D7D+jmD{zQs(vv=BLE`5K;;0x5$rf7V zm{cg_bCGdb4ke_!`5eu?8Vb9MFEJ;rs5s$Ku0_jgN-I%7UD6&1{ozk8^MS2b#U3wA z!Sh{ukO?6+C#q>O;&Udxbm(mZm{wf-$5CRafN|dV(RoozWn8ly`U;~oje2va93~Wq z3srhTxnJEDiiNsba%R3Nb9GIosWdI5HRdc3TDaRiF>V!p$wXe900D`5fiksc1s^n~ zM{oJ9E_9A)7D?98PVOMpJuQ(6B*PFeNDG#Vw?qfQ$gwtcc<XxvPFH%cBjj|Y3iS>? z`vgd`7m+&Nvw2cuNt(&RZD2#)W$R)F-HHqkz{dx7o8tbLngq7)-$y%$OwXN9o@4;Q zm>3ki<0mpMzp`dgWVA;qlN@z=JVc&yX?t3^HidtM`Ee=Zb<CM2wveeSdY*M6=H6dZ zsx3D!)`WU(uc^K>6Rzu~Zz^WzKb}Fsw6>9=CqRmCV5oNSp|~qFDf96%f5_Ag51l`3 z?;y>~*D=~8&|6VMp3gj*#_+=W>O!_;WWf2roaA&c#=XF`W^i$>J5)TsC8$^3iFlGw z;E+H$(NlunEW-?DEdGyE3c#0n1TVg`iGwP#=ccEsQy0jaWDK?kkw7k+HD-3n5VDN; zAPfQA$$innAYvkQlAW57G;0)Ts|sPxK{eKlw&RM*e~t<I^<QBB$!UGAN9fvsE1V~Q zR2|aoe%9Xi&G>h1?%e(61?2A{_SLEA^8~*K^s?^)8j1b(lNt+vmn8-a7xa01|2sY@ zFU|i89Qaxv&4N$6Ki>645`5#Z7_LpAt_iU7pj1H6(9WckzvIM2F(4jY*VY*yVzETa z5#`(%|EBibzkNxNRw0|zS@0~s4G0p1XD}*2Oop+-jK-AGpkdcuiH0PZkQQ9cwv9%T zgDKRIE9^nSbfO<X?3)iSbW_^AWd97t#DT6)>}Mo*<;F*fz!}Y3Z%^&kz@N?SPv@>F z)b-XsLg2O6K8zF^Bu*y0Xh1!6N7(+)=oMenxU-#gI~@Yg$4CKBkqN=}WtWa2@Z)7N zPYpo<P(>U)pEU01TSUf-<(Kevw|V6o*~F^|W6b{v+vr+PGUMA67Bm{;pQ`VazWVjY z_G9hf@Z+W1J6~Qy!?^ML@!NyV1*?AG<BdnaUFCm|qq^+}Hp%RdwIA85N@h(ZcT{8) zdUfA+N9Z1m2Fp$Uh~|H@GjrrdsM^Gm>WKMl4k^Tc_?H_NvezJ#MltjL%moXe*y#si zm~=G)%|d-RsGyvt?m3tTKYOMr;^cQJp_=$HkeEKtX0Fl#E>4#%-Fa=)NIj10(Qy{x z8J)$R#@TZt{d4v|Ljqwbt{d~(aByc|bqOLUiQ9gHdiCO9C{ZXd^`j7D3#r(N*<A!< z{7e6=8~voG31Og84(<Q>OI$DP7beYrstLNSdJgL4+cd`GcuwLwYuGE=;;OoM$Tqii z?p@|*H>*DOt18VI3WsHKj@SkWHd7AhgYC<fOzcG_+S&=v@Sq8z#o~qi^aM)=8B(Lj z(`BJ^UoQQ~3W7<5>*c<1KH-K<E}New4~*k%K@ooQQ7~kIY;GeLIjz}@gB2mq3YDcO zH+aG`=E9vx7ImDk(R4h!_%e_AV+K@-oN40E8SV7Rg#DBcd<*lZ1HQ7vR9yX6Qgh)F zOGCE*@$wWuupAFp1|SNqAc(#P6?u0;zg1rpllh_C#Wzx@6-Q?>sveJQ2Yh57MtCDF zTGF-L>FICUSI{@Crs4|3opEz=nLKB;p{2xJq^6ld(YkkP^a7VW_;#Joqm^H0Tjd6^ zPBmJK?Hz~(DDpZC^3MYV5-W;gIfO5JpkGgI#CCrDQQ4s)dqS9)n83Ga-OqMt{Tt2H zdcWfEv`Z%z#qoW;!`q^I@1M%OG~bWW;AA|H9Rcbuzct|U^Up2|Fkemp#7RHS&(FsP zfLtz(=y`x-Va*VDf84RNw=XiNE}~7c^E73gxpwXTwIHP)K2I(wHj_9S7fa`0>0E}V zg6b$@N7LzF)?qd1Znh&@C6f`6J=Wlmos54{uozE_94D<VbCgM5GfN5UE?COZ(U_y3 zcLvN~8mZ}_UkL*1%l*w2=#eo|InrU|X%<jYM;({ja;gKvgg5zm&Km}$q<<mJ;G-uI zWkd`pEXGGDM`_!;LvLX=JPO+V3<2`w#2y5`*Zh|}n&-XX*y~6+8&~%G{pFAAvK6+f z5bD>E6`R-F(o?|oWqg1=tO;91G^@s;rrat7w`g)BH7`%;Wzu`;>ApqCg)}W5y7^u} zhmzjnc%+1(=&Z3on#D-&!$y>AMVsTmZtfM}oNk0RqmIw4o*%lWYP`EwY5t75eERj@ zMW9E(RZQ_1Kj~mcNx9=@kEkp#0B4zdU6eepZgRd(xJcrMHig5J#hzU}q-dufKJFlz zULisJg(oBC5-C4C9k;%|xvCjIUmsr3K^W{#16no=JgFQ&yi%eN{I`p#<-%5d5ggoH zKtgPJSW$`JdMP>H15r)(lDWEU;Mg>J+0rFF=Dz{mbIG%41`ppT9yG%-WG0J(iOPNH z)+?0FZ}sg`Mn{2B!WvzF+XybDRRJFcAqV|96W79)BOPe2#J*cbg2>rk1e)A9kyxOG zcbe5HmC|#)1z0-XUXiVcudWrjV-lhBtVyj>f}dGc<SfNOUyu|yog~oUC-Mg^raF6e za$2}@!?pS->v8d+Lz3~Gk`(+}*yKt*Pu3S@g35nLpU<S%m3J5@IM0nq$PiKadP=Rg z8;BpzZIQ-Q(g&O|H8B@|R4+Y%5R}XuOU^a;LyPx)t=)4X1@XWmOVvCBX<@|m3Du^? zLU>ejeqC`^lJyK!>vk}0HYCL<$xH+URyUS53fXF<a}=AC8cmat&nrZ$L7do8hqiRD zOa6$EdH!hC7#);DpZ21tlB&mse{wX&cirCG6yp9AE3J}0vHGt$Q(djiM}-PHaZ!{- z5<ga6o7Xo~Qo!2=!W=_`JoV2Jz6CMlMJa|_&3V;KxWpC-aNZkBkmqRSVlf-%nLC#@ zWuQnr1S8Rt4V<}2e*I?&1VrjN-HZa+TmMY|he-WnHOi$N9GHmsoT(9@_NNM_#<RG% z_OvQgDs?J>1CxJv+}A0QhdSr=_ShbUlV$wAe;yTwhg)UE@xAz;(P4@a`jdPZJlPkz ze5G{_@Z{7T6vc~pATcR4BT}i-lvD_gQ*{I$Y_^ALlXgZQ!O(?)3!2;V9Nz2}EU?Ul zyy5dmNd%S#nmwUUTmokIN+ozP+)NT>JRvpc$1rw0GCm}~?shW|4CB6X81YP6eYIv9 zcgPtuo0T@D)cfdV&0o2u6k@WfpcMZR3KN5i>%=ljD7!#$Y^xI@;X7YV>XKg^0%sz_ zofpUp43cph?P;S^!72^Tc~oiP;uG1@KBx8Assdmc8DE$fJTCVM!cl-C^_*uMpUfN1 zCyg#GFu^k<__;&&!GXM^!M_dj;5#dSD}0OIxB13;wbC?v@6~HHhJedL8MKQ5VQEOT z<=6)RPVnMNX2mLS6E6Nl$~Jk@dy_&@KtSeOFETj|fL;|9C(s(SVJ2xl<4y60<u^Gn z0F!k;nrI|Tni?|h^lb?r2C0``b6&0h7Za5l9xEOH;m>x@qBes0Rl^o$wk?Eo=5oU! zxv4O?dj>+7g|Tn%$gDp<LXnU0N|Zd4r?2xL)H)wbD$qp26O#*>YCYVB?bCeD3?6n# z1P+<?wm1pCQ|y_(hT^FTA~re^jeJM-*z~2Fx!&8slT#4vdbRS(b^oNJ5Uz0>c&v$H z<bm-!nP%y?M6%~eu1j6;NL0K?`qvT6zn&-J3SIziKe?yQka0C_(~N-23aWFX*)w!r z9%@<=hc4dU$mmQ7;Q=*M$L<?xEO$#6r_$7A7omr{MyS~72Tel~PydnT(x%h|+oDh| zm@$WZWz`{!YZ?TKSgh@t$(M+nJWuDSAY3^J9W!=%ha}u^4tfG~d-_ZymVv}`Y4>Fp zKfH%p|9Gc9D}@NjGeMA0VjU)faS=?V(;1i_6%(}$?|5c-jvT9upEHcdLXWoW(G{iQ zKZ;yuLDmvE6Yz0OAPLq1m|T_6ay}hN%O2M_FrXr7)BS<kK{1g*_db7jI7OJ%S$#rR zeNJ>}dFX=QZ&_<=)#fZ;U|_O;peBjRV)KMpKDDW(oZu;iqIPiIJC@{Rov72EN>>Z- za&5mwt~@6rKKI0UzXaZL?oe-U!mG*Ca`3Ug@&mo;(OTb#Pk4r!S*KmhGS1;wP?bj! zX>h;}atSIYN`spmMWTSSqiJRQtOcP3=fK?gdPf$Ag$xP7JW9c3>i=s2*46;0jpYk+ z1fTsZn@kaZ-u3nMU(L-L)jIOY)Iuis-|;Q}X`}vmi~Spb1<qS{8qCfm5&r40fSSO6 zH>aszX9g)=GM+u0_SMwLJNh+~1`N_-#DJlYl-KBV%hi%-Cx7cj5`+EnIx&|e+omZ8 z9;M#=)OgRQuXnL<v1V9Z+MOzIJ4pT=E>j;tzv06OcOpx|MpMf2OEe1As5XcfMv~n1 zSgiCDmRTI#V1N;mC2r*?f~=%8X1118NA%%x_Yd%mpRfH%jBvXv*J@?hVc9S{6a_T) zthPi&^Y!lW@JJ{|THc54&yWlp;Pqs0K20*5QT4J@_0US*2yJleyDhIPpU8>{+CRw& zaqInxG@B`6NOPi$1R}AYkFZt60yS30?EcsaT>KZ+a&%Y*8$<@l<9}b~Nf|x3+128` z=81ah4-BP&k?L$FPZ<af5)RowK8yh%WjtK6U@-QtUX@h<G#zfP6&kUL<h-3%alork zzt^hTaGy#Y)d^TXIeZ)n23`CqxNpFSBEbLI?&qna^B{SQO(4l2Slb$UR$6c#$>LDH z<|=#kO@k5yx`}2wj@2+9Z)M~Bf}#&*ryaxO%Q_>ng}78or$c5wrxDWjLJ%`NUDxUv zutAKah#X@+b+p(^mcEsmcKo5nD?`m8W0<N&f0UZMFqKG@G<jIU=@irZnBl{@YDE6l z@!!~T_?)d>Zio$cNE0^op+Z_BQjE~*k-)K<j@Uc1YFBGm5RL{191G51tD^<xfeO70 zC#ip&pBw1BwWyhKtU{;snn1!amXfhwu5etmuS>&9>8fgn8Dpo0EO;t)i?DvY!w$SV zI-IGhDSKvO+3n=F=)lJxrz*4lR(<v~YwveTHD`o0L^a)?sfbaI@ixmo@6gb^V8~g! z=b^8l5yxMF1Ls&lUoN&V3>E9~LV_hZH!LFdX(@MhG^!|^49-cXuAMYL`Sjg~C)tCt zVK}Y;H%pUaUdQU-&Z@B&EsVkSBuhBtZp!syDb1E~kF$Eh*tXc%s9bBrN)vV!2DC!W z&N(Al&1l@22UxEDJ7KY{j@rRzpi#%Z8t0m-b3ahQW!4i18lNli4RBaFGc)rWFsBsy zcWS1=n5NhIm7>;n!XZ=0n^is;9R?Ecw<+%I%=15Q`_Tx{2F=aQu~N@K08Siw=s$ZW zc9e3RO3(9v?u2?45!Glw=$M);hscO->vTl6bXEXQOJ$f>qCi!xd#aDOX7nxCv|1U| zV`=9da#!->&Plz9Av2twb%qc~*EV7M!InF9+k;MP)q72@p^FgVpUwyl$nmz~u`^@c z#QSyEUzq?-6HSR|qPK{WQc9`Q+F^9!w0sWY(&McC@q^FF`fPB*5#aSDzG+Bf61Bpx zi!L};ynC^J*Cf&<BtRen-VxkAD$qB&LeY2N8&i@GBdKf!K3<vMY<&7Llsc{zyb6Lv zOKNNHq15Qb@xQ>IG*ZASrn8?NS1!L5qM3W2mQ|~bw$Z9URUZ_nK1S<K2X9As{(f(0 zkik#}B7s;g0@+{-q+OpU_!?h2FKB%Cv!1WVb7T*2bk+3Q-1^N2gL6wQ*Ynert&O2S zR@JF694DOJWkNhO2WAaYU4QFQ5&fxRVm@|0=>Pnw2w9nf6=NBO0fjJ33yLCekejS) z{&9J4T%nP?+Lf)Lx9v@!Sn-K}s=P9lt3Q@KOC3)y>KCCoit?yg3Pnl8*H?-gJ5$rG zjX0wE*+ldwi2B}AcyG25YpKnZ6r%Y@iXX>u?FJR#`h+Bc|Doxe!zyi~HJ;s<ZQC{` zV=^Y&=49KpYqD+Iwx`K8*>&DI*ExT;_qDs~-RpVQTKE0Ciwh+LqRGYbe_cEivEA`g zS|+0Y`t00{??QFpM-zvMnBLL>OzpH-HkZO)LqnTKu#GID1*^F{WC$nHD0GLZCBIlI zbVqXWf(hm|tr^aHOIePje`rKzz9Fj{I7ikiz5VGag%f@H7R&i_l$hgA%6%3#Pe&+; zgS6pSp^NOooB23RRaL*1bk9wUxY06#4ND<Yl-vzv*~5p+yTiIvjQup@QE=VLQQ17K zCG<S6;o^w-dh@xs*2V@hjN9donmZyBbb)bo^<-JP8Hn6yRY3vCzu^X;!s7u%W;Ez< z_YV&!qbv&iHxK|{vQ(2EI3?QufhQkUv|kReddCteWSK|iwzj4mM+rv%Ig%eQH!UqK z$8{dmtF?xsao9BLjl_TL;QnaY#acLLN}H6TS!;IYOOc6?DG_UDz1V`Qredfj3lFZd zsAO58@<m1^Db6xZ8GwGOZO$2|Ap@sR75-5bYl#_}zchRC%ReQI$@IG<yrFBls7-j4 zL;^8$zHYw9p_<xC<0MTQrT3t_ckO+W;?D!vEnLWr!eq(@*tKBh@A0Gu=^tkGUrqmA z`Mz6nY8X{?93%|}YgRTmE<Fq7{b!7R`_UW#g$q3BKETMZIgZ)+;mi{<B@7vi$IC6p z-Y)W2YgfoXd8x8)GhDX^o7D_{A=>x8{}4?xK1|HbZQs~ti+`S#55@5Z?sVbs7(>lB znEvp89?y4JkapR1g!Y`oJb1evy;uVc0qggDLt)eowXmz%^*xgD1Uw{XXUjuzLjSFx z;(IfPV9=c%*kOF<2?1`}llng&n_m>Zk^|Gc;jVFi@PFLDUOHQR-U*dHcdWKw>KE?1 zfPW>iv}Bw|)5!Z%vWE6qWXgw>ICpa2#6va>nHG{4(8#A;sstTQGwqjPdVGp%C*fFO zu7(oyR%ExEDH|^mQ&<#9C)t#S>fy4DcpfPmpvkdHb<#Ucfi}WK1}>j-88ne7f!TKB zIWnp&QYV<JgBPVKXgX)~E2-GP_ywZWms^jSayWmIzi>+!OUY4kKM5i)b-g2_(Fi+> zCH1EBl4UP(hw@@XKS+ZtbfEIw$};oDFZZ;^Uqq9hGqtnI$qTalxoIqdS1N_LEr%%Y zHDmj(a^o0uRyL2)Ky?0!HXyh0H_v+#KSm3wo&y83*l_x>OP^pq!x!s?fl_P*;}Qmy zPJ^i#p>W+V10}B``p5a<bICGyL`NehMg52!_JZTRAX}v{^&F{$Ocb)9WDc@sj(<F3 zdsY*6#@~ZJW^Fe+@j}hF--lgo#?UYUsBpGPX>vv}7}<ilxwLt=HOWFR;|l-q_S_eB zgZ}~ng`2fZ0odOC)6?Sm`uN-Kmv5}l=TEoGjbTKttv<jvIeRSl#Pbgfo~#^fIA$0| zFaii6{v||ZaM=^CXaV>;o?MSVIG7AtLtE|6&g5S`=f`LS)+PclBvOgNG9?2ux_oP0 z4?Km`<gt@tkRhs=)k)d3JEMKdHRlwXsD>=4F1SbZ(+)fs0*Uof2(0Cba~K=)DJ5@D z4!=R~(kW2~OyY&PTg9Wsmu5xV12rqNJ1dMWl{la1Z);+H$VphEEVvRIgU7>>`1oN$ ziG&0)Qzy+OYidP;ZjUk^)==dglrwCewx+U%Y6ffK<ogh@enwL90h$GUjyYj)#0x(5 zwE!Q8=C4n$=Dcjqn1geD{ocAF<E=|^YdWCm_j0Y_U%FT?W1C6;JrW6w2_j;JeBYg# zo7%W_jjOHgsjx*F<eR!LPK3WJLL;)rw|=Rp30u+O9wr*o8N;~9vCuf*59p;{as{<a z5EpP#C-wMmOr3C!;LYZ)IS!Cxfvi9VsKJm0^r2{s;2bE!1<Tc0R8^BQQ(L~%H;<Y5 zbJX9pDKS!4v8R&eC$bhS(C6@h)9trfud<OtVyNZQsysoT>e}+ZsZc%P*mA?rv8qi5 zkMEY@j6IxHB*gm<X<g1REv`{?{K5URjQz6ytaRM)kVgj3y3kFplJrifV<TbYbc}CH z{OfX_At;)Ixg8fXKGA=G?lqm7a2^|boX_;Pm>qo9N1n=Iu?@`WW6Kq{N}#;1n>8Fk z!=qy5U{hZEQEXp*h6`&^_*u*3MC60*kJrbP#{h4JXq7GjJC^<)o)M|yv;PuQ2;_@( zCe?oZ-F7WDV(Hz@4fNRDYF<fJVw{PatShzpAn$B#HvR?SDZw1;82j2#oX2X-<>Agn zv)vYkOg@6TnV!hFn1|q>Dn$q5eZdi+a$bB>7mNXOq$(H?SywPjE8LMT73<LGdbFWk z{8rk(BsucMI^qC8SO407J=#xY^CSUY`a^U$$g1Y1rY46gKsygS@)Id^z{vpg{9!!K zfBya*L~8W7Gb8l)jq=a=)U@(1xIr#YFh`QeCt0RMR8|(=dZntMw>R&fAJC|t`xn@G ziBZ*0jnmurhtkcINz+o)a|<fif+}bc9GM6S><DzYEa4TeVxnBJU}O?gRMb2YF54Mp z?v3?}0)|qS(PR#>fw`*6rZYH60_L#6KhuRNwBowr>kyVMn7li1PhBX~s}fZX8UBzE z1ML^Mmq7>Sji4S*tMY<0<#Q{%qG~{XA85>6C`dqADoh|LC!x`BpodFqlhZ7av~sx% zZ4|J%sv(~`N234b<wf?tcOTqzc3cQ`a9|K68Ifrf?ir+mC&_afJZJG=#^xXk^i%-@ z&MyjpUe6+0=y(-6fXfa>lbt9G7f~OtIY&xNA{G^IML!=QmIanl(We!Zj7h^Df}9B# zD6A%3MjDPHjbVtYx;HGdgB%{?g@P16HiT+G6J@B?Y_guct{TSPtKEx3_N~IA3DPtK zp4!@aHP`2E#4$JAp=<n^?Z8z+qGAY@jI}R;YvL}|<AY`UqK%D%l3nld-psz7t>!!; zIt`0#w!U=zwyRU_OzQ_0a<7}oty3dAjGKCGhRkFlq{`&mr@X4!ZSbz9t17Uygghsl ze9lB2QTnrlV4)!B@gU~Yovw2%FMGa~a;A&q{E)bqU@AmK{V7XQyFj*-teOimhS46| zHk?E*=v+3odpMO(*vk+nYZPMvzs_VWaD4ixQh`}2BO^)4U0`z6qwUT#74H9PJZe}$ zwRy{u9BeKV;!cDHDPFZ#@L)}#WR4+$ms}^f=kDJOMwWQ-GXX(~G`~!1t<4e*>Ts*I zd7PE&$~q;nk_wAk;1a2I+YK*G#|f5zfZ%<4_Z?9-jZxe>h9wkGp#g>wE;E+C18z!b zR9-$lp69(F4<LGE9iU-L5_*s;%lw(j7#s+J_c(~4T5GYzgU6)*=d2@_22T3iOcV=C zpB0LrwXn6t8z^Y#^)^Q`UFVMWkDX4ba8N{6TddfN<N<lr;=x`N5-nIagiEu0R=MFJ zm?O2xl|%u75r>4SG-(6akYD-6T1lvrNZGT7&Sr|yVV26c<!Hqk@Nl({t~CuNhbbI2 zK5#`j=!$UBRn5l6RY<UVZz1(R8bG-EOYrAu!SJQebr4ffhdShxLZ#Sc&8LMU{W}T$ zA|o9kQq@2;1K7FM9>&f-1v-K`|JCPrd-0$?V4(r^Nu3Y}#B`x>Vxp(^k)yk21bLb{ zT!7wL#7wel$1LH}>Cn0tH94!yVTyz!GfG6FfU0vQC>oR%uH7CGD+qO_$j@Gz9EMKY z_!i_1VbY+Bx)>oRpJdEWY^@7iaFs>{Va^zh+@HEM36CL<AdrPb?UO*v3`1p48+@zF zl)|m5F;K$qb`YY)m=4Nn&4-^>O>u%U_*1nP6N&=m!%%mhY{f!`y_K7oIWYOr;`^&T zwnN4vW2$yyWg-a&my>RXaJ-Tw9!K<Tr6+5n{i&^h%V@49HrU-U0nV^l12MXom^ews z!--6dVi_f==n<zEp?O-oh5GK<!~`SK=BVt*OK=mLYL;k#t@)+Vvn1ulHK8KSN-jl% z54W!Pt@Bosui{9)BiPGW0xqj|CK<m)YJa13ymE~-aLxz!T#7qwUZsQH;zw#&_M+Je z2R{mXf$R@?`NUqv)dw8{xP7PkA4FqX(uxZ-s`M)qHY~Aats}(VP=?agF`D|h^r4Em zyXvUc_%9{onw8z~C9;Yr@G%JJK`A1Nf#fTi)dYtA4p+;fMmKiLm|*2Fwo?87vFZ>= zgu<B|6xv^Zizbg=KnNPa{)bb&OR4n^0Sum>`$V4sC9-K|o5jDCaf=09(bxs$!~jTx zD9pqWt0)Zcm?M1CdzsL10t}#ymWz~;!=(Ri?g9b=_zr!bs@|I6O*&-YmDk!!bn&c- zsB6ouS;wvX3iX{SRGc-XwXFUqu(%4$T7XB<ar?)w2`L;S2=WC3@HETTc17~|?@HM% zm+ZwxuimMmuiTL}?qOh&yam(AKRm`n=red?ewl;^GKZ79*?nLZD@qX+>+VgMG`Y>5 zx@0GyY-q8glIaG-gc8Gvz`5Xex=|qp)a4Sl!X#Aakujr^aI9FdvrvaDsYSN6G!&cj zVov77RS#MOVTuRCDheL`N?4*HUwnO{L6D00`;`j)11QCFeP4>e1O~XX@5P~(TOPC8 zz$RnBfGgvXsu-G~#0unxUCk+%k;4?!i{^j8w=_XT%tYHofvG_(f9J6@-F_u_ztupx z8#|m;l7^T}tNq=Uq(6Rt#mL*qM=gc|Q1;(mJq#z^TKHQtwC&z7gnCR7p{K47nluQ; zMc_*pcebMEf~d7Yb;UyfRTeQ!M73}@asi?e`CNyXEVk2cQ0KLJFREDtBoU<oanQ@1 zIqT3mfUsjO(d<w=X@mqJ=Oe*=&I2BR4)-(&Y1C4_nOfGJ$XAj|W*w}GZQl-)6$NKR zV9jyX?Q4JKEHm{1+Wobv3OOU}{xs0;87NCiS2AICsLPOrYZ#wlifXN##vJh%B3Ag1 z6k>n+O`DUAti+#Juat30<ts9Gr0l3797p?LBm_pvYGQ0@P24CIewc{(fHwwmsM0?U zEGhiQmWwLKIvZmC6k=n<&I!(|`TQ@5w5(36tmTQZaaGVqx}eS@ZQ9m4kE{tJySGnc z(BiE<|Jh9M!=AIX<G^p6O_j9{Y_GDTYW;!jk|Zt49jib=Tlk`>Qe;$Y|BlQm92(gW zaY~117)?1xTt%!ZA}<~~=@v<aqr;a7qeF^dvWF@IlScF15P87}ZQP(a5|N$-c0|gB zxI8nMSb1%z(BUeCS033s#GS8cXa!aKo0ke+<8jOURu`s9fRi$%wF(ocYa|iT6WrJq z+G^F0LDMu{2`?|cyyqb*Ab3(Q;h~i}a!%{tm*QW43xp5$FO<ke9CGskSt6Y<fk5s< z4Lxy}a-?_^CX3gj4WaL|VIlRw%W>W@u={ua^(hlkUyq*P)e%dx0%9rfYt^Ru+&Zh( zMnqfwsVZYi+ljc6uq!OGNs}V`b=n_g;7Ae!EJTHo1R-LUm7$6_65ZC8;d?<UWf{nV zssyQ!&C4G;c~K>6tt7ax>8#<zABz^t6v+`N>YZ&?JGyHy`v((RQ2^1OsYI$uSUW<I zfjDbUU5QrXgb05GTgpfgG+1U%$EKi!h8Tf;Lp@=r#&&WDWkEVH8FDpjQJRuWSD!00 za4x)fh=h#~8$Wa0e#L$Sk{Tu(Og4~nB}wy?INNF-zdk#!@!x<HyhX?Ctx{k9_W2M* z3<&Q0Cv3aFn_Xp{juT$Y+ST!k?iZQpeWw^NiZcoeLy?y+^SBEK2Koj!Mj#Vh+rJwY z6hMJ%f7#9s%c`31hc%!VZiW=`&*VYlFpu3F9hHNU(3J(WheR0K9iCqwCy00;@w&Re z5|c;U{PneL%Mto@-F#lVCEskC6qv*g0MM1lVH#aD|DCpkTZYznn>Bw6OA`Kf2Vk?( zqcI8=PUIQ>a~d}h5ieg$oIz9AWr`)Z_NVxV8(@gpK1Ofo!~>KF8-8CMyr+Qn0Q+@> zYm0O77t7%cpHidQrP|9U@;q_fzfNCB2HS9cpbbl#&f&BNO;o!?*D6-GD?B$983PHG z`g{=z76O-|I!d6JLKIUNbFMHZ-7R;Qf5^Sp9nG51Bi2|Qe{|RHrHG#IOw&v*PaK`I zy-Idq*w5*T0yVl=t7dMsHK;WAXYhH=8|ZG^8P-&`-kyA|Q0U-)X9dKeG-KE*1ck_f zoGj|8jsfMmp(QZVs7Q;Lm_K}<jas(f`07~HDz_0>e-3Jy#R|XVuX=QtC?nTgMa$O> zw6Vg1iW*!03U@w`GXC1rgfZ8~mR!nr2(WRoKUFsxmMZ)mN94-LGC(R8hzwio_uP@R zlRvK0rd%RAU05&r6MSwoejt`piwc2KsL;mvy@jJ+ZJGhiy~f+SDwFSUX}_Thl6>TK z?GsZ`6D9EecX(MlVn=jN4}FF*JqVtGyo?La;ScMWM575)JQPO1iPa>6(YyMMKt&Q| z3>^v1N@2}n1(1Dof(AFA0a8;G46%GG9C>T^FAB{jQZ<A2yb&}TQJCnalRnm`{11!k z6XSe8|7{<ibeZT#$nC{W06t8OLF}_d141Vz5zJdcjZHVdqF9l-wk;&3rV*a`EgJcr zF@5s(8>UE_k+~(8x~3{}+h>6lc?)05J>0sMx_XYL=kb*3Re-?zYbqZsADJF?clgS3 zcP&<2LjCx{-jNIqr`^^VkYWo!5SV;UW$E>M_*KkGGQdlc|3wr1Bkuz-ED0}n$13!g zD57;fZ*D-Hkac!ui|RH^%dKr~O#{y1+e-b9NI;sf2#mh~1hfeLs4HVo(syBI@zp;G z4tCC9)!XDD^{HyTFNjk800d|cLy~Bk43CiNKg4>e_?7a-1@FYzKCr(&%I%NH7@~#L z#cSvusFJH=npQrHL<o8r>47U^DX6l4<PXclooUFwiE&EETn2s`GfQ}}wn><!&_NYs z)}u4i7WyeRdTb)c3EiNd1LptQ-k}z(7Oxa-G--Z0Y*@1=7ZztT=)0%$1B@_&u_~O! zj1|EonXV+^<oE?s5*N1rCUhH<EpqaU#n!NK@Zhu@hXOxNYApzV+F>0L4{1sp^%pYJ z6hvQtb8W5e*WvhkTX>C@mk-Eg*RTJ^e*-Do@nYipx|ki=GXGxwyGL_!&opiRD}>1) zEOcaxQ>QEaS8Gp7zbw=6#g0HpgDW5;V(&hcH?F}0m<i<o7s<FLX|Z(iwE$`UF+xEY zSrJelU1^yKJ#A5gS)WAGVSmPbfe-_t!YjV(p~t7jbAZ(8eHgQLc48iNc51i*7|{2N zlPG=U!2$f=2bL~`)+z(ipV`v$w_PeA0!o^w()+yn-tWqJ=#ZSln)jUkm(L+ycq%4{ z3^1+f!|LV!(^9Bed|GW^a#$D@zr76+Mi7dF4Pwpm@o~ZXq+<psFI<QAh}izG0UU+i z2jlCs5w+yUj9P$AU~H^&=e_IX4L?9lK+4Unpo*4`-yp6QD+i09F))Q!W69aP_D#&& zYKn}V`FK8~@EffBE|k;qXckB<rkNKxUTNE4X-Xn2x}<7g=FGHcHnsN`P?CMVT^(20 z>rb2Nf8hWngxQ|^!QxjdZXvPoC?5(OGUH*AuwhcLq7+z$ftaYfb-?hQSNm7_G3+2^ z^1Lslj!7xxevF1bgG#kzRwC9_DcNstVz&%b1hC_DnuN$`$9QGKDv(O#f#LS~4#72N z`Ty86Ww4o^{}S=uu9`>Rh()k<0m%pZ2Neb-okCJov-uh-iR~TpBZY|ADr|OaVU4hM zWq<2igE3r3$euR{za1rP|3{;v_<~>1>~5xh=^4!dArgL5qakf{dd+0mHJNe0s!CTh zl^Ob0Myi-Bb9CWZ1-!!lyHVZ{u{%K$t*&Pcjh-6gXQs0s+K`qCtp*M@KBaVp1sWgN z;uFrX@A1JB4si2RW@gtRk=B{v44U;f|E0cbRLnfn(NT|CoCrZn+>J%*5KyE4mdd8- zHiok0{`IkSbGJ!-O*rr$MfO7n8;`?0=`U9oGm%!6VVqDo3iE1_^7wt_2&z1v$j;R& zqr<4#`IYTh7_!eZ-D|UzEy9|f$IT0G-&XhD@6A+t>*CeZunY9HV9^h>x#85|KtM}T zby5z~g&36z@g5bdakNS)&LETT4LndNCJVv{C+=p2W&t{yrlbJ|9OQRFz~siLI}rd) zIJON~^r~BTCL*YE$7XW){*BT-{_R--G$O#{eE3}*Rh@#W-urQB-+tM$sR<+t0szH| z^RUzQM+sdH)}n*8vRa|)53#7^i;d>2hgp7k>`<`~FnM{%4)d9OT&t!z1NIeO$W#@r zqlSx@<EqCG9%r&<%#2439e>wz40p`a?FV*9gplHa>_^hDYoRPo?Sk<Uh!s;D^o8d3 zrI5Mi6p)x9C~<a%dqjX7^!&ru`TEetr(V<ueH7mdzqI#M(`@Ffpt&T*s6N7}eZZl7 zDE5-+?_TEH^Kk9e@0ndY13i1ZQ6ewuFap-N6{CnkTI0lhEm2)#*a80`cf|mTf&3~+ z0_WfFA8P=)mSH(PQ4t0w{^9q1yIe*8?e9z3q6$0<1JPvrj)($#Up6l(_TIakCjFoL z&wSKsl3n*cuZswJZa-}I6o@znXkMz3$<J5*6&&Kt%|`doh}aB6)@v6Tl4u-`mW=Jr zQy~7Q94JwXwVige$1)_Qx;WEU+sOd`zvCP&BdTf0W_RWv(dp0GGQ>aQz`=hXZ@r6O zFSBtq&?Hivb|#~EyJJ&t*OD{o^~cuGwC+2nV{{34l7EZZl9PS!$?8&Tu6=5KM-v{1 zAvj}kfJ{i>CF4__SA{RO_JcM%a=Ye2@S=+C=ZsK{J?Sk9K32-6Z{PlDt8fg$!sa(y zOnZY~?nbZf5#MVA7*gi6Tg`g$Y>o8u|AZguHE{$~vv%imH@Q<1kfYm1&(-@mv`1Si zcSvhsU`o5dC}DvQk_f$@(%N-hihSoea@BdCO`G4Dk4Pa->0g7O*%}n}B%&TA`eB}` z^)%OnDTa*<S<2W#^Z#0a%WQ|+a(u^oSe=LJ+B=0W2b5XcjTx_5AA)TH2I>h-V-#AF z?>be*ig0NjG&qzn?D7*%a~C)^9)?((P!kXh5mN(GV{GRsM5j&HOB>0}Z~+6@QHiJ+ z=<&2JlOZ#D6DW-G9q6p^Vs>4VI>?ya0l83#GrdjkH!U{;kO>NDcx3UU5a=R`#4wTA z=i~HD;ECm(hBJ^;339RQsv^Ovpc~i<a@=Gtq>EIO(Z@1uDe#k0ZF0k8?<l{1uc(p< z=Ah6;9Hvv#vI2=Cnb0c@rkf><pUM(C%Ud?efn=Ax1Dz*obQphTa=sN-!mJ0b;F4gx zT*RvM%Tm>EJ=m^yq{uRT;L1oB-`6Le#WG}T7r2IYtAf#yFSkv^67azmD>NH4xpU+U zEyJ*M?D6zt<r<*DB*TSQONb@PC?D;c6BX6+4zc0oio1ygs~5?K)MPB4X0qhq=;~%z z>uyjo*Tj~fW7DIGw=0_+?|mOw0lV=Zb_piOw(ES-2=`*h;<OiqT7X;{Sxy0U@-A9^ zjnJZ0`_h#@f)O>gu(u_PB&{v<IE7fzG*L(-fB(bPOCpU*=yR|1j{}La%)kxkCx5iq z;4GFZ9RH*IV(I-P`8NsU+HwE~D2xDgDkKCR%jxswIPSEf&HKgaU&5%K_l<ZegSLdV zwRO&|mHu#drc_Q!v#yG>E2e0j;~<cmu_=Mg{g4BPPKzuBi;Fk`1h71UMX{UI)ItTR zmb)#|aW=Y1*?Kqf;EsxhQ!JSBnoi9FxEKN%IO&WzO=e6Qu&Q|&bWv(^giQYmB~7Jb zs}0RgJHFkoeZQM2XP@lHOtxnsB2To@oVvi78p~j%6XQ<UWQ4BH24ZQW&#kVkf&h`L zo;OCjo*OD1-=nxSzekrHw-s1=J`>Iagam}37+q~SgcZ7#;wEy(3`NMb3PZD{30PT7 zr^SyrMKzQWiHx&}NttqIia#ZC{{eFXLIVUJz>yx?1Um3fG7Kn<*D)(Pvj%8NL1rMC zfZ5+hFyxG_EnsONh=3rbn3tw1@bm<-)`4^pxXoRC6-0%s&|<=0y}R(!429*eD51?M zqDx<d;FfX{O7w+hQ+@YO#%`BR=L7M#exFo>yKjVr<>N%ka_=tK_TCRiQL%!!z_Nrq zPEf{m8dnTmq<LbmByGXt<p?cxIaTIf-$6v(Y<XLLQF}LXrz>M2&Nmq39-fK$=V?ik z-#$DVp>@@5`Nty}?*WWhz0}K!wxI>gK>R|SpIn0*1E8~NpG4Ozf%!Az`gjyekk3Ji zFrURa|J3R?*+f^9|6oj1)Zxidf@d!#HNGeGfyQv06PC?sYjyMnE*8|cv09h<59ocA z_d&0{)agt`if~F4hG8%Gq!So~G~;`IoLA~{*{rHjJ97WjnXz?ccWmr6g7Z(;38=s$ zR;x0U=Ld>n3s0*WM|3oR8b>SiVY$sZzZ09u7G^L{T4)?Q4ke8@is1cux9%o?oc*oM z=Eru=%^;FW$K%F@`=+^2l!YA>F|ZE%rz{6rQ1V&9C>!f<1P&m>05#yCQeU9N8ff{v z<M%6TDFMNpO(HVAme`&4ZYJWEN?^0<RY%lqb!*{jtt8;n$QH~2K2+=Ttd>>Z!QsjB z#9F^{w^vi_;j!?~bWxp?Dd&kg@CE{VZ{wC9z~-(yX@s+G6<Mm-m1eV~IamViG#%Wl zGh=Z_PAM&(S0bV>3Z7lM@B`jSiYHZbd7#F3*iXlu%6+#t0>1aJ>5Sm9EwC2hBU9Q_ zgWLIwx-m`b6}6k70Y#JZmK?=(fFNv*s->01eeFZE*BA8P!Qiz(++@#-@y^F_t)ZO) z^a5^jb$+pg^|4W)!?s)oAm?D|ERPv{%$uBn&K<6x)kIYHDB8dqI<-kmGL<tN(GWgs zGc;JO5v+OtqZS;{r-|i7uBM<_`v_Y+F<k7#gc=m|?P6m&?twOpU9Icy%JfeXn=egt z4YYoqH7OU=q@h&(ot8-R+@0SI^ZN~hF<p2W9b;cDD-DK&&Hxm-KQ{WWEiuQyNHtZ~ z<hi-Eq}+0-YsR6(WfmPshOb2=mcGJRd&_yUIg#L3P&SZiAC3mT!W~kKoY8O1KfW)8 zeJE~NQ%^%-X-TuNJ`V_)+B3$xZCO<2?~BF6V)_;UMUC|P$t%&4YJ@L(UmQ}6A2%0I z0&3cTX$?4*MtNfqhGBDWX%dIkD65~d>-TCRp5{y=O%0TQy>^1xM#FPT<U~;xVpxO~ z=tU-tNyf4ssT9V~wjO6|Nv@at2iyXBHSH2wG+NdXsea>gB1znsA%p1Q3YP=DrRHgN ze|MR^6|G`CgYDlz`N$INT&>K^bNcQ~k7n7}QCre!1a51FQ(0VbM)gwIq3y5Ed4P?Q zor}vj+7K{r0AP%FcrL(7jU;f73`|qAeID2Ur3N&$wyqLr$Q%#wn9tw~{tZ9^6tBE9 z{C87wFAq*}?hjWHf;?f()CH^@CxdbPqKV|_QSzGB%#;#%F=|(Ycq(L>F?`gP|0z*5 zvbI|mZ9JYzAz7l`CO6kfA<&j9E@7ljT^jZ`VP?ujj0N7&ref25tP%6$=m}StMbj*B z(YNnY^&X|U3l7|-l->=?3eGeX#TJ)0uMZnHjtDFY%vY)0PGP6XeWTsz{B^Uzw$oP* z1kMd2<&J)Rl=}Tir1PDa51T!_Jbs5|>x7fy6DFQGv4Skge(U^RK@GVw5{yc!Yt(CL zOV4M(*z4m7PHOYZ>O(W0L?L69_jNMCu_54Vn|j*;d>l=|gb5=jO&3aJx+)I9XW_JN zf%VO;_Rd_zc^BJ#-Ol>u&J+UuO2*SxQace?K1WHGUEy_7o|w=Rej}k5eIqz%UFvbS zF7(_@O6}b3mHYK_GrInpR!2<_u0Js8X#rg7=}tJwh4+U<i|?g=9U7w)kuY)Gfd}V$ zlADr(ffm-2>fJvlXodhon6h&Bb&mjH1>osU&*9T0pn}x}*h_#?73AV|ve)Ff<6M{~ zw6@!A0U{M}kqwMfEk2$qtPWpP?Dz>W)#yb0z4BdtyRIdx12HkD5)dRz1?0auK;3!> zfJPP(ehJ0fi=+cNX?r%BXx$DaARPG*f%)gUY17yCu6%{J-<Som<{LIRVDgjH;{dMk z;YKLh)vOLT!^T%=IS!%{28eo2upd}D{?)3&6LM$a$PSmy_dbt}!C?eYGAMEB0$XUA zUk6Mh6m<t)*95KJApHX&a&LZLaVNoO#L{Oih?q=-;szAwE6cWvud9AB7ItO;!bQ2` z^VMb!y&Y@20HB@y;_3>p)X*20X!YPn0NgJ=c`wmXhI>lgZ+4-*cLe{8uUz>Gw<RI~ znI(!UCwQl6oB>;@ryt09cmR6q!%BVEP5W(L!<_L)w+#S<ntC_m-2eQaK=SjvB<M-+ zUs1qSPhF+MQ{KR_7e8&S)#uMXV*wLF&YC(S?DRLAFmoP44>D*58?-p_WXQnb_p-yn z0EbXVR_E2`khuP<<c#m8HtZmbakIj3HNW(}!bu}3Po*5GR1lvw7_0&Q{*fBjh$`%0 zyvlbkj@|dGC+;`I+QIix2JZ`S`(H)nh(*R=<sUrk>K$PzOR2;WmT*RY+?rS#yECw$ zD`r3*uZKuK6n?XUn4#2D8q>F1vyL#^@8Iv;rgE|I>rg5R-sLNxTv4WN<0Q*ZE1qvj zN2`oxJ8a#!$e;IZpe)!WxR;DEypl<#iX#9qT*NQ{^$+LBDUfrcJsy<fT-@`aqfF(O zzjlkscmd$)(kWyXeNLB&g~sk}Xdu2#;)qsZoovmT+S`(R^=J3#Zf5E3?!JF~^gO`& zJ0vc%!wt@(;G#(+rOW-0SQlGGLD8-}y#M<!pgZ{-TRL0r+RA+7o=i$NSeeU+gkq!k z3@u=+oN4UCz6q)+s*?*teuU7@R*!=!*hQqJ1g}JlcuuppL6we0%gO{q1f4h-p0_56 ze3kJQA}L5YQMAB68CfimSQ)!~zK7whF7Wg1q!=-yvQ*<(b2hc)Rdm(2d$TH}rG*nv z_MWX=eKX$G;%Zl<$NXoy$=E(*@ADAUChGh9*I@+;$eVom8zz+99LAojj>|+BS$Kgj z(=PmK4*+Nr7HCkLS6qWFA_Wqhy}s>~{7#Wxjy!E+pm0q5JGp6BR8pQH1N`MJ6Jb|< zV>E8GgkTdng6X;2$2YWM#0b7&SdNb{28eG27cSqkV{x~+Q_8o<7@*G8<9P*FHS>Y4 zKw01^H&0*S+Z<@GzGsI4qgVHyV{q?Rd&c7S=4p9)LzWfOeU~A}OSRb;N5P-nOs&X? z)K-7WjAM`Sc6qa{YdRupeP5#ZZ>Ao+|DYW+o10O!G~@^m85mV@!tA5kTO8(gD#Mbh z9OSpNt<~A$Wyw;QV3Ss>)S0mKdUM2NV_U>)B3{V;YZ>Wtm72VH=5Iz7E<s-WFO&<- zW~%gS(dEr^r2((o98;H~f?jv@zuI&%ghumqfJH1eO}PmVxYyI$t(M!)4_tJf4xh!O zg2v#5U0k>g!zA~cYfYawtWiXOarZoAWS)Rm+^CJfm$%leke|!?dyiY<kxHZ4{C#Sx zV)vJ?A{-mD|K;^;F!eN$ZNQk{nVekHStDY=p%`a!sa4u=%N9TUHM^5Fx~`V|@^xLo z>wdbay^xa=FU$!8%ZDqB2?-@8oNxnQ7z<Ye!}>Xbf$S*O!$^M>`%EB4U?_|qFCGpb z9zKTah71O45)dCu-u=}5l<n#3r@GuO>t5QKBw=_$Rr@Bh>pZJm`dux@Q}Dq<aCUQN zWC*~^ghDCuN8(kzz3rAB!t0j}{e6vQ^56Ue9d}z4_v>CrjcNol9rdArxS=_HzdD&_ z4)owS*Z2^4bFsEPMWe<1-dpUR_YHv1b6oy@-j}w>z43E5hRX<W7ijf9HXBB1b$z&L z=r74Xdiy--xZz|BM_Il<k4n0nFDxHH$#9X?miw6^6rykMehFsyJeB;ta!2xr^Ox1# zSsY9S@@*o;GiSJi9<%I>4zqSI8sx(3UXoSPU)PMupw36CSE5U==;%xoe;=^kl`5D? zsDQ6KVTI3*lw^<b(gukb$_FYV-jmDge7#AwKhzwzJ!|hC<b1vRF$-o7r_)}>sX}Ud zL2H%Jm&Sk8dfrwI){^RhXfWeG`Yi_N+*Dd~Uk(x-Oq^dGY>)OPr0PIPzlJA2&g7Fw z(`#AcHi=NdUbf@In|&`iFL%XOL)lPARbK40Rux>P>(l0{r)XlK*JRFO%6-F0j-2}m zBKxN1CVUD*vC-Jog?2UEku(%RHu@nhcF+_XDq0~HfyClrtJO>v<+P#E?j74o<jxM5 zcG!7YsVNu{Cf~dnI}iJg6T$F(M~6nF4n)hKcx!`Je{dN5(5+4cD@XVVU4Gwo76a~~ z8N@U90HOd{;e0`Znidb@(7~zpR4PD?J3*{w>MlM<%z3Fnqf!c22niL;5<TRi_CwNK zPlq>Fga?z9&;i9UV-pOWnijNbvPDvyMgjU7AEYtn2)oM$6u*Ix-+hWU1{+#A<&YII zBU}t#9kofx#m%<=dk$3iBtI5D8i|-_fHDv<#@W@C+Ym#85%r(yJw59Y#}um2j@rgf zUki3${a-JTp-P-@>hx%oa>S7cju#$6LH-d%6*(1$VDJ@MNOZx9xW>u`{aWWCU1){W zGI3FdYt|6zAobLd3%8I^sm+|GJCKT%5?BuL4Tu_#ub1CWq5p$Q+z%LRwqCj2nn;<- z;0jAysdX-x)G8IAt0N;YW{lo1CSKh;g8$%(HVKGA-%&};CTEwKvg5nxTN*)7^1~vn zH>c_NNP%t^DJaB;ov!+!|7RiZBbH&?;Uz`r&_C$E5fdj(qtP`{w3n7Munhrg>>GH| z33I-OeWk*>2}{I3cyQh)MMTDVz%kw^^u;sN``1eFV;n7=%NQ&%c`SV>NbkRNj&*t? z43t#41qH8P2|mYHW2utr{>e0zipYnzPp|zFh#$E4t&W?FNy-tQLhk|0<J4Wp0!4z7 z6DRYy2kB{;Oq722^CpiQQB!(e?G7!en5xEP^MHBbhQMaHio)Znot^Km!M+_6gATWW z9+^nGF9ap9va|1G(1oao4aA)|z@Yn^ELWPQ26-ZWciegR%1S|}9u3onJMn7Y){nKc z+#fy}<|k>wTK<<$c>j0O>B~*rw(l(ew=N^d`D~s|ogRsHviySN+5Z@B{<`&kQ zQK9dr*%R2AKnDq8qk$zL^yxUgr2G1M@;aeGTR(<~h`#gX%L<Q4?BkP6<eUBppg3?K z{V#mqmK8}rW!$$zd|phsEHha{E<mA|-gCFj^9-*=K*dl(ki0=U4Z)8_iKu)Ze}t2g zOP{<CU|ICujJWLX?@R|>l5sb2`)xUjbzUSY<Jw9>o3P&Nx#2MAzf9ECFY03H#Iss2 z1;aLdzV#O2;+_Ee#D&<chvwS(=Y+Uu#`8cJpb(7{d61hu+9U$)@>}Pw{Q0lzwB9Pv zx&Z;su8+(3*(Clq`V!O0>^6J!`Ii!=`R4#6gJ1H-195&+Bdt9c6rv4gh}~)Wf=2$f zTiI&&UbL}Uq81VC&ZR9$F|sC7TVm=sObr*==B2HL^%VhBxq7qL_I}X{*)O&D9!r~D zZcug@9Zt;~)~m1zZzVew0-|jNZ`z7>6sv8^CtL(BFy=m|blD#n3T)<&syj}7?4)X9 z#mV0rU|+dc5=lr(C#S6J_t)PgNb#xnm9skO-K0~Jh*rEM&;D8(>%c@bBu@rnh@iDc z1m*cefr&%Sl@T{YJ^!76sKz)-MD}nXJt+<5#r_RTIv9)ZJL|_h$FXGP;rf9K?zj-A z43(uBzMZr>0nQHg9bz|Z`8l3PIaS)g`2~}0K>Itvx(L+ztGf2Na3%VE8L#%)d&t|4 z79Q?9SO3OPKwsM&8<y`m<Q7I*d<rWfbd%nQyf=2dxoohuGUnU^SFn4n<b<(|tu`xK zhgY+u#58-cOaj~q9g<>*Kb>-z4u4iX7+YLQ$Zz;7A<#>RqiyUkrpjRpE+|u0s1%H7 zB_Qr3_eT%@CFB{naM{9R>D-1QBPI<ch09Le;D2mu={BNGBr7z#w2*kN8xCqmk8~yS zgBaU{0i&lamWR2H-@bv%%gejC*x;zNL@HO1n*B$EjqxfDQURt-`wmrXp#IQaAw=>c z5E#aHM(5c>5YvHZ?_Vq0FZZdq=2Z&0*C~D~j-0WoWd-||x>f`|oS)Z_Wlb-{&ypF< z%M>&@UbEY5-`#f8>0%{J{CTyO`I+mR#T^erAvR$oBd+C)!l#fcr+Ou+LRmCOs(_#t zMQMa#+TfCmprP*$O}jfqq2K8bzUu;02J`d>tu>x(rT0=4`ksDOQL&t^6gsIQlg8_+ zkt@yn$?N?bhv@K@&Udm@fiD#{gtF<(iR6>k>9BdC4FZyrq$s!xecjOrO(pA=e^*1) zGDyO3{yR4BQpQ>)MTsL`YkkA>IF;^-@NPa{1-Xob)eAuXu;>R%#GoTi67lrZ!QN8S zXeVf*bRQ#O2V%EgisA?-50IEUJ=jV*ubfbMfx*v91eIb2f->W3@Ja|)&E*y0yI2a= z?HuL6pG5_C!BVVmOhD-5V5$-?FKwo-+8(mMot0DCD58MdB&Lk}ZjQwEQdS0Q$h+ex z;;Z)i{i2KSscdXMsc6&Bo4pLg!}NvjCnJ5&hy|agdFOT0GGMVdPUs{Rvzw*c0I|Ju zB}yCsydoA{^Y9Nnkns2lz;;3EQ&;Y0C0koH+`<8($*USj;&P=5IlJb|I28f+5ueRw zoUhnm=Z;!q-2MHW>%92AjwelwdA7*s7@4)N-%HMQ@z3*W5R=FCuok+SwU(@LGwY!X zPJo@;t)UB<fiT>8CHnf-df6pB2ur2NeT0q+!0K`RWfU@pQrTvNO<C7!7%w_p(+S-1 zZ~5H-DVO{95mXX+!An)+!kRUk4=-LE4^&~e$%m)R)3&7B*GCvbRxWeE2$Ij3r6Ylt z%`~y5?-|W&8lx-P{LG9<oc-(ju}Xa1@$KaLZG=L;6Hjq%+`+bc(pRY;De!+m|IRzU zT&nEibC<>Ldtc<oWp!meAF8E`*+(128b2hib%&O*uqI4-C03reSfIQSCCrD2oIt<9 zIj1&tbB<?k+F#hsbF>sUr|OVNJb_)+HV0lU47N!OS@M3bDLwrp6G0qau8o9l!LHeQ zkUehpa{T3tinQg$)Z2UMej)fJWhQ3@p*9lySLj+bl6<XLiZQ96JKkK&nk;TI6rCTB z|K8fg&L`2IGXohrVt%9ggvODVICfQJFB_6H;+7t+tLXP%POJtR)~)yb=0<V>^l+8K z;DfvnccX9E|Md@Rz;#ioyM8R|j`Q_vFM8m1)1gBsR6f)}fg^$M#lIGlK?qwD*H!#2 zbjY*o?Df5zQSCCm4viEl>%jNT%ctQ~=S&<<vjQ15<*#1SKckj45Ps1o_xD@AeI>+4 zAYQHeFg8hr(tqu6i6(VCSbUDRq#)<)FGEnGG`i-xl22yAKJQEAj!>GgK5NHw>I;R& zYMM832~A{VGd)Ak)Uzv=<f+q5hCcBzwGtwHo(Gn(8E*pFy}bO>Ja4H(jRj5ha=H8w zGc*6?gDu&_`Kp4%0hbxj0?&Myvi9#Fod6N6Lx8y)tSyCHdP5=<EDs7z9Z6W7qq8!z zTdj7yr1^V){VOXH<SnEDf2?sdXO;dJ>JtD$Mx$ymlnWL$M2kvoDq0Ru$*iFIu}<L= ztM;Z&Otwon)cBpiX4in7Pd-<yNF7^y1cJ6WB)(0gAYLqC4Z##n$7}JUYA4=d{HbRK z6dE7l6b#Pyy=h4$t2k05GjUK^n3KNaxfr@IUQChJa8(@sc|;uRE<r_bY<cxF<SDx; zIPjFB)L}10VJctDFj+)48aXLFe0_1_$J6`dy;L?>6G^_%Qba}V7EoeX>VPL5BpJr@ z*5v;8c#&Y(gqbA(vtGa7dE(8dU{>n3rxd=K_51bn?XoG`i*edKPXK6`SWqH?JuB38 zujl=?_&2!>(Zf+eiJO+q1)ueeHv<T!)mSF)fFA1_N8hyO-*J4gTm8^T`cul|x?qYg z-j}B5J+k#uyS2XJPe{JZC+!WgsR(ce6qOo{H*3ZTS642v+pjV92%i6K&i99YL#j^h z53&YfIL_7XY*aRJ+s#?X`~2-qwd<=l$$7;Qm+-Lb?VMg-l$lB0_0(O&tEXYA2?A}g zTneWa6VsIKPPnN5(-7q6gN)XrynO`%E~#Z`xPjZD#6b$3wct0`*guW4zfSKLp&Kf_ zVRG*bm+Ej(C*t^(i@Z`Q&xY2)|10D1vs`aL*`he1QAz*%aos6GA&2bcb*kTy4E!R& zGN|OSl0zo&8|nv>*oyZ4Ba7di{iwwOP<gUMx#?p^%NbT$9<vn#fDmk_P%u{ST>jA; z1b>Z^j9C?_>*=sK6nWfI=ld-oNx>J%_7ZJ=#J}PD=rFkY!5o#4Qq6y_u)F8j^oEJq zpOt1_*m>16iqz=Od*wtBx_dpQbf-+5iZa<`=C*<GyD-Fw0pyhS=qlRUWAVii(A8~! zi7+5mDO8n|HChU$u}4=NKylzqbM7h^rTMVgwccGTT)p}C0%0U*Mg<>YE9t@zZpv#r ztNE`q`n!62-WB10d2%h9FRT0~=HT^Wj=CpN3tLp79cnE*5f-|^4sVD7qOP3@x(lvJ z9+}yKMQ9M>xTir`If4GUxR1}u`?KCxzq$#UlQtmaO8tGi)OKmrRPCqov)=R{m>OqW zkp0JXP7WHJ=hDvV4ZRwEG;-!Ca*zcztQ1d_CJ{#RhfPrdH6cFYp>U{l1u;d=C8ls{ zRwbw+^z~@KN~ev(RMp08qWwXSZbTr9fi7)S-!o3`cmOt3wTo2R43Tm(rv8wCJ4a)n zUhc2o2AKu6x6x)(hDP<BJZ*Z#pKWtur~)cA&`u2`+MgW(8M`ljL2K1teR)6np-%&( z=xlg{Ekka)zQt-r8PPxFd=*@I`EW+jVAH^u{$SAU!)o;7X?GUz9$DDgIgK80)GlzU z(KvfP$Uwzq3aZ55EgMPo*f|`r!$l9Fv(_ChaW*KAgg=ldz?C3Km@9FL{)l1mkZXzY zBJ_;)BJ_?`@Vml)TtAj?lWU&{+mB3BTe>=gM|m~meJl}oH%?gUZiF0tUDP{vc@lWs zqr>t}@gnj}^-8T4c3~?+;Di~V0!4Rw^@fsF|6!((BWEorYr<gkZDprUQE6Fn)OKrR z?IIM>AKcD*47I4qB272_J*{`nZ5V?++X2ihj3Ay{V#4$|&GIraUe}>N-lp)fCDT3R znrp@A*Y}c-5xjXcN(63`1K?EN#L!ssc7i7Aas`nMjs?Cpz>WODnS>-$Xjfb|rcYFv z(LlJZ@czE-Yp_S{;PG_J8rw~?0Z5RK<Bc?##&svOwgfcPp$bxeX6Z=FsErN)u%JH- zJ;?S>ZYcMsJxJXMj;686N9$H%q%T*tgQ)yBqKJ%kXC--gsrv8<latrpue4mE&-f|d zw}fqH1=hDK*{i*v`6SA2QFrF1l&h}BTjd$Ed0ShKUiWO*R5ayXby-wTzel!YeUccn zSqTr`Kk;GwUtMp5?ju$$sa6)k3fbY?UF-5)gFQucJ3s*39q~H5i#FbL-p57VDAsk? zVhSWzeg+QP!fu1THyO}h4b2K1Kk9b4h~=-Hk6RrN_cyj+sE0w9v*#xUL#ddI(#VVb zl0yx8^aO)vX#9UIfc%cU2<#9iC6uQuj<5SB*+ugc9?wbsH$~b2WSM;&4NL62pP)~B zrtM&AzP0Fy6I$$_75xFOu_jXPwW<RH+iv?OhdUG1T-$x0vY3mhwv;Ob*xHmQlNNr6 z6tEK`O&k~&s-mTkl>~PpuoeK#EPEwvpx&qHtNYXRGzSwSJ1_oYd{>FqyK)Y7A-^-) zWO+0!#i7bMmHaUyf1skn{1?Kfs${F(?Gt!?h4%IelNQ<vIE18*)O$QSzP-Di+OjXc zzlJS_L73++WzR&<x~2mQ=+bFgT6)H>DN$JrVVoS+%VhtB@9xaZ#)_F@RcV}!DW%1K zGsQ`~^gxo6!FjE(hBzkR_{I{?h#;v1f2Pxdko@N@J?LE7x2xE>+-*-^_3Ev?SS0g< zSq9PZV`Am3?g!4?C!PL1v4%@uxa*9Y1s!Swr>DX2!$hQ9my@vjnpt%|D*OoP1o1@M zr;RabHOmC5c;E^q>SaIO<+lW%Hgh<eGxTRHBOR$K(FnYZ<X)j1utL{NTQyt$Ju=#+ z5p)YgX%?Nf)@Sh`@1B5`2-~i<t6`USoNB~j8MtUhV}v884EZchCB`(Ck-51!VL+fL zLRG0sJHNZDP_IdzG(NYqqzdj2$!ran(NAyIZ7@r8!p#yP9_>z^>_kYn6wt*1gYW$I zwmfH6Nqv2S9ObuiRhe}o;TSy)1qGxR?_3>54e(GkaO(hp>}Qsa-lb8FRlRTDjB|he zGHX=~%x}J_Z2@5obGQlMM4jf8)`!E*(PV|8WMr*hXD%N{rtrabd{qskR3cUnA2Mhv zq~__cMbp@6i>3%89NCQJiS@4OXE-aXaEr&RTZn?DYpe`AyBTNeMy_(I{vHL&BBm7D zihrYkf1gVB{88;*|1|K!B-5!TPWs@7F)VehN*M<Zr0okn8x?1x-Q=X01r?0$@*|zt zrBV$-^ky5PxtbE*=Aa^^Vmm$}RrbG|cH5n+o3iH#$!kqdW^Ud)#Q0IZ&adZDA$9in z(S;`XZZ&!NlL$0j^;fdk{F@~eXsIKJNg}TckiD9(RBZ#8ez$}4Y2cE7J?s0YCklBw zW3X7;4hNkWuPOcVGTc=e?BK{duq1)UaE93uwWB)5;_*UcR;@Np&G+3=Pw-I_;Grzo zPUpRCtu!uM$JklPglsh0d!oq`y<wZJRPEcF(Oc|&8Q?+Jjf??@`vD~g>E=+Z@;W`R zw3i$;7dm%o^yYWEdEBJ=+()v@qb3EW7EQoH$!w#kz9%FyWzt30n`L2M<fS0&<m=;F zm)<EcUg%G{s>{|3$so5US)0x%kWp~j53So}pE&m%p@85e=kxB2xPe%fifOV)Df#X4 zjMVpboTNM(q<Z&x#6R84z0j)O&Vu*jo}|2^8^{a&;M$dIFbbJ$Isrry3*<n(F`n*e zFN!4v;OaV@<D-OlkG}fX>aYZ5ISp2z(x|w1C@PdKq6?B^dYGE<GBl`47D?hZu~_<N zdl9|W2bEZP!@tKD9Y91KK;9oJ)UTl3^CVfH!_MF8Sn+p?=Fo97xo^jc+Rw~28my)% zwXlvNhEG>5@^<v-Lga&~i)c23TT<1v;5>Nw{+^G=zL4v2(NW)*;W8D!5{90{<d%>f zK;-AB7%P8}9?fRulGS<I{6r-&A?3b&SoL6-+JdILYl)IX;(kLe5F8}rvhY#YhGd@y zQ&$78Bn($9ju6SV`+?C&$L#vvxU5=VZ)M-t?n~$n*TJSd2#1O!=CJ}6NUZ{T6bKSy zFOeu}LO7=Q{b3C>KgHA8CTai7aMPAqx9as+uy98Z!q|e`X!}aDR)XR`xhi}-|A2gg z(gj~i4ud9RwI7$ShJF3$vD-9&7)h>>UIspb+h4{*7*=h(?(9AUUt6Lw7^c)G%#~!* zm5VuWqrBNlxA0yN1KT#fc&f>AaqanbGI^q;qyFbTXZqOd?a^fWRmXYT(~j3a)0zy8 z+qSF5&g)96(-g~S@u=^$*Y07@+tnd}V>$pp7Q@&oMFP!+gHSU-Jla3&|JVCn2AlbR zD_V9Pr<7L!xe#zrXCRDVf9Jmu`}1=<q4)iWY0GWX7LZM6udJv8oHnL^Kho0DQjV$V zYnm`&{Rcv&2T1U2z{K6-?hk0}uxW+MchRw5nqQ&F!#RLJE;41de(*lSj)>_M-;~v| zFct(C8d-KglaWkcSn8pq3fj>onl^3CaUmAH2{1BI{k<_2M~;vl0^=ECza8DoBUZ6E z93<k45iOWUgSQgto9BP(V6fDHLr_9_iWR51eW4U|+&Int+z$ij!5H{%bKmVmL|-d3 z8?X3rNu(!!v!<TfqKyf(!p6ADgrPQYRAgGmZnnjgWC)uf_uFl8UwkUlcL-Hz3JU;< zGDnhx1ut99)*u+m3!+!?-^K`>V7fK*V5JZKWY-c~Q+>s{&pqmYJw#?}cXX`XGkuAE z+52VLP15U474N=7>E?N$NUc;!<Jf`B2SR=y^WEXc!od(vCi2@t`Q9a@<NH^n4=GCq zWjagJt@lF$-R%dk>EO)yX;k4DquiA3=Ub5_kbD|}meFH2U3ZLR#${IpVxv+T``o5c z`EQD9C>^-nKw*nbHjc@h&XMEGOB;Ct1YDk+J12P{nFV+uJpyStC4AQ=6G8t&(>Vs` z)wW$YX>8lJjV28nt8p4zjcuEaZCj0v#%gTa_P6tV^UmD&OnxWX`#R5ct#vG<Us%?T zmXv#}nYyoeFR1-8m0}$1Q||9iN8WSY6ADcje{g)OA{g^tRyHW7h}b;N_SkcS>z^-2 zN~&nmr8EsCQMWlP4_i*_q#|9K)lMjn7!I-pxqT@b!&x!`v`2#(3c`i!kgvAK`;OpG z4P}*J3QKc<j0>6y$p(knd>>D4PXE#z^-uX23U99=MH3fxw^1AeEiXZKmlZn9>`!Yo zsi-}F*E0pK7FE6NpEVZV>n$zZLUQBC0<~qtgVM6ZLb@8zTNTl<%q~2S^F|`NY~7*W zActvjz9<A*O~R3gITPeMsp;j_{#FD55mZ-Bd00M$vsKkKF^>Lz;zLpQm_*wwWJD1u z-*VS<VpWwOSCtInrk?4=)~H*4!wV94BPr{T#_vCv`go$jgjj+Q^~D$qjbSNiDisHF z8imaFR=FUk|6Cu<LhvTVK#7&hXTmx`UD6_8{CMXT0QFTe$4;GDp37ApK|S9Ho<OFC zmGU5_2=!=lI02b@c4${3R)v7P-S}hYWZ!Tmz<ro#=mbki=QHUq`H~1ml@os|l;6?Z zxHzH>j+h=V)ukLK9@+etjzOoMkpxA^5rX>1@>f#^fmhsQ4VFMkK9J)0LhBN-isM%7 zb^$s)UET@z`yaUqIhEF=OqII2eeAgHh*17PTC)J|?`)3`z~jmbzOe%xlKg;Uuo!4) z#j|OT0~+HzWB~CD*cGz5qcu9*Ie@tK)_L2-{#T&K_sLVhSQW<*c!r=pL$XRuNug64 z8<S)){JozZ<^-A_Kp&8Oi;O__!J=V|nC1BM-AT*ib_5U*|Lj(;P_OkLW$Mb{j^;UQ zn6((m9yVHRcVhz#iX!fn$E@GP=wxVuWKpq3EQ8(+1Q&kZ(Bb02Hn9I`CP!O75`>uc zvZUKONTfpZ-S<0d;lxkU94zr+GT%#5wx>2}k|(tZisb&w%iM>a6X}aGg4uLS`>X2) zCffDnYAp3n1lYz&)|z_QGuTmH3QMpku^j6DxNg7x_x8k>i<Tg+^Ln-@1dT{WeF~C% z$Flmugd9m`RJK|cdBb@<t8L6|i*=~7;~P!&zc_yu!V5tHl@^nADcz1JA~z@tQQx@M zL`|ki4`L``3SZ70;GSbyqosffmJ23tp^e6c8P`D^bUFTM;{`B4Xgj~~*)S*c_@G^O zTIhQ5`c+L~xo~}bHMD>Xkp}^n@|gV*c6QWL^)vO?g0=PGylQLL9Yd?nW1r*8F5fxv zOE6a~-!AeWp?>q9+8zu+zvY2V$i2FAnJUtM3?N^o%+0;rWY_QA&c>C=+>d8J!G8`r zKUFyOURZ@RPeM7@$GCkter?uKac>!N)e@Qa5$H)xKVHTBaJ}$2>e|B$_jzage8asS z<}<F(WB)ag<os1|(hFz)_Pj83FMd33`iO=yhR8Q{AEDb^;pbG_h1PjPfGfveYohgm zz*X~PNVIZ%)CS;`c_;apG7}DuW<SLlDBrIE8eey$+&wIN5ev&lzs7JALd!&T51Y9T z@%<%qCGKar8cB5Yysz({<Ods^dU~2fg4JvBZyB>yhYR|G#?;wNX{g_-HT9@e26;sE zhr|l`K*de!w`$UT5{wZFR+F#z(<SayC?s7P`E*H192B8@yjvT+(fw)*^;sX)mlyrm z;p-;(wDMJhJ*w@A?;;B5xKuT+)n3he&mY^DefzOYyB4c1mX(u-CM@a=QRe3K$kS&U zWbp=upi^*aiRjo0DrX(u2HJOjl!)bgU?_BSChGN-a%j1E6BGB8YbAmrHL`RnkE^ew zR_^H?Y_bhml$^Woebq)5OwV|Z-9(OpUOO9yESYpFSW2B0pQ#~~N5+(n%<-jr4fxUe zkJ?jcLlYAka}#3KPr9iMXQqhMlulMUmDhAZ^j9}Ha7AgV_WmtZRKkjR2GMt9pBcSI z4rb_RLVR;hv;Vc#$Fkt~R+9XFp>i^{?20@Z6j`(-Wzf?+7K$l0OxfR0UIyP!y(hX{ zE{;D0qQb(0;Z-gQ$BByM-EvtTx2Pw)4_0B3Qm3k*UR(_I33^E8vd-HLa`^5r?ha=? zirrUdJgQ!Af?%5Igc(BQ-3-PY9~gkh8w&VneRi%#nM}Lh?xj;zt*xzr8rmA5re%3~ zS!ocz8+b9q*A;#VRi?-Me3bxa0U!5DbtlwYWzEJoFgr3P@3h}c820!>03rK@u6L(j zZD*Wv03>mFWo0(Dk30GkJNG%b%rc8tI=Qb|oY7f&3HH@C{c64vCv<y6an^0%i(|ni zKv}6X)VCO#haZCH3~V(uodq@LR`}YUoY17eIGYh=X8BiN>T3#+nNI~(|3kbSUlPa~ zY^rL#)xwd^eZcU2_FqGk!y$?WNG`3_kK}I)Q;VyER~P(o=~ZoMb4>TOC$HjxSqUWA zgY*nJlA)pIBkWTt(}x9-iW*qN8f@B69-UA_XLkmvL2%Oy3=(R|WL!U8w9}@4y1Os# zI;E%xAlXIs*Zww_M70kg(&33yTFfGBWo-7Xf@8GR_l$}n$K!gY7v!DGUrv$<`7k?a zdp-tLWW1V{ulJ7a*QvzPk(k9XRpvCRSGap0X4DX7_Yt_NpY)%%dY=k8?A%2Kq!Mzb zj@=(hL+k)No{UlVAh}Z+Ob65vK&NYC>2T|95FC46Osii_@DZqPZBz%C8+FWE;dkSL zl`pi#E6OxOe${ngL!io12Mvl3oB>#!M{gJMe3D0<FHI-7S{#P>-|{(3mf7oGF67^v zcNCURH}@FOA$^?#>QenRq=8)|ophDdKb0jwQabq;$BmvWiWjtTYhITd8zqSP{5<pa z*zM7;%e$+!fOV0~l6DIV((8kW{YfgF&Wz|uPe^0<tDDKT+j6HQzEkGgK$ycOPF9ao zAz(v;ACHG~)PeN3+u;<J)__SW3dY9)lM@?&JMj356CuyUltw;Zp|diqwZV*Jo#&|k zZ;St~yx34d)E|us12qiFC+}x47f>}MyPzv(quU!e2wee&Gb6!_w5ow;*pL@H-fATg zJGkA(=H3)khjB^U!Sm(L^4n2KI7;ny3b!U5)oB&kkWT$bX0nBEpXKf*xMRS3nDSA= z+Z)yS$`^x<XVn2?g`#PN2h}AVu+DHO*&mrZAX&WNDsJ7dcDPcS-w9K`5QzjLoDzq< zDI6~cPg6Q2iTus!y<=;T&e%j`-dsr_x1(^BxP&7Ebwa2h8}je3@6MAT3tLNqZnWlv zz_7i*;3|!T+5{DTh^Pvm{qf$SV%V!QO!WrtJ7a#YfFS@KrjEK-!WxDm)e0^i(Eqqr zK9aBGD`Xxu6D|r<D|=Y`mXJsh2R>ca%T9QF9$Y?z&Y#$TyakOyl03@dbgZo7x)qdQ z*HG!MJ~vbaoX_0RsRCZSq{6l8qN0lctw<dh;s7KhAPgu{qfcqFIqb`9bMN;+5gA={ zJjnT#ouB{uthaVvcQXYTUy1%kfW_@IEtwz9OKU6<q|inDZ+&X2`!fR-&3Ar?NgJu3 ztnIu7{HzD45P)aaFp?yk^fSirtNltGk!Ke<%l)_%H|LMes`gVNe7gF4$0h2*`($Io zpT^(A`^b~5u<(+GGGzf-^A-{`8W8+3lo46TnDXG2sG7L;yO+FC0>i%43iEl>>g6bv zEG?LXUfXv27j=9u=P$vy;svT?ZTAwgTZ4VfW16}l{&+Vg6YF8xnCF17qib@$ib<NU zK<S(0cSUVRhfVM!G^dax0wqEfv$DjX(3+wAv^i?USsgu&?^@!ystr-}uwy$My}OL_ z=z=N`Aso83wl+R@;x~E%w5ylE(UBc0gP%5?zlB-O*$7?8KguM1^*SxK(ug7)=Z`Jy z7C#wQ$f9FXTjpRGASJ*=<WWKQM*;%>ra$Pk^F;|DYsTps;T_=3-F(EUUnHuv+R4$d zww;Hk@;Ibdy;#)Qfmp)JaB%V_v~_KCfG<>nRXZ@J1X)3tQ?UiV1Euzle|++<0K@;$ z7@H+u4vP^If9#mRi=Iu(KxV!im<7G;o_&M1-2k2aucI^L8=B%Nmp+7}CbM@>%C~*4 z0DraN<;Ghk?KJPn(+;jBuY1YTik>;TH4i3)_s45Ad2aEf;tmt%wZt((4|osxE4E2J zE-T_TBgv?5q`u&Ooy>~tcf!O|K-`23(@-90wSRl@0ZVi^t^74Z&#H%L{iAwlW_8tf zu|EW~i1DlI)Ihix{q23?w*!r4R~E{X`3Mo`e6<mOUl%c=zkF4=MdKMlG|@-vGZ9%S zBGMAG=YATBr90J$vD1*1!iynDwG!s=+m^siX!~VC;NSNhb#sz>WhY~cWE80|u*w8T zti}XT7DTge$i^q&gKJ*oo$J4wcL7*WaDi1DLJuph-c}Z*VLF1-x?1^M@_2ms*-o3k zlKNh~plZ-dAxU<Y-<~ZTQ+8#hcZ?yy<EAi?b3p>>6-c5X-%-MFp-S*y>I!mo%P_Q) z7x=)M6=f@JngrF`JFF)lq$8qcnr%2A*o$1Z6K2_`l2f9`5|{T=ZqaGME#tZ8LD9^r zq$XTvZqn+O5><x{u!Wmt3YCYF+m*!6&)K#*ylYDsyCU$^EE`3QmYBe^_?1HDBAHDF z&x+stnVY;`O;eFrGA91_t`SHri?+z3NkR*qD3Z!bF_IulL6`fOjvZ~RlHI`+c}nw} zhGI2LFdK{kTz|R2+zJSn06lCA;(xvvAv9I$to{^D;df&N3UYxEZkNgZ=@I~X()~zt znEaZ|9X)(-V^%2{AGp77Vlt62Tt6uwU8^n=w5$eT{fcDMxdAHd<B_~inofOwe!%^` z^Ct#+PEA+#`*$cHu4wQ%9*hDGysmWWa0_+i&%Gl^*srLli2X%hSC<I5?2bucF@*e_ z4<37vykmo5RoMjlcpByx`{RdAnxBu$HGt^@4(nXph!mYsGT`nEa)&Um+4W__0e(z6 zm`LnoJluDXg=Ju7enzwawE;ZWyPHZ~QB_|iY0)BlkN#oxgDVOD)fqPE=SZ(dA*N8m z^@xj<!bs~_PA8F!S$cOn#Eq-#(uM16y2<YtTO7VOb-HG+s4s>=KgngRthy!q>zXW% zbw>RO{@CGJ(q*`kdI62@)M7{PFQ4MuZZvoAFoaB+^7P;}Q`D*-)QtNug?Y+m;DvYc zE6dQ7%U<Hd<Tc!hzLnY%{pUD7>UN;-ylj5xZw2Mcacmf}BuGCK6(rfhucviBC1T$7 z?%w2i{kxw|RoQzgtv8Hn#{Fslh<}v{{7N5NMj^thRu|d;ToeZu3<v?D5FMD-z*$bl z#&^1jTMu0bMQFQay6(={fqryC=CSElGAQou^X`ztO2EZtf-HEK0H^ZOiv?`$thn-D z6Hj}f42$FjfP&r+S*~fHoAF=UrVL9$hcVU8zk%XDLN9i}sx)I=RvK0Wm@gvhXjN0Q zSc6uDpcK8gVVaZ`dDABaRzTHn_Vt}tQC@oC^x)S3uysoSlK9?@qpo9ITNX6!ZxWZo zTryhSNgxUi1X<C}TIoJLvgbJg3Q<w$AFrmZU2oPyGpHnKTsDjJVSO6F?{&6k2q5e^ zXP)>JTU&2yf=b|riG-2{$fBaA>nTa87_%ZGn~Uh$pcupdD3bq<JhT`eZg#uThaS(G zScjk?wTHU4_7!{0S87I#$@3?eP_~4qL_9WKEH$%ueuV=+>dAe*Iy)@N*}Kv<xS3c@ zd=9g>KSQa51zH4)1`s#X0nW0M6g(YnE&XoV>}Y=O6h!v=ZMJioplJ5*_;%Q6T6neF z^+{2R*4F80^&G?}jr%IfzTgk9322+DuyiDb6rt*lkFsr-@+Tb%g`Oj>#u-()`IkcA zEHHSS9Wtm`!=fk#+FcUc;1#lcOCxrvfN%yIWVKAFTo|a+rlGJrHMi84sP=OJI9q!X zhJV)r1_I;}3Yq{YN6lXeq>}9ETsHeIU0UN|RGkq;`zAFkrR(z>g-uW<+Ia9eOXp+q zQX~Q==ICPT<<v<AI<9t^f<D`I{NciQP<pgy!jP4mR;#OG8Ji7n38l<Y{I{|GKT&_w z!3c}0Ddo*#_Q1v=@yPIl(IS*9WjU2L4j~Yb{j<o8j5UkE$c*j*jl_lR$2Es`o|;uM zUu$M=1|H5@AWt~5o?24<5JxEio%)K%fBEfK^A_aip$>rJ2-h!zxoSS%U+QP&_-gwQ z`G6Z?rTv8Yw824fOeUSNKb?0BpAZH>z5HuZ{|dZH3;-Ax0F^85HAB@0AY2t1^}#@% zIzrtNcncZS{vD>u9-}GF@K*}wjt0OjbEBHAjx+$Bj)(_<Ri|=V<JKb4{8!Wx!PNP; z<seJi#)e5UUU@Ob=?)o$tC9nWzb5ii?=YV&iksv@PDYC?hJ+F3VMH?~8)<^a&He@o z85yNzzRj^9AELET)QFlu-oU=6{V_KmG75QseR)AMt<mI|7-pRWw$ad^$aZ!f|K;A$ zM!%=87JE$!%PfD<u)3r9?OuyI2^?0VA-d0~4?}kA8ayJWqOf#olT~mT8-oUFLamm# zyxeSc(7J-&=d>1BR(}KTXn!Ruo*S7W{!5Uu!l0vaH9qSK4ol+j(ETwSWQGEJ9^CbJ z=g)6}vVFuOQwKQd;k|R7w#ynXc0T%SIp)sEBw)?|I98(pD;Iz@sqv`nO!{R_P%{|_ zsF12e?pP9#Q2+@i6h|@l70~PC9rQ{;TPHR~37oNi5cy<W8^**{Xa-qWk=MIkaULnj zyB+2#g8mxMes`o8vkTlY80vbr#Dy)Tk}EiBm=)KaP|N>R9gSN0kX%5L=5Mu~Fl4h| zjh?kGd_K4eJ<dzN5{E0y1Ak7EdNY)(AM&78vjcRhQ+D$jU`(i#u1gh$<{g9dI`u`6 z?O%q-SFTIt5f-^z9=CRXwbHy*UAuh`s;nzwo5<O@$%d+=0p<@T)nd9kyOp4aE~2>^ z)>eB)-HD`UnNT5ef#^SN=VwU_=spj8{1|?#=^O3Z2Ob?7DUcD+>Owfo%WN49_7ll2 zu5`IhzxGr6F%@Gi|Nd4Oq~1|B4!|CyQ&h)r)yr~*5crWJW-e>MP{<95PC0Ybz{`C` zs*)=l2e|`6pBHM+G8igEmz;)gyb9X}+)Tq@F%;y|-to~87qN>PNr>LuWPfnEtUjqZ zXR(dK@fRm%vJS0o9HDh<O4p*-Uq5lIy3QJCYB?KJ^fBwoayFAuh`fH?JhbktYV@BD zwzpEG6@FqCfFk8#?lB9%h+s*x|LHtIF4vBC=8J%a<5)mrSq+mA;d;4c?78_5=?7yX zek?hr@mGuue_4ZMswqu@`zxd?;HZVGrI3I8@ojr_Yl(Lc9EF;F|M9>_AQ%X%rQ4St zJ{y1tdwGGY27ocaD<&KO;DhaA!4A}7FA8ksIZ^8Zw2m{&fIBt3*hE|C`Tfmr3*BBA z7+;x4Kv}TS>^9y;AFq>{^lp;mi0$5%X_G}~76QzI!qL6<QaDZ)^sgag66|nIM}pp; zK*>8$6p>#XLRAT;s%{MxF{ZxJW#`IjL^{lZN=Qg}Qr8X<wZE_b^(|)~iyB!BhWZM2 zBjwgjT3aQX3t*D0fd!$yQ*Nr`ITap?vIy6L6o}#7q)vJU(^WP5dt7uRe>`P>Y%N<> z8_!p0;QPE@WjM}Ag8SWq<edS^0sykFbHB3yCKPcWA3-00o~8k;Gf$qKlz}#TBZ<5A zJct61dO#ZJ4+xOT!n!#D1|Bd(ZeO6G4Q+^J$ttNh+dGZu{W7FNvoZYr-5a>&_>+*@ z=zON>{XCm(-;eUW#`VhJ{Q77MY?gLatr5p?u~{EX?WY}trX{6p+ODr)4+FOu(Bq1< z<e4=5g9?p`C5#+{)4^4MIveDh3i;eIp~JH$T|(<ELvBAR33{Ez<!0=oSH@Vnhwc#P zU>Uv^uZJXZkxcrwNWz*lov}cN5+&lHi;d~fUsg(kdpW-Rgxo*Xky)`q756g6QA#kX z6*lFt2)lI}y#~?-)@3l*!fr!b<#rxoGBlb@&Aw4X1R<y-IxX?z#TmjYOx~c1fxm2s zSW5EhG+5itAOZ2EjMS=rpDiaXoug@N=YL*+@2^FwOQ*4{oJRstQD76r*KSxO9BK9# zuw?Ph!}K~bCRf{vnQiNkVB1Y5Wx4vw-}DdM4yHds1PeCOCwZXeR{6^;J2n3sQbqx5 zG~nf~&9`UN5(j*qt9lAHTgFxlM)fkyw@O2LDeN#R)WjVfj6br91JwrLn!E7u%wLu! zL-!{L8u0H7Z1XuJ<57^P$-=Y=tvzpIIiVBlfvnA8*ON)O&+}~eTO|b$<Vz~62qSAk zzl?Ph!$u*Or2gzOf80V^I2Rc4IBna<E&jd#W91;4+u+vNGgI9*5~@C@Bfp<#sr1G~ zyCfaa!;Lb0W&#JzkGn=dR4Ev3r1Q(~J@&=mSdI!!A~H#QJc{3=d1P4c`U$$)YJ(v@ zIFZ@ZTE=ePXPS(_wc1gPG&X!3ge1FNJTYyLnQV*tm)g_Dh4c280vBGW0sr|V=IMD& z54|xSGDXV1TpOMgpcF8wKS@ErNCCpm3}t9Jj@*{NX5@19#`0<8X~TAzcpFEjENk$s z%jJu%zHhtzLrEiLt-lhAn)VxAmiIG`zYE~shFH`N7J`xqr+yCiYH!ddt8HdZtt-xq zP)+!qqW!QMl}R~fw4wd58PsU$y1NyU%3%muUnEbK&mj(82#+~#oc!UBwO}Kf;EV$$ zvL*b8a_*B)7Qbk)gPo2p8848t+q?K>srI--6^3q9AsS6|J0Y`BB~VrhduNfthslcF zslOCte~y#)dXAW{SVVa5G>?64&Fl6qnP)En3E9|jU<=7z4R$I#PyO6ySJ64*exG3o zKUnm9Dc^G&LgD~vTO-~-rZaZRWo<1?7aPu#x2JyhmD|WOld6pL;k=tJ@e9_Ldp?1n z_M<`NM5t19&vu<*tCtB-zyd4~0PK@v0UNftY(gBHKJdi6a>=|nllx)S!404t0Qh)Q z*TdY9&+OjD+qugp?=$=PUomy^C}Iv1W-5mzCP4b!+)uYL0rr%g&$7ni;t&x;p1}3> z^)yR-$0;HF&pdD{8x=&F!0Q&$&0Mv2BHwv)z}NdlG7QsfK_7un*23pVMkV+JvjLzP z%&o1Bt2^$uN9d}Jw)?}{PqZ)cdidzKJX2+Yl}Z!*tw8_LVn)0k7$?_SEwMUlH+QoQ z^YfEUO*aN{oT%Pp{a7Dr*WRzaUElb<*e_^<B(WW0vxnt7LlHqD6ZEl4q{%K$oR5xE zIR$N|E56Dni;QYKEuPzGFuN~j02j1x@@0p;mN9)BxKazRpd~5|Jhd#G#-)@=2?Sna zo!I2PhxC#^MZbUH6_SVrZ?GqM&}@5|GI;$-7Ko&}{;~3V+7%c{s7DFBxn;ATfe6(z zCWsf{%O27&EtDy+^LW#o+)JLl8@DOixUun~lfB!GT&Vf~A%HBpdn{$EAu1v7Cd0uD zV8=bIXs!F--Xd44`=LjO@|{aK52L0Dez@fY!L11ZqR_2M`C;1;<#Sa_@XVSE8B^D( z9HTJ13*(bvbS|J=guwGe>`zeCznq_6WV#TlJl*{(1;(V=$~*)t!eWlpj(aIKrsJk2 zzc!ha*es+<0_ue+1)g8n5&Po~2j=FbEvm>iP~Um1ft9KiNUs7ekHFm^tQkwL3{O@D zpa`x+73#C5<20V)R@;jM7+384pXNyiW7k}C)8qs@C|B|r(P@omald})*J*7%d|qCd z8J6k08p;<D@3q65$*5LFKy@ATRqux_%rj)>@%xS>s=?)kNCNF2J8miz2rxbJZNJR+ zv`9O#3|9S9jt~#B@_WY`VyA|~`JJ0P^^G1T&fZ=7S8=z@B~hY+8I6LO3Vp}hLjovS za1b9;PNN$sUAETnGXhhc?E(b5s7BJqnRzQO0CfMrj|ppMi$8XCz0zdD%<iwUH3;fY zLKzW22Ok1K$;c^OOyDtqpdUQ3Qo$Fai@q!RSFT@2n2~sVv0~SxkH0^iXk4&QAYnZv zy81q};`ZKhkjm$yGXerV6>x%y*wMILQ+s1fIcb(#+UOhI5K%VA$dt($Tr_WTuU$v< zoxq-ZlHMmxg^7Q1;>M)@;a8hJ>Pek7jmVO4ZmlotGEY(|V_I7UB601Pbn;Fnb0o*+ z(;!4;2P=52^Q7J!?vdo)L+Hy^Yn@pJBQDRvdSt|kyXlp`1ph#u6~dgG5b1xJnE@p% zYk&7RRHZ`u3Hzla&`bVKSu$AiE$G8S6rD}UeV3=gRRP_5+wlK57eN8r%x0A<+5L@v zH7Tl`22IL54jKEGoSqThc|!}z0Rn1I4GD?%XZf*$C0d>grI*@78b`!ud)&Ab_ws4> z7C#AkwE{IWz<T@?GCzlc&%y#REbV@xkH_!pPZKV6z~Tam$Ubs#bJ}*%`Fj7Ss}PVn zKDkWThKqnm^7J`7L{9_miX~$#U2iM_=o;HCVZa2T4qSXlZa3`aQ45Qv0KKI3rjz@h z-F2TZ%I2MDz7#-i1>RIh0Hu}4a-qt2t<~w%NddIkf3l+rB!8y>+su4xr%9yN<!c|& zdw2Fla{z(qnFMFD2#rWavt4_2b<9DwPjtZh5pp!|x!JkTsZf^ZzWE<p;nOT*GXe9x zsH(}9rd_sa%BKBHC`NW1#Zb`NUnKnoG|8SOqKT3lL%f0gouoPPZ|eBZLH1jXsTnqF zka6(BfiuQdO3tKbSyv3v%SntyVd@WZvKwpXt29RUQgy?FXHJ$3AMY3a@&b~tyT3s& z&VWfnJKgI_jFc#~fKtwA+c;ST>2I~$e-<WX#_u;8rnP&&v%w1w0UvUwWwk8CCGhas zJUXy*Dsdl?!%}5}`zDM^$RoA3EEOK$4{CPY&o-%VeZ9!N%zB74(@h*@*{k+hI~D+T z4O1znGF5yP`{tcvhBl*N)fmMV{Ba<ef5US?ytXFM(mw7RJ91#o{qBkzEl7BIw=wN! zVUCl~iVK9;j$e*|Ufv(EXoY6)+gN`}E2^b$&{j5&)GxxqFrM8<s9D!pq%x?>zxZdx zs3tTPP93xJ%nQ8mlj9mkI?VfL7b_=9s~O(`H%1*`o;+`&3*dubu;to=wbA1Q>_%jo zX*Ux+@)_Q7<o=j;AZ5_=(8elxb_Q8)FQ*bQj0&XE<S0a5A4949xl!phozdTky0Y_Q z_#<(~XIq|HwGNk8Bc#BsiEAkoP$0pi3{`@H{F>Ayzjc?S*#C4ytWkMK#E;!P9^MGS z?3cogKU~z-`6vi>Q`PkYrN);YB9EHG?mw<(<M(Bx&PJ%|l`47CMj)P!><-*IU!fh+ zD?uE$Pi5Ekmd)oFmqoz84DR^sMVwMkfIAmXaP{|#6-~1b*w5<v+B+*RI1yM1Q5QF; zCmD)D;6~mPk1Z`ZkRY2He_SYd)GdV+2fb|3&+A25EBC5F2i62G#sBRz<0sW2W2kek zPZ+f*4t=vNF1?xEn<~D=&Nr+mj2-t(>IAF`7yDrt)s{$O153~?cj=W3`0-_IWXMF` zArTidj=y$>1|y)V&~h>x)|ZCrOXg50hSoT!cBdQ^=wh?Q=p9WG>-)^qtjn%VNphf2 z6w43#Q2(H=!xW~w9Ar?0iZ?N`Y|Pt>QZE>2|HVQLC=m-V*C|W2DucpEuDCI%D}au@ zav57-At@K0g&^}7!UJhhJwWZO_}PMrN0s=FwRo(ot~a;Q_n~PCTy&&aR^<ZLh#!Db z21peZjYjnvpZ2NGJ4(iuUDWwXts$B0LK<ILU>D&^2KWl2$xH{6z!f^1$(SBsh&bY? z_l~Xsi1@8-ZK=FY7PN!wi;EKIVx`e)z}x~DHj|Q)lqW5=dV{bH)w{gEekL)>)v8VI zj^}=QoHbVAZwt==WEuSZ$@HN;!IntjTu|HGRhJD1qz}6zB=gk8-u@;S^~nTu^p39` z^t$ipAC9YW?H4;22U%1^n^oU0ax)kVqtJe;b#64vBw-ZQXswotHO)lkIlT!}Re_Rk zrwnlV7NBYdQXJaSoW&<lPa8!VnrNKVXOjwmEvkngw?2s8;aLCm3?Ka)t{M#!u7@F$ z#v0M=LExorX;;d~y4YN&PMoK(E$o#@oglk9gkV74`E+8fNB!xa>Q|=xjY>Iaz3R`A z?ZpY?Fy3Mq2kA_9K<2SEx85#_4`!ri8`9DRZ%Kd)LL($@z4VD<R-Av%{a9V=G8`P% zvt>`Q2ct#`zbT`Zo?5#;yZ|4B$b(qmV2r2HCG)J^N|{PEG+(8@h+1tZ_RcpNyc9y* z@<zelyqaByG>Jsl?b`3iC%z;Y4V<^C*y>tT7*=yL$owFsfkKJWVp*Q2`u5^1=E7_v z&IY!03(Gea2@CBg2(@*$l1yTA(lj%-{S?<lz83$CG+EJQ<H(8XTYT7lYf_@nMX-)Y zdeYdXnr9f;w8G|tDdcg)&5(y0u01MWA@}yJYPyB5QlAKObd)q}wIGtD&?0;<tqK}h z)h_&q+1q~p8`KnnBn=beL2WzoJ4AemTzTyS1MN6ND48%CxgRaM9+eeDlN8Nx^i32e zh_Z;D@pWZ6u%A|{Hm}?Ujp9hmG%!-pNCBHJM<vaVF>bN8zCp}1w|Z52`rgm%npe8z zXMgypXo}(>1<d7EvBc(<@;9(O33!ab7^F-mbTYdkkMTm{j=*bjl5Pu^_D5&*6!@O; z3j2J5sYKpo!hZZ7Y2xnCXQEvNDcI}SFNK&xO49wPE2!eA#aiff63>^E4MpX}5e76x zQ}K6HvkBJQz9s~$8191w3zaj7!WHa3)j>hdtn)Nx<lbZPv^kRakDI}WP}qgt!9Ixa zI8s_`=OW|fuv04I{nwMTnOZNl!b3&?mjk$r{KRZu1!09+vr?;bn0ZBjxi!pNE!Oz8 z0hlI30O$({jVNwj(kP#gBy~77I;;_ED*Nt~=IHM5@6VAR5ZqQY8Z9t@lifm7z?WPS zXi)hy93|4JeR9ucXJ!Dw5O_+%luG-7HX>w{&#v_;pt<X_UwyelT-L_Mrfk{?Xso;h zs<}GELr!u-h_->vU@P;2KkMy&4au5R`0*t_Mqunu*Be0tE0Dy3z-Xy)0K2`ttJ!`s zb=}F8=6=e**y}MR+B+Y*D74BbN<9hCQe(sifmRi)IetsnDAMNcq8^eG#-~p7&phH` z*Tm7(N(+O(y?c0MVZ6$n#^`pUuYjyVY%U9IL$a2fUYiY@0SpN;C;c?&vcmEU(q`5m zJD5%tcV3c83XBB#y#{lxe>Z`PN#H|gV2H2x{>+&;KI1&6Vh){k`)~tTi;&X79aeR8 zRoyp1c?BL?Zaqw{3^cp0qI~qi-nmk~6ox4}CWn)2?yyerQOz5l{6I`l^iK+`kW#PP zV64#Y2%e~7tWY8sK*J^tsIx9(`lFIJsYj{u+Zd@LjDe4Mbddjc6YR8E1PwtWNG={k z3j#4nP$rb4UvqJ0L$<3Qy->ygHJ&<GLWTx)1V^k3RcEm-jPy$?bUBcn#5NZQtQf&j z*jA@zOpi}bD>e%+B&~^rn{(XqhpEb2`(AO^D(%OC0umx+3?WN4<I7bIg&9~J^7v2n zd0tS!g6s|6(@ew%vaN~Gz{7eCVOm+-jtTV}?W7cJp>ujcFLHlS@!?+>d@V`a{`CGM z=`9dAG_e%wylQo$vj`@ICYHk~DE2rNYP@bVtlr-eGQz@&BNZ#{Sy-Hv#kz?{a?g^H z3l`r|Xodo%gp4j~R2{G@pjZ=NtS8TQx?v`jpf@X!;2as~mHh^3C4MH`O*AT*ODL)^ zc+4BknO+Vl_IZ`BQynrPJY5;DYT^-8Si{@gopm1_s?!^Q4^tahht>8QNCH-P7-NW9 zzXKh0Y2BaV3HEoppkNKXQjv*^Y-hq`jpph(p=fDM(0O*GA8}yAm6!(BlKkp>S*Cw| zOZiJE-rWuxUgzs?O5XpiS!*8T9=Tppg*MXl>c>-NK)(cCNYNBcrpT=n+$XqkD8Gf& zbY8lE<liru5<NdZKR!+ROaK)wN2jMoz<oUb^I`s~<E*Sq8hcoa!@;~Sl4ShU`uaqk zSi}r-FR<?h*tcYu(6bN5P9CIk+mQkT>mI;I#``4XzdViGc#8n18r1XYKQ_||Kx81= z2XuNMcmTAiYXJH@aNMmquSAvpD82?RMpHi>ME`w}1X8{_Zv=QU4(WKD4**_dY0916 zvn<`l@M@noJVzI&`kgTX7E1fKLCV`Z$D1)W`Pzr~7u!Le52Ba~x3n$+JED#<qG9#w zbX7NjK0jXtsD_0L-GN}~{-R-WS};ux<o%bf?*4g9(n`Q@NJc^vsNA?zTQ{{*cJU*~ z`Sh+SzF@4?$r45HI>DUW=r323p}j0Q_O@@c78Gqhx?Mc?rpBsL>f>3Jc1(c!4(Bi6 zV`#ktU%}F3cK&nu{iN%#dL)PI*G>@}1a7%f3n$Qenm-YF<zCk_e+6~ABT|lv&h&6Q zqr&(btPUjahu$|ltao&CvD(Gqtcd-~m6cz+VM9cw!#y_k3w4;4vIuRK6*8hV-W;pr zI}D*)100ra*H<Cj`<G8<b1{^`<YsT+s=*YPp?=;docFi-`S@XB3cL{*vK2Y-5|nUD zkg8qHSz*)ljt>vNLk)Fc!W=FsYI+iM-Q>Zd`T6?5V0&t@h<Kqnki-hRgW%94k&|&) zjP;a@&b;GZE(qPbIwCeiF#e?7)pq<*Mk*;-0pkPN@J9CMb|DqUkw&G7kL^J^;6Anz zg||9A->v$dT-#ENhXzyoO;}Ha`(TRp!DstzWD%AEh4bOzdf_{fQF7)!tH(3F<~4$Z zB*`H0a!!6|0l#C<59erALU0&(f~bH3&lOd|&Kv0J(2(+(%i0l+1m!)(ipQQ3lt}cu zuIOfsk~5!9Ee?{7h0FFtySEy8n7mB7YSO*Fyj-et)2HJ({uX;4iXOkkK^TJwEV~6- zGwq;*O5_+s3m6TBC@_}tsk@wxgPLE-1Io1Q7++>-=Q?4PX?lGUJLv8|>L1qileFhj zA8gLNCOZDuyEvVzQZ@3@a7YoS5|g7K{Kdw$(#IQ&d1KKFU@>GS^svR=u`z*1WP{`< zv@(%F)$7IvO`-_=Mom(hsCb;=prY2kmC>>ATKmBBpj;ZX$KnmY;gX!Cs<LL=EB63Y zY+tm&{*wN)7O|YFe4tn>fj(4%UjQptN*g5}fPlvtYmD>b$B$h%IgHb?_lhq+gAV>B zs_6{-fk8b2-RPf%dOR<u^`NeR{r2$WWCx7s5hOo9-$+B1u$WoC>$GmP`Dzev323hY zp5{ItwUI9oH?RHjui&36CeiCARLfyrL`quP_PWQ#9w3|V)r~TWsJP9Q>kNGM^?et7 zRy=RNkpr&gn@_6RT+b|ZM@Mz;S<}W%hCxmod7IULeutK+1bOY*i4p7x5x6Ch%g)m4 z3r6@i!_GV#$;`&qm(|h6^AHc`I^^@H(sbb-x<c3rSO8>XuWCn(dGJ*}ra7L?m6n@@ ze(>waEvY~1m(7WeO9WM#USh*KR9voS1i?Mqx=jSETpVx+UbW6tR~xClOaHyt4vAOY zC-H5qsr_e04%EEE%YccNB1O)mX7q%Lcm=cgI|yNZU9*UTdbkJC8xZ>GNq+yWLgzLQ ztK+dp9I5*mD|C=fM`#D5`f;H%Qs)&}tj>uJ4p8%a&PE@nLrGH&b?SJSN{jVYuty)q z*wN|<#PMhz>Ax`b?9e=9{ZseMiVHU!4<|`t!r49NvoTzuz+z#Z((_)v3+Nz-G03x$ zQs8i<;(zQG$>4U5-2<47)})lGA7weXv^|D>rMYMNWvN@%UnoJpzzH*#VA=Y+N*A9k zwb&p*ArcwP`6ohCx>Klh(}hbZtTiFpk6qS-6UfM@8*VSpO^Er@)dg&u-2B`RQbt`i zWp+~y_kLZtgL0#+Ir+Fx%c^wTja-+4U{qiQPQX$~-)U^QEP?SVvXB}MZ0wSJ+{nq5 z%*Y)>Lw+|srVy$j+dEt%0^!tF@M1z6e<Vyw7_wPPbx9Oi+q77>$*@xMBB0Ux?R#{+ z=N2sFtbUpsRb6Srt!2Q-m}1mwD{OCIaQw}2J`}velnj%eA*vPoW0}eZUUW6ZY?*x> zqt<n#thT=Tm`_>nKU!=-({Nhu`+%e`k{P?G<?)y%j}ts5CZ<d8n|<uT2n5!%S3Hz; z{DY<@+yZWCtKiHmY9Z>~;QOJIUf}J-J==NJ3OVKw*(B{$ERg(*|F$zkqH>e4Gav)5 zXl+BC)!<283+?zZz30MGpnc63_^QC0v-A-qGjuf@LcaG4kdbRh+_gUxn2+!rWb^_5 zt`oPnju6o4me1OWh?s(wjkpWiE(D*VEim8h*A5ZpPn%sH1C-HZAkbp9*4hXjTh)3@ z3keD7tDtXtvp?Q`Bx_>;Tt$aMYb4bI`Iz<lravsayx|Vf#-mAB?+;zsc)yzcKEH8s zD4&wib$oJr0eFkJxHw>~-WXlzyyxhAo~veMW$o2kzsA&gXkC~#W0%saaP`VMpjWT) zb(mZm0s5zgZ!+GX5U)MD9$q4&qG|z(<V-`b1COLZYHFtbP?mNiqgKC%&xN4v#zaW- zTiiuFMU|1wvVsbU`#%+mz>nKnoyrP2N>?iPz_25Y44Q8QXx)n7F%Wm5+&LnZMHM<M zV`LA4k)!Cp7kTiAKjIaCVU`$(nsESKpoUP%x=m5JJtW8h7K49#jmO3^x?6CR=whKT z4U3q+uJn^g806dh+)Y#!9Qzo!D8TAC6k~e-K>G?(4*WQPWStOvjN5}+NuF623M&WC z12ZHqU-w=S)ZC5{uaB_bPbmFIQ)}>0A__~VGl<FioUMI#k4b;Ufw74BN0s-`tB@~k z+zRrTRYwmlSeotjp`E~cZH(R00G@h_0kR|h!SZ6S9=}v$zk0v=zk*14&Qvp(OJ`&m zYL#FA0w!yYuQCyTHATr<uxp2mwb_5yHn^{bU<=TT*HSkKx{s2CL@fvubD|)TfPwoa z)aGK!4uT|>*b5?ujt>XwnLwmy{`1F3NBC|}D8I=1t)pspYIh*p-Q2@T7wPodyO)*s zX7@lnObjy=bY!;>wn*04!Rc}r(ZkuwW!QE@fD6wc_Rn+k^7!JUXhqF&L@=IR*~|5* zX%K3fP3>rIp>{ufa%ppUcOzmkzoW5f9+rt|GPJ2%85x-`isHxRn<9Rak}^`DDiy-0 zLrR1_bWskf%2EL=h5ixGW}+7j38I*tQbiz=%9F9M6HY^AO{=f2CaIVBfmU)U@f7oK zO9WguZr|k(NX9$T7Q2FeDj%uZ-ZHOP*iGI;Nrup;jt@u0$RL85`xnq4DjfXPL=5Oj z>%M4!-t`|akTe_T9M0(D>xqvwMNAh3A**#vv!2n!?Sv7Zbs@`*FL0U4ur{QKI!P*y ztqn)$mYN?vys!j^u{2Ob)0x$FExXaA`w0KuFzTC_SGU48xwM^<)!o0`>O=?hO^L!7 zj6+qI!P8q>Yhcs>y?>woGe4c?RQ68bC=(s35~y@s)|~cgulY>@5u|;O!G^|<Ma6iw zNEQHA8zXi%S<KOTKPCI5y0q^QP=Ki5V|~fD1nzEMXPDklKdU)L0mV;2rJ`}~4s#M< zcn1kS1_<W--dnXFWq3XEdAZnaF?@Tz`*-5R>y}O~2^@V!7oA@88l8b3*H}Ki1oEqs z+A-^BCBuXIBx!GI-B)?z;m5z%;&9cjOhHys{}4)pdq<J{Ft&0}Y7)+m{bz1GK^E$I zDH}OqdzYAeS=-eaRSdMR-7s}ByXps_C7j&{gsCeCgILi!A~Wi69CW{XovvPS+qjN1 z&8U^<3P90&fx%(pYxF)2YoOviE67NFhc{$n<3{5g3#Y??MQ;D^nR34hh$i%%i_p2< z{!S{Iy0fe{64Sq3I2iXEja@BTsUC)sRUi`8C2eQIYnwQGdw{7qw(DcxxzqN|bg|Wq z?e3Wvw?l{d#)$5wdS^+e#@Qzn)U$;D@aM#V;0w<Eg?C1F=e-KMRkUkJPyPf6YNSWd z;Z9I&>0bX4j>(FY&Yw{7t-pkkA^$Y9T$c7K)a%fdC9QhDR<`LcC;!8U``gVbrc`R& z*w(#sOi90&IdoETPF|iwO?r$G5ep)z@MH6^DZ6aUvWD$XR!s7p71u|3_YY9YvABDc zZ>232@H87pH&J`#R2Qs)6P}>*UF$ro38tW)Uw3LnsQg5k>;K|Y+~(fc-Ve&Qza!Wb z?6K7VX&1ogOu2~~5fQu@ptDqC#Ur=EZF4DAB6>tp%Za~%$62xV*Teg60SsE-zt&@% z(u|GDDfr>+)hRM?m#e(UG>Bc|#`P)4k@9t4Ilu~<h+JA}?;2W;cxdPf$IGr@Cb&$m z*U9o}ow5ERb^qvfsA1;2!;mC}HdABR4PP;DFs-m*A^6W$n<GXgpbg2ZJyuCPhWTPR zvkxpk0_$r2&j;(W!t$Vy#m@6yci_FqmvoB~8<27uaRf$}#h)yL2A;h$Vxvp;15f{6 zUL?s$rpeK(V)cqHuCU>L)X(xiPJu<rNB(}H2T{bK*KLnXZr?Kg7mvF}>qnT5sS_}= z+Yi3s@kru)wuJGG@S?AuIyq(PhqiyTcn!a>h7JnfpOn7UmbJI966K8vysfKo<S^-+ z)&@h-1P&?c123=&rLGmn=_(M3?GF?p<+u|NKK)-FzwArE!38`WdqnK02r=f|j?j8D zWih?0?1e)-s@{DWbr|a31<(F?#cFN}N^kq07vTN*1cjwS&;#twJ#)-7v|Gk9`0L9< z&1=Qp>wSoK_KVBck<6HND1;u%V8wyu8pdQLt}@XUHm2T56OAP3Z^9*vhZOpGb45o8 zWRe7D%^>*Z)G4H8p(fCT$+GqOX8?q=<sf=x$$lNvDt{iL-Fpgt4Yhezy@9yfQKNX^ z%w=`(SY=eB>zrQMK{THzgEEp{eQ@j++>J9>Wnd{GOm*;428}6cm2MCVBP4<&7s}uc z7y*H!iPs%OmC1cNg6O>jcLRN+C~8ye%D~ouhiA^HJ#~6PLZY&-3@J-#+M$n9KSafh zg`K(kq}oe>=;I%i>#%h7RuGdr4QFLC)PfZ0i=%FZ>7Qy%atPtr{epOZm(z{L0C~?> zvi8Rz&bnU%An}>xEQoZQ1?kGt#6oc-W4wK}wdVGvTas7t#NgGxe|{z0I*r0xYBy%f zlgh82D19qlbolr&eL#N7?Lp35NS-E84prUk4@=SGLKX2Ztw#EMfAxnGm5w5-6Sr== zZtLFSPDGm=FQuy2tduzWABqTku>*cV!KY-N$KF+Pp@a5nKC68&tT|DY{a5&l)X{^u z5pL?}tpk?P2KVP;7W@6^wD>z!0j>v~#_Q}7n4F@A-R)sTOeXD-n=B6=f~yow=JUaj zU9RtcMFUcKW8DXKaYCYr$hm0Ni_J`!DSP$^Z6GRP%#}>fE`t@Kn4{jM3316&oaHJN zkv9EmU9F6+AvPt+2=fh)WffRTICdq4vx*ur`_$nClo#oNmX&Wh;CA#$GSK_mgODu@ zusY0x+qMboJiZc6&RIO;jG7HAx@+gt+^VC2&J(uf_rDrF5>S&9Tga;1F<39+l@A1w z`#VVWy<oHSg*&=>ir^;52&BxnNF-|vz9`_)1wgj^MhL5Wh#k)(j4XH@vzrg+cpa1P zN)5`-cf7`@gWU1&=}i9HizYT_=WdX(CVy`9+K(MZj$I2KOaX`Ku(c0&$yl==$>RFu zF$hKlX_kDe1?%SsRrLpW%!Q|aLDKf$D~P|^3MbIas-UFKg$1HaBv{>}m;R_Z75<nL z5Dqr9k!Ado=Ipqil?z}{h_<JTwW#oAKpz`&!U2zDd_wm;o8LMFUfJn0tey%)0c>mq z$W-}7sesO_Hh#IQHt5)xX@pS9sLJn0=i)wH?^8q1bBAnG06h-4ATbRYbR4V<%$?It z7wZGyvK<7v-ub$Ez}kooCPK~!7YHoy!vYZq+Lh3MQV)8O><Q$fcssqS86ZkF;J@~i z%g=qA$w@SgoNQ8OkBz7M7g1X!WdJ`Rl!hJYtj?NdKj6T16Ex`)UasrSal-j4I%hK# zblen8enTSk43DCGpvYJJ{xU8<<Y}IP>*hJzlcKNB3w!p<I0{<IDkYA|bi5Nj4|@bv zJ{gDHBxkCH=`L!wyCt|~s|tU1C+p`n_Bk-NOoP<`kD|`2ndsiAbGJCZ96R|4Hl-E; zVg~o{c4Gvy#ifoUEM=6tGXBH?b~>?l{3z2(_iw(3o7|6AUG>ga`lbvQ5{OxYD*nTl zAvTI{3fP)(N$C9eJg%V+Z_6I)?cKI_5lyVIP0Wk|{388^o+aQ#uomb{n57)tZuUv} z#l@GBf-Tgvgwq*Ky+9|E-o_Rfc~}oDc|7wX*Wb9E?>*v05Sydg2hiuDu~MM5!T1B% zxluEmonKHPc(BonR@Xe(#s5|gQ2BHDi{DHBm5)#ppN||IYT);1Mr66U9ER<t7@4(4 zX6TOCmbv1FaG@7ql&A<TQOx>hY#HQ@c*-6Y*}(V>V@QTSZt#Tqyd_}*BkZ27#wu&D zwbVCI#a{6)4Q`Y5u^7BmIku0t9XFocweOVA*4M`C0nx-OBzl*G#xc&x0G?;_27j2K zWz>$*)ZRT@WM`JUlq_(@Kb6)+&|Po`t+-SX&RbGd0WP$stZ*N}OD82I3z%gL$|Q?t z2eGlf(O0`3C|;HDb~Cel?JGSp@3ftbf)}*q5`ZbX5{CyRtj+bIy{x&)!ljulHZkAB zL91tjZ^8pTSCT#_SjTK<2m_(Ji4%cME;6Wiq-Cbq>d=lIRs^X|j4r>GylQ0&ocL-v z?Xu>b`EbpnL`U>iLc51s!8~j3U||sX0RSkKh)RD`L2|&%i>Bs$Q*4>lL|dN4r8K2v zF%N&<v~F~|d7{TB+<V;GS@nJ(!2jxr&5LLlPmQ5^&7VJO&ceYlY-O3$kd=4LEGHRN z<8$y!;CkZ&udx7yrCj|jzB^}FWyy0wyvlnz!tDyK%H+fEjol0F!k68h#C-aGu8|6u z1nk!9Z5<Q*-a*?P$juoZ+j#^{b;hrnNqvQaK@8k3YUk^KFe4z7a=YJB*Vos71L=UJ z$!cr@uigifR@t9>b!vxY1$DsIx<S}4w=-$lSglons4R=YSWx--(&_c`Sda99^B`y| zcrssYIJ`{}iro&ErFu3&|8jq^!-MrT#N}hY`fAay_z^I3hh3ok+YNneUYEY@flCx9 zT#YNyk$=F=W>6-Fh}V+AQ)v&5DkP&C)ZnVYM}gZ085kr5C51U=O~4GM(Yd;gc#0u< zWY7LsrFv@IcwA#H%7#dH@@|`W5Ke!|yX>;{fjve6Kd^tlm)149NkXt%Y6VSqB^HT< z8&Hr?z{&BUHr|?{G^C1|QtFGF{hm7hRfm3_+-(1fkqX`NDC>Hu@7L$E3p}<y^#40b zTd3_x#fCe!t)*t++F}SzZ#44BNehrcks-==1&~frHhL&w-Z*zSsy#u89ybr3GJzc# z>0>~*#&tOS8ebcAezwcqTX6n6i9DS5H^O`p4I4T6n=Qd7!z_1CzOLK(<a#S}gyif3 z%Fc>$6T_KeR5X4|Gq**LQ*O5Pe5b!hAcX8g9z!lf&0ubqgy<9~JqBiGf<w;u`|XJb z#OA`9)w6cv-QqP#-J~!x&}5Kt2?f=IrB^Ij{LL{<+0lv65M%<UtL5S_$${Yb#PZxu zo@q<`BF7vxFygSW#d><o2YBsfdTHRkB@tg7BM4Nx&QEYw7Q0s?_13iva06H%%v5BB zIRvOEaujd1Qt3xm9n6NYVTPC~rr2FPQ?5}P`c+^<2f>x06R#r^Yn5s$g+)RanVm<< z+0<*dIykpFLkRabb>(JDVJ3ph;wYO6u|&?lZe!RX4(zmxfc}scZse^tVhriG-`ur3 z_jnXiG8G~5CHF<+ERB;A7GZFLf*OpzN@aRQa9MrRwiOc`a6{cwFu=GIuAkFabs$`C zOMZ4GYPsX)AB6N3OOWV*1u0Y!YVX_MOwYP6mGr)O>k{$F_v4LG6pGrEg=nBfeP=TY zp7C-&-!V0?83V1(dcS2GNTp3m%BVCQQ9Tem4<GVpTDl5jiH^?PO<L&+s-|H?h-~Oh zuA+DU78`;KhTRihs3<>t!^w$tY)%xVDTpL+iR`lK&DS|Aq=l0dsJWaodlb7zpgFD) z$)QfieIcn7p*B#ksgla=9Ns^FDOWnDgidk8Q<OC`!s;y8`1>HkgJd+Bu~_jUpJ(Ox zi`u~3AP<?HEd7c`-(YXJ3Y|u?S%PZYfI=nab00Q4YtlYGT`&tJbC~kzu|H`q06xLN z#@^iQ32@{k0IvA^+zv9;zNo3-kT@=B-1OvIC}%V2{D7zmA1Z?{FC)K{VbP`3cx&U9 zODkeem+icYvbh|V_l`%SlCSyo#w#9-wONM`4U#-mZ~E}7>1R!%uG?hWqMIw%M)Qkm z!~fBAj?r<x-`9_AH%?<Vwr$(C)!24pyFp{ynAo=2I87#g=KHMw@5QV&Z)e?epX;1` zefB;~+%7IjFHG8w$k0mFYZ!E56g~>C2)Dq;B&$qnjDf;>m|!+|Sf$*;9v|9l3Sc*w zC;v{)8Kadlq0ENK%K}-z-xxRGmX**@qR|@+)0XG_HyxARg79M%#{MI3h6;%8m};gv zgFWxB&mKaa<^o)O7j#HSj_y|F=>~LmO@<g~Go5-b4mxDTeD1-!JDa6a?yEwWCA37j z<J|vyZ%ND_!T!G@Dx}X+@KX3dyoz8#8Srs!Y{L<;F615KPhHOa^Bn9uk0K$4K{7O= zcK4l^P&`L|lNQqfSHN+LAMi)-=<L_j>>V!27dO3DUbv6k^JR~zJ#H%8@+o53uT(>6 z2@TF=?de&}ZbANBe%CP6uXEU!jf_t&C+|hX4(m(N+j6wUvQU6@(mnP&dScRMYI==} zJEs|-5}r3cfKcS1#IV6Obaz@9is68%T_rZAh?c0g?F(M;KDuw%r+DknttNc5Y=y7| z8bji>U#^<kp?pA(Ob$-Ia_2S;RHe4GJbQ?mCU%Zq<9OWNxy$G4;%bxm{P%8p&-?<W z7KWo(I&4YEGG*@ckBj+Qn=c`7Bbq<-KFc&3^zW&Jrm3QxCmOWxx-o}{t;vt>!EK}t z3mEmH{d|dQq$V1e^fzSS?8$S6bWrEf5f9meX44sdL^QR_?vzsd`H=KAgkKozPAj)- z*Lm%|sV-N{i!&1sSfbN(WR-{&nYZMq!nKn`EBN|d3fX1md6^ZJg*vw%EE}U6xi}$S zN?$zmJZl%uz%j*zwd4y|*&p;b#bmC=qYT_Xi7eYujpUT!iz&6HiWi{Z;}AyWm?L5J z1;j29J8sU1<J?MBL@BA%w;!R#tD?>uH@=@$xQyceLCT+lX)vU|@RMextbgn*VW+qz zdx<Y$k(F5nmM02b$->9V=B191noi1rD|!yFkx{+=$vg{B^-ZLJpFwC@misoTdxUZe zuVY?=wu+BVI&sa6F`AB-nJ4KA2&#mHk7DLw1N9Nb0vtoX^;#Ruol_5`66be?`hiCj zZMy-!+I7RJd&z&2%i!S{^m;>Zdx0;_n+|1GRN5{p2q*>IQzcym=2Uj`T9NBd3}Ti^ zy}i6<Y(>r>>icv)h=1^52XmEh#8mm;5dva5<Kf_`;S`r6kT+B;w1@z~m~RHU4*HTa z;WmVp!eomqWQ`dSmkHm(+C0+?kZ>mz_%5~OyW7+K)KYg`9Lw}wMopi1LruJbi3uOy z6y-3sT}JhLaYGMeQ<L#47JXuBoF2L!I7{a#jqoD`|1WL$`rIyrQ7FyzAylD>f2&5b zAa~8k*_r4J-?JZv-Pw@|`6!<C%#7>aoFG%cHD|#7w$owdAz#N!SKESYXrw{A5~Qt* z2z%5kFiS!^Q7&Ht+z|d4MnZ*h5jUmEx?HvkUSpLDQ*(KEujcm^M#A(=<MSgDxm@I( zcS<L(D>epwR3~>WW^TdA_wJ{(4ClwQwwKV|PsYy&l27zYE=L5{16PjNSelWbGef<X zT=hC8{fu<^CT%qG)_7xXmq+H^-WN%xoz`eZ0xe}H_pv6NKRDzqb3eGl2+Q|M3wp!t zD%viaKLpXp8XU5-59RZ!t&I<~tKu30r)|6bf3>*#N;?DB{_kr5@KC-`(?*dP3|&f; z3SQ|-Xlf&zpi*iV^O7iH?=U3jfk}PYRYBh~<X=_#9imeJJjsg@*MA0-l&{;IzVR1a zLy)JHCHUT*3^sNd!K^Ix7`<=AF3BSboZP&_^>L0&@Sd9F;O6s0?fox7-CnW-J$fL5 zN0a$QgK5QjJ)#3#BUb~C)I=)RUvAGhnZgu`_A`}~Q^8y@?Bq<rOzW9TNJ!&(o!GVK zVaHEExlqJ7?Kde!|MC1g72cALp{mnrWV?z)c4kwT19a#roFBmhhYGhZXqf%kO9aUQ z79-wOFFAUSaK;&0OR%It-$fQ62rGR4NIwo^m=g#6J|@9_Z%j_LHota{?=?gC=I<yf z!4m5OTGSw88w#8KlV!h#A|A`H#x+#%of6$Ed626bF=<3-;;+JY;NnP6%-@_^ig|#z z;IqYo#u!5$YIK56Bn#(>mD_O&aU!O4<m;JHa}a0V{Z`B<XY8|T5Doq(%{MAM@ziF^ z&>v_6O%j-~T8WvYGW1nSF{lBWlIMEt{e|Bo-Ea{xywn9QLb0a25?kP**{zVtevM$h zc&45i4Dh5H19Q{*g8^mmEd#s<FleWt1#!{I&12lIzu6hVswH-@^+!!BfU<8{WB17i z-P;ie#`<Jg*`cb~;Y0|Y`p2}Cnhuv#kKo@+Sj$dIuH6$$L}DVfFf_V_r|~IdAlgqL zz?|e+o?>1w0l(p|ut&Ac&7z02;XwgiX7NSa_6;uE>-^6=8OCfDBZDLQ&I93uyzZI) zi8qDowvl%8W3rF3$=buZD@+C>99sI(TC-xPLjA?R5w#nwQ&UpRayQx#trnFTnI=F4 zxiNXaIkFq_)zFu?KjAaFmlE=impiT7wAsMu%5~ZZn1~^1Y=|Ij*&aGO@pV3E_HSRR z(70fYX_H!WMmJ_}J)7RZqR0+VBv}WD<m2}J@aZ>}2l=#5v)GKAS&3sh3{miRd#dQz z5YGdMD?EE(Xaxlhe2)DeNsy|WLtHH4C}&xpNO*^Zw!FyOc6{hlFfns`92v#LhP+a@ zB)I2<sW0oF`wclA1tQyeFCG5!1_U|n22$q@ixhjgpbK9aigcuF22?t-;gKA5N;-gj zb4%0~vxIomj~P6bd5n3Zzt${y)Eh}QS@#EW6X2q<<u1)_rQn5nk!X10-+D}==b4<3 zfvxsDA$-0cay@8$J<NKq`Ud7vPHLu-yp)N4AzZpZolVaFn)*f#UVHB%b5r|Ig<8SQ zGMUfujjHAZD#NiW$j5fzr)dTNy%3)>h+;~o96p;u+9A_zwlDKZt&7{)HbRlFJYQRP zUsNoo>W4+&|GEYF|8)zxD&VXksbV5nr`XgSD0%tj&y_Z>T1@@!e#W4QX-iyb7)E)( zSDa6Kl;`In+Ku<K9k8IFJG$-jpzl~K@Jc}cVS&WzJoz`ey0S8XAAffQ(S`Q5@<^)2 zqWTbSKwW;;`M2xNL#EF&)UPB=Sd!DzT|eyEK6lE>T#!wHj%N+ZW4~vHKAM9R=C@=d zOeEDNzsnJYgC2Ps{Ak&}$3Oh!$kN41#C$56=(Ifx%7o7m$lSN?2kB*)(In|{W}4*k zJ#8qRu6R5NM(Z9h1Ed*RMS<w}xZp8YntOrBq$Q-P)*7oCDhmkQjqly{@}3AQYQbMo zsnMzE1bC#-C1p?+gVC}^)d<AO4UR?T1<_=auA`%hY&<NnECXz|US65MCvgt_V8;fa zQcgs#vHa@4R~3Ve#T5&VLC=q2Eiy;R4_LE;W3hd=NLH2gP;O*MlyL=vb-iIWbrx(F zqWtAxB0q4x$VTQF^nG+;YLhz{NoldGF}bKN#CC*_4&E{&o}%Jeg_92Zt6<JbkTv=w zQ-)mIOl+`{bkyCy&NP_>k5+KU$|TN^r!LyY{Fkt8dpcMV^h$)}+~8>fMfPxPqH_^A zJd6`*@C#Kq)*^O*1GF?%VcDbhpt$f1EobAgUv>KF<TI98WzL)yy;e3v1s!n~q^ri; zALD)ZL`v0!z5Cxx2~P812@#Wt!kJLUBWt|g<2%LG_L5|?61O|yZCNw`*L-lBq%s&g zVS|KAckNDRbdQw1Mih^RQev1zUJj(J*uC!2hU)?IV07M8_Oley`6}O7cm9tL<ktmW zs*ub)MVxP{CMaPhco_aQU@+ffR!MEJ<-K-jh^E);JutQO-6((hzwy}%`UZ6>xaep% z$x*36B`M60LJO-~`wwA+K6@LN#hC05LL(ugu!10ja-kPm$KG?Q+KyLz!>7iK29OI7 zL@13nRuckrXPnLxmN8Ng?uQ_l|H{HB<U*on7QbyAxTxKA&}o~GBJ6lqV>dEb?FRdA zc^$_4J>=|~+P`Dbr~f$3jVGvBB>>06600T7DV0}JsQ>xpI1@PY@;>plGct4N`*PyH zYqH`#_qurc#jozUbLhgvLwT3pSvSuwFtp^J0!>c7_L<6nY*!|(Yt6FSB^6CBI5Bfq z1PsFft0pfm=N4Qp4Xi-TIbDijQNgQ(Ofr+WyJjcQ{IS=$DwLt*w~uH{bmR40*Jyfd z>&k&;L5kqXC_xsX8f8@D1OEqRI9!U-Zz@W=Tg$SHs{NxihsVc@dbY!uJXQ);c^8G) z-bH{FUwaEY441WzTPDlKhsuf#he3bzp`b0<XP1WW`TBJ2vt(^c3}aRbY)gSq%Vg@Y z|Nk(GQ*qS(3y=bEH$<fLR;%^*AB+rXgKWOk7^Q_KK7acSnj8*N<DVTk3`#SW_I{L@ zZ!W-%zd<&0I8_<(w^dI5&|JH(XkRxs?@UHt6T1(uT)n?e4L<oLrEnKkx$r#GT%v%P zap4Fq77d;niUqvm`P*IXpNj<tPn(Vw^Mk2Bdk&YY_2&D5E*R&+TWSAPRFmGol)2Ge zIowNUn(OZRXY%A<!nRhF73R8w==h6qE};vcZ}6#ukyFG+Wovm_9j!Z2mdut1;B-@6 zB^rQRWR=G3UJKkFG{MU_SU<t*+3<V42w1qkgQdbi{=D0h&-hT4##ULhAjj^(#Z;k~ zD5R(#T8jLn)j^cq`d3F~^Z+A<T{^Jm7qP_f&m3%-bGlVb!n&1etPCj@2Nkv~0R{~a z`y-_>`A3P0A#DtA{KyhgG`z9dcM(zbt@7std8{~qq)@&xI@17UDnl$-Ck3|#f6+}S z7E<!Cc*))vH9Eu^UPBBR7#znrK+gE@<0eIjDAtQ_i%C9beDnRF=%2N;W~lU7fXA^L zbQ28(!HPH-=%FbMvBZlD%lTWc4vQO;Wg5T|va#+^7)GKB7l_Y^PzJG#Lizr@zs0w+ zulB2;+(Z&B3MHjw02@XiC~a>8MIOOp4={k*c4^}t=sjG7EF%`dQxryU1RTr1vB|1x zX{7mNER0}J-unvR#v|t%SDfdq{$#TZOf=Hzh);6IJkf+)H<fRsUv5n0=@dv$|5Tb} zzykP7sgV6o`b{C<SawYDtY8Qb3AC{>T7p~Xa6*ex_z<vllC<<FG-Z&iRjcJIu^}H1 zY@spi%sQ5h8?WI7HF5P_(NRHrxodlTwcC6cqqXDE*8E2!?hX-?ID+mTEP_B+0d8|r zNh4*nVnai@zB}Hz_<SR{eUFsAE|ZM<AVZG6|G#DXjqYe@azwDPhi>~xjJS)0xF{p3 z`d02h7FPCpe}oq&ntU<?jBIdv&PO|QCeBTT|6+|mxv7qz50fH@!*Cve;B?rKt}z7Q zV`>MuTu|CfJT6iAKHr!OrN_U&J@;i0NqM?mKHbd8vgRVo)6&A&x_C&y&Z0uIpnJjC z>XxwW9Q|_IRkHI*x3JS{d`Wf-rPd_`f^%ngm9c&Opw!%FJ1QGZedh1{VlK&9ZRlTV z=p_QcHw+rh2l7NunW}dHLoAxNu>C%7dZ*48sb9hapC|Q!xs&KA!?vAwtszCk7PL$E zZz8z-RE@xHSh1K{0kiT1w^gFugWDn^eZP52O$MUD4jYU^@-h4Yi)oQVUQ5w|%($?- zbDNEhky4JhPzAeLlj(bpxEi66+If&e#f$K?v%m_vdIhrXKf(U-pn&B6SdT=*;nE6e zn!)Qo1M9pBuK&$2{;S}UGn-KjIENc}SELyHT<Vn4F{Z9TtqqR3BmR)xcN!Uu79TK< zo&Q8WKQ?z~ym1ZtHCFXUBr*(VvOO+!8eF0MAw3Yte<`k<3`ZaS-R+9qRuY_PbLz;F zBKFFZtQoR1yeDMpwPy6UiIrpxZ?+O!h!m-Y?-k;t*u)dlD{{cpmC1wsNwR+{9^1W> zXsi2|2R1!a%N~W?U#xnwo|sye-YL|pjEaie^?+s+zdIZSfhq_yc(gDIx$7)MN_E7F zC%Qo!!w<zqw|v<qR7D=5BX)rkI>YyV$^;{r!aj)aP<Gs;@(-4<>}rYZs*G{IaH=#k zDLjF;(tsE}At`fF%#V*dBaZz<bPS6~+>tk=MQJ=;{^5CYYGq_WY5+i~xYEoTG>s^n z0~sER-0LQXFP~KZ=EL3&Rg91|>pHwHg2k-Ji(b2SYx4>Mr243C#FFzZ60$07;_wzI z;3YRCE1o&(Z7P5#@gf*<#93MpYY=B-(kJR6@5l&K6zZXFEF!DdjHyChX~0f6ZQ~pj z2n00bKmK@Xk^(pcyGDdHdOCGr-28h8P}EdWbkK(s`ff}r*?5#54JmYBs<;)1#=oWF zkn{O>Qe;KbkDGZNc$ugjD3&f-wBeOl1Yf`FK=3h4{Oo$-56(;fL*^3J`YfxeG)`|u z7u{?AC%lwdy^KM(2~lx<p_N`a)wBQ$W3Bx3K|)HIs0M>R<r~-Y*@&Ll42ke=h(C8* zNI`0^haou_)qoLQ5DyGXt2ya!PLusxI8CV4@$WwNq8y_AFQohOaq*YRE@dI;)@U5< z{E;+DD2G4P8`wrYF<oheYi>U~u=nZAWFeC**<XKt3sqCv-2?m4{Yv+F-DG6G+S^lY z=z;Um0z;SNtz@b&o{E$iR};4=n__2OaO>+At{@$6v3{S%VAvQ33PF8{cLGJ$@Ak$w zt=64h*wyZLyUki`zy3o)M*d~-%{w19i@_v63O+#Zk3m`5Gq^k(Rfs0#CSB&7TymJp z4dk3v_3v%RrogWNP)c&Zb^C{B{zgNnXV>)YEi=Ik53F5i_v(xCBWXRy5ME|hw)yIH zUbTKx$n)2L)5BU3=nkN#ZN8F+m37G$K5lfhfNSt1LYaA*&=9&r*3C3~eUYu5!OF*v zPTiRuM~OI7qm0$CVC5A$3TtyWQsH+xH%e~4$=A6~M0x^9r@V5PRsg$R7KbnNT54<1 ztmn~hy|RypkbJ39dKY-!{(!srnBF}(uJhvv6%#|pdp^#kvs6oZ$MrXo<`~+>Z!yn{ z6X?o6n&ERCdHYt|{?`vDo)gU>*xbYpL44|eECBK?ej7%JzIxmqbS{FeU2gulvu#;? z69+$S1t57rnh_KoYY7?w-4zvCnYqy{e@XLb`Tkc$igCZ*|0ge)f2YviCc1Nl6tvEP za3QyugUII%$UY{gUTd|5UJ))vxpaflYA{BPOA?33q}UifZ1=JYec&=2k5(h<eYuJR zzWp$q1$+S_WnN*lJMEFhAVZffJT`P9J)6dthVcN2#OCW~%yybgCtn@cvNJk;L7y8) z9enZD5&wuAP&|rq{f%3p3aFIDF<H^GZG@C^@vYtlLfIDsTvbJXmw_#X6Rw&PzAv>n znGfll8ZY46VwD&1E?<ZGcI=N5aPxXXr3jb3=xc_d&V|?#C!^Wj%?LYc_t`?Oek|pz zH96rLb?!S^zv=kx6JH_O&Fan)7=Age_59>A>fMhW-~u3^M0&(vZJy7sQh(~o{++Yd zXM!QeQ5iGSsL`##$>hXJZoSC(%rumHmJ&%(Aqz650&}k@4=fyLJeK3}d4!s=!eb%i zaZQbm7JQ9_saRf6WrbCd!~=-2)GmpcVlWu1d%x-Jj!%qC$}AcCv&XgVRa=#@4FNtc z%yM}-M&;dNTB=rDw_8?09kLGSkLS&2HM_ID<$lSv_VdX2)=m}@lBTp`p6^e)ni>|; zStD|s`){`VYd;#&goz5K;9{mEw0uTGY-Tn_<-M``97vAzg*7l<Nh1QxSt4|_J5gH< z-aO7xglzmJm@>oQtZcaKj;-*S1*T0#{a=u$GI1j<yw&>6A&4`ZV?38!$(*WGR^?tt zzKOR>*F@|OiWOzn18Wd#NO9jtPNj`yA|8H_=#M@82n5$e+U<CDR8)))w|k6%KSDsj zd>UL;^sm0vgs7yNNhx;li*}RQA6a!cVxrL{tQ)+g%PpFK$Wsln3Kl4XrlG~4m&5s@ zxwVo7%0b;3w98<zlSv0@oHet7$mg+pl$|h4%bERDF!yy~yUDy*)?u&x2B7c&XyYP` z8Vh#@IUa^gXmz@`#_GWty@kbbDz>^9ID$&(z@CAz8+75Q%StCl_xp0)5lQd8N50<y zyk?E|_}m_8ybn2H3t_qCO#8)P*WJ4aqP8G$|0{Q7au{VSZj-fpYE~AA&f1+V2z)F# zVzN5qA<$_HAUe(SB|Zh2-(zv&S-H8f{MIPy(PGUai_lNAWN#B<59h_}+qWI(?OVA6 z-nsca`A0yi<<v}G7q{0fsZKg*`@?LE1w9ByaCyhpBFyyM2{o=CWflyGG4S<l@Yw8l zzYhFRvfsT!<JxtjuLT!`k7HW=ZRdJY(O8f4d*2W0Zyq-egWgypGJO_tf%*A~#vEzm zdZ+Qxq9+<1fMI2~(LRKtnetej`mm@cQk#{1tdXLKijyV;u~l;`lf{eODJAOn4Blx0 z+hCyIEWyiG#`S^!jSoTKM@Gi&qR@k-q4P1KPRDEY-ixLD?d3zvuP}&jsMTtrvjUMQ zL<a-DHz(J8pqr{b*Yn>w>&{P9uWzbhC_8-B(iT0jRez8T9Wt@XMfDh^Mn^NJhy)$N zK-HBUK0kwcRPlZ(G||;()?~+ZJ4Z*gc5J()`Tyv;+1UT1>muoTZ=Mf%>avG0X;b{u z!t_;HH;v!ae82tS;Py2U3Y7^d!lWD7uZKz`DsN!uVyT#gAds^>m$R)l*qEK|0j<V- zz<)z2I9gj{KRjfUk5ibp&o^#QXKpl)nxA*mZgnT1&p>74)dyHdOe>ig5Xiv}o5V}1 z{iP96QG2C~rZ}2O`pto&@U#7@fjX-hnKcJSIbp8``(8V7GVNEd$?F?TCFMu6C7YsB zJozXaEAQ0ka*p?TENku8efga?Jynkgf~6mZEQMrrEO{n#362YV<r7P0T)pYO?5jOV zo;{2VlBDWwIwiTBPLDZ<BWL-Eoydxr01-*D4{p_YrMqv_Rzo6d1?dmOURCdtHP3;O zYW<dwI{&Mx(iRG!lFZgsVlt7D^q#2@Id)c*we&{(UY;oX^%coqD^Tc*VlMYL3R}*i z^@%Kpf`o<gIciF7wCNx@ZSl~$bQQ7fGOzMSjtFUvB1zHw<4hk>DhJ&w6aY%W9`Ki0 zZkG-H*EQ&{l^{ois5lg;{V$v6o0ZeXAW7hnlJ{+clr%oa{h670%tYt~IjL0Yg|v-2 z(+1HC^q9&_==YAehmr}!%J#ujwz9E5e~cY}?fp^TEpkgBni>vu%Hn0Vb*@2~?fR>l zkjFjqSrR!GU#?jdN?*j@{Vc+IamZaUCKnGA{m0I8t<!|f>21Wwba?^00x`LP5CDRp zpq~S8L<E85fud4w3%$DI2`tc|Lu;h73xsh49BwOled%_FK!iqy(}XwT{j+(2xhQCS zUP0#1ViC87TXzc|l_!aTCwOe65f~VKaAH~UrU}j}2IFnnuyBAblyuh*8Y4Z^zGD-2 z6si@0SjJTWc8bk`s%bV=0@7LR(^Su{P&G<5)XLwBQ_fzlgn8YeL$D`lIL|oXwD1^z zz>0l%dqcSdrzW+%`o*2w=t`<ID{>(DrCPJU7lqJ)*Nr{IZF!u@y?G798VOsqj%fVw zLf7g!lNJ2e_n8eKejx_AwebBJwA+IuYZAbs6+{QXXc2g=JE*Ya`-&Y9aWsNUv5DPR z@Z!QL<#3Ds<O=#{=XL$O-5Yv#8`A0<JR4L2&FqaJZeoAm1Z04oJek(hZZ`%G4Gmo) zK(=jZW;ZIx&$smP$yPHn`@7zg<Nx-|CdfH+bOa@pKxkrXi+}10qUyEljlp9x;#8}a zS#Wgo)*Ba!S-=N5N0W|uR<x<8sJZ=sU>W)Ww0+M;UzpDVpz5^kjmWA>p22DOz?8+# z`P>8_j8UPEndw;e%lY~kcka5m5_!eOjt@-VeKn5_>EZt7_E*_&lg^kudD%!_SS6*0 zwSf`_e&25`SofYO?5sx1h?)!+gdqcVlD5?K3+8uYq)s0%xVPPMvnR1ey=l9CvwS)~ zpI};Z1HtQFqE}r%TR{@FJIi+*GYr4SwA^g&=^<2sF=V3`R#YJ%Y2?%2qj$HA`_9## zu-_#_uM3N%OSe0w(#jkaR7Io^`1DpGLwo9D^6})<N^E(j?s4$TW-6@wU8pyw^VIp~ zf7fIbulNQ{Yl?PoySQd+#s2@eRg61J_dnQToF;jfPN;nBKE_}d9%Rz{diI*eo;6vP zj*n<P=R(*q>qg`o`2z=U%P-4rPYt;XzFTIZTiO!lw)(Br5syqJJt@i50fP>sBPq=L zYHtfl(k;%bIt(Eo3XoEAaez`CJvu2$!{<0IeNKU#(Bk$9!V|LUIdoek4VgnJn6X08 z8%<ME6>-c34#MjKuOxf_<>|=~M4SqJxf(uP6qqk=#53UIAFlz?RR=SCs?z88p}kJW zHi(jk7pAhC8$EAH8fjxCam-xB`mU^&lbe!Q0PdXO=yD}Hvwy-T8yJgrxz^e*2vHJA zO#iS+fR++T6Hm6_^2f1upsM3mE0{86k>YE!W*EIf%z(1E0K@^wp;9P8UP~|qEMUXp zPm}tba<?DwLK>kgjda_?;Ip@L%+U(m0SDYn<?<NIfS5Q*=9S@I__Rvdeua?pMj6H$ z#hmAl6({B-B-fQ>jrY$tAz`DM8L6+ov+Z_oc~kCXEVS0O`p>VIctqO$pLwvr_kRVJ zjmzdEI`m#6Ep-Rg|EwC!*IB&|R0g9KuW1tSVyI=u5JIgh#t6u@HR{XhZW!-9Yf96h zn@a31^fM!H9q`^{>A>P}EEl)eHHj19N~4XL+ZAUL1)c$3H(i18L|vY@`MW+O=f;q$ zD%C9Dq%j|%iS`Mi7_<`mZ~e~a1cXP(PVcnojC$h@X4EgQ$VR6}=PA`Xed+W@0ob?( zuCzb=<`G{a^&AH~nPD+y=JhA>!A7Z)w0W}-qbu2!GxpddDh~Z)xMT13^oaCpvBF6N z@JB=7Dit7|FH+e<i1FaDc<RVxaA`k!{upX62ha-JiX$w$oB?<WO$Wr!2NS~g+hk4h z8SkEJBj~5<NM)H6)4POyG3{(xb#u8nM$NiB>s^<1VHN`{8*LP)^DVpCM&epsTAbsH zjPz+}j6>W#b@k*sbacH_#{Cf3$1KWo7T1Q;3zKj>fs(g^sP@u~{aptrV$f6lOc2vV zhbd-p3JFcN-Xw_WKg9FO6H_?|G#?hU`r=?)cW1eJ?~t#%P7SF>sWbDlke6Bg8Q=;{ zf@Vix5sbS^$HD=fucH_?wEYrsg_W%BUP(p2#g1LdKN#4kb28N;z3o@c{Eo}&ig%!$ z+Eg(JZpQKB8YnoWxkq50QduJQEy$4=iE6t6Y*&_rJYxIERxyGJL6O4aXN{roLJuni z$EN{z(_1fl0`DJJTxL?Lx(gx-KqR&Xx|&P~JVCXw++74T^?H%-Hbn|JYv#yeYI<H( z!4_|ce;Lw*9nF7x-%+6TQ`lMOK;=B$^<P6WkPw>>6_dfJj<h4)G2x)yis;%xEYH7j zMsQY|7qaQQev*Q2auUitNe(~Xe%_4@?Vj{-eKE2*NbzZbf@(kmCS22E)8E~`MBN3G zLLrOe2?=|?XNH|mw>qn<iEvUz%h6uIKxNoStR^#SBgW|)b6H&>b8&X~EE}?@s1reM zcJ49o+~%HLqUN{4=<p*2s?aCJ&#kUJ&l4MI{G$@V*PCzo4P5_MlfHibkKddd$?Byq zIF~b4cN-?8l#Z;nW`|X>MwqMLdY?Pg?{L68WgsldYmuguq8N(Gv3ta~P&K8%;hIpf z42kymHS7s@JkaEYu99sPPkMk>GC;GPZM>pS@q1*Y1p=>IyBm+Sq1irOjLpH(`^-14 zE36fSP!Be!#G(G)Pupuacu=06(Ur@lh(khd1f^(|o+x9Q`(b499qkK{e;|6@Js3@m z{>zabW@Zym`059PO(fa7aeQS>SyZdmYf9GYy|*ZBNfr6FuORfVY0G_cwf!=9b9|FA zKk!)2Yd*0D&4HdCr|xK4=mDqK>kzm7^p`Jli}8~_Fa<g~CRVju^gHfGe-yIhPF6Ay zzf#FYnj|(d!`b<3z&PTXZ=Qr2_&vO|b`pwaGk=dZBJ)f_9ZZEvnq30#;-<XUl=85g z+S)?ru@;<zYQpS0DsA?goQlJg^{qM!id`5CN26tItKF}Zl2%E!0*gO9!AqoCk=SDS zZ7w=9Yn3if*Fs~%f3f(Uu8dcU1mc*ChMzqJC5-}+sbf@PD`)|ch^5&v;*23$VKQXs zYcvyRXk5T}&#GMPy1Zw(jA^wZ6|Cgu1(ohxCj+P|ydlAfb$e4;@>?HOvzLQoX_VMV z++WFI6B(S+mExUocsJ0?-%Ai_LTr;*_6g&C;z8+%;Pp-*g`?xfuuON+KJZB7I^c|0 zv&LXt;MqUJC)v2?`vu-Lf$2j8BN8fOe+!W>>h<y5-3MtBcx4M7`O*T^fEwF?_S8|n zM-^9nz&3BP?x1~@%n9r0C}6G6iR8~jdW~KKT<w)klOwX)G%YB?9bHi&A0a4|EQllx zy9)1jum$DA3M1pdz=WxA1~~OL)12~l^Tj=Jrb|FV?$R1J2G-Iyds7!d^4UgX<6h%1 zYR{X4;c@ua1^g7u^7EU^5+1h6@s#otb;$?8`gtf3zJ$>71m`bI)V-b(Ga@-n#t}V} zG66ZGFH)Oq7!nTTaJ(40Q2c@4s;s{YFW{E-hLCxudAwht0^k1iSu94xv%kJF3(Lks zi3RqE_>Y7A_~5ELco7P~o<3o?(j+M0yG`Iv%t0;F+gBPE2V?Sbi<Y)|b*y2$QRAqd zA2B<A#n=SJgJzeB@Z#y%%<zCFf1PrL^6gO`T))PplroNsc;0xQP~9F$Mg<m`5QStW zyh;gd#StE(R|}ieQx6@pRC@+6JIMAW(5xr4<$<{CZ_XDWZ2dw-#nI3kEMEAQMH%pL zY!{q{!_liESp`v=^b&{hm;)J5Kz8t|CJT<PPAL9V_zNnsP$s^W*H$L9D}PPSVH0Ns zY2{9^{8#22N(W*<e0E84$i~@xzFJcuZ!nPRwD!hoaU<6IA3c+$-=C3rOg2J6pX~AI z^SMCFFuPhWrmA$*2J>^YSe&Q%U1kazK|aZ3uekH1Hlp$b`Cn~TI?Y~0-{H~t*VVD= zLNH^q@l&SbhNuB^6qH<|R0-tNiFa#iiEd|WGOn0MN73301}paOG4~(!eg6qaAWMf3 z%l}%V31F|$E8T9n+zIITl{_)HtsBR-pJ=A4Kxo_fg7W#~vDfE~nY0v1U7`baLqRbV z6&ojM(3oP69pd^Cn5+E}@zlbHKDD6a6fsNV9FW0bTKaa2!%i`mPgqT+cE&A6FT=yS zd9Wfyd@2oCZ1x8+*0z(w{kF!eJeYJ<l*vgIWGn+D$H{U``+pTKi_$^4xitRqFaT5{ zN;?lUj-$NX)%PR2cH>FTd&>m$$+Nk}1#9kKSm;GNT7X#Up95_4vuTRN)p6a(f9cBe zm+*O+N{(GOF2+*kP(qT|lAvUN$yEOMhK{iX0KvGw@Y7R=OCNItlebv)3BIeudQq~Z zZyjsD2wnBOv>5=>cAwWZPIsP(%ObPDq(dO#;B(nkZB@neu3LSRwkO9?4Q1>BhLeiv zfzIz@n(uWKFY7W4z8179fbHvMhstG)^=92tnwb<Zv|)b!DW~?K%0KVQ8mCKn#KgkN zA7_7Obt!^;XDihXJFEg{ce<?oI`7vqz?~Gl%#+rh2ZrnGj9Ij|n5l5`Gf)zV{i1k> zZ!3%Ha`HZ{FQiz_kq6)gc!x*xU?`(ASegIsbRyb8;sI&}HoYIm#FkixHDM~l+jjj^ zsEK(d)RcrqzJNbIp-Bq(rhTb*_7@f;Y8ebHzjg%1a+x1#VY48MpQIf8_K~pxJ=-p^ zN83ps)P>`T;`GYlOVlNHG;MX-Y{#N<hp8xxh_Zv3%GbH45yrN1T<+e+0OC%?HBAri zgMpzjQHcWlYNeMTQF;EG3-x?<4=j>Rt6XL$KK(BDEWk6#3H_|#WP0GMlK0iLk?Z?m zihhSnH0n-3ih*8Ry_E~WiYDQjZ;}wOM`&-HT&dB+gkS)g$)IDb?`@yteqysORNK=* zuP`}?E7-rw(-|1tv(@Px`$O;zDe&v&Q;gVa4{WWSzUU!Xtz7UR@WtrMs=DP}>FaNS zS{6d6#p;ehbq8@EkXmRjQs^a78d}>%;$n2O;%rFN%l>VXD_>g&4^A}!LxCs0HQz6{ zG1ib=pVN&r@3QESK@jO~puzXq(ev-t$oq-|(n>_w-rC1)fGC{(dRvM?B&xAILGMKf zHB_P-cn&dY3Gkp|D5=+Dt%GT^^=kNyM$q%L(`5$*)}4<CX2-0ibZ$!}nCW`sTS{SU zeCOR8_3q&n>h3@Xz8&MhakpWx<FZ1E;M}=q!;0|;dq_OTJR(C9RF7z`ZCMNLikLN@ zocKX)s7#@asHDTw=iSvLELpS}4Ef!TQ*~T5c>%w?TSc|pjxtXv3$?G4?Ob&Y-t|^( zlP48731I7`*^Z8Q7u)tQ*~(F#)iGo*bol6%_72D{OGdXVf(#>y^b7f*GBk0gRxq-= zEDsGZ<1_)kctd@@TCYPOMgq4|f5NAakK}#6ZFIM3<dqAH(;0QC=B-o?xkLGb!zI(W zL<@(MX@?@7yZaJ6{ptamuXWZ9*#G@W?(N`1#?+DHju_Kce|snln>QhIaodZ6TU4Mh z6t=RX;Sv3#MdOLY4?*oJ#-xnO+b}Dph1dCdg5%Y&f-j<%#QEu-($N1BxB7AQHf<!U z8PZ~m089FiwhAJ>m}cTb0-8ZWg%ewq|0)eN;COS2^eVK8jg;zm9-Ty>5H53~lyD&e z9D6nIaCYZ4DMyO<WE}RnVJ&M2Hq<4Aa+s*BkxLY1+9vrR8R>nH;QMI{IK^=|I)r2+ zY)Gkdn0gqnJ>{4BV~vG1u68YQc`f5Z6RMJn_cTkz30@3ksh?Kz0);OarZdJut=D`k zrSz0Zi{0vXzMnUw>MT<6Ui*h?ByPSI*f&V1B)o&T1px_ZdR5(^ZEhezAmX&|iGNn` z0|W^rpV{12rBDNhgg(hXtG*8UPA--yKmUFG>vO9K3|AIet^qz|e8$!0owoJ9@G%(l z%=Eo}_8r~ddxw#YYIje9hpo>=M~B2Wu*|zK1B(vt0ExG0Klmdn={p@04D>w71-$lS z`v&%5Q5Q1=wVVu&)3^dhYgz~zcHJ@-PM~8dWs`qqJVQAFFL!~AC_+Fy6Vg4?@8)(* zx7wI=fb)m)mr1QaNg~_aB?_(x8q;r(+{_D6l7im2nG?#>9_tMr`HlePZzhxP{116d z?tDuoQF%?>F9VnMMq2|~1^x+Qs3d#)Qp5+Bvw?YTr%DeClS2DP>xc98oGjG8&fz%W zd9Y!A@GMm*&>^uGnP+jv)oTl31|m*xiR+?Q0TC!}+_mxN9C$iV4X!HUip=Ohaxm?a zQ(#bS&S?W=BI_xy*9nlX@8J!}JgVTi``=EEey1zEs$x^8s|!;G?%li^laH>~=ld~9 zga0K?g5WDpzV{O?DBlrJtJZLT`seOmn$c&R9ao(x-@NksX5R;w_x1P>7HtC8^C=$B zzZ;`skxzF&zxMi$HkM=cdpn2q(>z6+2mMy--Q-601rqOeKRyD-5^7>|`)<+gK8O<u zxu?=?^Bu~Du8H{8THDhS@LGT36e4v0TdCSQ+daBpusOl$S63-@vGIeTWp|bB&EZUD zD&@DlQ(PhDo$hu}l-&_$;aZ4_P(~0Zn<0D6-)u{Vd-UFascUL?`$ex+yYGhutjaa2 z#fT6*nc;J}ps?#9#vWI*I^(YYLIVf}B9Utxikyck*_0LI&JRGsdKrHOFd6ksT}&WA zq3%!*l&=koxcZvaHs;PSMFBhx63WsY-QpB>EOyF0;2w2icQh;QhT~&u$UE8>6furb zqK|W(FfM-<OXZ^SyabZLXkDSi>a<6{tSs=tmzablL2=}8rbcn4N@6+v*^rN5uon-m zfAOc!Nt<yaV}A6go{iEnLou25|0~(D;K5&hz@u~FO76dCKTIY}R;$1$Wj(4xN_F-; z|1c$o<uw2xyi%`T6J}0lvl9q-zlQJi{>y?g^;72-B@qxKQ`884qaU|{%)~d2A&N}< zqbQ7w^)I<%azC!!JcSu5c#f;0Y*bN|n9-qFVIz_F1&w>OS-Vd>;;CZ&X}`)z8v{lN z^RROl&WvHtI5Mn9x!5kZpkQDGm!My4%N*b*vd8W(F81^->e5~0#<`9J+?-;X7+0-| zpx-nTRxu|m${VmF%6{jRzQ@D2^%HP2-tt!Y1U+PRxxmbvs!9Im4#1j@#*`V{`BmVR z!IVKT1q+=+Uj7g1yFDXo*xz$F-7==ZHal=u=o8T<)^t9e!FoHlplsW2?+gA_+ksh! zp=h*ZJJBuHUJgI~Tdzx&fl;n^47`YJUH-c6PlVH1BVpb_P<YxzhTxY(zRweF!23nw zIU{3()iW_%@bBOB-H-RNND=;?OxJto)QRY#6SETW5A}^cu|=1MgGtMu2x448idakh z!N<!Q_314EiI=N&=+)(m4eg}yT4IzMtV?Rz36tI#ghZSB|J9M>AA#6<T2md~qC$da zBwl+W#9lx&F*P^;7Z?)1N8(kj+R<(%GKYDlkr^|YrSIMzQyOmk&s(eBXTd{wM*A?q zKH7`t?!{JNNbs$eUjrZAZv&vVpdkzwcc?;C7K+5LS=<i=S&m7{MqZTY!4jHqW)<lJ z><6(K*&g0&_REX6VZc9$1d=aoDUvrrsYJrV{Ycb@VY9?0hfTt-CnYUzk2|cgOPAr7 zW3d@rO&?hiX3?GefGHFb?2-u%RlJ<|S*b$wk%^<5yGz!2!4W^FpYubZP*MVfje%c| z0dIVPdH#CO^OdLPuRL(fTwJp^pVPZVxIRc#;OYs8Li_}6MbuQs8A(GTW_I1thW?UJ z1Poe^h9|IJ*Iy^+C9}6jm;i3)TeLUS>(jccFFQi7GqBw^t}g;HuDt<R6c^yW)a}f} zf|B9Ubla}^&49ssP2b1c-<^(}I{z2?_ehejBt>kuT8ScB&fA<H-Tes;n;l+vgu8E_ z&)NnC$IpEazTLOWrwubKyBrJ*?q`|S{9pIeMz?{Vn>TFCV!7W;?TL`h&FaG}amP<a z)luY9N-8~4V%>OVYDQ^kVu_~5CdSrYyEXR5wkwk8L&4_R&bFU-4?tmAr?*3icU!9k zL$J<*5j;P|>xp99z^OS_9Ssgqzs|n)Ls54DrMVWNBGaq+U&y`xrg!7^Tgf5}G)-NY zymMg^Yr;P30keU3ZjL*>;aQMojDnUoPAhhYEa!fh7t|O%>Gs$?TA@GjkjS|GUh@(B zoLS_5tstUB5j#7a{uU%QAmV|leeAW(JszxBITOo%o8E9Sv#>O=HP6gpp@j0&on%2` z>vQ~dl5`K$)U$(T#&>BF*m>hbHOiV~ii{7TP{};#Rw7Nu+K>I|{|C#198u4uma7l8 zwfL0Z{e;`sH!EX@XU0j;KQ*%Ts+73eR4m?w<AsSNn@H%e&;K=^ONL?udGVfQ{*ue0 zDY5eD03Z9#g<8Z()j?h!p9CocAl)Ah-qT{Y)gF-EgZR*HOHk!MoAsO05gF2B*+h6c zEl11y8TiKVe0bf>5+pF&F!wGvB6R2kl&0gBP{BIJEcvfLDG<mu_@x?Ry?~-c%fc%j zI*U0%e2ZjI$krF1v()Xm5Az-75dVKH0IpN-bOy1|lo{X8`Vx$|8xwQsa)?9I9ZGtZ zX6C-4M5pfG-iHncE0OV;$tgj;xTIGb$704bFixjua*@~#etr&VZGwWc04>M48wTas z*+n;ECk78Rdo(24CU-xi(M;>G$UT;{kyR$|JFl61fuY%erwp%4o`8F9DPlp<pS_bi z{=V(bFZ_A6CN)2EM0(_}R)rykIwSECA2{;y=x{H{wt2*s;kkvPc;a$}nWMBLJc!)z zOe+4MthlpS!VMhSM%M7E)K9+r=`PJRb)k2&V+h?3S~c`VcENUQ44;_38!<Bi?X0WG z6$*@S)0$Z*2V}`vwL71SZjh<o8cI$ra-%MMRip7gUJ?tvKakvwi6t(ib(o7t?9)at zNuXa&y)<nZ_CjOSbHc}yMWV~fs-mp_fGlNkbi20}VTKXKzSZb|A#*PVUnh9X<U-8t zan5D~F)51~hDYbKLPJ0M-nu~Xd?tcl9VNM4KKN4c<6WxB{9>inRyYkYl_U#~v!fmz zn|gRGrsQQGt*OR<ZaLj~3f}-}TQ|i{#>xOwhBn9TlYd-0d(n{z-vx$(4Pe(>+;Bfc z3P7VrF|JSbtHn;hO-=ixfvhjKnA<~d<ed`v@b;}}R97MVR=a;*M&Kvz`$3x4dXv?U z*?@gSzst?tgSB}xzpJXg0i*Y0Is5hAs4LHomc}Vxl3pdJxl`acX0Cv5dQaDLqunVn z-KN7ma&&ZlY%dDvhoFnX<??%nRLRM4pSJs4A=DBZ+ZVDLhbHEefbOvm3ik1gs{sTB zoW{=KtBUqoPcvD@e@i5pkVY~T+I0_OQ-*6*L>i~lCEQ4$Lb<>(A$DM940`&%?mhxX zFcV2E-kv1Hi-EzBblwix2!sh~pLC~8c_Y8)G|u7jUSisIeDjufT#=q1MJ*U~XfD=b z44vXPmi2Wzhu;7~{WITkkt%!aQUa`4*n8BYb~q?*GR+_PNK!^Ou_E%I1aBZUmQNa! z`2+9maSG8=A!@8NUW(WQSUSEt@K{KjTu!A!m&;gq`I$=%mx@-z6ornQK&KA6{0TIy zQ=N*Wu(!DR<5$hToSmL%Tb;jd2V9lDq`Z)NEyZ%&@YS4p;OfUP4_=&v{2a0)xhE*_ zjWa|28!<rV_Sn#?v;{W8l|Ns*-ofS5_N_STSb;Qip6E+H?Ul|k4Ie<Hl++$9h1FgR ze?$o%Ni;j%LaABj5Ly%2?o$HLC3?_U@p63D^1jOB>R8qrRc9IAg%M*0rw@^X@P0TD zQ^AsWQC9|+Q%Rl0I`otX&_`MDNz8n_wWo+x+LM<cGR9-bn{e%2wR+iB%iZl7n~y|s zb#}>zw#z1@N*iu#8dnNqu!5s#AV+iamt$R0y{3@&K_w9*gMpiwVX4MxZ{9c^dN}p| z+QQ(n!<%AcWlt9gQl1{!K8YJ|RZ4;5Oe5aKD-YXcLHBu#TW|H?dwUiNI>*cBf5K}0 zg9jAs2|zUq1D*J+T)P&ty#jv!s*LtaQb^n$qf1->oMyLzdj|b6BX9V)got`=%tC$r ze~d<6MAStgmTJqMIJRHBPud)dcJ;ua?0A8l36i!cLX_}+7%2*GcxnS_zbD_<l>)>8 zvtoS*4MT|y{;Qq=uLS`UU4UK56NrzwAwArobA49R31vdOe>iAp^xZErm)&nWUDEa1 z#jXdTO5?5m54&^!2AU0dbb7~4OJ&@~F~!Pd;VYgvW|qVL*xF)3xNvoE+)bSp9LFjJ zW*L1RU-|)eT%7aWtY#Y;yCFm}3ygwD8-%K{WHoZ)cvs0IC)1IC<T2p0am|I5x8##s zVBD$Pq@s-q{aDdP$&z)`Lm1)-6Aqj^{heWSfNl62^Tg{@ZuWsI;L^$Y`ktrv`6CcH zPuKyrdSz1DqS&g0R=`y9(rJ+&<jTD*8sdKes^#)|1Y_P5>}@P~d@jlf9j?t&uYdIm zdj8cO&Za|Hl&s)2=tOjTbYf_5c;f^`55ht@GVWS(6OMYDgqaus3`p|KEF7R4B8d1r zRkKhe>8jPE8dRA71^b+3m!7nxI~}N5yDFBV%x9tq8kfc#424bePDiCR1cuMw$bL{( zrdcEuarUWX6AHt*sKI7*N5})}`SnlYQ4Ogn&{xf!&`j5|a0^8F9#BHWQH#M^5v`c~ zhC2|;?*wl)zHR(dX|6>fJ{NalA|V{L3}#&x8txMZFG*7#A2h;$W}iQ(=8$PG$#W|y zsyVk5O24X1P1y)@PLYx)z-95ySMrmfzfH(fJKDBQKw=MZS8sCl2h?R>X58OmYtYwG z*rcG{9B3;<x#xswmlF<4ZES00j~+4el0Zl@Fa=efoI_7)oC0H?1uZQ+#@HgC>ZcJ9 zzpFnUIypz_c?|QLx`d*H0K5~YS7(W1;&IkyevrbK<qPLs;6UpPGm|Q78La$a;)>)T z3A_c@dtS2N?1WX?vX`Knj6Ni3aKFUgdFAHvr{nVec|y<L70KC$7xSN9ApW0TAQ);+ zCPsx++Fqr`>L;$s6l2aEi#Dw6YoY*!8`14@PDP^MF(VdhkniJ6f_l9@nU3P#GxVCR zDElfKh1zQfb$a-(8r}Y$6R(qo&6_TlMS4{g@o}WFne!-A%?h}DY`2ByquE30j_X`x z3b#a+<Idw0NlLpbf9QbL56pZUGA(%sMr=0$g}uIUy{vHcg#*+)x{Q&mW^#}37cew5 zTt44<6bl5VLnDcgK!=vWyYkw?_C!CAEiT-^cU7`c=ffvP#~(kM+S_vi-<3XncLYB< z1K)4H;7(yO6Pzy|WlBRFV)cMhU%<ZOW37M*IiW!KC^AASO3B$7WS)$84$c#w%6`+^ zUdufnG=>(UgR1P{$FsNP_De(ThpdrY>+yG5sH(qd=t9pd=bebgghO)xS&6F$ln4sn z^|sMshuzfEce*lmZe9N%dmRAOtIBrFYf-F&r?N-a9kNiqlixoAzw0|{o~PSIeg2=( zX=xfyH$wfruult@s62uDtUdWdTAU6|*D*ZXhTQleBh3Y-Z3&1ftpD2ia#VPZY|JCO z?fs}qI$WyZ^LZcpVSPS0(l0lWu9Awr)o=AFSTI1Yigkv#4N(|&u5{7h$>Ts1&TldY zrN!L%9rF2|SJpW{OepO5oH_VZ`9J;Lp1dB(lXl)}_kl*#?{*HBlgr?71;PiMcJ)n0 zl623`lP5NSkW<Z9`tFC%E@R^}AFpr5bS7tSYqk6TxQq^?r4nx+*_0lhPd>rh9Cr@R zX9c3K)RFY#F$cgonES=Bf9fMqOlwnwBmeG24guO!Hd(<Vn|)7b*5Hor0FF|Y3^x5{ zSt$XS^^>O!@MPR81h=fKQAUz&9DN<CYFp_y&9uS%Ogfv#6UBlzz#PSfe)@ZkF$Bjb zrX_`nd*jB-Q~b_T)~y;v;C&~X|6uX+^@t<uA=YBPWlP3MHn5E=l0x!$_&MOHer2+f ze^q&GUoEUybC|9#hd<)P?OUB0n>Fjxd<AoXhmf_A=@Gvv`6?#WM(etDN;iO|RR;!n zezUn2$qwVzv44_U(d~EzIX~c$j96daysAr~943^!7k`4-mR6>()WAISn~us$?>f{) z1h8_N4^>ZO;YKXpM0>i)^pwZNA^zvA{=wnoB>#QX{^ac6gbyQlxwcxD_eZHE41rDx z;A4n*cCG`<lm`Qp+k;I!=!GosR_|BEI%X3M2ucj(kiLw@T2KU;aXvTzulC~2Frsk8 zPK78e`bxu%RQ0ZA;clx+jduGGiJ*5f)Yr4ocM}3JZQuaS2=FcdUfMVh=F}=oeJw6N zf+lwre*Bp<x$5NldauE>V|ct#ShkyIWqfk00egcCPEbOoim^TVF#1+DayNUFmeK}_ zC?(CeYpZRtS{1CW6fQ(bSZ>K7{5qrf@%cWhL$o#O$vE_xMDl)z3flJUbh~DzG{=Fc z-{l=2bUJ$B5fOkV;2&plzJU?=S|W7(9B|{r(#8yUALM89w$QO_Z+8za=zcfL_dfY% zzgq9_qR0Au0mYa}Z&hdPo_5|TYTsP2uTp8eRKd8$&~mxP+20%9Dw4J|F0&$o)33tC zI!Llvo(T7=-bK$_v_IU0VRuma9iaw1RX^P{A&XSvvzcEfnI-kXk@6-dZHKN+%ZW{h zORBCf1TV3L=>N5Mol#9SPhUZ$N=HMnAQ+_g9zY3%E((Z*CJ?Fw5Q6j~5I}nG2!@W* zi?jgJf`s0CZ&C$9uWx+*=RE)S`}_61XFuGtXU?8`cV>5XXMQu&M#N7qd)XQ4G~NOx zqQL!zDe_|k54`?L`|0E+`gCVX$(&@C+CYiLx`?RrQcj+6$<`~z1g^)I48Le!89wQj z*Pn9rBeV>>MRr+w2N4m!V2dtdK(aKS0olUh-r{pAaGXJvQfb)iYu}-d7=tK5EsIBn ze~-3-RJi`b8BY7A^E>uUxH~sHHYNpSz4kh|udXPL9*lRPf*QfQ=~Fgc=#za7agROj z@lVwezV8T;F96RKUC&#qU6;dKLD%tXZbuVi?4Jc3H(;IT~nUvmW$8aK6QU5dga z-_T+7DV0<D`!KlAQY2(6o@oM{a;)FtW_@Wp@&rW3my_afPudB+@?kzfN%cH^m(0CE zHh28fTG?kQ9T^4-iP+6Yn{^prnQOsi0l75TfMFfs&?$*`QOco(BPK(7zn(zvg+kiC zbN}xCU0s>qr7i}HWB_BDGMw#b1}(g+U-}BkB(`W+>P4QeJ{lU{<T$+II_!P#0u6ha zvmKgCO(OJhuC!QSl%KBoHfpDPueoX}t#OZ6@e%0P5Rprnk4ZH4aQ%b@NAtCqI=E?5 z#>`i!S3^1Y5Z6_RvDaJtPQtR9=#-n8+xk<7Ts?@a+Qak1g771w#-8xWc}e|~lSvT@ z9=-~nHG<D;CyE{GcRi5HRZP+)gQ^0Pb3wqhk)%wZ(3<~WD^|7Acv$1Fkj#tg#6^_n z!6_(&BCj`X_0OgMbzrO*Z`pP*5%h<bB<{mW^W|fa&;AEB8^oU@TQt1=!;w!wPe~yV za?F@^v7*?mt*?EaAGUOVm)cAbc)0MDBc|^C=<X>qw<8<X)(tj4o!8yGtGiBFTUL%8 zN$oPIuj=j@5xMh(9NgZoEk0##%smV6jGY3q;|>*;f+48vpj|o{RvHA%?NN9Ir_+Q? zlm7$#d$8Y(##|<DACsrLs&}0~!;)_Kak|$zNy4Gyy=l;|I}*&`GrMqaUDj~`FVrO3 zSl3`WyewhminLnC&a{x7oN$p#(jvXV<GB1|2XkUVFT%!LV)Y)0!&p8fO)0RFeYKXP ziZBD@2Krn=+`C)L9#QUfF6w<cYGVwVB_E1_4Z1e|`s^N0o<&^}K5j2?tTO3V+$l@j zAQJ_kliaY5_EaEE1>JuLHrD+0rtaI`9W8x|N1jNm-pemi)VIGZ`<j9k0Hpf$QxZ<Q z{FJgzN#Dv18oZNn_xl{yH=g<(ioZ`2_hS<%5`ZbXkj4qH9?p7~iW!5<zsNbNXAkg9 zS~Iv1b<NT(2E1yWH9U9S;p%hPA6C5BSSAvvew!C!!&B6bp?^Xq%|hB0GaXF8;=Xzp z&x@V4vY<z6^NnDqIzzje#`capjorNhN`^WUI&k}9TB*<63!{@WG2Q7#C42LLG4E4O zOWt%9w@y&KGq>Z`Z-Mt~uDFJ3=ys7NgKA<3-bf{pE_1|<K<L-F?h*K#M5?~!!*x~9 z8vkbgTcj;1<IjFp#>M%weVqjUMV<*Kg|rgXR=0)>kcC91Xk1LxXkBXvZaCIEqDc|| z*!t~=ZXXEkprkpQDZH-tf;XOearKU^<DRpTl6&xt>~rlc+NCK8X8v%ir=21|56wWT z7#H2*Ypb!UmfjklyU?fldB>CT>lMUW3O^2CCOH^juZ35T7Iu*%@U0jvY!A$6mc0B^ z!fnmuK@7ilRXq$&ytC1*sReh@5)Ln&@@4?HOier8MCY{(kvwDqAqb>CFi$jv<~{U^ zx}2(aa_>s23p!!sqIsvYGN+h%EGWZ1CnmmlISUKk_%<J&!=6xAAFo>N?s>8&@zSWK zrCg{mnHN0NoXktZt?@ttb3ffP!Mmx$=VCol*ZKRfsJm+_Rg^J_ZXjXJ2b18sM@f{1 zqrJRk9d9n0WKU=*WG|F(`ocUVDSy}I@jn*kRa3*8T*3sS!Ayzc?#oo)N1}TD78d-^ zGhNL+_x(QmLPw{}_)n4w-<V3^>!Ssq+W55@yh35bg9?HGZ-=NONhp?Vb|YSmeU3B{ z9yROx`s}$Y%)#`h&gbp<ux18-%0Mda+>LoTt5%1YYC;)lSN0{|>S_5e-#Y8HR^JQ8 zw^I@Xl5X-eE3n)p9MxlU4Matbe`<!jeo71$YfB<!l2o$&Ab5l9C9{+1Gx?_i3w34m zy|>Z6K$ke&=L*0&=7SW|2Xa$s@N{I+o{MUrz7k8o!1!H`?x>_xcEGM}O{6aI;s+F@ z@TvIyaQo~D!*5kcR*64aOC!<hHnD1XXd#`QKK}J}s-YaZJCfFU-(LY1X%>sEHBHba zz1;KY*0*2-fH7BSiFC|as$Ra~tQ*gYkwDvSEOx%YL2%V0x+RCv;S)Cp^5~iM7gMW7 zjS348I{y^*V}Y)mAeM%;+LGSOApNn7+f3Ub>x)wD;Z{kKXA#DFO{hWU1Yn<IYLb+@ z4YDxpwX#CUxOxkmJp6lMFbciSoUy-%q-s5H>o~P3n(wA!X94ORrN5GD)60f2xD)ll z2I~;upG@$l0%lb-egXpMf?{gsH|!z&yhQ=go^O@;0rZR^0uNH*62n$-Dxj2P&)78I zW^&`=T|e~&)gt0_G9JPSPmW5Zd)e6%c@2ashx|Gn7wSfQ*2TgQNt%YoLnMuG#Vb}4 zy`D<G)Cbs=FZ3e<H&qF!#MYiM47m>-axWqG7lo3e3{!9rP;*KSQ;3IB3VXnsDRe{k zwq=B^#J!jXIz?n{IqyQmHlxq<BiV9;*d?M_sE2iX_o~e8w*Gz1%1{#gnL4PgeJka@ za7@Ft!B_CtrNHjmhe6JEE6Iu!<t|g8sWq-|^QFVO%)k>TBP=x8h)SYtxQ%VA*$Hr~ zwW{i7qJ7E!PO_>&&5y7Ogt)-1GIF_}&Qim~GP+0bx%TRJC-)Nh-mQ*^dB3n_?me02 z%v4M?A9pbjZ$fTL{SfHb9!i|pmb&Pqyh>`Nd=#;i`;Uv)3k)WvS2$IRZZIvqqxMt# z&V7Pv9UYPrpqmHr%}C>XCVcI_Rtrt&>#qPmcDrC6s*RK9X<3%=$topu^I*7KXrvJ( zOAuYI;l3Ynvx0vo(;U!|p12{67_?@toPOIEVnuR?(Z^p~dCrwji8T6ir;UQ?)!ilA zNsa*pLeZ7g-9^R`OdzS;G>ZFH<RQJNw)n=gZUAG+T@q!Gkbv^XxHUO_7IxjbPN~Ak zZ528~b@o+c45mB8Jf)?S+*nQt6Z+Iu*~FqJQJ~Y_+@UxlY(bE3sAf$rM#+)p;NbEz ziYmSc!;e!~Qvt*Vm2YRjSH)NNq%u|$jtL73bdSK#cY%SNlGTAqKX3Ure+tDl=P(-p z-SS=K4j!xMnCyH%s#DH}lY3j&$*yg^cjjak@>Vsmxi^Hn&i2K2CdK4ae;nB}>#j{p zBU0igr>3lOQJ%kv2kp@4FY{+vl{{A~e&oq2XYpFiZ{8+|OvZeea@;s;EHH|u5ZoOG zTTG!NY-Rz@hZ%Dc_QJG0?tE`tM=W`fTNmAR4XwG63nV9$iK3|>x)pTr*+eN2!z4%+ zrf&2@hbzFb;Z^rF<gu=XnbjSnrnUjQX)y_{Edo}RX)C0tVp|@k9$MSqO9qYw6z6~E z0EH7|n_b^jiR?hn4yucJIEHT(CT?;-^KEk`k3u92K-qO+q5gK+cD6Z~?6(DDo0SQm z<5X`HfR91Cu?8|#*q{Dvy?F4OKCI=H&fzbAVHT>Kcq4<sdz-lcS-AmwJcvD!FS#T1 z$92~o^|0r~SHs?4&}~)?DFyvu`~Z2mY3@%^-mM|8c8AUP#JEGIM~Ng+i~F^yXvBsf z4p{2aagSnqrqj1UYNEa-zV@4H2XTB=XX@w@h+LrXz$O8IDI6SOGC(`~f43nVMWYnS zS;;Z;%mc0C#5F0B0Wx!Fw?J0ax8mL#Y+^b(KS{yw{Ifkg_aRRHAksU3_Az|X7{uFl zE``@|=YgcUA(@^)z=TR8iGMK5N4r;uy+s<9U~!tv*PBSpeiu-agQ6<%jp#7p#Ne-H zjZ+@S!MC42k@1FbX#(gJ0530I{X)^8_EfQMX>wc!Pf_fQ9Vm%hYMz)PR;2?*YFfnf ziCNhBN#K;oRDf#bHvC84;!c3?Cn1q150`l2t811yXxX~xYO4mm?n4EGNsY>TxEIwn zUTH*0iZl=|rpoUi%{D~+Ot9)P#q*hxfg%nbt!X#Jen4X!XbGvJE2UrpMp;P^Gma+P z!0az~dWZrT5*14?d8d3|q`0v(FKM~z>>B@)qEhMZ98@ceLJq{~NCgqQ$HrKs>O^(j z$5urp@#{~<baCGQXczE_q|C16CHA3E*uk6`fVT1>kF|`_1k~0rz|2Qg<tww{ZLQg4 zfN5-wp0Y{#kbJ4Z593TrGtoFOYzK2i8)Qtvd-NSKklI6(*yg)+cQgV~D(bcnKqtfQ zntCYVJHHEj+~_Z!y1GxbtF(`$3r@YEE3kLLhB;$PHAghi&tVi2#4*0kX>24<H;LR= z6yBw@Wc~VO@KK=&+vXY&eSNO26)TUNa2uR-AnTb!$b7R<CwsoRLKmBO9yeA*JVQ~- zH@PXCp1jTZC8-q!Wrf9Bnn_ptsSfp--Q}bs!s}<D(C1~j0e|!g?y5s!d)Mn%U;ZX_ zuv&xc{3*ZcDN);3fycD=y~>1)d8F?;gkc30Q}3^7?q<!ps7q%{ygxYRt0Yo#vo%?i z0hM=|X~oBJ6@z3~OhS7*3L+KT2HCs=#Wi50t)EV6^w-mh#2qe0SKHnc>Sw{2zhE^d zLhQ`fwdtR<80%I{GnIn?nyN$@Eyw;<cz=_&aMLD+MjoK@bLwQHJ$LUq5%1On!1C)} z_ZNGi?+1^^QF0lt8>3M)q4fF`3LcTfFj(HRkj!ZzPGgRc@&XdG1-8IV1`_K$E)*@Y z7B!zE2fx2&DEJkbb~VNRCt|RM*)5D2VN2C{9ZI>=NK73PlydMYT@{NN%5P?&`6VU4 z^0oAN_qA}tm+fnkB8RX~8dYKv6UUzgX~WsnMnrp4h7p|xYTG2*1!*-;-6~+3lh}sN zs@Sj=GX$n7Xp13%oaY7z$-QjW%<;HUWE-(Y4}8Bx77Z-$IAA8RPRkLoB3;tbe3&lq z;Qf;{%V{!HG@zrc2(BF$=lI&@LNo6Ex%6aC%!bY4G=COK8p*txfaSNHXe1F~oRU_( zHCI_J{T9L`G)cJR=E;~P<OM_lS_RIVwmwa}EUi?x(;cckN(f@YtTMt-5w=W<ZNJ$} zg}qj$mh^mbm?4a0ci-d{I5o<9c%t=EUvqEEan$~1!=t}{bC?Ykn^9%cHj(W$`f3oo z;J3}A$MI+cJFk@uz|~o|yAMfhuZ6v|0BEIwNZ&GQhRyoi0Cl(p2c>$vEo61Ltw9MG zVJ*+SKf|k*miVXGtq0j3k;R@J9EBSqp%rT`-$T(Gr0m6)wLWW$Ssm(hfARfK*qm7I zJ0EP)3gT%cOpG@(+%?!jprgBHT#}w+W1*{7yAnm-K{ny>UA#IuXr;*<K1*+I!Iv3a z7hvEm)t8EpLySacIxa}Kz$W_lJ$}EMm75&9WlM9knk{S?CgPA4Ko#{ZRE(m<nK{C! zSbvUI$IG*f?Ln07FTWg`(EIsAjAbiG;-W39=-*z-q??MmNg0tw2{N-8l1}^>nlVGr zm?{55_}v-wy<5x?fKk9Z<M5r#g1@51^^d4^QmYKnQXcl3oJG8EFMG_9)b^<>oe5vR zUd05hCbVW@z?%`Rz+_!KODvPc&erFLv9j{2-e;#`1gm9xRmeUZ6p@Zpw#ineemO*} z-U)$&<rn=OFZf0UJfLBZXiFv<lQXV9@xV+qY)q6Eo@)NES^nKW>Qm_z&@ymfXKW$2 zyq*&|T1f}U9<jn+2=C1;nbSQ~45$&|{SntuwKQ?G`8)OKhrLBG*j%^I3ZcSfSJ{*s zc(XT(OWtg`UYSUg;k+1bKhZl8I3~{o*<e$cTdM*YjS9P=3ULPyE+<iTYkQS-5#FLQ z6daXeBLe`{*m1Okg(pvB?39GZS~Ig|^%W?6^vXITzGKy6q_VCj#&($^@BlIi+QeDg zJSLfUVNSh(dh}`sbp_i*K3X1HoU74&HOpm@C<RT1TASsl3CfO+1!T9nPIXlYy7#4c zPY3#p<rZ#Q&j?LYo<7?4v_i948o7*4rh|%Yb)+;DM-6*(*1!kM_Xub6&Y1jYzsjl6 z1SvK4hR@&1X10Q`F@m1FmbFcIe~$x<EB}VJ54ojAv&>d-&}08O$1V9OMVmxnnbLMN zXO%#SDt$4X!s{KT|8O$+$@AU4&WR+_<`1V?2yVlgm|1zS63VJ*Kk8~qiCFoxUwTsl z0n)bNG}$^oESBo|nr<}R<_5jbP`!}bpqz2|U|auy+95~a6;^CZi&K-adkJNs#l^o; zfze^8cxXvVp=C7*%rZ|<P!swFfuCFZ8-=a3jSYHJ@9XTeSHmzW&#rtdTQHO}ROLIa z5sX7Z?}b$r01TN79brD`VlOV2v<fXgepMSrKE%d449CmgKA!f3zgSAzl2~z5t)g=Y zLy^A0t6P{Vbrer`Neh(alTGjMws6|z_JUhv6b?PgBD2!Fx%r`*%tGhX1^P1Sh!T2D zlYz9hF<rg*Lf8M`#tqUiW%(D{wS+EIIhJE44X4hsjD`nGN)Fb=><+@ACp2sU!%`^? zj|sMSicV*lV~i~wB_^_XXDFGZUqi0p--H{l*f`$;IrMxhC2k>K^ejfRr!YHhb8wn+ z;8zUgUu&!R5bfvFT=enQOnv0_LdGScH$zq<+2uW3VZ=Vvhmb(Wy+6zzPNpTR79zG+ zKaqZK+m|ETx@DG$wiZb;Wx0h6{vLVpF-1E0Jk#x7V(^c!px91Vx1}T8xCj%a@7)bG z)}knf$l^nabj>Sm)DxdKq$2IXOmy-{(Y*uLr=jaQ+TakX($SwO`IfvD+$G|9)WNv` z3D(Z&fTJSsiQJDL!3+hs<psf&ih(5{TWu~{2audRW<66j)&I3}MQkkr>NkmrKTKAb z;BjHYr}0*3GG%Wz2;P%rIQMYau_7C-w=-y40dbHr>YtlrE7N8=otnQ6O@{Fb`@J|{ z8RmXxn-S^LoJ7ITqM3Ld7t9Bol)hZtmd%~k%L{k#WFT<aL3Y}xFgS{Bqsw{P9V(0n zgtg36eAJLsS_hqyzsyV&=8!*B{|H~>+*2GY(slfUH(TI)Qi)M?dC<j|=n;A$9y;lX z{5Pi^ypNX>xx9&Rv7de}JFM)nMSf39<lfonU-q$S<0lxH>SHtE9(_Y~v^CjY+-|6@ zg1_i*<Jt7=hEmeyCf+KrznRB>Myg*`mKT+FAtGIh%@zPYpG~r3%Y$@|E2HQh<c@G; zBsibxN9yp$4A{(t1B4E7QlQ%!Md!jMX8zTe(_%w3E=91g2!lnVNr$E+{(Uj`mC`F; zR&_q$rsSHMka3>-PuuzO@Pel3p;3=bpCDYvV4XVFAbjNk5c{6IPxAyo?P|6)U)~#b zuqHV<8x~TrlSWQwTc2f{ERSR`ZFe$!a__3s5+4kK`D3U?d&7cQm-SNCFg;B)eFzYJ z!1#q#__!%rb<F?{ElesCotid}-DWm1BhT%Uq;2VUw@rBn7I*8ub8f*J$8fnL{MI6T zxWQ2D@*Q#jZ5`VoG8ZsVKdfE$UWH+(p1Y_3h-^sX-Zr)O#&z|{olngsj9%Hi*Vl|F zk0R}^9cOeXAYbS^=HmD!<SZLgR-P(LdRO!WKw#sT-U{vHqsJew>mmQ(h3{_?>&|w7 z=uH=$rzILHIA(PsqaK0S?GRdpjLPX^E_JM{L2FRRaRdK%Z%3jb3u(d<?ncj8AF;jx zl(dVEWOB<i8u0+aO<?iE9xSW6dC*fMAvH5zSHa?*H?8q}zp)Mh4IlWJ(V`^EW)wg6 z2=9Zr#l&2Hk{GSQ&Lxs7p3{eqv3RC3{Y$T23-8K3i$CjbtJM<zA|>WiI0xK77ju^H z9g0?gfy1o>_GBol$sBg<yJPR@4z>rb_i?ZUU0wHcI&ZUWY1o6At%xo&jJVptd_LKD z_mh+?h$ta|udvWE9RbUMe?YUBygs^?{?PGJ5NbEA?BwpTG#)+!4n1F}EO3&QO+`0_ zU$!K|qS1N!eZx1@{mwzrIUG&!ZS6=N;M!}Y`vB>;*l_(R*jTNE4FHArpt39eX9l%y z6+-w`?B5YSpWMdsU!r#H=5#eGUW;+|c5^x`S<dzaO=_$qH128oJfQr2JoISc<(O_p z^lo~z*^0Tc^}gUX&I7hYptEV)?<r{8(5(iMuC<xJT-zc2GMcb=X5aQI&2%s}{<p)D zJ4_^vC4Uw?gGKyty4Yeni-qUE!-^59_4*F%=h{zy5c7<=V&JmITE^mF7B!P`qIQK% zxkcyo(5d6be3{N(=ce?a>(2V=nPF!G12UnV6qcf?lftM`Fl!C{j&?X^JV8o*b4H0L zFK3J!XRXe}L|=;6Niq`u=%m^t7UO`*GP)Qrv2uMxXJGio;f{09=(fou>v2Olb!!uU zWT=e>AUyW0Be2+`db$gD_^bHMX1w%juu!z3)kO^lOrR(%+%=)dGVLXxKkC-t>K4N# zpITc*_j3rgD`Vyqt=km-Kx_%St`|G2RB`50jx6tESO3)_0P}MYFl+mu#{P1ZJ#wsm ztRps>`AtuiC~#7wBfPtzCEGS^X#H(Ebk>kxmG}#&luq#vCGF61gu<LjPoFMq#U<l2 z$C9x7T$NBslidT+U8&M5ueIJK8m#ze*%{nyXHLs5=g=F5>Eb(Ey-Fcv;@RXy8gX0} zO;TO!ZhKJQ6LZ{#cH|TNh1ur?|GkyMc}H<SRj#dCZ<FRWK^m^7dvJNPhSxaL$-WiH z-53vt+uC$1I{=qZl1}heY~jrL>&OWrK_Qv*q2-FqEO;rI;$DG<><R=sE`;CYLiTN5 z{700IpBQ&8BkT~pdAnv4jca}B3`2aGlvS~C;pLTBB<4bLBEMQ~{A*6dsXn?k>FO44 zz2{5)%V#B(OzpNbqFW0;n#*O#@F_Ln%L`3=A1=98X~&G6oz~g8E9q3p2DVBXyYT$H zs`w{VK&Cz{*zl}7AAf#)hAjyy6SMyNlK1lPt>I1l{@?-0y?TQO@!%1BT96D7{>6L7 zbAKE5x98usqV*4o;J+Q_TK}N^{{GZ|T6w{1JO=2$1PT+wf9<>fCCG%o|Er4s9TFeI zAo5q<{v9FnSt{c{a`-PzoO<|QCj560Z0<js*}nvI|Nj~PYd-&fHt;}~|D$YN$@=ky Vrt{F-#ofR^$_g*#i{*^{{s*w|=L!G- literal 0 HcmV?d00001 diff --git a/variants/inhero_mr2/docs/img/front.jpg b/variants/inhero_mr2/docs/img/front.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8de2c028ce0010840ea4c542040568b249b5cc18 GIT binary patch literal 345395 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 &WlrQfr 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%0D6L53N3hr=)Luw4pK_2 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 yesQ$RXLaI~NioU&ugjyRa{)#sYV)_RaC4 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%0ASt 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 x21Rx-XH-Nh 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 literal 0 HcmV?d00001 diff --git a/variants/inhero_mr2/helpers/BatteryOcvMapping.cpp b/variants/inhero_mr2/helpers/BatteryOcvMapping.cpp new file mode 100644 index 0000000000..ffab9a8244 --- /dev/null +++ b/variants/inhero_mr2/helpers/BatteryOcvMapping.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "BatteryOcvMapping.h" + +namespace inhero { + +uint16_t socToLiIonMilliVolts(float soc_percent) { + // Clamp input to valid range + if (soc_percent <= 0.0f) return 3000; + if (soc_percent >= 100.0f) return 4200; + + // Standard Li-Ion 1S OCV table (NMC/NCA, 10% steps). + // Index 0 = 0% SOC, Index 10 = 100% SOC. + static const uint16_t LI_ION_OCV_TABLE[] = { + 3000, // 0% + 3300, // 10% + 3450, // 20% + 3530, // 30% + 3600, // 40% + 3670, // 50% + 3740, // 60% + 3820, // 70% + 3920, // 80% + 4050, // 90% + 4200 // 100% + }; + + // Piecewise-linear interpolation between 10% steps. + float index_f = soc_percent / 10.0f; // 0.0 – 10.0 + uint8_t idx_lo = (uint8_t)index_f; + if (idx_lo >= 10) idx_lo = 9; // safety clamp + uint8_t idx_hi = idx_lo + 1; + + float frac = index_f - (float)idx_lo; + float mv = (float)LI_ION_OCV_TABLE[idx_lo] + + frac * (float)(LI_ION_OCV_TABLE[idx_hi] - LI_ION_OCV_TABLE[idx_lo]); + + return (uint16_t)(mv + 0.5f); // round to nearest mV +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/BatteryOcvMapping.h b/variants/inhero_mr2/helpers/BatteryOcvMapping.h new file mode 100644 index 0000000000..6be420de29 --- /dev/null +++ b/variants/inhero_mr2/helpers/BatteryOcvMapping.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +#include <Arduino.h> + +namespace inhero { + +// Maps a SOC percentage (0-100%) to a fake Li-Ion 1S OCV in millivolts. +// Uses a standard Li-Ion NMC/NCA OCV lookup table with piecewise-linear +// interpolation. The companion app reverse-maps these voltages back to the +// same SOC%, giving a correct battery-level display regardless of the +// actual cell chemistry (Li-Ion, LiFePO4, LTO, Na-Ion). +uint16_t socToLiIonMilliVolts(float soc_percent); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/BqLowPowerSetup.cpp b/variants/inhero_mr2/helpers/BqLowPowerSetup.cpp new file mode 100644 index 0000000000..2b552e6a80 --- /dev/null +++ b/variants/inhero_mr2/helpers/BqLowPowerSetup.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "BqLowPowerSetup.h" + +#include <Arduino.h> +#include <Wire.h> + +#include "../InheroMr2Board.h" +#include "../lib/BqDriver.h" + +namespace inhero { + +static constexpr uint8_t INA228_ADDR = 0x40; + +void prepareIcsForSystemOff() { + // INA228 -> shutdown mode (~3.5uA vs ~350uA continuous). + // I2C writes can fail silently -> retry with readback verification. + for (int retry = 0; retry < 3; retry++) { + Wire.beginTransmission(INA228_ADDR); + Wire.write(0x01); // ADC_CONFIG + Wire.write(0x00); + Wire.write(0x00); + if (Wire.endTransmission() != 0) { + delay(10); + continue; + } + delay(2); + Wire.beginTransmission(INA228_ADDR); + Wire.write(0x01); + Wire.endTransmission(false); + Wire.requestFrom((uint8_t)INA228_ADDR, (uint8_t)2); + uint16_t rb = 0; + if (Wire.available() >= 2) { + rb = (Wire.read() << 8) | Wire.read(); + } + if ((rb & 0xF000) == 0x0000) break; + delay(10); + } + + // INA228 -> release latched ALERT (under-voltage alert is ALATCH=1 -> ALERT stays LOW + // -> RAK4630 internal pull-up wastes ~330uA). Switch to transparent mode and + // zero the threshold so no condition can re-assert. + Wire.beginTransmission(INA228_ADDR); + Wire.write(0x0B); // DIAG_ALRT + Wire.write(0x00); + Wire.write(0x00); + Wire.endTransmission(); + Wire.beginTransmission(INA228_ADDR); + Wire.write(0x08); // BUVL + Wire.write(0x00); + Wire.write(0x00); + Wire.endTransmission(); + + // BQ25798 -> low-power housekeeping. These static helpers use raw Wire and + // work even when the driver instance has not been constructed yet (LV-Wake). + BqDriver::disableAdc(); // ~500uA saving + BqDriver::maskAllInterrupts(); // prevent INT holding LOW + BqDriver::clearInterruptFlags(); // de-assert latched INT +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/BqLowPowerSetup.h b/variants/inhero_mr2/helpers/BqLowPowerSetup.h new file mode 100644 index 0000000000..7c4efbc68f --- /dev/null +++ b/variants/inhero_mr2/helpers/BqLowPowerSetup.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +namespace inhero { + +// Prepares INA228 and BQ25798 for nRF52 System Sleep so the analog ICs +// don't burn quiescent current while the MCU is off: +// - INA228: shutdown ADC (with readback retry), release latched ALERT +// - BQ25798: disable ADC, mask all interrupts and clear flags so INT goes high-Z +// Wire must be initialised before calling. +void prepareIcsForSystemOff(); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/CliCommands.cpp b/variants/inhero_mr2/helpers/CliCommands.cpp new file mode 100644 index 0000000000..80b8a6247f --- /dev/null +++ b/variants/inhero_mr2/helpers/CliCommands.cpp @@ -0,0 +1,413 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "CliCommands.h" + +#include "../BoardConfigContainer.h" + +#include <CayenneLPP.h> +#include <ctype.h> +#include <math.h> +#include <stdio.h> +#include <string.h> + +namespace inhero { + +namespace { + +uint8_t getLPPDataLength(uint8_t type) { + switch (type) { + case LPP_DIGITAL_INPUT: + case LPP_DIGITAL_OUTPUT: + case LPP_PRESENCE: + case LPP_RELATIVE_HUMIDITY: + case LPP_PERCENTAGE: + case LPP_SWITCH: + return 1; + case LPP_ANALOG_INPUT: + case LPP_ANALOG_OUTPUT: + case LPP_LUMINOSITY: + case LPP_TEMPERATURE: + case LPP_BAROMETRIC_PRESSURE: + case LPP_VOLTAGE: + case LPP_CURRENT: + case LPP_ALTITUDE: + case LPP_POWER: + case LPP_DIRECTION: + case LPP_CONCENTRATION: + return 2; + case LPP_COLOUR: + return 3; + case LPP_GENERIC_SENSOR: + case LPP_FREQUENCY: + case LPP_DISTANCE: + case LPP_ENERGY: + case LPP_UNIXTIME: + return 4; + case LPP_ACCELEROMETER: + case LPP_GYROMETER: + return 6; + case LPP_GPS: + return 9; + case LPP_POLYLINE: + return 8; // minimum size + default: + return 0; + } +} + +} // namespace + +uint8_t findNextFreeLppChannel(CayenneLPP& lpp) { + uint8_t max_channel = 0; + uint8_t cursor = 0; + uint8_t* buffer = lpp.getBuffer(); + uint8_t size = lpp.getSize(); + + while (cursor < size) { + if (cursor + 1 >= size) break; + uint8_t channel = buffer[cursor]; + uint8_t type = buffer[cursor + 1]; + uint8_t data_len = getLPPDataLength(type); + if (data_len == 0) break; // unknown type, can't continue + if (channel > max_channel) max_channel = channel; + cursor += 2 + data_len; + } + return max_channel + 1; +} + +bool appendBoardTelemetry(BoardConfigContainer& cfg, CayenneLPP& telemetry) { + const Telemetry* telemetryData = cfg.getTelemetryData(); + if (!telemetryData) return false; + + uint8_t batteryChannel = findNextFreeLppChannel(telemetry); + uint8_t solarChannel = batteryChannel + 1; + + const BatterySOCStats* socStats = cfg.getSOCStats(); + bool hasValidSoc = (socStats && socStats->soc_valid); + float socPercent = roundf(cfg.getStateOfCharge() * 10.0f) / 10.0f; + + uint16_t ttlHours = cfg.getTTL_Hours(); + bool isInfiniteTtl = (socStats && socStats->soc_valid && !socStats->living_on_battery); + constexpr float MAX_TTL_DAYS = 990.0f; // sentinel reported when TTL is effectively infinite + + // Battery: VBAT[V], SOC[%] (opt), IBAT[A], TBAT[°C], TTL[d] (opt) + telemetry.addVoltage(batteryChannel, telemetryData->battery.voltage / 1000.0f); + if (hasValidSoc) telemetry.addPercentage(batteryChannel, socPercent); + telemetry.addCurrent(batteryChannel, telemetryData->battery.current / 1000.0f); + if (telemetryData->battery.temperature > -100.0f) { + telemetry.addTemperature(batteryChannel, telemetryData->battery.temperature); + } + if (ttlHours > 0) { + telemetry.addDistance(batteryChannel, ttlHours / 24.0f); + } else if (isInfiniteTtl) { + telemetry.addDistance(batteryChannel, MAX_TTL_DAYS); + } + + // Solar: VSOL[V], ISOL[A], MPPT_7D[%] + telemetry.addVoltage(solarChannel, telemetryData->solar.voltage / 1000.0f); + telemetry.addCurrent(solarChannel, telemetryData->solar.current / 1000.0f); + telemetry.addPercentage(solarChannel, cfg.getMpptEnabledPercentage7Day()); + + return true; +} + +bool handleGet(BoardConfigContainer& cfg, const char* getCommand, char* reply, uint32_t maxlen) { + // Trim trailing whitespace from command + char trimmedCommand[100]; + strncpy(trimmedCommand, getCommand, sizeof(trimmedCommand) - 1); + trimmedCommand[sizeof(trimmedCommand) - 1] = '\0'; + char* cmd = BoardConfigContainer::trim(trimmedCommand); + + if (strcmp(cmd, "bat") == 0) { + snprintf(reply, maxlen, "%s", + BoardConfigContainer::getBatteryTypeCommandString(cfg.getBatteryType())); + return true; + } else if (strcmp(cmd, "fmax") == 0) { + const auto* props = BoardConfigContainer::getBatteryProperties(cfg.getBatteryType()); + if (props && props->ts_ignore) { + snprintf(reply, maxlen, "N/A"); + } else { + snprintf(reply, maxlen, "%s", + BoardConfigContainer::getFrostChargeBehaviourCommandString(cfg.getFrostChargeBehaviour())); + } + return true; + } else if (strcmp(cmd, "imax") == 0) { + snprintf(reply, maxlen, "%s", cfg.getChargeCurrentAsStr()); + return true; + } else if (strcmp(cmd, "mppt") == 0) { + snprintf(reply, maxlen, "MPPT=%s", cfg.getMPPTEnabled() ? "1" : "0"); + return true; + } else if (strcmp(cmd, "stats") == 0) { + const BatterySOCStats* socStats = cfg.getSOCStats(); + if (!socStats) { + snprintf(reply, maxlen, "N/A M:%.0f%%", cfg.getMpptEnabledPercentage7Day()); + return true; + } + + // Rolling windows incl. current-hour accumulators (visible before first hour boundary) + float last_24h_net = socStats->last_24h_net_mah + + socStats->current_hour_solar_mah + - socStats->current_hour_discharged_mah; + float last_24h_charged = socStats->last_24h_charged_mah + socStats->current_hour_charged_mah; + float last_24h_discharged = socStats->last_24h_discharged_mah + socStats->current_hour_discharged_mah; + const char* status = socStats->living_on_battery ? "BAT" : "SOL"; + uint16_t ttl = cfg.getTTL_Hours(); + float mppt_pct = cfg.getMpptEnabledPercentage7Day(); + + char ttlBuf[16]; + if (ttl >= 24) snprintf(ttlBuf, sizeof(ttlBuf), "%dd%dh", ttl / 24, ttl % 24); + else if (ttl > 0) snprintf(ttlBuf, sizeof(ttlBuf), "%dh", ttl); + else snprintf(ttlBuf, sizeof(ttlBuf), "N/A"); + + snprintf(reply, maxlen, + "%+.0f/%+.0f/%+.0fmAh C:%.0f D:%.0f 3C:%.0f 3D:%.0f 7C:%.0f 7D:%.0f %s M:%.0f%% T:%s", + last_24h_net, socStats->avg_3day_daily_net_mah, socStats->avg_7day_daily_net_mah, + last_24h_charged, last_24h_discharged, + socStats->avg_3day_daily_charged_mah, socStats->avg_3day_daily_discharged_mah, + socStats->avg_7day_daily_charged_mah, socStats->avg_7day_daily_discharged_mah, + status, mppt_pct, ttlBuf); + return true; + } else if (strcmp(cmd, "cinfo") == 0) { + char infoBuffer[100]; + cfg.getChargerInfo(infoBuffer, sizeof(infoBuffer)); + snprintf(reply, maxlen, "%s", infoBuffer); + return true; + } else if (strcmp(cmd, "bqdiag") == 0) { + char diagBuffer[100]; + cfg.getBqDiagnostics(diagBuffer, sizeof(diagBuffer)); + snprintf(reply, maxlen, "%s", diagBuffer); + return true; + } else if (strcmp(cmd, "selftest") == 0) { + char stBuffer[64]; + cfg.getSelfTest(stBuffer, sizeof(stBuffer)); + snprintf(reply, maxlen, "%s", stBuffer); + return true; + } else if (strcmp(cmd, "socdebug") == 0) { + Ina228Driver* ina = cfg.getIna228Driver(); + if (!ina) { + snprintf(reply, maxlen, "INA228 n/a"); + return true; + } + const BatterySOCStats* s = cfg.getSOCStats(); + uint16_t scal = ina->readShuntCalRegister(); + float chg = ina->readCharge_mAh(); + float cur = ina->readCurrent_mA_precise(); + uint32_t rtc = BoardConfigContainer::getRTCTimestamp(); + snprintf(reply, maxlen, + "S=%u I=%.1f C=%.1f hC%.1f hD%.1f n=%u t=%lu d=%.2f", + scal, cur, chg, + s->current_hour_charged_mah, s->current_hour_discharged_mah, + s->soc_update_count, (unsigned long)rtc, s->temp_derating_factor); + return true; + } else if (strcmp(cmd, "telem") == 0) { + const Telemetry* telemetry = cfg.getTelemetryData(); + if (!telemetry) { + snprintf(reply, maxlen, "Err: Telemetry unavailable"); + return true; + } + + float precise_current_ma = telemetry->battery.current; + float soc = cfg.getStateOfCharge(); + const BatterySOCStats* socStats = cfg.getSOCStats(); + + // INA228 returns signed: positive=charging, negative=discharging + char bat_current_str[16]; + snprintf(bat_current_str, sizeof(bat_current_str), "%.1fmA", precise_current_ma); + + char sol_current_str[16]; + int16_t sol_current = telemetry->solar.current; + if (sol_current == 0) snprintf(sol_current_str, sizeof(sol_current_str), "0mA"); + else if (sol_current < 50) snprintf(sol_current_str, sizeof(sol_current_str), "<50mA"); + else if (sol_current <= 100) snprintf(sol_current_str, sizeof(sol_current_str), "~%dmA", (int)sol_current); + else snprintf(sol_current_str, sizeof(sol_current_str), "%dmA", (int)sol_current); + + char temp_str[8]; + if (telemetry->battery.temperature <= -100.0f) { + snprintf(temp_str, sizeof(temp_str), "N/A"); + } else { + snprintf(temp_str, sizeof(temp_str), "%.0fC", telemetry->battery.temperature); + } + + if (socStats && socStats->soc_valid) { + // Trapped Charge model: cold locks the bottom of the discharge curve. + // trapped% = (1 - f(T)) * 100, extractable% = max(0, SOC% - trapped%) + if (socStats->temp_derating_factor < 0.999f && socStats->temp_derating_factor > 0.0f) { + float trapped_pct = (1.0f - socStats->temp_derating_factor) * 100.0f; + float derated_soc = soc - trapped_pct; + if (derated_soc < 0.0f) derated_soc = 0.0f; + if (derated_soc > 100.0f) derated_soc = 100.0f; + snprintf(reply, maxlen, "B:%.2fV/%s/%s SOC:%.1f%% (%.0f%%) S:%.2fV/%s", + telemetry->battery.voltage / 1000.0f, bat_current_str, temp_str, + soc, derated_soc, telemetry->solar.voltage / 1000.0f, sol_current_str); + } else { + snprintf(reply, maxlen, "B:%.2fV/%s/%s SOC:%.1f%% S:%.2fV/%s", + telemetry->battery.voltage / 1000.0f, bat_current_str, temp_str, + soc, telemetry->solar.voltage / 1000.0f, sol_current_str); + } + } else { + snprintf(reply, maxlen, "B:%.2fV/%s/%s SOC:N/A S:%.2fV/%s", + telemetry->battery.voltage / 1000.0f, bat_current_str, temp_str, + telemetry->solar.voltage / 1000.0f, sol_current_str); + } + return true; + } else if (strcmp(cmd, "conf") == 0) { + const char* batType = BoardConfigContainer::getBatteryTypeCommandString(cfg.getBatteryType()); + const auto* confProps = BoardConfigContainer::getBatteryProperties(cfg.getBatteryType()); + const char* frostBehaviour = (confProps && confProps->ts_ignore) + ? "N/A" + : BoardConfigContainer::getFrostChargeBehaviourCommandString(cfg.getFrostChargeBehaviour()); + + if (cfg.getBatteryType() == BoardConfigContainer::BAT_UNKNOWN) { + snprintf(reply, maxlen, "B:%s (no battery, charging disabled)", batType); + } else { + float chargeVoltage = cfg.getMaxChargeVoltage(); + float voltage0Soc = + BoardConfigContainer::getLowVoltageWakeThreshold(cfg.getBatteryType()) / 1000.0f; + const char* imax = cfg.getChargeCurrentAsStr(); + bool mpptEnabled = cfg.getMPPTEnabled(); + snprintf(reply, maxlen, "B:%s F:%s M:%s I:%s Vco:%.2f V0:%.2f", batType, frostBehaviour, + mpptEnabled ? "1" : "0", imax, chargeVoltage, voltage0Soc); + } + return true; + } else if (strcmp(cmd, "tccal") == 0) { + snprintf(reply, maxlen, "TC offset: %+.2f C (0.00=default)", cfg.getTcCalOffset()); + return true; + } else if (strcmp(cmd, "leds") == 0) { + snprintf(reply, maxlen, "LEDs: %s (Heartbeat + BQ Stat)", + cfg.getLEDsEnabled() ? "ON" : "OFF"); + return true; + } else if (strcmp(cmd, "batcap") == 0) { + float capacity_mah = cfg.getBatteryCapacity(); + bool explicitly_set = cfg.isBatteryCapacitySet(); + snprintf(reply, maxlen, "%.0f mAh (%s)", capacity_mah, explicitly_set ? "set" : "default"); + return true; + } + + snprintf(reply, maxlen, + "Err: bat|fmax|imax|mppt|telem|stats|cinfo|conf|tccal|leds|batcap"); + return true; +} + +const char* handleSet(BoardConfigContainer& cfg, const char* setCommand) { + static char ret[100]; + memset(ret, 0, sizeof(ret)); + + if (strncmp(setCommand, "bat ", 4) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[4])); + BoardConfigContainer::BatteryType bt = BoardConfigContainer::getBatteryTypeFromCommandString(value); + if (bt != BoardConfigContainer::BatteryType::BAT_UNKNOWN || strcmp(value, "none") == 0) { + cfg.setBatteryType(bt); + snprintf(ret, sizeof(ret), "Bat set to %s", + BoardConfigContainer::getBatteryTypeCommandString(cfg.getBatteryType())); + } else { + snprintf(ret, sizeof(ret), "Err: Try one of: %s", + BoardConfigContainer::getAvailableBatOptions()); + } + return ret; + } else if (strncmp(setCommand, "fmax ", 5) == 0) { + const auto* fmaxProps = BoardConfigContainer::getBatteryProperties(cfg.getBatteryType()); + if (fmaxProps && fmaxProps->ts_ignore) { + snprintf(ret, sizeof(ret), "Err: Fmax setting N/A for this chemistry (JEITA disabled)"); + return ret; + } + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[5])); + BoardConfigContainer::FrostChargeBehaviour fcb = + BoardConfigContainer::getFrostChargeBehaviourFromCommandString(value); + if (fcb != BoardConfigContainer::FrostChargeBehaviour::REDUCE_UNKNOWN) { + cfg.setFrostChargeBehaviour(fcb); + snprintf(ret, sizeof(ret), "Fmax charge current set to %s of imax", + BoardConfigContainer::getFrostChargeBehaviourCommandString(cfg.getFrostChargeBehaviour())); + } else { + snprintf(ret, sizeof(ret), "Err: Try one of: %s", + BoardConfigContainer::getAvailableFrostChargeBehaviourOptions()); + } + return ret; + } else if (strncmp(setCommand, "imax ", 5) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[5])); + int ma = atoi(value); + if (ma >= 50 && ma <= 1500) { + cfg.setMaxChargeCurrent_mA(ma); + snprintf(ret, sizeof(ret), "Max charge current set to %s", cfg.getChargeCurrentAsStr()); + return ret; + } + return "Err: Try 50-1500"; + } else if (strncmp(setCommand, "mppt ", 5) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[5])); + char lowerValue[20]; + strncpy(lowerValue, value, sizeof(lowerValue) - 1); + lowerValue[sizeof(lowerValue) - 1] = '\0'; + for (char* p = lowerValue; *p; ++p) *p = tolower(*p); + + if (strcmp(lowerValue, "true") == 0 || strcmp(lowerValue, "1") == 0) { + cfg.setMPPTEnable(true); + snprintf(ret, sizeof(ret), "MPPT enabled"); + return ret; + } else if (strcmp(lowerValue, "false") == 0 || strcmp(lowerValue, "0") == 0) { + cfg.setMPPTEnable(false); + snprintf(ret, sizeof(ret), "MPPT disabled"); + return ret; + } + return "Err: Try true|false or 1|0"; + } else if (strncmp(setCommand, "batcap ", 7) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[7])); + float capacity_mah = atof(value); + if (cfg.setBatteryCapacity(capacity_mah)) { + snprintf(ret, sizeof(ret), "Battery capacity set to %.0f mAh", capacity_mah); + } else { + snprintf(ret, sizeof(ret), "Err: Invalid capacity (100-100000 mAh)"); + } + return ret; + } else if (strncmp(setCommand, "tccal", 5) == 0) { + // `set board.tccal` -> auto-read BME280 as reference + // `set board.tccal reset` -> reset to 0.00 + const char* rest = &setCommand[5]; + if (*rest == ' ') rest++; + const char* value = BoardConfigContainer::trim(const_cast<char*>(rest)); + + if (strcmp(value, "reset") == 0 || strcmp(value, "RESET") == 0) { + if (cfg.setTcCalOffset(0.0f)) { + snprintf(ret, sizeof(ret), "TC calibration reset to 0.00 (default)"); + } else { + snprintf(ret, sizeof(ret), "Err: Failed to reset TC calibration"); + } + return ret; + } + + float bme_avg = 0.0f; + float new_offset = cfg.performTcCalibration(&bme_avg); + if (new_offset > -900.0f) { + snprintf(ret, sizeof(ret), "TC auto-cal: BME=%.1f offset=%+.2f C", bme_avg, new_offset); + } else { + snprintf(ret, sizeof(ret), "Err: Auto-cal failed (BME280/NTC error?)"); + } + return ret; + } else if (strncmp(setCommand, "leds ", 5) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[5])); + bool enabled = (strcmp(value, "1") == 0 || strcmp(value, "on") == 0 || strcmp(value, "ON") == 0); + bool disabled = (strcmp(value, "0") == 0 || strcmp(value, "off") == 0 || strcmp(value, "OFF") == 0); + if (enabled || disabled) { + cfg.setLEDsEnabled(enabled); + snprintf(ret, sizeof(ret), "LEDs %s (Heartbeat + BQ Stat)", + enabled ? "enabled" : "disabled"); + } else { + snprintf(ret, sizeof(ret), "Err: Use 'on/1' or 'off/0'"); + } + return ret; + } else if (strncmp(setCommand, "soc ", 4) == 0) { + const char* value = BoardConfigContainer::trim(const_cast<char*>(&setCommand[4])); + float soc_percent = atof(value); + if (BoardConfigContainer::setSOCManually(soc_percent)) { + snprintf(ret, sizeof(ret), "SOC set to %.1f%%", soc_percent); + } else { + snprintf(ret, sizeof(ret), "Err: Invalid SOC (0-100) or INA228 not ready"); + } + return ret; + } + + snprintf(ret, sizeof(ret), "Err: bat|imax|fmax|mppt|batcap|tccal|leds|soc"); + return ret; +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/CliCommands.h b/variants/inhero_mr2/helpers/CliCommands.h new file mode 100644 index 0000000000..979d6a06b2 --- /dev/null +++ b/variants/inhero_mr2/helpers/CliCommands.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +#include <Arduino.h> +#include <CayenneLPP.h> + +class BoardConfigContainer; + +namespace inhero { + +// Handles `get board.<cmd>` queries. Writes formatted result into `reply`. +// Returns true if the command was recognised (always true currently — falls +// through to a usage hint on unknown commands). +bool handleGet(BoardConfigContainer& cfg, const char* cmd, char* reply, uint32_t maxlen); + +// Handles `set board.<cmd> <value>` commands. Returns a pointer to a static +// reply buffer owned by the helper (caller must not free). +const char* handleSet(BoardConfigContainer& cfg, const char* setCommand); + +// Appends battery + solar telemetry to `lpp` starting at the next free channel. +// Returns false if telemetry data is unavailable (cfg.getTelemetryData() == nullptr). +bool appendBoardTelemetry(BoardConfigContainer& cfg, CayenneLPP& lpp); + +// Parses a CayenneLPP buffer and returns highest_used_channel + 1, or 1 if empty. +uint8_t findNextFreeLppChannel(CayenneLPP& lpp); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/I2cBusRecovery.cpp b/variants/inhero_mr2/helpers/I2cBusRecovery.cpp new file mode 100644 index 0000000000..8e8dcc1a24 --- /dev/null +++ b/variants/inhero_mr2/helpers/I2cBusRecovery.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "I2cBusRecovery.h" + +#include <Arduino.h> +#include <MeshCore.h> + +namespace inhero { + +void recoverI2cBus(uint8_t sda, uint8_t scl) { + pinMode(sda, INPUT_PULLUP); + pinMode(scl, OUTPUT); + digitalWrite(scl, HIGH); + + if (digitalRead(sda) == LOW) { + for (int i = 0; i < 9; i++) { + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + delayMicroseconds(5); + if (digitalRead(sda) == HIGH) break; + } + // STOP condition: SDA LOW->HIGH while SCL is HIGH + pinMode(sda, OUTPUT); + digitalWrite(sda, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + delayMicroseconds(5); + digitalWrite(sda, HIGH); + delayMicroseconds(5); + MESH_DEBUG_PRINTLN("I2C bus recovery performed (SDA was stuck LOW)"); + } + + pinMode(sda, INPUT); + pinMode(scl, INPUT); +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/I2cBusRecovery.h b/variants/inhero_mr2/helpers/I2cBusRecovery.h new file mode 100644 index 0000000000..c26907c6aa --- /dev/null +++ b/variants/inhero_mr2/helpers/I2cBusRecovery.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +#include <stdint.h> + +namespace inhero { + +// Manually toggles SCL (up to 9 clocks) to release a slave that holds SDA low +// after OTA/warm-reset. Generates a STOP after recovery. Wire.begin() cannot +// do this on its own. Pins are released back to INPUT before returning so the +// Wire library can take them over. +void recoverI2cBus(uint8_t sda, uint8_t scl); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/Rv3028Wake.cpp b/variants/inhero_mr2/helpers/Rv3028Wake.cpp new file mode 100644 index 0000000000..d15c3c4e5d --- /dev/null +++ b/variants/inhero_mr2/helpers/Rv3028Wake.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "Rv3028Wake.h" + +#include "../InheroMr2Board.h" // RTC_I2C_ADDR + RV3028_REG_* + +#include <MeshCore.h> +#include <Wire.h> + +namespace inhero { + +void configurePeriodicWake(uint16_t minutes) { + uint16_t ticks = (minutes == 0) ? 1 : minutes; + if (ticks > 4095) ticks = 4095; // 12-bit register + + MESH_DEBUG_PRINTLN("PWRMGT: Configuring RTC wake in %u minutes", + static_cast<unsigned>(ticks)); + + // Per RV-3028 manual section 4.8.2: + // Step 1: Stop Timer and clear flags + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_CTRL1); + Wire.write(0x00); // TE=0, TD=00 (stop timer) + Wire.endTransmission(); + + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_CTRL2); + Wire.write(0x00); // TIE=0 + Wire.endTransmission(); + + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + Wire.write(0x00); // Clear TF + Wire.endTransmission(); + + // Step 2: Set Timer Value (ticks at 1/60 Hz) + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_TIMER_VALUE_0); + Wire.write(ticks & 0xFF); + Wire.write((ticks >> 8) & 0x0F); + Wire.endTransmission(); + + // Step 3: Enable timer (1/60 Hz, single shot) + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_CTRL1); + Wire.write(0x07); // TE=1, TD=11 (1/60 Hz), TRPT=0 (single shot) + Wire.endTransmission(); + + // Step 4: Enable timer interrupt + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_CTRL2); + Wire.write(0x10); // TIE=1 + Wire.endTransmission(); + + MESH_DEBUG_PRINTLN("PWRMGT: RTC countdown configured (%u ticks at 1/60 Hz)", ticks); +} + +void clearTimerFlag() { + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + if (Wire.endTransmission(false) != 0) return; + + Wire.requestFrom((uint8_t)RTC_I2C_ADDR, (uint8_t)1); + if (!Wire.available()) return; + + uint8_t status = Wire.read(); + if ((status & (1 << 3)) == 0) return; // TF already clear + + status &= ~(1 << 3); + Wire.beginTransmission(RTC_I2C_ADDR); + Wire.write(RV3028_REG_STATUS); + Wire.write(status); + Wire.endTransmission(); +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/Rv3028Wake.h b/variants/inhero_mr2/helpers/Rv3028Wake.h new file mode 100644 index 0000000000..64028f9292 --- /dev/null +++ b/variants/inhero_mr2/helpers/Rv3028Wake.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +#include <Arduino.h> + +namespace inhero { + +// Configures the RV-3028-C7 periodic countdown timer to fire after `minutes` +// at 1/60 Hz, single-shot, with TIE=1 so the INT pin asserts on expiry. +// `minutes` is clamped to [1, 4095] (12-bit timer register). +void configurePeriodicWake(uint16_t minutes); + +// Clears the RV-3028 Timer Flag (TF, status bit 3) without touching other bits. +// Read-modify-write: required because System Sleep wake is a reset, so the +// FALLING-edge ISR never sees the RTC event and TF stays latched. +void clearTimerFlag(); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/SystemSleepGpio.cpp b/variants/inhero_mr2/helpers/SystemSleepGpio.cpp new file mode 100644 index 0000000000..a834190f93 --- /dev/null +++ b/variants/inhero_mr2/helpers/SystemSleepGpio.cpp @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "SystemSleepGpio.h" + +#include <Arduino.h> +#include <MeshCore.h> +#include <nrf.h> + +#include "../InheroMr2Board.h" +#include "../target.h" + +namespace inhero { + +void prepareRadioForSystemOff(bool radioInitialized) { + if (radioInitialized) { + // Cold sleep via SPI while SPIM is still active. + radio_driver.powerOff(); + delay(10); + } else { + // Early Boot: SPI/RadioLib not initialised. SX1262 may be in POR Standby RC + // (~600uA) or Cold Sleep (~160nA). Send SetSleep via bit-banged SPI to be sure. + pinMode(P_LORA_NSS, OUTPUT); + digitalWrite(P_LORA_NSS, HIGH); + pinMode(P_LORA_SCLK, OUTPUT); + digitalWrite(P_LORA_SCLK, LOW); // CPOL=0 + pinMode(P_LORA_MOSI, OUTPUT); + digitalWrite(P_LORA_MOSI, LOW); + pinMode(P_LORA_BUSY, INPUT); + + // SX1262 §13.1.1: a wake-up NSS pulse is consumed; the actual command + // needs a SUBSEQUENT NSS falling edge. + digitalWrite(P_LORA_NSS, LOW); + delayMicroseconds(2); + uint32_t t0 = millis(); + while (digitalRead(P_LORA_BUSY) == HIGH && (millis() - t0) < 10) { + delayMicroseconds(100); + } + digitalWrite(P_LORA_NSS, HIGH); + delayMicroseconds(10); + + // SetSleep 0x84 0x00 (Cold Start, no retention, TCXO off). + static const uint8_t cmd[2] = { 0x84, 0x00 }; + + digitalWrite(P_LORA_NSS, LOW); + delayMicroseconds(2); + + for (int b = 0; b < 2; b++) { + uint8_t byte = cmd[b]; + for (int i = 7; i >= 0; i--) { + digitalWrite(P_LORA_MOSI, (byte >> i) & 1); + delayMicroseconds(1); + digitalWrite(P_LORA_SCLK, HIGH); + delayMicroseconds(1); + digitalWrite(P_LORA_SCLK, LOW); + delayMicroseconds(1); + } + } + + digitalWrite(P_LORA_MOSI, LOW); + delayMicroseconds(1); + digitalWrite(P_LORA_NSS, HIGH); + + delay(1); + } + + // PE4259 RF switch off + digitalWrite(SX126X_POWER_EN, LOW); + + // Latch SX1262 SPI pins at defined levels so floating CMOS inputs don't + // pull shoot-through current during System Sleep. + uint32_t pin_cfg_out = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) | + (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | + (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); + NRF_P1->OUTSET = (1UL << 10); // NSS HIGH + NRF_P1->OUTCLR = (1UL << 11) | (1UL << 12); // SCLK LOW, MOSI LOW + NRF_P1->PIN_CNF[10] = pin_cfg_out; + NRF_P1->PIN_CNF[11] = pin_cfg_out; + NRF_P1->PIN_CNF[12] = pin_cfg_out; +} + +void disconnectLeakyPullups() { + uint32_t pin_cfg_discon = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | + (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | + (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); + + // P0: skip BQ_CE_PIN (P0.04) and RTC_INT_PIN (P0.17) + for (uint8_t pin = 0; pin < 32; pin++) { + if (pin == 4 || pin == 17) continue; + NRF_P0->PIN_CNF[pin] = pin_cfg_discon; + } + // P1: skip SX1262 SPI pins latched by prepareRadioForSystemOff() + for (uint8_t pin = 0; pin < 16; pin++) { + if (pin == 10 || pin == 11 || pin == 12) continue; + NRF_P1->PIN_CNF[pin] = pin_cfg_discon; + } +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/SystemSleepGpio.h b/variants/inhero_mr2/helpers/SystemSleepGpio.h new file mode 100644 index 0000000000..be8e678378 --- /dev/null +++ b/variants/inhero_mr2/helpers/SystemSleepGpio.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +namespace inhero { + +// Puts the SX1262 into Cold Sleep and latches NSS/SCK/MOSI to defined levels +// before nRF52 System Sleep. +// radioInitialized=true -> uses RadioLib (radio_driver.powerOff()). +// radioInitialized=false -> bit-bangs SetSleep on P_LORA_* directly. +// SPI.end() must NOT be called: floating SCK during the disconnect window +// re-wakes the SX1262 (~600uA Standby RC). +void prepareRadioForSystemOff(bool radioInitialized = true); + +// Resets every GPIO to INPUT_DISCONNECT/PULL_DISABLED except the few pins +// the design must keep alive across System Sleep: +// P0.04 (BQ_CE_PIN) -> OUTPUT HIGH (charging stays enabled) +// P0.17 (RTC_INT_PIN) -> INPUT_PULLUP + SENSE_Low (wake source) +// P1.10/11/12 -> latched by prepareRadioForSystemOff() (NSS/SCK/MOSI) +// Must run after Wire.end() and after prepareRadioForSystemOff(). +void disconnectLeakyPullups(); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/UsbAutoManagement.cpp b/variants/inhero_mr2/helpers/UsbAutoManagement.cpp new file mode 100644 index 0000000000..e4fb5ea603 --- /dev/null +++ b/variants/inhero_mr2/helpers/UsbAutoManagement.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "UsbAutoManagement.h" + +#include <Arduino.h> +#include <MeshCore.h> +#include <nrf.h> + +#include "../BoardConfigContainer.h" + +namespace inhero { + +// USB starts enabled (Serial.begin in main) +static bool s_usbActive = true; + +bool isUsbPowered() { + return (NRF_POWER->USBREGSTATUS & POWER_USBREGSTATUS_VBUSDETECT_Msk) != 0; +} + +void disableUsb() { + if (s_usbActive) { + Serial.end(); + NRF_USBD->ENABLE = 0; + s_usbActive = false; + BoardConfigContainer::setUsbConnected(false); + MESH_DEBUG_PRINTLN("USB disabled"); + } +} + +void enableUsb() { + if (!s_usbActive) { + NRF_USBD->ENABLE = 1; + Serial.begin(115200); + s_usbActive = true; + BoardConfigContainer::setUsbConnected(true); + MESH_DEBUG_PRINTLN("USB enabled"); + } +} + +void serviceUsbAutoManagement() { + // After Serial.end(), Serial.available() returns 0 and Serial.read() returns -1, + // so no serial guard is needed in the main loop. + if (!s_usbActive && isUsbPowered()) enableUsb(); + if (s_usbActive && !isUsbPowered()) disableUsb(); +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/UsbAutoManagement.h b/variants/inhero_mr2/helpers/UsbAutoManagement.h new file mode 100644 index 0000000000..e70303f03b --- /dev/null +++ b/variants/inhero_mr2/helpers/UsbAutoManagement.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +namespace inhero { + +// Manages the nRF52 USB peripheral based on VBUS presence so the device can +// safely run from battery without an enumerated USB host. Also keeps +// BoardConfigContainer's USB-connected state in sync (used for IINDPM). +bool isUsbPowered(); +void enableUsb(); +void disableUsb(); + +// Call from board tick(); enables/disables USB on VBUS edge. +void serviceUsbAutoManagement(); + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/Watchdog.cpp b/variants/inhero_mr2/helpers/Watchdog.cpp new file mode 100644 index 0000000000..05c329d776 --- /dev/null +++ b/variants/inhero_mr2/helpers/Watchdog.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#include "Watchdog.h" + +#include <Arduino.h> +#include <MeshCore.h> +#include <nrf_wdt.h> + +namespace inhero { + +static bool s_wdtEnabled = false; + +void setupWatchdog(bool blinkLed) { +#ifndef DEBUG_MODE + NRF_WDT->CONFIG = (WDT_CONFIG_SLEEP_Run << WDT_CONFIG_SLEEP_Pos) | + (WDT_CONFIG_HALT_Pause << WDT_CONFIG_HALT_Pos); + NRF_WDT->CRV = 32768 * 600; // 600 s @ 32.768 kHz - long enough for OTA + NRF_WDT->RREN = WDT_RREN_RR0_Enabled << WDT_RREN_RR0_Pos; + NRF_WDT->TASKS_START = 1; + s_wdtEnabled = true; + MESH_DEBUG_PRINTLN("Watchdog enabled: 600s timeout"); + +#ifdef LED_BLUE + if (blinkLed) { + for (int i = 0; i < 3; i++) { + digitalWrite(LED_BLUE, HIGH); + delay(100); + digitalWrite(LED_BLUE, LOW); + delay(100); + } + } +#else + (void)blinkLed; +#endif +#else + (void)blinkLed; + MESH_DEBUG_PRINTLN("Watchdog disabled (DEBUG_MODE)"); +#endif +} + +void feedWatchdog() { +#ifndef DEBUG_MODE + if (s_wdtEnabled) { + NRF_WDT->RR[0] = WDT_RR_RR_Reload; + } +#endif +} + +void disableWatchdog() { +#ifndef DEBUG_MODE + // nRF52 WDT cannot be stopped once started -- only stop feeding. + s_wdtEnabled = false; +#endif +} + +} // namespace inhero diff --git a/variants/inhero_mr2/helpers/Watchdog.h b/variants/inhero_mr2/helpers/Watchdog.h new file mode 100644 index 0000000000..fb032b2c4d --- /dev/null +++ b/variants/inhero_mr2/helpers/Watchdog.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * SPDX-License-Identifier: MIT + */ +#pragma once + +namespace inhero { + +// nRF52 hardware watchdog wrappers. The nRF52 WDT cannot be stopped once +// started; disable() only stops the feed loop so the next CRV expiry resets +// the chip. All three are no-ops when DEBUG_MODE is defined. +// +// setupWatchdog(true) blinks LED_BLUE three times as visual confirmation. +void setupWatchdog(bool blinkLed); +void feedWatchdog(); +void disableWatchdog(); + +} // namespace inhero diff --git a/variants/inhero_mr2/lib/BqDriver.cpp b/variants/inhero_mr2/lib/BqDriver.cpp new file mode 100644 index 0000000000..fd2fd573d5 --- /dev/null +++ b/variants/inhero_mr2/lib/BqDriver.cpp @@ -0,0 +1,563 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * BQ25798 Charger Driver Implementation + */ +#include "BqDriver.h" + +#include <MeshCore.h> + +BqDriver::BqDriver() {} + +BqDriver::~BqDriver() { + if (ih_i2c_dev) { + delete ih_i2c_dev; + ih_i2c_dev = nullptr; + } +} + +// Initializes BQ25798 charger and creates dedicated I2C device for NTC access +bool BqDriver::begin(uint8_t i2c_addr, TwoWire* wire) { + if (!Adafruit_BQ25798::begin(i2c_addr, wire)) { + // Cleanup any existing device before returning + if (ih_i2c_dev) { + delete ih_i2c_dev; + ih_i2c_dev = nullptr; + } + return false; + } + if (ih_i2c_dev) { + delete ih_i2c_dev; + } + ih_i2c_dev = new Adafruit_I2CDevice(i2c_addr, wire); + if (!ih_i2c_dev->begin()) { + // Cleanup on failure + delete ih_i2c_dev; + ih_i2c_dev = nullptr; + return false; + } + return true; +} + +// Reads Power Good status from charger — true if input power is sufficient for charging +bool BqDriver::getChargerStatusPowerGood() { + Adafruit_BusIO_Register chrg_stat_0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_CHARGER_STATUS_0); + Adafruit_BusIO_RegisterBits chrg_stat_0_bits = Adafruit_BusIO_RegisterBits(&chrg_stat_0_reg, 1, 3); + + uint8_t reg_value = chrg_stat_0_bits.read(); + + return (bool)reg_value; +} + +// Reads current charging state from charger +bq25798_charging_status BqDriver::getChargingStatus() { + Adafruit_BusIO_Register chrg_stat_1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_CHARGER_STATUS_1); + Adafruit_BusIO_RegisterBits chrg_stat_1_bits = Adafruit_BusIO_RegisterBits(&chrg_stat_1_reg, 3, 5); + + uint8_t reg_value = chrg_stat_1_bits.read(); + + return (bq25798_charging_status)reg_value; +} + +// Reads solar and temperature telemetry via BQ25798 ADC one-shot +// +// BQ25798 ADC Operating Conditions (Datasheet SLUSE22, Section 9.3.16): +// "The ADC is allowed to operate if either VBUS > 3.4V or VBAT > 2.9V is valid. +// At battery only condition, if the TS_ADC channel is enabled, the ADC only +// works when battery voltage is higher than 3.2V, otherwise, the ADC works +// when the battery voltage is higher than 2.9V." +// +// This means: +// VBUS > 3.4V → ADC runs, all channels available +// VBAT >= 3.2V (no VBUS) → ADC runs, all channels including TS +// VBAT 2.9-3.2V (no VBUS) → ADC runs ONLY if TS channel is DISABLED +// VBAT < 2.9V (no VBUS) → ADC cannot run at all +// +// Strategy: +// 1. If VBAT < 3.2V: disable TS channel to lower threshold to 2.9V +// → Solar data (VBUS/IBUS) still readable, temperature returns N/A +// 2. If VBAT < 2.9V and no VBUS: ADC times out, all values zero/N/A +// 3. Only channels actually used on MR2 are enabled (IBUS, VBUS, TS) +// — unused channels (IBAT, VBAT, VSYS, TDIE, D+, D-, VAC1, VAC2) +// are disabled to prevent ADC_EN from hanging on unconnected pins. +// +// ADC_EN auto-clear behavior: +// In one-shot mode, ADC_EN resets to 0 only when ALL enabled channels +// have completed conversion. If any channel cannot complete (e.g. floating +// input), ADC_EN stays 1 indefinitely. This is why unused channels MUST +// be disabled via registers 0x2F/0x30. +// +// vbat_mv: battery voltage in mV from INA228 (0 = unknown, assume sufficient). +// Returns pointer to internal Telemetry struct (valid until next call). +const Telemetry* BqDriver::getTelemetryData(uint16_t vbat_mv) { + telemetryData = { 0 }; + + // Determine if TS channel can be enabled based on VBAT + // See datasheet quote above: TS enabled requires VBAT >= 3.2V (battery-only) + bool ts_enabled = true; + if (vbat_mv > 0 && vbat_mv < 3200) { + ts_enabled = false; // Disable TS → ADC threshold drops to 2.9V + } + + bool success = this->startADCOneShot(ts_enabled); + + if (!success) { + return &telemetryData; + } + + // Poll ADC_EN bit until it auto-clears (conversion complete) or timeout. + // Channels: IBUS + VBUS (+ TS if enabled) → ~48-72ms typical. + const uint32_t ADC_TIMEOUT_MS = 250; + uint32_t start = millis(); + bool conversion_done = false; + while ((millis() - start) < ADC_TIMEOUT_MS) { + if (!this->getADCEnabled()) { + conversion_done = true; + break; + } + delay(10); + } + + if (!conversion_done) { + this->setADCEnabled(false); + } + + if (conversion_done) { + telemetryData.solar.voltage = getVBUS(); + telemetryData.solar.current = getIBUS(); + if (telemetryData.solar.current < 0) { + telemetryData.solar.current = 0; + } + telemetryData.solar.power = ((int32_t)telemetryData.solar.voltage * telemetryData.solar.current) / 1000; + + if (ts_enabled) { + telemetryData.battery.temperature = this->calculateBatteryTemp(getTS()); + } else { + // TS disabled due to low VBAT — cannot read NTC + telemetryData.battery.temperature = -888.0f; + } + } else { + // ADC didn't complete — VBAT < 2.9V and no VBUS, or I2C issue + telemetryData.battery.temperature = -888.0f; + } + + telemetryData.solar.mppt = getMPPTenable(); + + return &telemetryData; +} + +// Calculates battery temperature in °C using Steinhart-Hart equation. +// Uses coefficients derived from Murata NCP15XH103F03RC datasheet R-T table. +// Max error vs. datasheet: ±0.36°C over -40..+125°C range. +// +// Per BQ25798 datasheet Figure 9-12: REGN → RT1 → TS → (RT2||NTC) → GND +// ts_pct: voltage at TS pin in percentage of REGN (e.g., 70.5 for 70.5%). +// Special input values: -1.0 = I2C error, -2.0 = ADC not ready/invalid. +// Returns temperature in °C, or error codes: +// -999.0 = I2C communication error +// -888.0 = ADC not ready (read 0 or 0xFFFF) +// -99.0 = NTC open/disconnected (k > 0.99) +// 99.0 = NTC short circuit (k < 0.01) +float BqDriver::calculateBatteryTemp(float ts_pct) { + // Check for I2C read error + if (ts_pct == -1.0f) return -999.0f; // I2C error + if (ts_pct == -2.0f) return -888.0f; // ADC not ready or invalid value + + // Convert TS percentage to ratio (0.0 to 1.0) + // TS% = 100 × R_bottom / (R_top + R_bottom) + // where R_bottom = RT2 || NTC + float k = ts_pct / 100.0f; + + // Plausibility check + if (k > 0.99f) return -99.0f; // NTC open/disconnected + if (k < 0.01f) return 99.0f; // NTC short circuit + + // Calculate total resistance of bottom network (RT2 || NTC) + // From: k = R_bottom / (RT1 + R_bottom) + // Rearranged: R_bottom = RT1 × k / (1 - k) + float r_bottom_total = R_PULLUP * (k / (1.0f - k)); + + // Extract NTC resistance from parallel combination with RT2 + // For parallel resistors: 1/R_total = 1/R_NTC + 1/RT2 + // Therefore: 1/R_NTC = 1/R_total - 1/RT2 + float g_total = 1.0f / r_bottom_total; + float g_rt2 = 1.0f / R_PARALLEL; + + if (g_total <= g_rt2) { + return -99.0f; // Invalid measurement + } + + float r_ntc = 1.0f / (g_total - g_rt2); + + // Apply Steinhart-Hart equation: 1/T = A + B·ln(R) + C·(ln(R))³ + float ln_r = logf(r_ntc); + float inv_T = SH_A + SH_B * ln_r + SH_C * ln_r * ln_r * ln_r; + + // Convert Kelvin to Celsius + return (1.0f / inv_T) - 273.15f; +} + +// Getter/Setter for NTC Control 0 (0x17) +// Gets JEITA voltage setting for warm/cool regions +bq25798_jeita_vset_t BqDriver::getJeitaVSet() { + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_vset_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 3, 5); + + uint8_t reg_value = jeita_vset_bits.read(); + + return (bq25798_jeita_vset_t)reg_value; +} + +// Sets JEITA voltage setting for warm/cool temperature regions +bool BqDriver::setJeitaVSet(bq25798_jeita_vset_t setting) { + if (setting > BQ25798_JEITA_VSET_UNCHANGED) { + return false; + } + + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_vset_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 3, 5); + + jeita_vset_bits.write((uint8_t)setting); + + return true; +} + +// Gets JEITA current setting for hot region +bq25798_jeita_iseth_t BqDriver::getJeitaISetH() { + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_iseth_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 2, 3); + + uint8_t reg_value = jeita_iseth_bits.read(); + + return (bq25798_jeita_iseth_t)reg_value; +} + +// Sets JEITA current setting for hot temperature region +bool BqDriver::setJeitaISetH(bq25798_jeita_iseth_t setting) { + if (setting > BQ25798_JEITA_ISETH_UNCHANGED) { + return false; + } + + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_iseth_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 2, 3); + + jeita_iseth_bits.write((uint8_t)setting); + + return true; +} + +// Gets JEITA current setting for cold region +bq25798_jeita_isetc_t BqDriver::getJeitaISetC() { + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_isetc_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 2, 1); + + uint8_t reg_value = jeita_isetc_bits.read(); + + return (bq25798_jeita_isetc_t)reg_value; +} + +// Sets JEITA current setting for cold temperature region +bool BqDriver::setJeitaISetC(bq25798_jeita_isetc_t setting) { + if (setting > BQ25798_JEITA_ISETC_UNCHANGED) { + return false; + } + + Adafruit_BusIO_Register ntc0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_0); + Adafruit_BusIO_RegisterBits jeita_isetc_bits = Adafruit_BusIO_RegisterBits(&ntc0_reg, 2, 1); + + jeita_isetc_bits.write((uint8_t)setting); + + return true; +} + +// Gets TS Cool threshold (lower boundary of COOL region) +bq25798_ts_cool_t BqDriver::getTsCool() { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_cool_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 6); + + uint8_t reg_value = ts_cool_bits.read(); + + return (bq25798_ts_cool_t)reg_value; +} + +// Sets TS Cool threshold (lower boundary of COOL region) +bool BqDriver::setTsCool(bq25798_ts_cool_t threshold) { + if (threshold > BQ25798_TS_COOL_20C) { + return false; + } + + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_cool_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 6); + + ts_cool_bits.write((uint8_t)threshold); + + return true; +} + +// Gets TS Warm threshold (upper boundary of WARM region) +bq25798_ts_warm_t BqDriver::getTsWarm() { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_warm_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 4); + + uint8_t reg_value = ts_warm_bits.read(); + + return (bq25798_ts_warm_t)reg_value; +} + +// Sets TS Warm threshold (upper boundary of WARM region) +bool BqDriver::setTsWarm(bq25798_ts_warm_t threshold) { + if (threshold > BQ25798_TS_WARM_55C) { + return false; + } + + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_warm_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 4); + + ts_warm_bits.write((uint8_t)threshold); + + return true; +} + +// Gets BHOT threshold (upper limit for charging) +bq25798_bhot_t BqDriver::getBHot() { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits bhot_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 2); + + uint8_t reg_value = bhot_bits.read(); + + return (bq25798_bhot_t)reg_value; +} + +// Sets BHOT threshold (upper limit for charging) +bool BqDriver::setBHot(bq25798_bhot_t threshold) { + if (threshold > BQ25798_BHOT_DISABLE) { + return false; + } + + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits bhot_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 2, 2); + + bhot_bits.write((uint8_t)threshold); + + return true; +} + +// Gets BCOLD threshold (lower limit for charging) +bq25798_bcold_t BqDriver::getBCold() { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits bcold_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 1, 1); + + uint8_t reg_value = bcold_bits.read(); + + return (bq25798_bcold_t)reg_value; +} + +// Sets BCOLD threshold (lower limit for charging) +bool BqDriver::setBCold(bq25798_bcold_t threshold) { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits bcold_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 1, 1); + + bcold_bits.write((uint8_t)threshold); + + return true; +} + +// Gets TS ignore status (disables all temperature monitoring) +bool BqDriver::getTsIgnore() { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_ignore_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 1, 0); + + return (bool)ts_ignore_bits.read(); +} + +// Sets TS ignore status (disables all temperature monitoring) +bool BqDriver::setTsIgnore(bool ignore) { + Adafruit_BusIO_Register ntc1_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_NTC_CONTROL_1); + Adafruit_BusIO_RegisterBits ts_ignore_bits = Adafruit_BusIO_RegisterBits(&ntc1_reg, 1, 0); + + ts_ignore_bits.write((uint8_t)ignore); + + return true; +} + +// Starts ADC one-shot conversion for selected channels +// +// MR2 ADC Channel Map: +// Reg 0x2F (ADC_FUNCTION_DISABLE_0): bit=1 means DISABLED +// Bit 7: IBUS → ENABLED (solar current) +// Bit 6: IBAT → disabled (INA228 measures battery current) +// Bit 5: VBUS → ENABLED (solar voltage) +// Bit 4: VBAT → disabled (INA228 measures battery voltage) +// Bit 3: VSYS → disabled (not used) +// Bit 2: TS → ENABLED or disabled depending on VBAT level +// Bit 1: TDIE → disabled (not used) +// Bit 0: reserved +// +// Reg 0x30 (ADC_FUNCTION_DISABLE_1): all disabled on MR2 +// Bit 7: D+ → disabled (AutoDPinsDetection=false, pin not connected) +// Bit 6: D- → disabled (pin not connected) +// Bit 5: VAC2 → disabled (not routed on PCB) +// Bit 4: VAC1 → disabled (not routed on PCB) +// +// Why only needed channels: ADC_EN only auto-clears when ALL enabled channels +// complete. Enabling unconnected channels (D+, D-, VAC) causes ADC_EN to hang +// indefinitely, requiring a timeout and forced disable. +// +// ts_enabled: true = enable TS channel (requires VBAT >= 3.2V per datasheet). +// Returns true if the I2C writes succeeded. +bool BqDriver::startADCOneShot(bool ts_enabled) { + Adafruit_BusIO_Register disable_reg_0 = Adafruit_BusIO_Register(ih_i2c_dev, 0x2F); + Adafruit_BusIO_Register disable_reg_1 = Adafruit_BusIO_Register(ih_i2c_dev, 0x30); + + // Reg 0x2F bit map: IBUS(7) IBAT(6) VBUS(5) VBAT(4) VSYS(3) TS(2) TDIE(1) reserved(0) + // 1 = disabled, 0 = enabled + uint8_t disable0 = 0x5A; // Enable IBUS(7), VBUS(5), TS(2) — disable rest + if (!ts_enabled) { + disable0 |= 0x04; // Also disable TS(2) → 0x5E + } + if (!disable_reg_0.write(disable0)) { return false; } + + // Reg 0x30: Disable all — D+(7), D-(6), VAC2(5), VAC1(4) not connected on MR2 + if (!disable_reg_1.write(0xF0)) { return false; } + + Adafruit_BusIO_Register adc_ctrl_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_ADC_CONTROL); + bool ok = adc_ctrl_reg.write(0xC0); + return ok; +} + +// ADC Control register (0x2E) implementations +bool BqDriver::getADCEnabled() { + Adafruit_BusIO_Register adc_ctrl_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_ADC_CONTROL); + Adafruit_BusIO_RegisterBits adc_en_bits = Adafruit_BusIO_RegisterBits(&adc_ctrl_reg, 1, 7); + bool result = (bool)adc_en_bits.read(); + return result; +} + +bool BqDriver::setADCEnabled(bool enabled) { + Adafruit_BusIO_Register adc_ctrl_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_ADC_CONTROL); + Adafruit_BusIO_RegisterBits adc_en_bits = Adafruit_BusIO_RegisterBits(&adc_ctrl_reg, 1, 7); + bool ok = adc_en_bits.write((uint8_t)enabled); + return ok; +} + +// ADC Reading implementations +int16_t BqDriver::getIBUS() { + Adafruit_BusIO_Register ibus_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_IBUS_ADC, 2, MSBFIRST); + uint16_t raw; + if (!ibus_reg.read(&raw)) { // MSB first + return 0; + } + int16_t val = (int16_t)raw; // 2's complement for signed + return val; // in mA +} + +uint16_t BqDriver::getVBUS() { + Adafruit_BusIO_Register vbus_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_VBUS_ADC, 2, MSBFIRST); + uint16_t val; + if (!vbus_reg.read(&val)) { + return 0; + } + return val; // in mV +} + +float BqDriver::getTS() { + Adafruit_BusIO_Register ts_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_TS_ADC, 2, MSBFIRST); + uint16_t val; + + // Try up to 3 times with small delays if we get invalid values + for (int retry = 0; retry < 3; retry++) { + if (!ts_reg.read(&val)) { + delay(20); + continue; // I2C read error, retry + } + // Check for invalid/uninitialized ADC value (0 or 0xFFFF) + if (val == 0 || val == 0xFFFF) { + if (retry < 2) { + delay(50); // Wait a bit longer for ADC to settle + continue; + } + return -2.0f; // ADC not ready / invalid value after retries + } + // Valid value + return val * 0.09765625f; // 0.09765625 %/LSB (exact: 1/1024) + } + + return -1.0f; // I2C read error after all retries +} + +bool BqDriver::setVOCpercent(bq25798_voc_pct_t pct) { + uint8_t reg15 = readReg(0x15); + reg15 = (reg15 & 0x1F) | ((uint8_t)pct << 5); // Bits [7:5] = VOC_PCT + return writeReg(0x15, reg15); +} + +bq25798_voc_pct_t BqDriver::getVOCpercent() { + uint8_t reg15 = readReg(0x15); + return (bq25798_voc_pct_t)((reg15 >> 5) & 0x07); +} + + +// Gets EN_AUTO_IBATDIS state (auto battery discharge during VBAT_OVP; POR default = enabled) +bool BqDriver::getAutoIBATDIS() { + Adafruit_BusIO_Register ctrl0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_CHARGER_CONTROL_0); + Adafruit_BusIO_RegisterBits auto_ibatdis_bit = Adafruit_BusIO_RegisterBits(&ctrl0_reg, 1, 7); + return (bool)auto_ibatdis_bit.read(); +} + +// Sets EN_AUTO_IBATDIS (auto battery discharge during VBAT_OVP). +// enable: true = BQ sinks 30mA from BAT during OVP, false = no active discharge. +bool BqDriver::setAutoIBATDIS(bool enable) { + Adafruit_BusIO_Register ctrl0_reg = Adafruit_BusIO_Register(ih_i2c_dev, BQ25798_REG_CHARGER_CONTROL_0); + Adafruit_BusIO_RegisterBits auto_ibatdis_bit = Adafruit_BusIO_RegisterBits(&ctrl0_reg, 1, 7); + return auto_ibatdis_bit.write(enable ? 1 : 0); +} + +// Non-static register access methods (use instance I2C config) +bool BqDriver::writeReg(uint8_t reg, uint8_t val) { + if (!ih_i2c_dev) return false; + + uint8_t buffer[2] = {reg, val}; + bool ok = ih_i2c_dev->write(buffer, 2); + return ok; +} + +uint8_t BqDriver::readReg(uint8_t reg) { + if (!ih_i2c_dev) return 0; + + uint8_t buffer[1] = {reg}; + if (!ih_i2c_dev->write_then_read(buffer, 1, buffer, 1)) { + return 0; + } + return buffer[0]; +} + +// Static, raw-Wire helpers — safe pre-begin(). +void BqDriver::maskAllInterrupts(TwoWire& wire, uint8_t addr) { + static const uint8_t mask_regs[] = {0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D}; + for (uint8_t r : mask_regs) { + wire.beginTransmission(addr); + wire.write(r); + wire.write(0xFF); + wire.endTransmission(); + } +} + +void BqDriver::clearInterruptFlags(TwoWire& wire, uint8_t addr) { + static const uint8_t flag_regs[] = {0x22, 0x23, 0x24, 0x25, 0x26, 0x27}; + for (uint8_t r : flag_regs) { + wire.beginTransmission(addr); + wire.write(r); + wire.endTransmission(false); + wire.requestFrom(addr, (uint8_t)1); + while (wire.available()) wire.read(); + } +} + +void BqDriver::disableAdc(TwoWire& wire, uint8_t addr) { + wire.beginTransmission(addr); + wire.write(0x2E); // ADC_CONTROL + wire.write(0x00); + wire.endTransmission(); +} diff --git a/variants/inhero_mr2/lib/BqDriver.h b/variants/inhero_mr2/lib/BqDriver.h new file mode 100644 index 0000000000..5830704892 --- /dev/null +++ b/variants/inhero_mr2/lib/BqDriver.h @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * BQ25798 Charger Driver for Inhero MR-2 + * Extends Adafruit_BQ25798 library (BSD License). + */ + +#pragma once + +#include <Adafruit_BQ25798.h> +#include <Wire.h> +#include <math.h> + +#define R_PULLUP 5600.0f // Upper resistor RT1 in Ohms +#define R_PARALLEL 27000.0f // Lower parallel resistor RT2 in Ohms + +// Steinhart-Hart coefficients for NCP15XH103F03RC NTC (10kΩ, B=3380) +// Fitted from Murata datasheet R-T table at -20°C, 25°C, 85°C +// Max error vs. datasheet: ±0.36°C over -40..+125°C range +#define SH_A 8.7248136876e-04f // Steinhart-Hart coefficient A +#define SH_B 2.5405556775e-04f // Steinhart-Hart coefficient B +#define SH_C 1.8122847672e-07f // Steinhart-Hart coefficient C + +// Solar input telemetry data +// Solar current from BQ25798 IBUS ADC has significant error at low currents (~±30mA). +// Values are approximate - treat as estimates, not precise measurements. +typedef struct { + uint16_t voltage; // Solar voltage in mV + int16_t current; // Solar current in mA (approximate, see note above) + int32_t power; // Solar power in mW + bool mppt; // MPPT enabled status +} SolarData; + +// Battery telemetry data +typedef struct { + uint16_t voltage; // Battery voltage in mV + float current; // Battery current in mA (positive = charging, negative = discharging) + int32_t power; // Battery power in mW + float temperature; // Battery temperature in °C +} BattData; + +// System voltage telemetry +typedef struct { + uint16_t voltage; // System voltage in mV +} SysData; + +// Main telemetry container aggregating all data sources +typedef struct { + SysData system; // System voltage data + SolarData solar; // Solar input data + BattData battery; // Battery data +} Telemetry; + +// JEITA voltage setting for warm/cool regions (NTC Control 0 Register 0x17) +typedef enum { + BQ25798_JEITA_VSET_SUSPEND = 0x00, // Charge Suspend + BQ25798_JEITA_VSET_MINUS_800MV = 0x01, // Set VREG to VREG-800mV + BQ25798_JEITA_VSET_MINUS_600MV = 0x02, // Set VREG to VREG-600mV + BQ25798_JEITA_VSET_MINUS_400MV = 0x03, // Set VREG to VREG-400mV (default) + BQ25798_JEITA_VSET_MINUS_300MV = 0x04, // Set VREG to VREG-300mV + BQ25798_JEITA_VSET_MINUS_200MV = 0x05, // Set VREG to VREG-200mV + BQ25798_JEITA_VSET_MINUS_100MV = 0x06, // Set VREG to VREG-100mV + BQ25798_JEITA_VSET_UNCHANGED = 0x07 // VREG unchanged +} bq25798_jeita_vset_t; + +typedef enum { + BQ25798_JEITA_ISETH_SUSPEND = 0x00, // Charge Suspend + BQ25798_JEITA_ISETH_20_PERCENT = 0x01, // Set ICHG to 20% * ICHG + BQ25798_JEITA_ISETH_40_PERCENT = 0x02, // Set ICHG to 40% * ICHG + BQ25798_JEITA_ISETH_UNCHANGED = 0x03 // ICHG unchanged (default) +} bq25798_jeita_iseth_t; + +typedef enum { + BQ25798_JEITA_ISETC_SUSPEND = 0x00, // Charge Suspend + BQ25798_JEITA_ISETC_20_PERCENT = 0x01, // Set ICHG to 20% * ICHG (default) + BQ25798_JEITA_ISETC_40_PERCENT = 0x02, // Set ICHG to 40% * ICHG + BQ25798_JEITA_ISETC_UNCHANGED = 0x03 // ICHG unchanged +} bq25798_jeita_isetc_t; + +typedef enum { + BQ25798_CHARGER_STATE_NOT_CHARGING = 0x00, + BQ25798_CHARGER_STATE_TRICKLE_CHARGING = 0x01, + BQ25798_CHARGER_STATE_PRE_CHARGING = 0x02, + BQ25798_CHARGER_STATE_CC_CHARGING = 0x03, + BQ25798_CHARGER_STATE_CV_CHARGING = 0x04, + BQ25798_CHARGER_STATE_TOP_OF_TIMER_ACTIVE_CHARGING = 0x06, + BQ25798_CHARGER_STATE_DONE_CHARGING = 0x07 + +} bq25798_charging_status; + +// New enums for NTC Control 1 (Register 0x18) +typedef enum { + BQ25798_TS_COOL_5C = 0x00, // 71.1% of REGN (5°C) + BQ25798_TS_COOL_10C = 0x01, // 68.4% of REGN (10°C, default) + BQ25798_TS_COOL_15C = 0x02, // 65.5% of REGN (15°C) + BQ25798_TS_COOL_20C = 0x03 // 62.4% of REGN (20°C) +} bq25798_ts_cool_t; + +typedef enum { + BQ25798_TS_WARM_40C = 0x00, // 48.4% of REGN (40°C) + BQ25798_TS_WARM_45C = 0x01, // 44.8% of REGN (45°C, default) + BQ25798_TS_WARM_50C = 0x02, // 41.2% of REGN (50°C) + BQ25798_TS_WARM_55C = 0x03 // 37.7% of REGN (55°C) +} bq25798_ts_warm_t; + +// BHOT threshold - upper temperature limit for charging +typedef enum { + BQ25798_BHOT_55C = 0x00, // 55°C + BQ25798_BHOT_60C = 0x01, // 60°C (default) + BQ25798_BHOT_65C = 0x02, // 65°C + BQ25798_BHOT_DISABLE = 0x03 // Disable BHOT protection +} bq25798_bhot_t; + +// BCOLD threshold - lower temperature limit for charging +typedef enum { + BQ25798_BCOLD_MINUS_10C = 0x00, // -10°C (default) + BQ25798_BCOLD_MINUS_20C = 0x01 // -20°C +} bq25798_bcold_t; + +// ADC resolution setting +typedef enum { + BQ25798_ADC_SAMPLE_15BIT = 0b00, // 15-bit resolution (default, ~24ms conversion) + BQ25798_ADC_SAMPLE_14BIT = 0b01, // 14-bit resolution + BQ25798_ADC_SAMPLE_13BIT = 0b10, // 13-bit resolution + BQ25798_ADC_SAMPLE_12BIT = 0b11 // 12-bit resolution (not recommended) +} bq25798_adc_sample_t; + +// Extended BQ25798 driver with NTC support and comprehensive telemetry. +// Extends Adafruit_BQ25798 with: +// - JEITA temperature control (VSET, ISETH, ISETC) +// - NTC thermistor temperature calculation +// - Complete ADC telemetry (solar, battery, system) +// - One-shot ADC conversion management +class BqDriver : public Adafruit_BQ25798 { +public: + BqDriver(); + ~BqDriver(); + + bool begin(uint8_t i2c_addr = BQ25798_DEFAULT_ADDR, TwoWire* wire = &Wire); + + // Direct pass-through to parent — all I2C runs in tick() context (no concurrent access) + bool setHIZMode(bool enable) { return Adafruit_BQ25798::setHIZMode(enable); } + bool setChargeEnable(bool enable) { return Adafruit_BQ25798::setChargeEnable(enable); } + bool getChargeEnable() { return Adafruit_BQ25798::getChargeEnable(); } + bool getMPPTenable() { return Adafruit_BQ25798::getMPPTenable(); } + bool setMPPTenable(bool enable) { return Adafruit_BQ25798::setMPPTenable(enable); } + bool setStatPinEnable(bool enable) { return Adafruit_BQ25798::setStatPinEnable(enable); } + bool getStatPinEnable() { return Adafruit_BQ25798::getStatPinEnable(); } + + bq25798_jeita_vset_t getJeitaVSet(); + bool setJeitaVSet(bq25798_jeita_vset_t setting); + + bq25798_jeita_iseth_t getJeitaISetH(); + bool setJeitaISetH(bq25798_jeita_iseth_t setting); + + bq25798_jeita_isetc_t getJeitaISetC(); + bool setJeitaISetC(bq25798_jeita_isetc_t setting); + + bq25798_ts_cool_t getTsCool(); + bool setTsCool(bq25798_ts_cool_t threshold); + + bq25798_ts_warm_t getTsWarm(); + bool setTsWarm(bq25798_ts_warm_t threshold); + + bq25798_bhot_t getBHot(); + bool setBHot(bq25798_bhot_t threshold); + + bq25798_bcold_t getBCold(); + bool setBCold(bq25798_bcold_t threshold); + + bool getTsIgnore(); + bool setTsIgnore(bool ignore); + + // Read solar + temperature telemetry via BQ25798 ADC. + // vbat_mv: battery voltage from INA228 in mV, used to decide if the TS channel + // can be enabled (requires VBAT >= 3.2V without VBUS, per datasheet 9.3.16). + // Pass 0 if unknown (assumes sufficient voltage). + const Telemetry* getTelemetryData(uint16_t vbat_mv = 0); + + // Charger Status + bool getChargerStatusPowerGood(); + bq25798_charging_status getChargingStatus(); + + bool setVOCpercent(bq25798_voc_pct_t pct); + bq25798_voc_pct_t getVOCpercent(); + + bool getAutoIBATDIS(); + bool setAutoIBATDIS(bool enable); + + // Non-static register access methods (use instance I2C config) + bool writeReg(uint8_t reg, uint8_t val); + uint8_t readReg(uint8_t reg); + + // Low-level BQ25798 housekeeping via raw TwoWire. These are safe to call + // before begin() — used on the low-voltage wake path where the driver + // instance has not been constructed yet. + + // Mask every charger- and fault-interrupt source (MASK regs 0x28..0x2D) so + // the INT line stays HIGH when INT is not wired to an MCU IRQ. Otherwise a + // pull-up on INT wastes current (~254µA with RAK4630 INPUT_PULLUP). + static void maskAllInterrupts(TwoWire& wire = Wire, uint8_t addr = 0x6B); + + // Read flag regs 0x22..0x27 (read-to-clear) to de-assert the INT line. + // Status regs 0x1B/0x20/0x21 must NOT be touched here — they are read-only. + static void clearInterruptFlags(TwoWire& wire = Wire, uint8_t addr = 0x6B); + + // Disable the BQ25798 ADC (saves ~500µA continuous draw). Used when entering + // System Sleep; re-enabled on wake by the driver's normal startup path. + static void disableAdc(TwoWire& wire = Wire, uint8_t addr = 0x6B); + + // ADC status/result accessors + bool getADCEnabled(); + uint16_t getVBUS(); + +protected: + Adafruit_I2CDevice* ih_i2c_dev = nullptr; // Dedicated I2C device for NTC access + +private: + bool startADCOneShot(bool ts_enabled = true); + bool setADCEnabled(bool enabled); + int16_t getIBUS(); + float getTS(); // TS voltage in % of REGN + + float calculateBatteryTemp(float ts_pct); + Telemetry telemetryData = { 0 }; +}; \ No newline at end of file diff --git a/variants/inhero_mr2/lib/Ina228Driver.cpp b/variants/inhero_mr2/lib/Ina228Driver.cpp new file mode 100644 index 0000000000..532ef99b83 --- /dev/null +++ b/variants/inhero_mr2/lib/Ina228Driver.cpp @@ -0,0 +1,542 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * INA228 Power Monitor Driver Implementation + */ + +#include "Ina228Driver.h" +#include <MeshCore.h> // for MESH_DEBUG_PRINTLN + +Ina228Driver::Ina228Driver(uint8_t i2c_addr) + : _i2c_addr(i2c_addr), _shunt_mohm(10.0f), _current_lsb(0.0f), _base_shunt_cal(0), _calibration_factor(1.0f) {} + +bool Ina228Driver::begin(float shunt_resistor_mohm) { + _shunt_mohm = shunt_resistor_mohm; + + // Check if device is present + if (!isConnected()) { + MESH_DEBUG_PRINTLN("INA228 begin() FAILED: isConnected() = false"); + return false; + } + MESH_DEBUG_PRINTLN("INA228 begin(): Device connected"); + // Do NOT reset device - Early Boot voltage check may have configured it + // Resetting causes timing issues where subsequent writes fail + // Just reconfigure registers directly + + // Configure ADC: Continuous mode, all channels, long conversion times, 256 samples averaging + // - Long conversion times (VSHCT=4120µs, VBUSCT=2074µs) reduce noise for accurate SOC tracking + // - AVG_256 filters TX voltage peaks (prevents false UVLO triggers during transmit) + // - Trade-off: ~1s per measurement (excellent accuracy, acceptable for 1h SOC updates) + uint16_t adc_config = (INA228_ADC_MODE_CONT_ALL << 12) | // MODE: Continuous all = 0xF + (INA228_ADC_CT_2074us << 9) | // VBUSCT: 2074µs for voltage accuracy + (INA228_ADC_CT_4120us << 6) | // VSHCT: 4120µs for current/SOC accuracy + (INA228_ADC_CT_540us << 3) | // VTCT: 540µs (temp less critical) + (INA228_ADC_AVG_256 << 0); // AVG: 256 samples + // Expected value: 0xFFCB + + // Write ADC_CONFIG with retry and verify + // Sometimes the first write after readVBATDirect() fails + bool adc_config_ok = false; + for (int retry = 0; retry < 5; retry++) { + writeRegister16(INA228_REG_ADC_CONFIG, adc_config); + delay(10); + uint16_t readback = readRegister16(INA228_REG_ADC_CONFIG); + if (readback == adc_config) { + adc_config_ok = true; + break; + } + delay(20); // Wait longer before retry + } + + if (!adc_config_ok) { + MESH_DEBUG_PRINTLN("INA228 begin() ERROR: Failed to set ADC_CONFIG after 5 retries!"); + return false; + } + MESH_DEBUG_PRINTLN("INA228 begin(): ADC_CONFIG set to 0x%04X", adc_config); + + // Calculate current LSB: Max expected current / 2^19 (20-bit ADC) + // With 100mΩ shunt and ±163.84mV ADC range (ADCRANGE=0): Max = 163.84mV / 0.1Ω = 1.6384A + // Using 1.6384A, LSB = 1.6384A / 524288 ≈ 3.125 µA + // At 10mA standby: V_shunt = 1mV → SNR greatly improved vs. 20mΩ (200µV) + _current_lsb = 1.6384f / 524288.0f; // in Amperes (max ±1.6384A) + + // Calculate shunt calibration value + // SHUNT_CAL = 13107.2 × 10^6 × CURRENT_LSB × R_SHUNT + // R_SHUNT in Ohms, CURRENT_LSB in A + float shunt_ohm = _shunt_mohm / 1000.0f; + _base_shunt_cal = (uint16_t)(13107.2e6 * _current_lsb * shunt_ohm); + + // ADCRANGE = 0 (±163.84mV): No multiplier needed (×4 only required for ADCRANGE=1) + + // Apply calibration factor to SHUNT_CAL (if set) + uint16_t calibrated_shunt_cal = (uint16_t)(_base_shunt_cal * _calibration_factor); + writeRegister16(INA228_REG_SHUNT_CAL, calibrated_shunt_cal); + delay(5); + + // Configure INA228: ADCRANGE = 0 (±163.84mV, default) for 100mΩ shunt + // At 1A: V_shunt = 100mV (61% of full-scale) — sufficient headroom + // At 10mA: V_shunt = 1mV — 5× better SNR than 20mΩ (was 200µV) + uint16_t config = 0; // ADCRANGE=0 (±163.84mV range, bit 4 = 0) + writeRegister16(INA228_REG_CONFIG, config); + delay(5); + + return true; +} + +bool Ina228Driver::isConnected() { + // First check if device responds at all + Wire.beginTransmission(_i2c_addr); + uint8_t i2c_result = Wire.endTransmission(); + + if (i2c_result != 0) { + return false; // No ACK on bus + } + + // Read Manufacturer ID (should be 0x5449 = "TI") + uint16_t mfg_id = readRegister16(INA228_REG_MANUFACTURER); + + if (mfg_id == 0x0000 || mfg_id == 0xFFFF) { + return false; // Invalid MFG_ID (bus error) + } + + // Some INA228 clones may have different MFG_ID, skip strict check + // Just verify it's not a bus error value + + // Read Device ID (should be 0x228 in lower 12 bits) + uint16_t dev_id = readRegister16(INA228_REG_DEVICE_ID); + + if (dev_id == 0x0000 || dev_id == 0xFFFF) { + return false; // Invalid DEV_ID (bus error) + } + + // Accept any non-error DEV_ID — some INA228 clones report 0x2281 instead of 0x228. + + return true; // Accept device if MFG_ID was valid +} + +void Ina228Driver::reset() { + writeRegister16(INA228_REG_CONFIG, INA228_CONFIG_RST); +} + +uint16_t Ina228Driver::readVoltage_mV() { + int32_t vbus_raw = readRegister24(INA228_REG_VBUS); + // INA228 VBUS: 20-bit ADC left-aligned in 24-bit register + // Must right-shift by 4 bits to get actual 20-bit value + vbus_raw >>= 4; + // VBUS LSB = 195.3125 µV + float vbus_v = vbus_raw * 195.3125e-6; + return (uint16_t)(vbus_v * 1000.0f); // Convert to mV +} + +int16_t Ina228Driver::readCurrent_mA() { + int32_t current_raw = readRegister24(INA228_REG_CURRENT); + // INA228 CURRENT: 20-bit ADC left-aligned in 24-bit register + // Must right-shift by 4 bits to get actual 20-bit value + current_raw >>= 4; + // Current = raw × CURRENT_LSB + // Calibration is applied via SHUNT_CAL register (hardware calibration) + // Sign convention: INVERT because shunt is oriented for battery perspective + // Positive = charging (current into battery), Negative = discharging (current from battery) + float current_a = current_raw * _current_lsb; + float current_mA = -current_a * 1000.0f; // Convert to mA, inverted sign + return (int16_t)(current_mA); +} + +float Ina228Driver::readCurrent_mA_precise() { + int32_t current_raw = readRegister24(INA228_REG_CURRENT); + // INA228 CURRENT: 20-bit ADC left-aligned in 24-bit register + // Must right-shift by 4 bits to get actual 20-bit value + current_raw >>= 4; + // Current = raw × CURRENT_LSB + // Calibration is applied via SHUNT_CAL register (hardware calibration) + // Sign convention: INVERT because shunt is oriented for battery perspective + // Positive = charging (current into battery), Negative = discharging (current from battery) + float current_a = current_raw * _current_lsb; + float current_mA = -current_a * 1000.0f; // Convert to mA with full precision, inverted sign + return current_mA; +} + +bool Ina228Driver::shutdown() { + // Set operating mode to Shutdown (MODE = 0x0) + // This disables all conversions and Coulomb Counter. + // Use retry+readback — I2C writes can fail silently (see setUnderVoltageAlert). + // If this fails, INA228 stays in continuous mode (~350µA wasted in System Sleep!). + uint16_t adc_config = 0x0000; // MODE = 0x0 (Shutdown) + + for (int retry = 0; retry < 3; retry++) { + if (!writeRegister16(INA228_REG_ADC_CONFIG, adc_config)) { + delay(10); + continue; + } + delay(2); + uint16_t readback = readRegister16(INA228_REG_ADC_CONFIG); + if ((readback & 0xF000) == 0x0000) { // Check MODE bits [15:12] + return true; + } + delay(10); + } + return false; +} + +void Ina228Driver::wakeup() { + // Re-enable continuous measurement mode with full ADC configuration + // Must restore conversion times from begin() - defaults are much shorter (50µs) + uint16_t adc_config = (INA228_ADC_MODE_CONT_ALL << 12) | // MODE: Continuous all = 0xF + (INA228_ADC_CT_2074us << 9) | // VBUSCT: 2074µs for voltage accuracy + (INA228_ADC_CT_4120us << 6) | // VSHCT: 4120µs for current/SOC accuracy + (INA228_ADC_CT_540us << 3) | // VTCT: 540µs (temp less critical) + (INA228_ADC_AVG_256 << 0); // AVG: 256 samples + writeRegister16(INA228_REG_ADC_CONFIG, adc_config); +} + +uint16_t Ina228Driver::readVBATDirect(TwoWire* wire, uint8_t i2c_addr) { + // === Important: This is called BEFORE begin() in Early Boot Check === + // The INA228 may be in power-on reset state, so we need to be careful + + // First check if device responds + wire->beginTransmission(i2c_addr); + if (wire->endTransmission() != 0) { + return 0; // Device not present + } + + // === One-Shot ADC Trigger === + // Configure ADC for single-shot bus voltage measurement + // MODE = 0x1 (Single-shot bus voltage only) + uint16_t adc_config = (0x1 << 12); // MODE = 0x1, no averaging for speed + + wire->beginTransmission(i2c_addr); + wire->write(INA228_REG_ADC_CONFIG); + wire->write((adc_config >> 8) & 0xFF); + wire->write(adc_config & 0xFF); + if (wire->endTransmission() != 0) { + return 0; // I2C communication failed + } + + // Wait for conversion to complete (~200µs typical, use 2ms to be safe) + delay(2); + + // Read VBUS register (24-bit) + wire->beginTransmission(i2c_addr); + wire->write(INA228_REG_VBUS); + if (wire->endTransmission(false) != 0) { + return 0; + } + + wire->requestFrom(i2c_addr, (uint8_t)3); + if (wire->available() < 3) { + return 0; + } + + int32_t vbus_raw = wire->read() << 16; // MSB + vbus_raw |= wire->read() << 8; // Mid + vbus_raw |= wire->read(); // LSB + + // Sign-extend 24-bit to 32-bit + if (vbus_raw & 0x800000) { + vbus_raw |= 0xFF000000; + } + + // INA228 VBUS: 20-bit ADC left-aligned in 24-bit register + // Must right-shift by 4 bits to get actual 20-bit value + vbus_raw >>= 4; + + // VBUS LSB = 195.3125 µV + float vbus_v = vbus_raw * 195.3125e-6; + uint16_t vbus_mv = (uint16_t)(vbus_v * 1000.0f); + + return vbus_mv; +} + +int32_t Ina228Driver::readPower_mW() { + int32_t power_raw = readRegister24(INA228_REG_POWER); + // Power LSB = 3.2 × CURRENT_LSB + // Sign convention: INVERT to match current sign (positive = charging) + float power_w = power_raw * (3.2f * _current_lsb); + return (int32_t)(-power_w * 1000.0f); // Convert to mW, inverted sign +} + +int32_t Ina228Driver::readEnergy_mWh() { + int64_t energy_raw = readRegister40(INA228_REG_ENERGY); + // Energy LSB = 16 × 3.2 × CURRENT_LSB (in J) + // Convert to Wh: / 3600 + // NO inversion - shunt orientation gives correct battery perspective + // Positive = discharging (energy from battery), Negative = charging (energy into battery) + float energy_j = energy_raw * (16.0f * 3.2f * _current_lsb); + float energy_wh = energy_j / 3600.0f; + return (int32_t)(energy_wh * 1000.0f); // Convert to mWh, NO inversion +} + +float Ina228Driver::readCharge_mAh() { + int64_t charge_raw = readRegister40(INA228_REG_CHARGE); + // Charge LSB = CURRENT_LSB (in C = A·s) + // Convert to Ah: / 3600 + // INVERT: Hardware negative = charging, we want positive = charging (battery perspective) + float charge_c = charge_raw * _current_lsb; + float charge_ah = charge_c / 3600.0f; + return -charge_ah * 1000.0f; // Convert to mAh, INVERTED for battery perspective +} + +float Ina228Driver::readDieTemperature_C() { + // DIETEMP is a 16-bit register (not 24-bit like others!) + int16_t temp_raw = (int16_t)readRegister16(INA228_REG_DIETEMP); + // Temperature LSB = 7.8125 m°C + float temp_c = temp_raw * 7.8125e-3; + return temp_c; +} + +bool Ina228Driver::readAll(Ina228BatteryData* data) { + if (!isConnected()) { + return false; + } + + data->voltage_mv = readVoltage_mV(); + data->current_ma = readCurrent_mA(); + data->power_mw = readPower_mW(); + data->energy_mwh = readEnergy_mWh(); + data->charge_mah = readCharge_mAh(); + data->die_temp_c = readDieTemperature_C(); + + return true; +} + +void Ina228Driver::resetCoulombCounter() { + // Write RSTACC (bit 14) directly — no read-modify-write! + // CONFIG is always 0x0000 (set in begin()), so we can safely write 0x4000. + // RMW is dangerous: if readRegister16() returns garbage on I2C glitch, + // we could accidentally set RST (bit 15) and wipe SHUNT_CAL. + writeRegister16(INA228_REG_CONFIG, (1 << 14)); // RSTACC only +} + +uint16_t Ina228Driver::readShuntCalRegister() { + return readRegister16(INA228_REG_SHUNT_CAL); +} + +uint16_t Ina228Driver::readAdcConfigRegister() { + return readRegister16(INA228_REG_ADC_CONFIG); +} + +uint16_t Ina228Driver::readConfigRegister() { + return readRegister16(INA228_REG_CONFIG); +} + +bool Ina228Driver::validateAndRepairShuntCal() { + uint16_t expected = (uint16_t)(_base_shunt_cal * _calibration_factor); + if (expected == 0) return false; // Not initialized + + uint16_t actual = readShuntCalRegister(); + if (actual == expected) return true; // OK + + // SHUNT_CAL is wrong — repair it! + MESH_DEBUG_PRINTLN("INA228: SHUNT_CAL corrupted! Expected=%u, Got=%u - repairing", expected, actual); + writeRegister16(INA228_REG_SHUNT_CAL, expected); + delay(2); + + uint16_t verify = readShuntCalRegister(); + if (verify != expected) { + MESH_DEBUG_PRINTLN("INA228: SHUNT_CAL repair FAILED! Wrote=%u, Read=%u", expected, verify); + return false; + } + MESH_DEBUG_PRINTLN("INA228: SHUNT_CAL repaired successfully"); + return true; +} + +bool Ina228Driver::setUnderVoltageAlert(uint16_t voltage_mv) { + // BUVL register: 3.125 mV/LSB (per datasheet Table 7-20) + // Non-zero BUVL enables bus under-voltage comparison → BUSUL flag + ALERT pin + // BUVL = 0 disables comparison (datasheet default) + uint16_t buvl_value = (uint16_t)(voltage_mv / 3.125f); + + // Write with retry and readback verification (I2C writes can fail silently) + for (int retry = 0; retry < 3; retry++) { + if (!writeRegister16(INA228_REG_BUVL, buvl_value)) { + delay(10); + continue; + } + delay(5); + uint16_t readback = readRegister16(INA228_REG_BUVL); + if (readback == buvl_value) { + return true; + } + MESH_DEBUG_PRINTLN("INA228: BUVL write mismatch (wrote=0x%04X, read=0x%04X), retry %d", + buvl_value, readback, retry); + delay(10); + } + MESH_DEBUG_PRINTLN("INA228: BUVL write FAILED after 3 retries!"); + return false; +} + +void Ina228Driver::enableAlert(bool enable_uvlo, bool active_high, bool latch_alert) { + // DIAG_ALRT register: Only bits [15:12] are R/W (config), bits [11:0] are read-only flags. + // Writing to this register clears all flag bits [11:0]. + // Note: BUSUL/BUSOL flags (bits 3-4) are READ-ONLY status flags, NOT enable bits. + // Bus under-voltage comparison is enabled by setting BUVL register to non-zero. + uint16_t diag_alrt = 0; + + if (latch_alert) { + diag_alrt |= INA228_DIAG_ALRT_ALATCH; // Latch mode: Alert stays active until DIAG_ALRT is read + } + + if (active_high) { + diag_alrt |= INA228_DIAG_ALRT_APOL; // Active-high polarity (default: active-low) + } + + // Write with retry and readback verification + // Only bits [15:12] are readable as config; bits [11:0] are flags (may change between write and read) + uint16_t expected_config = diag_alrt & 0xF000; // Only check config bits + for (int retry = 0; retry < 3; retry++) { + writeRegister16(INA228_REG_DIAG_ALRT, diag_alrt); + delay(5); + uint16_t readback = readRegister16(INA228_REG_DIAG_ALRT); + uint16_t readback_config = readback & 0xF000; + if (readback_config == expected_config) { + return; + } + MESH_DEBUG_PRINTLN("INA228: DIAG_ALRT config mismatch (wrote=0x%04X, read=0x%04X, config=0x%04X vs 0x%04X), retry %d", + diag_alrt, readback, expected_config, readback_config, retry); + delay(10); + } + MESH_DEBUG_PRINTLN("INA228: DIAG_ALRT write FAILED after 3 retries!"); +} + +bool Ina228Driver::isAlertActive() { + uint16_t diag_flags = getDiagnosticFlags(); + return (diag_flags & (INA228_DIAG_ALRT_BUSUL | INA228_DIAG_ALRT_BUSOL)) != 0; +} + +void Ina228Driver::clearAlert() { + // Read diagnostic register to clear latched alerts + getDiagnosticFlags(); +} + +uint16_t Ina228Driver::getDiagnosticFlags() { + return readRegister16(INA228_REG_DIAG_ALRT); +} + +uint16_t Ina228Driver::readBuvlRegister() { + return readRegister16(INA228_REG_BUVL); +} + +// ===== Private Methods ===== + +bool Ina228Driver::writeRegister16(uint8_t reg, uint16_t value) { + Wire.beginTransmission(_i2c_addr); + Wire.write(reg); + Wire.write((value >> 8) & 0xFF); // MSB + Wire.write(value & 0xFF); // LSB + bool ok = (Wire.endTransmission() == 0); + return ok; +} + +uint16_t Ina228Driver::readRegister16(uint8_t reg) { + Wire.beginTransmission(_i2c_addr); + Wire.write(reg); + Wire.endTransmission(false); // Repeated start + + Wire.requestFrom(_i2c_addr, (uint8_t)2); + if (Wire.available() < 2) { + return 0; + } + + uint16_t value = Wire.read() << 8; // MSB + value |= Wire.read(); // LSB + return value; +} + +int32_t Ina228Driver::readRegister24(uint8_t reg) { + Wire.beginTransmission(_i2c_addr); + Wire.write(reg); + Wire.endTransmission(false); + + Wire.requestFrom(_i2c_addr, (uint8_t)3); + if (Wire.available() < 3) { + return 0; + } + + int32_t value = Wire.read() << 16; // MSB + value |= Wire.read() << 8; // Mid + value |= Wire.read(); // LSB + + // Sign-extend 24-bit to 32-bit + if (value & 0x800000) { + value |= 0xFF000000; + } + + return value; +} + +int64_t Ina228Driver::readRegister40(uint8_t reg) { + Wire.beginTransmission(_i2c_addr); + Wire.write(reg); + Wire.endTransmission(false); + + Wire.requestFrom(_i2c_addr, (uint8_t)5); + if (Wire.available() < 5) { + return 0; + } + + int64_t value = (int64_t)Wire.read() << 32; // MSB + value |= (int64_t)Wire.read() << 24; + value |= (int64_t)Wire.read() << 16; + value |= (int64_t)Wire.read() << 8; + value |= (int64_t)Wire.read(); // LSB + + // Sign-extend 40-bit to 64-bit + if (value & 0x8000000000LL) { + value |= 0xFFFFFF0000000000LL; + } + + return value; +} + +// ===== Calibration Methods ===== + +float Ina228Driver::calibrateCurrent(float actual_current_ma) { + // Step 1: Reset calibration to 1.0 for accurate measurement + setCalibrationFactor(1.0f); + + // Wait for ADC to settle + delay(10); + + // Step 2: Read current measured value (uncalibrated) + int16_t measured_current_ma = readCurrent_mA(); + + // Avoid division by zero + if (measured_current_ma == 0) { + return 1.0f; // No correction possible + } + + // Step 3: Calculate correction factor (INVERSE ratio) + // If INA shows -9.4mA but actual is -10.4mA, we need SHUNT_CAL to be SMALLER + // so INA writes a LARGER value. Factor = measured/actual = 9.4/10.4 = 0.904 + float new_factor = (float)measured_current_ma / actual_current_ma; + + // Step 4: Apply new calibration factor to INA228 hardware + setCalibrationFactor(new_factor); + + return new_factor; +} + +void Ina228Driver::setCalibrationFactor(float factor) { + // Clamp to reasonable range (0.5x to 2.0x) + if (factor < 0.5f) factor = 0.5f; + if (factor > 2.0f) factor = 2.0f; + + _calibration_factor = factor; + + // Apply calibration factor to SHUNT_CAL register + // Lower SHUNT_CAL → INA writes larger values → higher current reading + // Higher SHUNT_CAL → INA writes smaller values → lower current reading + // CURRENT_LSB stays constant (per datasheet design) + if (_base_shunt_cal > 0) { + uint16_t calibrated_shunt_cal = (uint16_t)(_base_shunt_cal * factor); + writeRegister16(INA228_REG_SHUNT_CAL, calibrated_shunt_cal); + } +} + +float Ina228Driver::getCalibrationFactor() const { + return _calibration_factor; +} + + diff --git a/variants/inhero_mr2/lib/Ina228Driver.h b/variants/inhero_mr2/lib/Ina228Driver.h new file mode 100644 index 0000000000..414de3a953 --- /dev/null +++ b/variants/inhero_mr2/lib/Ina228Driver.h @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + * + * INA228 Power Monitor Driver for Inhero MR-2 + * + * Features: + * - Voltage, current, power monitoring + * - Coulomb counter (accumulated charge) + * - Alert pin for firmware-triggered low-voltage sleep (INA228 BUVL → ISR → System Sleep) + * - Chemistry-specific thresholds (Li-Ion, LiFePO4, LTO) + */ + +#pragma once + +#include <Wire.h> +#include <Arduino.h> + +// INA228 I2C Address +#define INA228_I2C_ADDR_DEFAULT 0x40 // A0=GND, A1=GND + +// INA228 Register Map +#define INA228_REG_CONFIG 0x00 // Configuration +#define INA228_REG_ADC_CONFIG 0x01 // ADC Configuration +#define INA228_REG_SHUNT_CAL 0x02 // Shunt Calibration +#define INA228_REG_SHUNT_TEMP 0x03 // Shunt Temperature Coefficient +#define INA228_REG_VSHUNT 0x04 // Shunt Voltage +#define INA228_REG_VBUS 0x05 // Bus Voltage +#define INA228_REG_DIETEMP 0x06 // Die Temperature +#define INA228_REG_CURRENT 0x07 // Current +#define INA228_REG_POWER 0x08 // Power +#define INA228_REG_ENERGY 0x09 // Energy (Coulomb Counter) +#define INA228_REG_CHARGE 0x0A // Charge (Coulomb Counter) +#define INA228_REG_DIAG_ALRT 0x0B // Diagnostic and Alert +#define INA228_REG_SOVL 0x0C // Shunt Over-Voltage Limit +#define INA228_REG_SUVL 0x0D // Shunt Under-Voltage Limit +#define INA228_REG_BOVL 0x0E // Bus Over-Voltage Limit +#define INA228_REG_BUVL 0x0F // Bus Under-Voltage Limit +#define INA228_REG_TEMP_LIMIT 0x10 // Temperature Limit +#define INA228_REG_PWR_LIMIT 0x11 // Power Limit +#define INA228_REG_MANUFACTURER 0x3E // Manufacturer ID (should be 0x5449 = "TI") +#define INA228_REG_DEVICE_ID 0x3F // Device ID (should be 0x228) + +// INA228 Configuration bits +#define INA228_CONFIG_RST (1 << 15) // Reset bit +#define INA228_CONFIG_ADCRANGE (1 << 4) // ADC Range (0=±163.84mV, 1=±40.96mV) + +// ADC Configuration - Mode +#define INA228_ADC_MODE_CONT_ALL 0x0F // Continuous conversion, all channels + +// ADC Configuration - Averaging +#define INA228_ADC_AVG_1 0x00 // No averaging +#define INA228_ADC_AVG_4 0x01 // 4 samples average +#define INA228_ADC_AVG_16 0x02 // 16 samples average +#define INA228_ADC_AVG_64 0x03 // 64 samples average +#define INA228_ADC_AVG_128 0x04 // 128 samples average +#define INA228_ADC_AVG_256 0x05 // 256 samples average +#define INA228_ADC_AVG_512 0x06 // 512 samples average +#define INA228_ADC_AVG_1024 0x07 // 1024 samples average + +// ADC Configuration - Conversion Time (VBUSCT, VSHCT, VTCT) +#define INA228_ADC_CT_50us 0x00 // 50 µs +#define INA228_ADC_CT_84us 0x01 // 84 µs +#define INA228_ADC_CT_150us 0x02 // 150 µs +#define INA228_ADC_CT_280us 0x03 // 280 µs +#define INA228_ADC_CT_540us 0x04 // 540 µs +#define INA228_ADC_CT_1052us 0x05 // 1052 µs (default) +#define INA228_ADC_CT_2074us 0x06 // 2074 µs +#define INA228_ADC_CT_4120us 0x07 // 4120 µs (maximum accuracy) + +// Alert Configuration +#define INA228_DIAG_ALRT_ALATCH (1 << 15) // Alert Latch Enable +#define INA228_DIAG_ALRT_CNVR (1 << 14) // Conversion Ready +#define INA228_DIAG_ALRT_SLOWALERT (1 << 13) // Slow Alert (for averaging) +#define INA228_DIAG_ALRT_APOL (1 << 12) // Alert Polarity (1=active high) +#define INA228_DIAG_ALRT_ENERGYOF (1 << 11) // Energy Overflow +#define INA228_DIAG_ALRT_CHARGEOF (1 << 10) // Charge Overflow +#define INA228_DIAG_ALRT_MATHOF (1 << 9) // Math Overflow +#define INA228_DIAG_ALRT_TMPOL (1 << 7) // Temperature Over-Limit +#define INA228_DIAG_ALRT_SHNTOL (1 << 6) // Shunt Over-Voltage +#define INA228_DIAG_ALRT_SHNTUL (1 << 5) // Shunt Under-Voltage +#define INA228_DIAG_ALRT_BUSOL (1 << 4) // Bus Over-Voltage +#define INA228_DIAG_ALRT_BUSUL (1 << 3) // Bus Under-Voltage (UVLO) +#define INA228_DIAG_ALRT_POL (1 << 2) // Power Over-Limit +#define INA228_DIAG_ALRT_CNVRF (1 << 1) // Conversion Ready Flag +#define INA228_DIAG_ALRT_MEMSTAT (1 << 0) // Memory Status + +// Battery telemetry from INA228 +typedef struct { + uint16_t voltage_mv; // Battery voltage in mV + int16_t current_ma; // Battery current in mA (+ = charging, - = discharging) + int32_t power_mw; // Battery power in mW + int32_t energy_mwh; // Accumulated energy in mWh (since last reset) + float charge_mah; // Accumulated charge in mAh (since last reset) + float die_temp_c; // Die temperature in °C +} Ina228BatteryData; + +class Ina228Driver { +public: + // i2c_addr default is for A0=A1=GND + Ina228Driver(uint8_t i2c_addr = INA228_I2C_ADDR_DEFAULT); + + // Initialize INA228 with default configuration. + // shunt_resistor_mohm is in milliohms (e.g., 100 for 0.1Ω). + bool begin(float shunt_resistor_mohm = 10.0f); + + // Check if INA228 is present and responsive + bool isConnected(); + + // Reset INA228 to default values + void reset(); + + // Read battery voltage in mV + uint16_t readVoltage_mV(); + + // Read battery current in mA (+ = charging, - = discharging) + int16_t readCurrent_mA(); + + // Read battery current in mA with full float precision (+ = charging, - = discharging). + // ±1 LSB ≈ 3.125 µA. + float readCurrent_mA_precise(); + + // Read battery power in mW + int32_t readPower_mW(); + + // Read accumulated energy in mWh (Coulomb Counter) + int32_t readEnergy_mWh(); + + // Read accumulated charge in mAh (Coulomb Counter) + float readCharge_mAh(); + + // Read die temperature in °C + float readDieTemperature_C(); + + // Get all battery data in one call + bool readAll(Ina228BatteryData* data); + + // Reset Coulomb Counter (energy and charge accumulators) + void resetCoulombCounter(); + + // Read back SHUNT_CAL register value (diagnostic) + uint16_t readShuntCalRegister(); + + // Read back ADC_CONFIG register value (diagnostic) + uint16_t readAdcConfigRegister(); + + // Read back CONFIG register value (diagnostic) + uint16_t readConfigRegister(); + + // Validate SHUNT_CAL and repair if corrupted. + // Returns true if SHUNT_CAL is correct (or was repaired), false if repair failed. + bool validateAndRepairShuntCal(); + + // Set bus under-voltage alert threshold in mV (for UVLO; e.g., 3200 for Li-Ion) + bool setUnderVoltageAlert(uint16_t voltage_mv); + + // Set bus over-voltage alert threshold in mV + bool setOverVoltageAlert(uint16_t voltage_mv); + + // Enable alert output on ALERT pin. + // latch_alert: true to latch the alert until DIAG_ALRT is read. + void enableAlert(bool enable_uvlo = true, bool active_high = false, bool latch_alert = false); + + // Check if alert condition is active + bool isAlertActive(); + + // Clear alert flags + void clearAlert(); + + // Get diagnostic and alert register value. + // WARNING: In LATCH mode, reading DIAG_ALRT clears latched alert flags and de-asserts ALERT pin! + uint16_t getDiagnosticFlags(); + + // Read back raw BUVL threshold register value (multiply by 3.125 for mV) + uint16_t readBuvlRegister(); + + // Put INA228 into shutdown mode — disables all measurements and Coulomb Counter to save power. + // Returns true if shutdown confirmed via readback, false if write failed. + bool shutdown(); + + // Wake INA228 from shutdown mode (re-enables continuous measurement mode) + void wakeup(); + + // Calibrate current measurement against the actual measured battery current (in mA). + // Returns the calculated calibration factor (multiplier for future readings) — store it + // persistently and apply it via setCalibrationFactor(). + float calibrateCurrent(float actual_current_ma); + + // Set persistent current calibration factor (1.0 = no correction, >1.0 = increase readings, + // <1.0 = decrease). Written directly to the INA228 SHUNT_CAL register (hardware calibration), + // so all measurements (current, power, energy, charge) are corrected automatically. + // Call this at startup with the value loaded from persistent storage. + void setCalibrationFactor(float factor); + + // Get current calibration factor (1.0 = no calibration) + float getCalibrationFactor() const; + + + + // Read battery voltage in mV directly via I2C, without requiring driver initialization — + // for early boot use before the INA228 is initialized. Returns 0 if the read fails. + // Triggers a One-Shot ADC conversion; uses the high-precision 24-bit ADC (±0.1% accuracy). + static uint16_t readVBATDirect(TwoWire* wire = &Wire, uint8_t i2c_addr = INA228_I2C_ADDR_DEFAULT); + +private: + uint8_t _i2c_addr; + float _shunt_mohm; + float _current_lsb; // Current LSB in A (constant per datasheet) + uint16_t _base_shunt_cal; // Original SHUNT_CAL value (before calibration) + float _calibration_factor; // Current calibration factor (1.0 = no correction) + + bool writeRegister16(uint8_t reg, uint16_t value); + uint16_t readRegister16(uint8_t reg); + + // Read 24-bit register (sign-extended to 32-bit) + int32_t readRegister24(uint8_t reg); + + // Read 40-bit register (for energy/charge) + int64_t readRegister40(uint8_t reg); +}; diff --git a/variants/inhero_mr2/lib/SimplePreferences.h b/variants/inhero_mr2/lib/SimplePreferences.h new file mode 100644 index 0000000000..f3c5cfaf8b --- /dev/null +++ b/variants/inhero_mr2/lib/SimplePreferences.h @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2026 Inhero GmbH + * + * SPDX-License-Identifier: MIT + */ +#pragma once +#include <Adafruit_LittleFS.h> +#include <Arduino.h> +#include <InternalFileSystem.h> + +using namespace Adafruit_LittleFS_Namespace; + +// Mini preferences library compatible with Arduino Preferences API +// Provides simple file-based key-value storage using LittleFS backend +class SimplePreferences { +private: + String _namespace; + bool _started = false; + + // Builds filename "/namespace/key.txt" + String getFilePath(const char* key) { + String path = "/" + _namespace; + // Create namespace folder if it doesn't exist + InternalFS.mkdir(path.c_str()); + path += "/"; + path += key; + path += ".txt"; + return path; + } + +public: + SimplePreferences() {} + + bool begin(const char* name) { + _namespace = name; + _started = true; + return InternalFS.begin(); + } + + void end() { _started = false; } + + // Store string value + size_t putString(const char* key, const char* value) { + if (!_started || value == nullptr) return 0; + + String path = getFilePath(key); + + // Remove existing file (clean overwrite) + InternalFS.remove(path.c_str()); + + File file = InternalFS.open(path.c_str(), FILE_O_WRITE); + if (!file) return 0; + + // file.print accepts const char* directly — no extra copy + size_t len = file.print(value); + + file.close(); + return len; + } + + size_t putInt(const char* key, const uint16_t val) { + char buffer[10]; + snprintf(buffer, sizeof(buffer), "%u", val); + return putString(key, buffer); + } + + // Read string value into the caller-provided buffer + size_t getString(const char* key, char* buffer, size_t maxLen, const char* defaultValue = "") { + if (!_started) { + // Copy fallback + strncpy(buffer, defaultValue, maxLen); + buffer[maxLen - 1] = '\0'; // Safety + return strlen(buffer); + } + + String path = getFilePath(key); + + if (!InternalFS.exists(path.c_str())) { + strncpy(buffer, defaultValue, maxLen); + buffer[maxLen - 1] = '\0'; + return strlen(buffer); + } + + File file = InternalFS.open(path.c_str(), FILE_O_READ); + if (!file) { + strncpy(buffer, defaultValue, maxLen); + return strlen(buffer); + } + + size_t bytesRead = file.readBytes(buffer, maxLen - 1); + buffer[bytesRead] = '\0'; // Set null-terminator manually + + // Trim trailing whitespace and newline characters + while (bytesRead > 0 && + (buffer[bytesRead - 1] == '\r' || buffer[bytesRead - 1] == '\n' || buffer[bytesRead - 1] == ' ')) { + buffer[bytesRead - 1] = '\0'; + bytesRead--; + } + + file.close(); + return bytesRead; + } + + bool containsKey(const char* key) { + if (!_started) return false; + String path = getFilePath(key); + return InternalFS.exists(path.c_str()); + } +}; diff --git a/variants/inhero_mr2/platformio.ini b/variants/inhero_mr2/platformio.ini new file mode 100644 index 0000000000..b182f0bf95 --- /dev/null +++ b/variants/inhero_mr2/platformio.ini @@ -0,0 +1,70 @@ +[inhero_mr2] +extends = nrf52_base +board = inhero_mr2 +board_check = true +board_build.ldscript = boards/nrf52840_s140_v6.ld +build_flags = ${nrf52_base.build_flags} + -D ENV_INCLUDE_BME280=1 + -I variants/inhero_mr2 + -D INHERO_MR2 + -D PIN_BOARD_SCL=14 + -D PIN_BOARD_SDA=13 + -D PIN_GPS_TX=PIN_SERIAL1_RX + -D PIN_GPS_RX=PIN_SERIAL1_TX + -D PIN_GPS_EN=-1 + -D USE_SX1262 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52_base.build_src_filter} + +<../variants/inhero_mr2> + +<helpers/sensors> +lib_deps = + ${nrf52_base.lib_deps} + adafruit/Adafruit BME280 Library @ ^2.3.0 + https://github.com/adafruit/Adafruit_bq25798.git#01e8dc09 + sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27 +upload_protocol = nrfutil +debug_tool = cmsis-dap + + +[env:Inhero_MR2_repeater] +extends = inhero_mr2 +build_flags = + ${inhero_mr2.build_flags} + -D ADVERT_NAME='"Inhero_MR2 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 +build_src_filter = ${inhero_mr2.build_src_filter} + +<../examples/simple_repeater> + +[env:Inhero_MR2_repeater_bridge_rs232] +extends = inhero_mr2 +build_flags = + ${inhero_mr2.build_flags} + -D ADVERT_NAME='"Inhero_MR2 RS232 Bridge"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MAX_NEIGHBOURS=50 + -D WITH_RS232_BRIDGE=Serial2 + -D WITH_RS232_BRIDGE_RX=PIN_SERIAL2_RX + -D WITH_RS232_BRIDGE_TX=PIN_SERIAL2_TX +build_src_filter = ${inhero_mr2.build_src_filter} + +<helpers/bridges/RS232Bridge.cpp> + +<../examples/simple_repeater> + +[env:Inhero_MR2_sensor] +extends = inhero_mr2 +build_flags = + ${inhero_mr2.build_flags} + -D ADVERT_NAME='"Inhero_MR2 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${inhero_mr2.build_src_filter} + +<../examples/simple_sensor> diff --git a/variants/inhero_mr2/target.cpp b/variants/inhero_mr2/target.cpp new file mode 100644 index 0000000000..fc4d99e651 --- /dev/null +++ b/variants/inhero_mr2/target.cpp @@ -0,0 +1,55 @@ +#include <Arduino.h> +#include "target.h" +#include <helpers/ArduinoHelpers.h> + +InheroMr2Board board; +RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); +WRAPPER_CLASS radio_driver(radio, board); +VolatileRTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#ifndef PIN_USER_BTN + #define PIN_USER_BTN (-1) +#endif + +#ifdef DISPLAY_CLASS + DISPLAY_CLASS display; + MomentaryButton user_btn(PIN_USER_BTN, 1000, true, true); + + #if defined(PIN_USER_BTN_ANA) + MomentaryButton analog_btn(PIN_USER_BTN_ANA, 1000, 20); + #endif +#endif + +#if ENV_INCLUDE_GPS + #include <helpers/sensors/MicroNMEALocationProvider.h> + MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1); + EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else + EnvironmentSensorManager sensors; +#endif + +bool radio_init() { + rtc_clock.begin(Wire); + return radio.std_init(&SPI); +} + +uint32_t radio_get_rng_seed() { + return radio.random(0x7FFFFFFF); +} + +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr) { + radio.setFrequency(freq); + radio.setSpreadingFactor(sf); + radio.setBandwidth(bw); + radio.setCodingRate(cr); +} + +void radio_set_tx_power(uint8_t dbm) { + radio.setOutputPower(dbm); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} diff --git a/variants/inhero_mr2/target.h b/variants/inhero_mr2/target.h new file mode 100644 index 0000000000..7d5b473737 --- /dev/null +++ b/variants/inhero_mr2/target.h @@ -0,0 +1,30 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include <RadioLib.h> +#include <helpers/radiolib/RadioLibWrappers.h> +#include <InheroMr2Board.h> +#include <helpers/radiolib/CustomSX1262Wrapper.h> +#include <helpers/AutoDiscoverRTCClock.h> +#include <helpers/sensors/EnvironmentSensorManager.h> + +#ifdef DISPLAY_CLASS + #include <helpers/ui/SSD1306Display.h> + extern DISPLAY_CLASS display; + #include <helpers/ui/MomentaryButton.h> + extern MomentaryButton user_btn; + #if defined(PIN_USER_BTN_ANA) + extern MomentaryButton analog_btn; + #endif +#endif + +extern InheroMr2Board board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; +extern EnvironmentSensorManager sensors; + +bool radio_init(); +uint32_t radio_get_rng_seed(); +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr); +void radio_set_tx_power(uint8_t dbm); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/inhero_mr2/variant.cpp b/variants/inhero_mr2/variant.cpp new file mode 100644 index 0000000000..fed9cc7c6a --- /dev/null +++ b/variants/inhero_mr2/variant.cpp @@ -0,0 +1,48 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + Modified (c) 2026, Inhero GmbH + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" +#include "wiring_constants.h" +#include "wiring_digital.h" +#include "nrf.h" + +const uint32_t g_ADigitalPinMap[] = +{ + // P0 + 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , + 8 , 9 , 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + + // P1 + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47 +}; + +void initVariant() +{ + // LED1 & LED2 + pinMode(PIN_LED1, OUTPUT); + ledOff(PIN_LED1); + + pinMode(PIN_LED2, OUTPUT); + ledOff(PIN_LED2); +} diff --git a/variants/inhero_mr2/variant.h b/variants/inhero_mr2/variant.h new file mode 100644 index 0000000000..2e4ea252d1 --- /dev/null +++ b/variants/inhero_mr2/variant.h @@ -0,0 +1,177 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + Modified (c) 2026, Inhero GmbH + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_INHERO_MR2_ +#define _VARIANT_INHERO_MR2_ + +#define INHERO_MR2 + +/** Master clock frequency */ +#define VARIANT_MCK (64000000ul) + +#define USE_LFXO // Board uses 32khz crystal for LF +// define USE_LFRC // Board uses RC for LF + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "WVariant.h" + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/* + * Inhero MR-2 GPIO definitions + */ +static const uint8_t WB_IO1 = 17; // SLOT_A SLOT_B +static const uint8_t WB_IO2 = 34; // SLOT_A SLOT_B +static const uint8_t WB_IO3 = 21; // SLOT_C +static const uint8_t WB_IO4 = 4; // SLOT_C +static const uint8_t WB_IO5 = 9; // SLOT_D +static const uint8_t WB_IO6 = 10; // SLOT_D +static const uint8_t WB_SW1 = 33; // IO_SLOT +static const uint8_t WB_A0 = 5; // IO_SLOT +static const uint8_t WB_A1 = 31; // IO_SLOT +static const uint8_t WB_I2C1_SDA = 13; // SENSOR_SLOT IO_SLOT +static const uint8_t WB_I2C1_SCL = 14; // SENSOR_SLOT IO_SLOT +static const uint8_t WB_I2C2_SDA = 24; // IO_SLOT +static const uint8_t WB_I2C2_SCL = 25; // IO_SLOT +static const uint8_t WB_SPI_CS = 26; // IO_SLOT +static const uint8_t WB_SPI_CLK = 3; // IO_SLOT +static const uint8_t WB_SPI_MISO = 29; // IO_SLOT +static const uint8_t WB_SPI_MOSI = 30; // IO_SLOT + +// Number of pins defined in PinDescription array +#define PINS_COUNT (48) +#define NUM_DIGITAL_PINS (48) +#define NUM_ANALOG_INPUTS (6) +#define NUM_ANALOG_OUTPUTS (0) + +// LEDs +#define PIN_LED1 (35) +#define PIN_LED2 (36) +#define BQ_INT_PIN (21) +// BQ25798 CE via DMN2004TK-7 FET — inverted: HIGH = charge enable, LOW = charge disable +#define BQ_CE_PIN (4) // P0.04 (WB_IO4) +// INA228 ALERT (active-low, open-drain) for low-voltage sleep trigger +#define INA_ALERT_PIN (34) // P1.02 (WB_IO2) + +#define LED_BUILTIN PIN_LED1 +#define LED_CONN PIN_LED2 + +#define LED_BLUE PIN_LED1 // P1.03 +#define LED_RED PIN_LED2 // P1.04 + +#define LED_STATE_ON 1 // State when LED is litted + +/* + * Buttons + */ +// No user buttons on Inhero MR-2 + +/* + * Analog pins + */ +#define PIN_A0 (5) //(3) +#define PIN_A1 (31) //(4) +#define PIN_A2 (28) +#define PIN_A3 (29) +#define PIN_A4 (30) +#define PIN_A5 (31) +#define PIN_A6 (0xff) +#define PIN_A7 (0xff) + +static const uint8_t A0 = PIN_A0; +static const uint8_t A1 = PIN_A1; +static const uint8_t A2 = PIN_A2; +static const uint8_t A3 = PIN_A3; +static const uint8_t A4 = PIN_A4; +static const uint8_t A5 = PIN_A5; +static const uint8_t A6 = PIN_A6; +static const uint8_t A7 = PIN_A7; +#define ADC_RESOLUTION 14 + +// Other pins +#define PIN_AREF (2) +#define PIN_NFC1 (9) +#define PIN_NFC2 (10) + +static const uint8_t AREF = PIN_AREF; + +/* + * Serial interfaces + */ +// TXD1 RXD1 on Base Board +#define PIN_SERIAL1_RX (15) +#define PIN_SERIAL1_TX (16) + +// TXD0 RXD0 on Base Board +#define PIN_SERIAL2_RX (19) +#define PIN_SERIAL2_TX (20) + +/* + * SPI Interfaces + */ +#define SPI_INTERFACES_COUNT 1 + +#define PIN_SPI_MISO (29) +#define PIN_SPI_MOSI (30) +#define PIN_SPI_SCK (3) + +static const uint8_t SS = 26; +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE_SDA (13) +#define PIN_WIRE_SCL (14) + +#define PIN_WIRE1_SDA (24) +#define PIN_WIRE1_SCL (25) + +// QSPI Pins +// QSPI occupied by GPIO's +#define PIN_QSPI_SCK 3 // 19 +#define PIN_QSPI_CS 26 // 17 +#define PIN_QSPI_IO0 30 // 20 +#define PIN_QSPI_IO1 29 // 21 +#define PIN_QSPI_IO2 28 // 22 +#define PIN_QSPI_IO3 2 // 23 + +// On-board QSPI Flash +// No onboard flash +#define EXTERNAL_FLASH_DEVICES IS25LP080D +#define EXTERNAL_FLASH_USE_QSPI + +#ifdef __cplusplus +} +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#endif