From b6c3fad82cf0f922eb728752509bc5083a8cab8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaros=C5=82aw=20Doma=C5=84ski?= Date: Sun, 19 Jul 2026 01:13:44 +0200 Subject: [PATCH] Added fixed RX duty-cycle profiles for companion builds with sane default --- examples/companion_radio/MyMesh.cpp | 12 ++++++++++++ platformio.ini | 8 ++++++++ variants/heltec_t096/platformio.ini | 2 ++ variants/heltec_v4/platformio.ini | 3 +++ variants/t1000-e/platformio.ini | 2 ++ variants/xiao_nrf52/platformio.ini | 2 ++ variants/xiao_s3/platformio.ini | 2 ++ 7 files changed, 31 insertions(+) diff --git a/examples/companion_radio/MyMesh.cpp b/examples/companion_radio/MyMesh.cpp index c514b04c..972755bc 100644 --- a/examples/companion_radio/MyMesh.cpp +++ b/examples/companion_radio/MyMesh.cpp @@ -267,6 +267,18 @@ bool MyMesh::getCADEnabled() const { return true; // hardware CAD before TX (no CLI toggle on companion; enabled by default) } +#if defined(RXPS_FIXED_ENABLED) || defined(RXPS_FIXED_LEVEL) || defined(RXPS_FIXED_PREAMBLE) +#if !defined(RXPS_FIXED_ENABLED) || !defined(RXPS_FIXED_LEVEL) || !defined(RXPS_FIXED_PREAMBLE) +#error "RXPS_FIXED_ENABLED, RXPS_FIXED_LEVEL, and RXPS_FIXED_PREAMBLE must be defined together" +#endif +#if RXPS_FIXED_LEVEL < 1 || RXPS_FIXED_LEVEL > 10 +#error "RXPS_FIXED_LEVEL must be between 1 and 10" +#endif +#if RXPS_FIXED_PREAMBLE != 16 && RXPS_FIXED_PREAMBLE != 32 +#error "RXPS_FIXED_PREAMBLE must be 16 or 32" +#endif +#endif + #ifdef RXPS_FIXED_ENABLED static uint32_t ceilPositiveFloat(float value) { uint32_t rounded = (uint32_t)value; diff --git a/platformio.ini b/platformio.ini index e16f7b83..734d8059 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,6 +13,14 @@ extra_configs = variants/*/platformio.ini platformio.local.ini +[companion_rxps] +custom_rxps_level = 5 +custom_rxps_preamble = 16 +build_flags = + -D RXPS_FIXED_ENABLED=1 + -D RXPS_FIXED_LEVEL=${companion_rxps.custom_rxps_level} + -D RXPS_FIXED_PREAMBLE=${companion_rxps.custom_rxps_preamble} + [arduino_base] framework = arduino monitor_speed = 115200 diff --git a/variants/heltec_t096/platformio.ini b/variants/heltec_t096/platformio.ini index 5f17436a..dccb9d0b 100644 --- a/variants/heltec_t096/platformio.ini +++ b/variants/heltec_t096/platformio.ini @@ -126,6 +126,7 @@ board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld board_upload.maximum_size = 712704 build_flags = ${Heltec_t096.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -155,6 +156,7 @@ board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld board_upload.maximum_size = 712704 build_flags = ${Heltec_t096.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 diff --git a/variants/heltec_v4/platformio.ini b/variants/heltec_v4/platformio.ini index 113ba24a..ec90e723 100644 --- a/variants/heltec_v4/platformio.ini +++ b/variants/heltec_v4/platformio.ini @@ -184,6 +184,7 @@ lib_deps = extends = heltec_v4_oled build_flags = ${heltec_v4_oled.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -203,6 +204,7 @@ lib_deps = extends = heltec_v4_oled build_flags = ${heltec_v4_oled.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -237,6 +239,7 @@ build_flags = extends = heltec_v4_oled build_flags = ${heltec_v4_oled.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 diff --git a/variants/t1000-e/platformio.ini b/variants/t1000-e/platformio.ini index 43a3d93f..7e662fbc 100644 --- a/variants/t1000-e/platformio.ini +++ b/variants/t1000-e/platformio.ini @@ -73,6 +73,7 @@ extends = t1000-e board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld board_upload.maximum_size = 708608 build_flags = ${t1000-e.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -96,6 +97,7 @@ extends = t1000-e board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld board_upload.maximum_size = 708608 build_flags = ${t1000-e.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 diff --git a/variants/xiao_nrf52/platformio.ini b/variants/xiao_nrf52/platformio.ini index f4d1b93e..44fcc56f 100644 --- a/variants/xiao_nrf52/platformio.ini +++ b/variants/xiao_nrf52/platformio.ini @@ -46,6 +46,7 @@ board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld board_upload.maximum_size = 708608 build_flags = ${Xiao_nrf52.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -69,6 +70,7 @@ board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld board_upload.maximum_size = 708608 build_flags = ${Xiao_nrf52.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-orig -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 diff --git a/variants/xiao_s3/platformio.ini b/variants/xiao_s3/platformio.ini index b59e69ae..47315b5f 100644 --- a/variants/xiao_s3/platformio.ini +++ b/variants/xiao_s3/platformio.ini @@ -94,6 +94,7 @@ lib_deps = extends = Xiao_S3 build_flags = ${Xiao_S3.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40 @@ -122,6 +123,7 @@ platform_packages = framework-arduinoespressif32 @ symlink://D:/esp32-2.0.17 extends = Xiao_S3 build_flags = ${Xiao_S3.build_flags} + ${companion_rxps.build_flags} -I examples/companion_radio/ui-new -D MAX_CONTACTS=350 -D MAX_GROUP_CHANNELS=40