@@ -55,12 +55,12 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) {
5555 file.read ((uint8_t *)&_prefs->tx_power_dbm , sizeof (_prefs->tx_power_dbm )); // 76
5656 file.read ((uint8_t *)&_prefs->disable_fwd , sizeof (_prefs->disable_fwd )); // 77
5757 file.read ((uint8_t *)&_prefs->advert_interval , sizeof (_prefs->advert_interval )); // 78
58- file.read ((uint8_t *)pad, 1 ) ; // 79 was 'unused'
58+ file.read ((uint8_t *)&_prefs-> rx_boosted_gain , sizeof (_prefs-> rx_boosted_gain )) ; // 79
5959 file.read ((uint8_t *)&_prefs->rx_delay_base , sizeof (_prefs->rx_delay_base )); // 80
6060 file.read ((uint8_t *)&_prefs->tx_delay_factor , sizeof (_prefs->tx_delay_factor )); // 84
6161 file.read ((uint8_t *)&_prefs->guest_password [0 ], sizeof (_prefs->guest_password )); // 88
6262 file.read ((uint8_t *)&_prefs->direct_tx_delay_factor , sizeof (_prefs->direct_tx_delay_factor )); // 104
63- file.read (pad, 4 ); // 108
63+ file.read (pad, 4 ); // 108 : 4 bytes unused
6464 file.read ((uint8_t *)&_prefs->sf , sizeof (_prefs->sf )); // 112
6565 file.read ((uint8_t *)&_prefs->cr , sizeof (_prefs->cr )); // 113
6666 file.read ((uint8_t *)&_prefs->allow_read_only , sizeof (_prefs->allow_read_only )); // 114
@@ -85,9 +85,9 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) {
8585 file.read ((uint8_t *)&_prefs->gps_interval , sizeof (_prefs->gps_interval )); // 157
8686 file.read ((uint8_t *)&_prefs->advert_loc_policy , sizeof (_prefs->advert_loc_policy )); // 161
8787 file.read ((uint8_t *)&_prefs->discovery_mod_timestamp , sizeof (_prefs->discovery_mod_timestamp )); // 162
88- file.read ((uint8_t *)&_prefs->adc_multiplier , sizeof (_prefs->adc_multiplier )); // 166
89- file.read ((uint8_t *)_prefs->owner_info , sizeof (_prefs->owner_info )); // 170
90- // 290
88+ file.read ((uint8_t *)&_prefs->adc_multiplier , sizeof (_prefs->adc_multiplier )); // 166
89+ file.read ((uint8_t *)_prefs->owner_info , sizeof (_prefs->owner_info )); // 170
90+ // next: 290
9191
9292 // sanitise bad pref values
9393 _prefs->rx_delay_base = constrain (_prefs->rx_delay_base , 0 , 20 .0f );
@@ -115,6 +115,9 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) {
115115 _prefs->gps_enabled = constrain (_prefs->gps_enabled , 0 , 1 );
116116 _prefs->advert_loc_policy = constrain (_prefs->advert_loc_policy , 0 , 2 );
117117
118+ // sanitise settings
119+ _prefs->rx_boosted_gain = constrain (_prefs->rx_boosted_gain , 0 , 1 ); // boolean
120+
118121 file.close ();
119122 }
120123}
@@ -142,12 +145,12 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) {
142145 file.write ((uint8_t *)&_prefs->tx_power_dbm , sizeof (_prefs->tx_power_dbm )); // 76
143146 file.write ((uint8_t *)&_prefs->disable_fwd , sizeof (_prefs->disable_fwd )); // 77
144147 file.write ((uint8_t *)&_prefs->advert_interval , sizeof (_prefs->advert_interval )); // 78
145- file.write ((uint8_t *)pad, 1 ) ; // 79 was 'unused'
148+ file.write ((uint8_t *)&_prefs-> rx_boosted_gain , sizeof (_prefs-> rx_boosted_gain )) ; // 79
146149 file.write ((uint8_t *)&_prefs->rx_delay_base , sizeof (_prefs->rx_delay_base )); // 80
147150 file.write ((uint8_t *)&_prefs->tx_delay_factor , sizeof (_prefs->tx_delay_factor )); // 84
148151 file.write ((uint8_t *)&_prefs->guest_password [0 ], sizeof (_prefs->guest_password )); // 88
149152 file.write ((uint8_t *)&_prefs->direct_tx_delay_factor , sizeof (_prefs->direct_tx_delay_factor )); // 104
150- file.write (pad, 4 ); // 108
153+ file.write (pad, 4 ); // 108 : 4 byte unused
151154 file.write ((uint8_t *)&_prefs->sf , sizeof (_prefs->sf )); // 112
152155 file.write ((uint8_t *)&_prefs->cr , sizeof (_prefs->cr )); // 113
153156 file.write ((uint8_t *)&_prefs->allow_read_only , sizeof (_prefs->allow_read_only )); // 114
@@ -173,8 +176,8 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) {
173176 file.write ((uint8_t *)&_prefs->advert_loc_policy , sizeof (_prefs->advert_loc_policy )); // 161
174177 file.write ((uint8_t *)&_prefs->discovery_mod_timestamp , sizeof (_prefs->discovery_mod_timestamp )); // 162
175178 file.write ((uint8_t *)&_prefs->adc_multiplier , sizeof (_prefs->adc_multiplier )); // 166
176- file.write ((uint8_t *)_prefs->owner_info , sizeof (_prefs->owner_info )); // 170
177- // 290
179+ file.write ((uint8_t *)_prefs->owner_info , sizeof (_prefs->owner_info )); // 170
180+ // next: 290
178181
179182 file.close ();
180183 }
@@ -318,6 +321,10 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
318321 sprintf (reply, " > %s" , StrHelper::ftoa (_prefs->node_lat ));
319322 } else if (memcmp (config, " lon" , 3 ) == 0 ) {
320323 sprintf (reply, " > %s" , StrHelper::ftoa (_prefs->node_lon ));
324+ #if defined(USE_SX1262) || defined(USE_SX1268)
325+ } else if (memcmp (config, " radio.rxgain" , 12 ) == 0 ) {
326+ sprintf (reply, " > %s" , _prefs->rx_boosted_gain ? " on" : " off" );
327+ #endif
321328 } else if (memcmp (config, " radio" , 5 ) == 0 ) {
322329 char freq[16 ], bw[16 ];
323330 strcpy (freq, StrHelper::ftoa (_prefs->freq ));
@@ -511,6 +518,13 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
511518 _prefs->disable_fwd = memcmp (&config[7 ], " off" , 3 ) == 0 ;
512519 savePrefs ();
513520 strcpy (reply, _prefs->disable_fwd ? " OK - repeat is now OFF" : " OK - repeat is now ON" );
521+ #if defined(USE_SX1262) || defined(USE_SX1268)
522+ } else if (memcmp (config, " radio.rxgain " , 13 ) == 0 ) {
523+ _prefs->rx_boosted_gain = memcmp (&config[13 ], " on" , 2 ) == 0 ;
524+ strcpy (reply, " OK" );
525+ savePrefs ();
526+ _callbacks->setRxBoostedGain (_prefs->rx_boosted_gain );
527+ #endif
514528 } else if (memcmp (config, " radio " , 6 ) == 0 ) {
515529 strcpy (tmp, &config[6 ]);
516530 const char *parts[4 ];
0 commit comments