diff --git a/build.sh b/build.sh index 2dd3b984..3e13cdeb 100755 --- a/build.sh +++ b/build.sh @@ -751,7 +751,7 @@ prompt_for_radio_build_settings() { prompt_for_firmware_profile_settings() { local -a options=( "Keep target defaults" - "Cascade: path.hash.mode=2 / loop.detect=minimal / rxdelay=2 / agc.reset.interval=8 / advert.interval=0 / flood.advert.interval=83 / multi.acks=1 / companion.manual.add=1 / companion.autoadd=0" + "Cascade: path.hash.mode=2 / loop.detect=minimal / cad=on / rxdelay=2 / agc.reset.interval=8 / advert.interval=0 / flood.advert.interval=83 / multi.acks=1 / companion.manual.add=1 / companion.autoadd=0" ) clear_firmware_profile_overrides @@ -1807,7 +1807,7 @@ apply_radio_overrides() { apply_firmware_profile_overrides() { case "${FIRMWARE_PROFILE_OVERRIDE,,}" in cascade) - export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS} -DCASCADE_PROFILE=1 -DDEFAULT_PATH_HASH_MODE=2 -DDEFAULT_LOOP_DETECT=1 -DDEFAULT_RX_DELAY_BASE=2.0f -DDEFAULT_AGC_RESET_INTERVAL_SECONDS=8 -DDEFAULT_ADVERT_INTERVAL_MINUTES=0 -DDEFAULT_FLOOD_ADVERT_INTERVAL_HOURS=83 -DDEFAULT_MULTI_ACKS=1 -DDEFAULT_MANUAL_ADD_CONTACTS=1 -DDEFAULT_AUTOADD_CONFIG=0" + export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS} -DCASCADE_PROFILE=1 -DDEFAULT_PATH_HASH_MODE=2 -DDEFAULT_LOOP_DETECT=1 -DDEFAULT_CAD_ENABLED=1 -DDEFAULT_RX_DELAY_BASE=2.0f -DDEFAULT_AGC_RESET_INTERVAL_SECONDS=8 -DDEFAULT_ADVERT_INTERVAL_MINUTES=0 -DDEFAULT_FLOOD_ADVERT_INTERVAL_HOURS=83 -DDEFAULT_MULTI_ACKS=1 -DDEFAULT_MANUAL_ADD_CONTACTS=1 -DDEFAULT_AUTOADD_CONFIG=0" ;; esac } diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 97de94d8..dc2088e1 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -928,6 +928,8 @@ get clock.sync.status **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. +The Cascade firmware profile defaults CAD to `on`; target-default builds continue to default it to `off`. + **Parameters:** - `on|off`: Enable or disable hardware CAD diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp index 8a434b7a..a9f781b7 100644 --- a/examples/simple_repeater/MyMesh.cpp +++ b/examples/simple_repeater/MyMesh.cpp @@ -2516,7 +2516,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') + _prefs.cad_enabled = DEFAULT_CAD_ENABLED; // Cascade defaults CAD on; target default remains off _prefs.agc_reset_interval = DEFAULT_AGC_RESET_INTERVAL_SECONDS / 4; _prefs.multi_acks = DEFAULT_MULTI_ACKS; _prefs.path_hash_mode = DEFAULT_PATH_HASH_MODE; diff --git a/examples/simple_room_server/MyMesh.cpp b/examples/simple_room_server/MyMesh.cpp index 8608ff37..b614d3aa 100644 --- a/examples/simple_room_server/MyMesh.cpp +++ b/examples/simple_room_server/MyMesh.cpp @@ -763,7 +763,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc _prefs.flood_retry_group_max_path = FLOOD_RETRY_GROUP_MAX_PATH_DEFAULT; _prefs.interference_threshold = 0; // disabled _prefs.radio_fem_rxgain = 1; // LoRa FEM RX gain on by default (FEM boards) - _prefs.cad_enabled = 0; // hardware CAD before TX (off by default; 'set cad on') + _prefs.cad_enabled = DEFAULT_CAD_ENABLED; // Cascade defaults CAD on; target default remains off _prefs.rx_ps_rx_us = RX_POWERSAVING_DEFAULT_RX_US; _prefs.rx_ps_sleep_us = RX_POWERSAVING_DEFAULT_SLEEP_US; #ifdef ROOM_PASSWORD diff --git a/examples/simple_sensor/SensorMesh.cpp b/examples/simple_sensor/SensorMesh.cpp index 058f4801..88c47de1 100644 --- a/examples/simple_sensor/SensorMesh.cpp +++ b/examples/simple_sensor/SensorMesh.cpp @@ -858,7 +858,7 @@ SensorMesh::SensorMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::Millise _prefs.flood_retry_group_max_path = FLOOD_RETRY_GROUP_MAX_PATH_DEFAULT; _prefs.interference_threshold = 0; // disabled _prefs.radio_fem_rxgain = 1; // LoRa FEM RX gain on by default (FEM boards) - _prefs.cad_enabled = 0; // hardware CAD before TX (off by default; 'set cad on') + _prefs.cad_enabled = DEFAULT_CAD_ENABLED; // Cascade defaults CAD on; target default remains off _prefs.rx_ps_rx_us = RX_POWERSAVING_DEFAULT_RX_US; _prefs.rx_ps_sleep_us = RX_POWERSAVING_DEFAULT_SLEEP_US; diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index 82c549d1..45b8e000 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -956,9 +956,9 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) { // extra length, skip the gap, and recover the tail so those settings survive // the upgrade (the file is rewritten in the new layout by loadPrefs afterwards). // Defaults for the trailing fields that older/shorter files may not contain. - // (upstream defaults: FEM RX gain on, CAD off) - overwritten below if present. + // Build-profile defaults - overwritten below when the saved field is present. _prefs->radio_fem_rxgain = 1; - _prefs->cad_enabled = 0; + _prefs->cad_enabled = DEFAULT_CAD_ENABLED; _prefs->rx_powersaving_enabled = 0; _prefs->rx_ps_rx_us = RX_POWERSAVING_DEFAULT_RX_US; _prefs->rx_ps_sleep_us = RX_POWERSAVING_DEFAULT_SLEEP_US; diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h index 0f23281f..6159797d 100644 --- a/src/helpers/CommonCLI.h +++ b/src/helpers/CommonCLI.h @@ -8,6 +8,10 @@ #include #include +#ifndef DEFAULT_CAD_ENABLED + #define DEFAULT_CAD_ENABLED 0 +#endif + #if defined(WITH_RS232_BRIDGE) || defined(WITH_ESPNOW_BRIDGE) || defined(WITH_MQTT_BRIDGE) #define WITH_BRIDGE #endif