diff --git a/AGENTS.md b/AGENTS.md index e38df7ef..c902f7d1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -114,7 +114,7 @@ uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_observer -t upload --upload- - `eastmesh-build.sh` — EastMesh build wrapper - `build.sh` — upstream MeshCore build wrapper retained for merge hygiene - `platformio.ini` -- `variants/eastmesh_mqtt/platformio.ini` +- `variants/eastmesh/platformio.ini` - `examples/simple_repeater/MyMesh.cpp` - `src/helpers/mqtt/MQTTUplink.cpp` - `eastmesh-docs/*.md` diff --git a/README.md b/README.md index b78c119b..635007a8 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ uv run --group docs zensical build - Python tooling and docs dependencies - [`platformio.ini`](./platformio.ini) - root PlatformIO config and ESP32 helper scripts -- [`variants/eastmesh_mqtt/platformio.ini`](./variants/eastmesh_mqtt/platformio.ini) +- [`variants/eastmesh/platformio.ini`](./variants/eastmesh/platformio.ini) - shared EastMesh observer env definitions - [`examples/simple_repeater/MyMesh.cpp`](./examples/simple_repeater/MyMesh.cpp) - repeater CLI wiring, MQTT command surface, and web allowlist integration diff --git a/eastmesh-docs/boards.md b/eastmesh-docs/boards.md index a6e8ec63..a23b3319 100644 --- a/eastmesh-docs/boards.md +++ b/eastmesh-docs/boards.md @@ -109,7 +109,7 @@ If you are deciding between otherwise similar boards, these target-level setting ## `repeater_observer` Boards -This table includes all observer targets currently defined in `variants/eastmesh_mqtt/platformio.ini`. +This table includes all observer targets currently defined in `variants/eastmesh/platformio.ini`. | Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS | SD | | ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- | diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index 15cf375e..397fd127 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -3015,6 +3015,8 @@ void MyMesh::loop() { mqtt_status.tx_air_secs = static_cast(getTotalAirTime() / 1000); mqtt_status.rx_air_secs = static_cast(getReceiveAirTime() / 1000); mqtt_status.recv_errors = radio_driver.getPacketsRecvErrors(); + mqtt_status.packets_sent = radio_driver.getPacketsSent(); + mqtt_status.packets_received = radio_driver.getPacketsRecv(); mqtt_status.radio_freq = _prefs.freq; mqtt_status.radio_bw = _prefs.bw; mqtt_status.radio_sf = _prefs.sf; diff --git a/release-notes.yml b/release-notes.yml index 229145d6..aff3a130 100644 --- a/release-notes.yml +++ b/release-notes.yml @@ -266,6 +266,18 @@ releases: text: "Documented the Waev broker in the README and custom CLI guides." breaking_changes: [] + - track: observer-eastmesh + version: "2026.6.6" + tag: "observer-eastmesh-v2026.6.6" + date: "2026-06-27" + previous_version: "2026.6.5" + summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals." + changes: + - type: added + area: mqtt + text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema." + breaking_changes: [] + - track: observer-eastmesh-bridge-espnow version: "2026.5.1" tag: "observer-eastmesh-bridge-espnow-v2026.5.1" @@ -443,10 +455,22 @@ releases: text: "Documented the Waev broker in the README and custom CLI guides." breaking_changes: [] + - track: observer-eastmesh-bridge-espnow + version: "2026.6.6" + tag: "observer-eastmesh-bridge-espnow-v2026.6.6" + date: "2026-06-27" + previous_version: "2026.6.5" + summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals." + changes: + - type: added + area: mqtt + text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema." + breaking_changes: [] + - track: observer-eastmesh-bridge-mqtt version: "2026.7.0" tag: "observer-eastmesh-bridge-mqtt-v2026.7.0" - date: "2026-06-24" + date: "2026-07-01" previous_version: null summary: "Introduces the observer-eastmesh-bridge-mqtt release track with bidirectional MQTT mesh bridging and web-panel peer broker configuration." changes: diff --git a/src/helpers/mqtt/MQTTUplink.cpp b/src/helpers/mqtt/MQTTUplink.cpp index 74c60438..5a1ef954 100644 --- a/src/helpers/mqtt/MQTTUplink.cpp +++ b/src/helpers/mqtt/MQTTUplink.cpp @@ -669,13 +669,16 @@ int MQTTUplink::buildStatusJson(char* buffer, size_t buffer_size, bool online) c "{\"status\":\"%s\",\"timestamp\":\"%s\",\"origin\":\"%s\",\"origin_id\":\"%s\"," "\"model\":\"%s\",\"firmware_version\":\"%s\",\"radio\":\"%s\",\"client_version\":\"%s\"," "\"repeat\":\"%s\",\"stats\":{\"battery_mv\":%d,\"uptime_secs\":%lu,\"errors\":%u,\"queue_len\":%u," - "\"noise_floor\":%d,\"tx_air_secs\":%lu,\"rx_air_secs\":%lu,\"recv_errors\":%lu}}", + "\"noise_floor\":%d,\"tx_air_secs\":%lu,\"rx_air_secs\":%lu,\"recv_errors\":%lu," + "\"packets_sent\":%lu,\"packets_received\":%lu}}", online ? "online" : "offline", ts, origin, _device_id, model, FIRMWARE_VERSION, radio_info, client_version, _last_status.repeat_enabled ? "on" : "off", _last_status.battery_mv, static_cast(_last_status.uptime_secs), _last_status.error_flags, _last_status.queue_len, _last_status.noise_floor, static_cast(_last_status.tx_air_secs), static_cast(_last_status.rx_air_secs), - static_cast(_last_status.recv_errors)); + static_cast(_last_status.recv_errors), + static_cast(_last_status.packets_sent), + static_cast(_last_status.packets_received)); } int MQTTUplink::buildPacketJson(char* buffer, size_t buffer_size, const mesh::Packet& packet, bool is_tx, int rssi, diff --git a/src/helpers/mqtt/MQTTUplink.h b/src/helpers/mqtt/MQTTUplink.h index 82f421fb..960d71e3 100644 --- a/src/helpers/mqtt/MQTTUplink.h +++ b/src/helpers/mqtt/MQTTUplink.h @@ -22,6 +22,8 @@ struct MQTTStatusSnapshot { uint32_t tx_air_secs; uint32_t rx_air_secs; uint32_t recv_errors; + uint32_t packets_sent; + uint32_t packets_received; float radio_freq; float radio_bw; uint8_t radio_sf; diff --git a/variants/eastmesh_mqtt/platformio.ini b/variants/eastmesh/platformio.ini similarity index 75% rename from variants/eastmesh_mqtt/platformio.ini rename to variants/eastmesh/platformio.ini index ac815ebe..9bf79b18 100644 --- a/variants/eastmesh_mqtt/platformio.ini +++ b/variants/eastmesh/platformio.ini @@ -1,3 +1,5 @@ +# ===== Ebyte ===== + [env:Ebyte_EoRa-S3_Repeater_observer] extends = Ebyte_EoRa-S3 board_build.partitions = min_spiffs.csv @@ -24,6 +26,25 @@ lib_deps = ${Ebyte_EoRa-S3.lib_deps} ${esp32_ota.lib_deps} +[env:Ebyte_EoRa-S3_Repeater_observer_espnow] +extends = env:Ebyte_EoRa-S3_Repeater_observer +build_flags = + ${env:Ebyte_EoRa-S3_Repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Ebyte_EoRa-S3_Repeater_observer.build_src_filter} + + + +[env:Ebyte_EoRa-S3_Repeater_observer_mqtt_bridge] +extends = env:Ebyte_EoRa-S3_Repeater_observer +build_flags = + ${env:Ebyte_EoRa-S3_Repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Ebyte_EoRa-S3_Repeater_observer.build_src_filter} + + + +# ===== Generic ===== + [env:Generic_E22_sx1262_repeater_observer] extends = Generic_E22 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -51,6 +72,23 @@ lib_deps = ${Generic_E22.lib_deps} ${esp32_ota.lib_deps} +[env:Generic_E22_sx1262_repeater_observer_espnow] +extends = env:Generic_E22_sx1262_repeater_observer +build_flags = + ${env:Generic_E22_sx1262_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Generic_E22_sx1262_repeater_observer.build_src_filter} + + + +[env:Generic_E22_sx1262_repeater_observer_mqtt_bridge] +extends = env:Generic_E22_sx1262_repeater_observer +build_flags = + ${env:Generic_E22_sx1262_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Generic_E22_sx1262_repeater_observer.build_src_filter} + + + [env:Generic_E22_sx1268_repeater_observer] extends = Generic_E22 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -78,6 +116,25 @@ lib_deps = ${Generic_E22.lib_deps} ${esp32_ota.lib_deps} +[env:Generic_E22_sx1268_repeater_observer_espnow] +extends = env:Generic_E22_sx1268_repeater_observer +build_flags = + ${env:Generic_E22_sx1268_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Generic_E22_sx1268_repeater_observer.build_src_filter} + + + +[env:Generic_E22_sx1268_repeater_observer_mqtt_bridge] +extends = env:Generic_E22_sx1268_repeater_observer +build_flags = + ${env:Generic_E22_sx1268_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Generic_E22_sx1268_repeater_observer.build_src_filter} + + + +# ===== Heltec ===== + [env:Heltec_E213_repeater_observer] extends = Heltec_E213_base build_flags = @@ -104,6 +161,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:Heltec_E213_repeater_observer_espnow] +extends = env:Heltec_E213_repeater_observer +build_flags = + ${env:Heltec_E213_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_E213_repeater_observer.build_src_filter} + + + +[env:Heltec_E213_repeater_observer_mqtt_bridge] +extends = env:Heltec_E213_repeater_observer +build_flags = + ${env:Heltec_E213_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_E213_repeater_observer.build_src_filter} + + + [env:Heltec_E290_repeater_observer] extends = Heltec_E290_base build_flags = @@ -130,6 +204,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:Heltec_E290_repeater_observer_espnow] +extends = env:Heltec_E290_repeater_observer +build_flags = + ${env:Heltec_E290_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_E290_repeater_observer.build_src_filter} + + + +[env:Heltec_E290_repeater_observer_mqtt_bridge] +extends = env:Heltec_E290_repeater_observer +build_flags = + ${env:Heltec_E290_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_E290_repeater_observer.build_src_filter} + + + [env:Heltec_T190_repeater_observer] extends = Heltec_T190_base build_flags = @@ -153,6 +244,23 @@ lib_deps = ${Heltec_T190_base.lib_deps} ${esp32_ota.lib_deps} +[env:Heltec_T190_repeater_observer_espnow] +extends = env:Heltec_T190_repeater_observer +build_flags = + ${env:Heltec_T190_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_T190_repeater_observer.build_src_filter} + + + +[env:Heltec_T190_repeater_observer_mqtt_bridge] +extends = env:Heltec_T190_repeater_observer +build_flags = + ${env:Heltec_T190_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_T190_repeater_observer.build_src_filter} + + + [env:heltec_tracker_v2_repeater_observer] extends = Heltec_tracker_v2 build_flags = @@ -179,6 +287,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:heltec_tracker_v2_repeater_observer_espnow] +extends = env:heltec_tracker_v2_repeater_observer +build_flags = + ${env:heltec_tracker_v2_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:heltec_tracker_v2_repeater_observer.build_src_filter} + + + +[env:heltec_tracker_v2_repeater_observer_mqtt_bridge] +extends = env:heltec_tracker_v2_repeater_observer +build_flags = + ${env:heltec_tracker_v2_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:heltec_tracker_v2_repeater_observer.build_src_filter} + + + [env:Heltec_v2_repeater_observer] extends = Heltec_lora32_v2 build_flags = @@ -205,6 +330,23 @@ lib_deps = ${Heltec_lora32_v2.lib_deps} ${esp32_ota.lib_deps} +[env:Heltec_v2_repeater_observer_espnow] +extends = env:Heltec_v2_repeater_observer +build_flags = + ${env:Heltec_v2_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_v2_repeater_observer.build_src_filter} + + + +[env:Heltec_v2_repeater_observer_mqtt_bridge] +extends = env:Heltec_v2_repeater_observer +build_flags = + ${env:Heltec_v2_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_v2_repeater_observer.build_src_filter} + + + [env:Heltec_v3_repeater_observer] extends = Heltec_lora32_v3 build_flags = @@ -231,6 +373,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:Heltec_v3_repeater_observer_espnow] +extends = env:Heltec_v3_repeater_observer +build_flags = + ${env:Heltec_v3_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_v3_repeater_observer.build_src_filter} + + + +[env:Heltec_v3_repeater_observer_mqtt_bridge] +extends = env:Heltec_v3_repeater_observer +build_flags = + ${env:Heltec_v3_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_v3_repeater_observer.build_src_filter} + + + [env:heltec_v4_repeater_observer] extends = heltec_v4_oled build_flags = @@ -258,6 +417,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:heltec_v4_repeater_observer_espnow] +extends = env:heltec_v4_repeater_observer +build_flags = + ${env:heltec_v4_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:heltec_v4_repeater_observer.build_src_filter} + + + +[env:heltec_v4_repeater_observer_mqtt_bridge] +extends = env:heltec_v4_repeater_observer +build_flags = + ${env:heltec_v4_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:heltec_v4_repeater_observer.build_src_filter} + + + [env:heltec_v4_tft_repeater_observer] extends = heltec_v4_tft build_flags = @@ -284,6 +460,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:heltec_v4_tft_repeater_observer_espnow] +extends = env:heltec_v4_tft_repeater_observer +build_flags = + ${env:heltec_v4_tft_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:heltec_v4_tft_repeater_observer.build_src_filter} + + + +[env:heltec_v4_tft_repeater_observer_mqtt_bridge] +extends = env:heltec_v4_tft_repeater_observer +build_flags = + ${env:heltec_v4_tft_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:heltec_v4_tft_repeater_observer.build_src_filter} + + + [env:Heltec_Wireless_Paper_repeater_observer] extends = Heltec_Wireless_Paper_base build_flags = @@ -310,6 +503,23 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:Heltec_Wireless_Paper_repeater_observer_espnow] +extends = env:Heltec_Wireless_Paper_repeater_observer +build_flags = + ${env:Heltec_Wireless_Paper_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_Wireless_Paper_repeater_observer.build_src_filter} + + + +[env:Heltec_Wireless_Paper_repeater_observer_mqtt_bridge] +extends = env:Heltec_Wireless_Paper_repeater_observer +build_flags = + ${env:Heltec_Wireless_Paper_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_Wireless_Paper_repeater_observer.build_src_filter} + + + [env:Heltec_Wireless_Tracker_repeater_observer] extends = Heltec_tracker_base build_flags = @@ -336,6 +546,23 @@ lib_deps = ${Heltec_tracker_base.lib_deps} ${esp32_ota.lib_deps} +[env:Heltec_Wireless_Tracker_repeater_observer_espnow] +extends = env:Heltec_Wireless_Tracker_repeater_observer +build_flags = + ${env:Heltec_Wireless_Tracker_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_Wireless_Tracker_repeater_observer.build_src_filter} + + + +[env:Heltec_Wireless_Tracker_repeater_observer_mqtt_bridge] +extends = env:Heltec_Wireless_Tracker_repeater_observer +build_flags = + ${env:Heltec_Wireless_Tracker_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_Wireless_Tracker_repeater_observer.build_src_filter} + + + [env:Heltec_WSL3_repeater_observer] extends = Heltec_lora32_v3 build_flags = @@ -360,6 +587,25 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:Heltec_WSL3_repeater_observer_espnow] +extends = env:Heltec_WSL3_repeater_observer +build_flags = + ${env:Heltec_WSL3_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Heltec_WSL3_repeater_observer.build_src_filter} + + + +[env:Heltec_WSL3_repeater_observer_mqtt_bridge] +extends = env:Heltec_WSL3_repeater_observer +build_flags = + ${env:Heltec_WSL3_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Heltec_WSL3_repeater_observer.build_src_filter} + + + +# ===== LilyGo ===== + [env:LilyGo_T3S3_sx1262_repeater_observer] extends = LilyGo_T3S3_sx1262 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -386,6 +632,23 @@ lib_deps = ${LilyGo_T3S3_sx1262.lib_deps} ${esp32_ota.lib_deps} +[env:LilyGo_T3S3_sx1262_repeater_observer_espnow] +extends = env:LilyGo_T3S3_sx1262_repeater_observer +build_flags = + ${env:LilyGo_T3S3_sx1262_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:LilyGo_T3S3_sx1262_repeater_observer.build_src_filter} + + + +[env:LilyGo_T3S3_sx1262_repeater_observer_mqtt_bridge] +extends = env:LilyGo_T3S3_sx1262_repeater_observer +build_flags = + ${env:LilyGo_T3S3_sx1262_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:LilyGo_T3S3_sx1262_repeater_observer.build_src_filter} + + + [env:LilyGo_T3S3_sx1276_repeater_observer] extends = LilyGo_T3S3_sx1276 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -412,6 +675,23 @@ lib_deps = ${LilyGo_T3S3_sx1276.lib_deps} ${esp32_ota.lib_deps} +[env:LilyGo_T3S3_sx1276_repeater_observer_espnow] +extends = env:LilyGo_T3S3_sx1276_repeater_observer +build_flags = + ${env:LilyGo_T3S3_sx1276_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:LilyGo_T3S3_sx1276_repeater_observer.build_src_filter} + + + +[env:LilyGo_T3S3_sx1276_repeater_observer_mqtt_bridge] +extends = env:LilyGo_T3S3_sx1276_repeater_observer +build_flags = + ${env:LilyGo_T3S3_sx1276_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:LilyGo_T3S3_sx1276_repeater_observer.build_src_filter} + + + [env:LilyGo_TBeam_1W_repeater_observer] extends = LilyGo_TBeam_1W build_flags = @@ -437,6 +717,23 @@ lib_deps = ${LilyGo_TBeam_1W.lib_deps} ${esp32_ota.lib_deps} +[env:LilyGo_TBeam_1W_repeater_observer_espnow] +extends = env:LilyGo_TBeam_1W_repeater_observer +build_flags = + ${env:LilyGo_TBeam_1W_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:LilyGo_TBeam_1W_repeater_observer.build_src_filter} + + + +[env:LilyGo_TBeam_1W_repeater_observer_mqtt_bridge] +extends = env:LilyGo_TBeam_1W_repeater_observer +build_flags = + ${env:LilyGo_TBeam_1W_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:LilyGo_TBeam_1W_repeater_observer.build_src_filter} + + + [env:LilyGo_TDeck_repeater_observer] extends = LilyGo_TDeck build_flags = @@ -461,6 +758,23 @@ lib_deps = ${LilyGo_TDeck.lib_deps} ${esp32_ota.lib_deps} +[env:LilyGo_TDeck_repeater_observer_espnow] +extends = env:LilyGo_TDeck_repeater_observer +build_flags = + ${env:LilyGo_TDeck_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:LilyGo_TDeck_repeater_observer.build_src_filter} + + + +[env:LilyGo_TDeck_repeater_observer_mqtt_bridge] +extends = env:LilyGo_TDeck_repeater_observer +build_flags = + ${env:LilyGo_TDeck_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:LilyGo_TDeck_repeater_observer.build_src_filter} + + + [env:LilyGo_Tlora_C6_repeater_observer] extends = tlora_c6 build_src_filter = ${tlora_c6.build_src_filter} @@ -483,6 +797,25 @@ build_flags = lib_deps = ${tlora_c6.lib_deps} +[env:LilyGo_Tlora_C6_repeater_observer_espnow] +extends = env:LilyGo_Tlora_C6_repeater_observer +build_flags = + ${env:LilyGo_Tlora_C6_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:LilyGo_Tlora_C6_repeater_observer.build_src_filter} + + + +[env:LilyGo_Tlora_C6_repeater_observer_mqtt_bridge] +extends = env:LilyGo_Tlora_C6_repeater_observer +build_flags = + ${env:LilyGo_Tlora_C6_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:LilyGo_Tlora_C6_repeater_observer.build_src_filter} + + + +# ===== M5Stack ===== + [env:M5Stack_Unit_C6L_repeater_observer] extends = M5Stack_Unit_C6L build_src_filter = ${M5Stack_Unit_C6L.build_src_filter} @@ -505,6 +838,25 @@ build_flags = lib_deps = ${M5Stack_Unit_C6L.lib_deps} +[env:M5Stack_Unit_C6L_repeater_observer_espnow] +extends = env:M5Stack_Unit_C6L_repeater_observer +build_flags = + ${env:M5Stack_Unit_C6L_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:M5Stack_Unit_C6L_repeater_observer.build_src_filter} + + + +[env:M5Stack_Unit_C6L_repeater_observer_mqtt_bridge] +extends = env:M5Stack_Unit_C6L_repeater_observer +build_flags = + ${env:M5Stack_Unit_C6L_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:M5Stack_Unit_C6L_repeater_observer.build_src_filter} + + + +# ===== Meshadventurer ===== + [env:Meshadventurer_sx1262_repeater_observer] extends = Meshadventurer build_src_filter = ${Meshadventurer.build_src_filter} @@ -532,6 +884,23 @@ lib_deps = ${Meshadventurer.lib_deps} ${esp32_ota.lib_deps} +[env:Meshadventurer_sx1262_repeater_observer_espnow] +extends = env:Meshadventurer_sx1262_repeater_observer +build_flags = + ${env:Meshadventurer_sx1262_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Meshadventurer_sx1262_repeater_observer.build_src_filter} + + + +[env:Meshadventurer_sx1262_repeater_observer_mqtt_bridge] +extends = env:Meshadventurer_sx1262_repeater_observer +build_flags = + ${env:Meshadventurer_sx1262_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Meshadventurer_sx1262_repeater_observer.build_src_filter} + + + [env:Meshadventurer_sx1268_repeater_observer] extends = Meshadventurer build_src_filter = ${Meshadventurer.build_src_filter} @@ -559,6 +928,25 @@ lib_deps = ${Meshadventurer.lib_deps} ${esp32_ota.lib_deps} +[env:Meshadventurer_sx1268_repeater_observer_espnow] +extends = env:Meshadventurer_sx1268_repeater_observer +build_flags = + ${env:Meshadventurer_sx1268_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Meshadventurer_sx1268_repeater_observer.build_src_filter} + + + +[env:Meshadventurer_sx1268_repeater_observer_mqtt_bridge] +extends = env:Meshadventurer_sx1268_repeater_observer +build_flags = + ${env:Meshadventurer_sx1268_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Meshadventurer_sx1268_repeater_observer.build_src_filter} + + + +# ===== Meshimi ===== + [env:Meshimi_repeater_observer] extends = Meshimi build_src_filter = ${Meshimi.build_src_filter} @@ -581,6 +969,17 @@ build_flags = lib_deps = ${Meshimi.lib_deps} +[env:Meshimi_repeater_observer_mqtt_bridge] +extends = env:Meshimi_repeater_observer +build_flags = + ${env:Meshimi_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Meshimi_repeater_observer.build_src_filter} + + + +# ===== Nibble ===== + [env:nibble_screen_connect_repeater_observer] extends = nibble_screen_connect_base board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -607,6 +1006,25 @@ lib_deps = ${nibble_screen_connect_base.lib_deps} ${esp32_ota.lib_deps} +[env:nibble_screen_connect_repeater_observer_espnow] +extends = env:nibble_screen_connect_repeater_observer +build_flags = + ${env:nibble_screen_connect_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:nibble_screen_connect_repeater_observer.build_src_filter} + + + +[env:nibble_screen_connect_repeater_observer_mqtt_bridge] +extends = env:nibble_screen_connect_repeater_observer +build_flags = + ${env:nibble_screen_connect_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:nibble_screen_connect_repeater_observer.build_src_filter} + + + +# ===== RAK ===== + [env:RAK_3112_repeater_observer] extends = rak3112 build_flags = @@ -631,6 +1049,25 @@ lib_deps = ${esp32_ota.lib_deps} bakercp/CRC32 @ ^2.0.0 +[env:RAK_3112_repeater_observer_espnow] +extends = env:RAK_3112_repeater_observer +build_flags = + ${env:RAK_3112_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:RAK_3112_repeater_observer.build_src_filter} + + + +[env:RAK_3112_repeater_observer_mqtt_bridge] +extends = env:RAK_3112_repeater_observer +build_flags = + ${env:RAK_3112_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:RAK_3112_repeater_observer.build_src_filter} + + + +# ===== Station ===== + [env:Station_G2_repeater_observer] extends = Station_G2 build_flags = @@ -654,6 +1091,23 @@ lib_deps = ${Station_G2.lib_deps} ${esp32_ota.lib_deps} +[env:Station_G2_repeater_observer_espnow] +extends = env:Station_G2_repeater_observer +build_flags = + ${env:Station_G2_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Station_G2_repeater_observer.build_src_filter} + + + +[env:Station_G2_repeater_observer_mqtt_bridge] +extends = env:Station_G2_repeater_observer +build_flags = + ${env:Station_G2_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Station_G2_repeater_observer.build_src_filter} + + + [env:Station_G2_logging_repeater_observer] extends = Station_G2 build_flags = @@ -679,6 +1133,23 @@ lib_deps = ${Station_G2.lib_deps} ${esp32_ota.lib_deps} +[env:Station_G2_logging_repeater_observer_espnow] +extends = env:Station_G2_logging_repeater_observer +build_flags = + ${env:Station_G2_logging_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Station_G2_logging_repeater_observer.build_src_filter} + + + +[env:Station_G2_logging_repeater_observer_mqtt_bridge] +extends = env:Station_G2_logging_repeater_observer +build_flags = + ${env:Station_G2_logging_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Station_G2_logging_repeater_observer.build_src_filter} + + + [env:Station_G3_ESP32_repeater_observer] extends = Station_G3_ESP32 board_build.partitions = min_spiffs.csv ; get around default app partition limit @@ -703,6 +1174,25 @@ lib_deps = ${Station_G3_ESP32.lib_deps} ${esp32_ota.lib_deps} +[env:Station_G3_ESP32_repeater_observer_espnow] +extends = env:Station_G3_ESP32_repeater_observer +build_flags = + ${env:Station_G3_ESP32_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Station_G3_ESP32_repeater_observer.build_src_filter} + + + +[env:Station_G3_ESP32_repeater_observer_mqtt_bridge] +extends = env:Station_G3_ESP32_repeater_observer +build_flags = + ${env:Station_G3_ESP32_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Station_G3_ESP32_repeater_observer.build_src_filter} + + + +# ===== T-Beam ===== + [env:T_Beam_S3_Supreme_SX1262_repeater_observer] extends = T_Beam_S3_Supreme_SX1262 build_flags = @@ -726,6 +1216,23 @@ lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} ${esp32_ota.lib_deps} +[env:T_Beam_S3_Supreme_SX1262_repeater_observer_espnow] +extends = env:T_Beam_S3_Supreme_SX1262_repeater_observer +build_flags = + ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_src_filter} + + + +[env:T_Beam_S3_Supreme_SX1262_repeater_observer_mqtt_bridge] +extends = env:T_Beam_S3_Supreme_SX1262_repeater_observer +build_flags = + ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_src_filter} + + + [env:Tbeam_SX1262_repeater_observer] extends = LilyGo_TBeam_SX1262 build_flags = @@ -749,6 +1256,23 @@ lib_deps = ${LilyGo_TBeam_SX1262.lib_deps} ${esp32_ota.lib_deps} +[env:Tbeam_SX1262_repeater_observer_espnow] +extends = env:Tbeam_SX1262_repeater_observer +build_flags = + ${env:Tbeam_SX1262_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Tbeam_SX1262_repeater_observer.build_src_filter} + + + +[env:Tbeam_SX1262_repeater_observer_mqtt_bridge] +extends = env:Tbeam_SX1262_repeater_observer +build_flags = + ${env:Tbeam_SX1262_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Tbeam_SX1262_repeater_observer.build_src_filter} + + + [env:Tbeam_SX1276_repeater_observer] extends = LilyGo_TBeam_SX1276 build_flags = @@ -773,6 +1297,25 @@ lib_deps = ${LilyGo_TBeam_SX1276.lib_deps} ${esp32_ota.lib_deps} +[env:Tbeam_SX1276_repeater_observer_espnow] +extends = env:Tbeam_SX1276_repeater_observer +build_flags = + ${env:Tbeam_SX1276_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:Tbeam_SX1276_repeater_observer.build_src_filter} + + + +[env:Tbeam_SX1276_repeater_observer_mqtt_bridge] +extends = env:Tbeam_SX1276_repeater_observer +build_flags = + ${env:Tbeam_SX1276_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Tbeam_SX1276_repeater_observer.build_src_filter} + + + +# ===== ThinkNode ===== + [env:ThinkNode_M2_Repeater_observer] extends = ThinkNode_M2 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -797,6 +1340,23 @@ lib_deps = ${ThinkNode_M2.lib_deps} ${esp32_ota.lib_deps} +[env:ThinkNode_M2_Repeater_observer_espnow] +extends = env:ThinkNode_M2_Repeater_observer +build_flags = + ${env:ThinkNode_M2_Repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:ThinkNode_M2_Repeater_observer.build_src_filter} + + + +[env:ThinkNode_M2_Repeater_observer_mqtt_bridge] +extends = env:ThinkNode_M2_Repeater_observer +build_flags = + ${env:ThinkNode_M2_Repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:ThinkNode_M2_Repeater_observer.build_src_filter} + + + [env:ThinkNode_M5_Repeater_observer] extends = ThinkNode_M5 board_build.partitions = min_spiffs.csv ; get around 4mb flash limit @@ -821,6 +1381,25 @@ lib_deps = ${ThinkNode_M5.lib_deps} ${esp32_ota.lib_deps} +[env:ThinkNode_M5_Repeater_observer_espnow] +extends = env:ThinkNode_M5_Repeater_observer +build_flags = + ${env:ThinkNode_M5_Repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:ThinkNode_M5_Repeater_observer.build_src_filter} + + + +[env:ThinkNode_M5_Repeater_observer_mqtt_bridge] +extends = env:ThinkNode_M5_Repeater_observer +build_flags = + ${env:ThinkNode_M5_Repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:ThinkNode_M5_Repeater_observer.build_src_filter} + + + +# ===== WHY2025 ===== + [env:WHY2025_badge_repeater_observer] extends = WHY2025_badge build_src_filter = ${WHY2025_badge.build_src_filter} @@ -843,6 +1422,25 @@ build_flags = lib_deps = ${WHY2025_badge.lib_deps} +[env:WHY2025_badge_repeater_observer_espnow] +extends = env:WHY2025_badge_repeater_observer +build_flags = + ${env:WHY2025_badge_repeater_observer.build_flags} + -D WITH_ESPNOW_BRIDGE=1 +build_src_filter = ${env:WHY2025_badge_repeater_observer.build_src_filter} + + + +[env:WHY2025_badge_repeater_observer_mqtt_bridge] +extends = env:WHY2025_badge_repeater_observer +build_flags = + ${env:WHY2025_badge_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:WHY2025_badge_repeater_observer.build_src_filter} + + + +# ===== Xiao ===== + [env:Xiao_C6_repeater_observer] extends = Xiao_C6 build_src_filter = ${Xiao_C6.build_src_filter} @@ -865,6 +1463,15 @@ build_flags = lib_deps = ${Xiao_C6.lib_deps} +[env:Xiao_C6_repeater_observer_mqtt_bridge] +extends = env:Xiao_C6_repeater_observer +build_flags = + ${env:Xiao_C6_repeater_observer.build_flags} + -D WITH_MQTT_BRIDGE=1 + -UMQTT_DEBUG +build_src_filter = ${env:Xiao_C6_repeater_observer.build_src_filter} + + + [env:Xiao_S3_WIO_repeater_observer] extends = Xiao_S3_WIO build_src_filter = ${Xiao_S3_WIO.build_src_filter} @@ -888,270 +1495,6 @@ lib_deps = ${Xiao_S3_WIO.lib_deps} ${esp32_ota.lib_deps} -[env:Ebyte_EoRa-S3_Repeater_observer_espnow] -extends = env:Ebyte_EoRa-S3_Repeater_observer -build_flags = - ${env:Ebyte_EoRa-S3_Repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Ebyte_EoRa-S3_Repeater_observer.build_src_filter} - + - -[env:Generic_E22_sx1262_repeater_observer_espnow] -extends = env:Generic_E22_sx1262_repeater_observer -build_flags = - ${env:Generic_E22_sx1262_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Generic_E22_sx1262_repeater_observer.build_src_filter} - + - -[env:Generic_E22_sx1268_repeater_observer_espnow] -extends = env:Generic_E22_sx1268_repeater_observer -build_flags = - ${env:Generic_E22_sx1268_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Generic_E22_sx1268_repeater_observer.build_src_filter} - + - -[env:Heltec_E213_repeater_observer_espnow] -extends = env:Heltec_E213_repeater_observer -build_flags = - ${env:Heltec_E213_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_E213_repeater_observer.build_src_filter} - + - -[env:Heltec_E290_repeater_observer_espnow] -extends = env:Heltec_E290_repeater_observer -build_flags = - ${env:Heltec_E290_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_E290_repeater_observer.build_src_filter} - + - -[env:Heltec_T190_repeater_observer_espnow] -extends = env:Heltec_T190_repeater_observer -build_flags = - ${env:Heltec_T190_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_T190_repeater_observer.build_src_filter} - + - -[env:heltec_tracker_v2_repeater_observer_espnow] -extends = env:heltec_tracker_v2_repeater_observer -build_flags = - ${env:heltec_tracker_v2_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:heltec_tracker_v2_repeater_observer.build_src_filter} - + - -[env:Heltec_v2_repeater_observer_espnow] -extends = env:Heltec_v2_repeater_observer -build_flags = - ${env:Heltec_v2_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_v2_repeater_observer.build_src_filter} - + - -[env:Heltec_v3_repeater_observer_espnow] -extends = env:Heltec_v3_repeater_observer -build_flags = - ${env:Heltec_v3_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_v3_repeater_observer.build_src_filter} - + - -[env:heltec_v4_repeater_observer_espnow] -extends = env:heltec_v4_repeater_observer -build_flags = - ${env:heltec_v4_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:heltec_v4_repeater_observer.build_src_filter} - + - -[env:heltec_v4_tft_repeater_observer_espnow] -extends = env:heltec_v4_tft_repeater_observer -build_flags = - ${env:heltec_v4_tft_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:heltec_v4_tft_repeater_observer.build_src_filter} - + - -[env:Heltec_Wireless_Paper_repeater_observer_espnow] -extends = env:Heltec_Wireless_Paper_repeater_observer -build_flags = - ${env:Heltec_Wireless_Paper_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_Wireless_Paper_repeater_observer.build_src_filter} - + - -[env:Heltec_Wireless_Tracker_repeater_observer_espnow] -extends = env:Heltec_Wireless_Tracker_repeater_observer -build_flags = - ${env:Heltec_Wireless_Tracker_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_Wireless_Tracker_repeater_observer.build_src_filter} - + - -[env:Heltec_WSL3_repeater_observer_espnow] -extends = env:Heltec_WSL3_repeater_observer -build_flags = - ${env:Heltec_WSL3_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Heltec_WSL3_repeater_observer.build_src_filter} - + - -[env:LilyGo_T3S3_sx1262_repeater_observer_espnow] -extends = env:LilyGo_T3S3_sx1262_repeater_observer -build_flags = - ${env:LilyGo_T3S3_sx1262_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:LilyGo_T3S3_sx1262_repeater_observer.build_src_filter} - + - -[env:LilyGo_T3S3_sx1276_repeater_observer_espnow] -extends = env:LilyGo_T3S3_sx1276_repeater_observer -build_flags = - ${env:LilyGo_T3S3_sx1276_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:LilyGo_T3S3_sx1276_repeater_observer.build_src_filter} - + - -[env:LilyGo_TBeam_1W_repeater_observer_espnow] -extends = env:LilyGo_TBeam_1W_repeater_observer -build_flags = - ${env:LilyGo_TBeam_1W_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:LilyGo_TBeam_1W_repeater_observer.build_src_filter} - + - -[env:LilyGo_TDeck_repeater_observer_espnow] -extends = env:LilyGo_TDeck_repeater_observer -build_flags = - ${env:LilyGo_TDeck_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:LilyGo_TDeck_repeater_observer.build_src_filter} - + - -[env:LilyGo_Tlora_C6_repeater_observer_espnow] -extends = env:LilyGo_Tlora_C6_repeater_observer -build_flags = - ${env:LilyGo_Tlora_C6_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:LilyGo_Tlora_C6_repeater_observer.build_src_filter} - + - -[env:M5Stack_Unit_C6L_repeater_observer_espnow] -extends = env:M5Stack_Unit_C6L_repeater_observer -build_flags = - ${env:M5Stack_Unit_C6L_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:M5Stack_Unit_C6L_repeater_observer.build_src_filter} - + - -[env:Meshadventurer_sx1262_repeater_observer_espnow] -extends = env:Meshadventurer_sx1262_repeater_observer -build_flags = - ${env:Meshadventurer_sx1262_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Meshadventurer_sx1262_repeater_observer.build_src_filter} - + - -[env:Meshadventurer_sx1268_repeater_observer_espnow] -extends = env:Meshadventurer_sx1268_repeater_observer -build_flags = - ${env:Meshadventurer_sx1268_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Meshadventurer_sx1268_repeater_observer.build_src_filter} - + - -[env:nibble_screen_connect_repeater_observer_espnow] -extends = env:nibble_screen_connect_repeater_observer -build_flags = - ${env:nibble_screen_connect_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:nibble_screen_connect_repeater_observer.build_src_filter} - + - -[env:RAK_3112_repeater_observer_espnow] -extends = env:RAK_3112_repeater_observer -build_flags = - ${env:RAK_3112_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:RAK_3112_repeater_observer.build_src_filter} - + - -[env:Station_G2_repeater_observer_espnow] -extends = env:Station_G2_repeater_observer -build_flags = - ${env:Station_G2_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Station_G2_repeater_observer.build_src_filter} - + - -[env:Station_G2_logging_repeater_observer_espnow] -extends = env:Station_G2_logging_repeater_observer -build_flags = - ${env:Station_G2_logging_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Station_G2_logging_repeater_observer.build_src_filter} - + - -[env:Station_G3_ESP32_repeater_observer_espnow] -extends = env:Station_G3_ESP32_repeater_observer -build_flags = - ${env:Station_G3_ESP32_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Station_G3_ESP32_repeater_observer.build_src_filter} - + - -[env:T_Beam_S3_Supreme_SX1262_repeater_observer_espnow] -extends = env:T_Beam_S3_Supreme_SX1262_repeater_observer -build_flags = - ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:T_Beam_S3_Supreme_SX1262_repeater_observer.build_src_filter} - + - -[env:Tbeam_SX1262_repeater_observer_espnow] -extends = env:Tbeam_SX1262_repeater_observer -build_flags = - ${env:Tbeam_SX1262_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Tbeam_SX1262_repeater_observer.build_src_filter} - + - -[env:Tbeam_SX1276_repeater_observer_espnow] -extends = env:Tbeam_SX1276_repeater_observer -build_flags = - ${env:Tbeam_SX1276_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:Tbeam_SX1276_repeater_observer.build_src_filter} - + - -[env:ThinkNode_M2_Repeater_observer_espnow] -extends = env:ThinkNode_M2_Repeater_observer -build_flags = - ${env:ThinkNode_M2_Repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:ThinkNode_M2_Repeater_observer.build_src_filter} - + - -[env:ThinkNode_M5_Repeater_observer_espnow] -extends = env:ThinkNode_M5_Repeater_observer -build_flags = - ${env:ThinkNode_M5_Repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:ThinkNode_M5_Repeater_observer.build_src_filter} - + - -[env:WHY2025_badge_repeater_observer_espnow] -extends = env:WHY2025_badge_repeater_observer -build_flags = - ${env:WHY2025_badge_repeater_observer.build_flags} - -D WITH_ESPNOW_BRIDGE=1 -build_src_filter = ${env:WHY2025_badge_repeater_observer.build_src_filter} - + - [env:Xiao_S3_WIO_repeater_observer_espnow] extends = env:Xiao_S3_WIO_repeater_observer build_flags =