diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ao.h | 3 | ||||
| -rw-r--r-- | src/ao_config.c | 25 | ||||
| -rw-r--r-- | src/ao_telemetry.c | 2 | 
3 files changed, 27 insertions, 3 deletions
@@ -1415,7 +1415,7 @@ ao_igniter_init(void);   */  #define AO_CONFIG_MAJOR	1 -#define AO_CONFIG_MINOR	7 +#define AO_CONFIG_MINOR	8  struct ao_config {  	uint8_t		major; @@ -1431,6 +1431,7 @@ struct ao_config {  	uint8_t		ignite_mode;		/* minor version 5 */  	uint8_t		pad_orientation;	/* minor version 6 */  	uint32_t	radio_setting;		/* minor version 7 */ +	uint8_t		radio_enable;		/* minor version 8 */  };  #define AO_IGNITE_MODE_DUAL		0 diff --git a/src/ao_config.c b/src/ao_config.c index e0eae78e..eb1eea3f 100644 --- a/src/ao_config.c +++ b/src/ao_config.c @@ -99,6 +99,8 @@ _ao_config_get(void)  			ao_config.pad_orientation = AO_CONFIG_DEFAULT_PAD_ORIENTATION;  		if (ao_config.minor < 7)  			ao_config.radio_setting = ao_config.radio_cal; +		if (ao_config.minor < 8) +			ao_config.radio_enable = TRUE;  		ao_config.minor = AO_CONFIG_MINOR;  		ao_config_dirty = 1;  	} @@ -392,6 +394,23 @@ ao_config_radio_setting_set(void) __reentrant  	ao_radio_recv_abort();  } +void +ao_config_radio_enable_show(void) __reentrant +{ +	printf("Radio enable: %d\n", ao_config.radio_enable); +} + +void +ao_config_radio_enable_set(void) __reentrant +{ +	ao_cmd_decimal(); +	if (ao_cmd_status != ao_cmd_success) +		return; +	_ao_config_edit_start(); +	ao_config.radio_enable = ao_cmd_lex_i; +	_ao_config_edit_finish(); +} +	  struct ao_config_var {  	__code char	*str;  	void		(*set)(void) __reentrant; @@ -418,6 +437,10 @@ __code struct ao_config_var ao_config_vars[] = {  	  ao_config_radio_channel_set,	ao_config_radio_channel_show },  	{ "c <call>\0Callsign (8 char max)",  	  ao_config_callsign_set,	ao_config_callsign_show }, +	{ "R <setting>\0Radio freq control (freq = 434.550 * setting/cal)", +	  ao_config_radio_setting_set,	ao_config_radio_setting_show }, +	{ "e <0 disable, 1 enable>\0Enable telemetry and RDF", +	  ao_config_radio_enable_set, ao_config_radio_enable_show },  #if HAS_ACCEL  	{ "a <+g> <-g>\0Accel calib (0 for auto)",  	  ao_config_accel_calibrate_set,ao_config_accel_calibrate_show }, @@ -436,8 +459,6 @@ __code struct ao_config_var ao_config_vars[] = {  	{ "o <0 antenna up, 1 antenna down>\0Set pad orientation",  	  ao_config_pad_orientation_set,ao_config_pad_orientation_show },  #endif -	{ "R <setting>\0Radio freq control (freq = 434.550 * setting/cal)", -	  ao_config_radio_setting_set,	ao_config_radio_setting_show },  	{ "s\0Show",  	  ao_config_show,		0 },  #if HAS_EEPROM diff --git a/src/ao_telemetry.c b/src/ao_telemetry.c index 8a18ba07..c7338a58 100644 --- a/src/ao_telemetry.c +++ b/src/ao_telemetry.c @@ -180,6 +180,8 @@ ao_telemetry(void)  	int16_t		delay;  	ao_config_get(); +	if (!ao_config.radio_enable) +		ao_exit();  	while (!ao_flight_number)  		ao_sleep(&ao_flight_number);  | 
