diff options
Diffstat (limited to 'src/kernel')
| -rw-r--r-- | src/kernel/ao_config.c | 33 | ||||
| -rw-r--r-- | src/kernel/ao_config.h | 5 | 
2 files changed, 37 insertions, 1 deletions
| diff --git a/src/kernel/ao_config.c b/src/kernel/ao_config.c index 58fa7354..52c0c4f6 100644 --- a/src/kernel/ao_config.c +++ b/src/kernel/ao_config.c @@ -62,6 +62,7 @@ __xdata uint8_t ao_config_mutex;  #endif  #define AO_CONFIG_DEFAULT_RADIO_AMP		0  #define AO_CONFIG_DEFAULT_APRS_SSID		(ao_serial_number % 10) +#define AO_CONFIG_DEFAULT_RADIO_RATE		AO_RADIO_RATE_38400  #if HAS_EEPROM  static void @@ -197,6 +198,10 @@ _ao_config_get(void)  		if (minor < 19)  			ao_config.aprs_ssid = AO_CONFIG_DEFAULT_APRS_SSID;  #endif +#if HAS_RADIO_RATE +		if (minor < 20) +			ao_config.radio_rate = AO_CONFIG_DEFAULT_RADIO_RATE; +#endif  		ao_config.minor = AO_CONFIG_MINOR;  		ao_config_dirty = 1;  	} @@ -483,6 +488,30 @@ ao_config_radio_cal_set(void) __reentrant  	ao_config_set_radio();  	_ao_config_edit_finish();  } + +#endif + +#if HAS_RADIO_RATE +void +ao_config_radio_rate_show(void) __reentrant +{ +	printf("Telemetry rate: %d\n", ao_config.radio_rate); +} + +void +ao_config_radio_rate_set(void) __reentrant +{ +	ao_cmd_decimal(); +	if (ao_cmd_status != ao_cmd_success) +		return; +	if (AO_RADIO_RATE_MAX < ao_cmd_lex_i) { +		ao_cmd_status = ao_cmd_lex_error; +		return; +	} +	_ao_config_edit_start(); +	ao_config.radio_rate = ao_cmd_lex_i; +	_ao_config_edit_finish(); +}  #endif  #if HAS_LOG @@ -802,6 +831,10 @@ __code struct ao_config_var ao_config_vars[] = {  	  ao_config_radio_enable_set, ao_config_radio_enable_show },  	{ "f <cal>\0Radio calib (cal = rf/(xtal/2^16))",  	  ao_config_radio_cal_set,  	ao_config_radio_cal_show }, +#if HAS_RADIO_RATE +	{ "T <rate>\0Telemetry rate (0=38.4, 1=9.6, 2=2.4)", +	  ao_config_radio_rate_set,	ao_config_radio_rate_show }, +#endif  #if HAS_RADIO_POWER  	{ "p <setting>\0Radio power setting (0-255)",  	  ao_config_radio_power_set,	ao_config_radio_power_show }, diff --git a/src/kernel/ao_config.h b/src/kernel/ao_config.h index 70f9f33b..a650ffc6 100644 --- a/src/kernel/ao_config.h +++ b/src/kernel/ao_config.h @@ -53,7 +53,7 @@  #endif  #define AO_CONFIG_MAJOR	1 -#define AO_CONFIG_MINOR	19 +#define AO_CONFIG_MINOR	20  #define AO_AES_LEN 16 @@ -105,6 +105,9 @@ struct ao_config {  #if HAS_APRS  	uint8_t		aprs_ssid;		/* minor version 19 */  #endif +#if HAS_RADIO_RATE +	uint8_t		radio_rate;		/* minor version 20 */ +#endif  };  #define AO_IGNITE_MODE_DUAL		0 | 
