From ce7e65314d31d6590501170c29db2979d45f273c Mon Sep 17 00:00:00 2001 From: mikecarper Date: Wed, 26 Aug 2026 13:49:55 -0700 Subject: [PATCH] fix: preserve board features in full companion profiles --- test/test_build_profiles.sh | 63 ++++++++++++++++++++++++++ variants/meshtracker_x1/platformio.ini | 1 + variants/t1000-e/platformio.ini | 1 + variants/thinknode_m3/platformio.ini | 1 + variants/thinknode_m5/platformio.ini | 2 +- variants/thinknode_m8/platformio.ini | 5 +- variants/xiao_s3_wio/platformio.ini | 5 +- 7 files changed, 74 insertions(+), 4 deletions(-) diff --git a/test/test_build_profiles.sh b/test/test_build_profiles.sh index a3ccfb8ab..5678ab80c 100644 --- a/test/test_build_profiles.sh +++ b/test/test_build_profiles.sh @@ -9,6 +9,69 @@ fail() { exit 1 } +# Full targets are synthesized from an ordinary transport environment. Check +# the resolved PlatformIO configuration so board-specific display, GPS, input, +# and BLE constraints cannot silently disappear through that inheritance. +pio project config --json-output | python3 -c ' +import json +import sys + +sections = {section: dict(options) for section, options in json.load(sys.stdin)} + +def option_text(env_name, option_name): + section = sections.get(f"env:{env_name}") + if section is None: + raise SystemExit(f"test_build_profiles: missing PlatformIO environment {env_name}") + value = section.get(option_name, []) + values = value if isinstance(value, list) else [value] + return "\n".join(str(item) for item in values) + +def require(env_name, option_name, needle): + if needle not in option_text(env_name, option_name): + raise SystemExit( + f"test_build_profiles: {env_name} {option_name} lost {needle}" + ) + +def reject(env_name, option_name, needle): + if needle in option_text(env_name, option_name): + raise SystemExit( + f"test_build_profiles: {env_name} {option_name} unexpectedly contains {needle}" + ) + +xiao_wifi = "Xiao_S3_WIO_companion_radio_wifi" +require(xiao_wifi, "build_flags", "DISPLAY_CLASS=SSD1306Display") +require(xiao_wifi, "build_src_filter", "helpers/ui/SSD1306Display.cpp") +require(xiao_wifi, "build_src_filter", "examples/companion_radio/ui-new") +require(xiao_wifi, "lib_deps", "Adafruit SSD1306") +reject(xiao_wifi, "build_src_filter", "helpers/ui/NullDisplayDriver.cpp") + +m8_usb = "ThinkNode_M8_companion_radio_usb" +require(m8_usb, "build_flags", "PIN_BUZZER=33") +reject(m8_usb, "build_flags", "PIN_BUZZER=6") +require(m8_usb, "build_flags", "ENV_INCLUDE_GPS=1") +require(m8_usb, "lib_deps", "GxEPD2 @ 1.6.9") +reject(m8_usb, "lib_deps", "GxEPD2 @ 1.6.2") + +require("ThinkNode_M5_companion_radio_wifi", "build_flags", "UI_RECENT_LIST_SIZE=9") + +for env_name in ( + "t1000e_companion_radio_usb", + "MeshTracker_X1_companion_radio_usb", + "ThinkNode_M3_companion_radio_usb", +): + require(env_name, "build_flags", "BLE_TX_POWER=0") + +for env_name in ( + "WioTrackerL1_companion_radio_usb", + "WioTrackerL1_companion_radio_ble", +): + require(env_name, "build_flags", "UI_NO_HIBERNATE") + +rak_usb = "RAK_3401_companion_radio_usb" +require(rak_usb, "build_flags", "RAK_BOARD") +require(rak_usb, "build_flags", "FORCE_GPS_ALIVE") +' + # Synthetic inventory: one ESP32 target qualified for expanded Full and one # nRF52 target which must attempt complete LoRa OTA in its current partition. SUPPORTED_PIO_ENVS=( diff --git a/variants/meshtracker_x1/platformio.ini b/variants/meshtracker_x1/platformio.ini index 74986661c..56aa8a8c7 100644 --- a/variants/meshtracker_x1/platformio.ini +++ b/variants/meshtracker_x1/platformio.ini @@ -78,6 +78,7 @@ build_flags = ${MeshTracker_X1.build_flags} -D QSPIFLASH=1 -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D BLE_TX_POWER=0 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 diff --git a/variants/t1000-e/platformio.ini b/variants/t1000-e/platformio.ini index f32e84878..55b34e3c4 100644 --- a/variants/t1000-e/platformio.ini +++ b/variants/t1000-e/platformio.ini @@ -77,6 +77,7 @@ build_flags = ${t1000-e.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D BLE_TX_POWER=0 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 diff --git a/variants/thinknode_m3/platformio.ini b/variants/thinknode_m3/platformio.ini index 9b983f8a7..03acfe4dd 100644 --- a/variants/thinknode_m3/platformio.ini +++ b/variants/thinknode_m3/platformio.ini @@ -78,6 +78,7 @@ build_flags = ${ThinkNode_M3.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 + -D BLE_TX_POWER=0 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 -D OFFLINE_QUEUE_SIZE=256 diff --git a/variants/thinknode_m5/platformio.ini b/variants/thinknode_m5/platformio.ini index 7637ec15c..40494959a 100644 --- a/variants/thinknode_m5/platformio.ini +++ b/variants/thinknode_m5/platformio.ini @@ -29,6 +29,7 @@ build_flags = ${esp32_base.build_flags} -D EINK_Y_OFFSET=10 -D BACKLIGHT_BTN=PIN_BUTTON2 -D AUTO_OFF_MILLIS=0 + -D UI_RECENT_LIST_SIZE=9 -D DISABLE_DIAGNOSTIC_OUTPUT -D SX126X_DIO2_AS_RF_SWITCH=true -D SX126X_DIO3_TCXO_VOLTAGE=3.3 @@ -151,7 +152,6 @@ build_flags = -D MAX_GROUP_CHANNELS=40 -D BLE_PIN_CODE=123456 -D OFFLINE_QUEUE_SIZE=256 - -D UI_RECENT_LIST_SIZE=9 ; -D BLE_DEBUG_LOGGING=1 ; -D MESH_PACKET_LOGGING=1 ; -D GPS_NMEA_DEBUG diff --git a/variants/thinknode_m8/platformio.ini b/variants/thinknode_m8/platformio.ini index a63fcdba9..e9e64e14c 100644 --- a/variants/thinknode_m8/platformio.ini +++ b/variants/thinknode_m8/platformio.ini @@ -138,8 +138,9 @@ build_flags = -D BACKLIGHT_BTN=PIN_BUTTON2 -D AUTO_OFF_MILLIS=0 -D OFFLINE_QUEUE_SIZE=256 - -D PIN_BUZZER=6 + -D PIN_BUZZER=33 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 + -D ENV_INCLUDE_GPS=1 -D ENABLE_USB_INTERFACE build_src_filter = ${ThinkNode_M8.build_src_filter} + @@ -152,7 +153,7 @@ build_src_filter = ${ThinkNode_M8.build_src_filter} lib_deps = ${ThinkNode_M8.lib_deps} densaugeo/base64 @ ~1.4.0 - zinggjm/GxEPD2 @ 1.6.2 + zinggjm/GxEPD2 @ 1.6.9 bakercp/CRC32 @ ^2.0.0 end2endzone/NonBlockingRTTTL@^1.3.0 diff --git a/variants/xiao_s3_wio/platformio.ini b/variants/xiao_s3_wio/platformio.ini index 741b7157c..718dd2013 100644 --- a/variants/xiao_s3_wio/platformio.ini +++ b/variants/xiao_s3_wio/platformio.ini @@ -282,16 +282,18 @@ lib_deps = [env:Xiao_S3_WIO_companion_radio_wifi] extends = Xiao_S3_WIO build_src_filter = ${Xiao_S3_WIO.build_src_filter} - + + + + + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> build_flags = ${Xiao_S3_WIO.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='"password"' @@ -301,6 +303,7 @@ build_flags = lib_deps = ${Xiao_S3_WIO.lib_deps} densaugeo/base64 @ ~1.4.0 + adafruit/Adafruit SSD1306 @ ^2.5.13 [env:Xiao_S3_WIO_companion_radio_full] extends = env:Xiao_S3_WIO_companion_radio_wifi