From: Keith Packard Date: Thu, 3 Jul 2014 05:44:07 +0000 (-0700) Subject: altos: Add config support for 2400 and 9600 baud telemetry rates X-Git-Tag: 1.4.9.1~13 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=214a38eb2b084baec526aa42016eddb954038639 altos: Add config support for 2400 and 9600 baud telemetry rates Signed-off-by: Keith Packard --- 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 @@ -196,6 +197,10 @@ _ao_config_get(void) #if HAS_APRS 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 \0Radio calib (cal = rf/(xtal/2^16))", ao_config_radio_cal_set, ao_config_radio_cal_show }, +#if HAS_RADIO_RATE + { "T \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 \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