altos: Start adding apogee lockout support
authorKeith Packard <keithp@keithp.com>
Thu, 12 Apr 2012 21:50:12 +0000 (14:50 -0700)
committerKeith Packard <keithp@keithp.com>
Sat, 14 Apr 2012 21:04:29 +0000 (14:04 -0700)
Remove radio channel support too.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/cc1111/ao_radio.c
src/core/ao.h
src/core/ao_config.c

index ee506f896ce3bd606f5703f2b0a5a95b4c62ade8..51ed369b5b393a0b719f4991dc0e42a671086e5e 100644 (file)
@@ -286,7 +286,7 @@ ao_radio_get(uint8_t len)
        ao_config_get();
        ao_mutex_get(&ao_radio_mutex);
        ao_radio_idle();
-       RF_CHANNR = ao_config.radio_channel;
+       RF_CHANNR = 0;
        RF_FREQ2 = (uint8_t) (ao_config.radio_setting >> 16);
        RF_FREQ1 = (uint8_t) (ao_config.radio_setting >> 8);
        RF_FREQ0 = (uint8_t) (ao_config.radio_setting);
index f7db3bf41c82eca69ba8bbe1125cc402908614ef..9a3b5829e87745449ae465ac03f9e1692865b2a0 100644 (file)
@@ -1457,26 +1457,16 @@ ao_igniter_init(void);
  */
 
 #define AO_CONFIG_MAJOR        1
-#define AO_CONFIG_MINOR        10
-#define AO_AES_LEN 16
-
-#if HAS_RADIO_CHANNELS
-#define AO_CHANNEL_NAME_LEN    10
+#define AO_CONFIG_MINOR        11
 
-#define AO_NUM_CHANNELS                10
-
-struct ao_radio_channel {
-       char            name[AO_CHANNEL_NAME_LEN];
-       uint32_t        kHz;
-};
-#endif
+#define AO_AES_LEN 16
 
 struct ao_config {
        uint8_t         major;
        uint8_t         minor;
        uint16_t        main_deploy;
        int16_t         accel_plus_g;           /* changed for minor version 2 */
-       uint8_t         radio_channel;
+       uint8_t         _legacy_radio_channel;
        char            callsign[AO_MAX_CALLSIGN + 1];
        uint8_t         apogee_delay;           /* minor version 1 */
        int16_t         accel_minus_g;          /* minor version 2 */
@@ -1488,9 +1478,7 @@ struct ao_config {
        uint8_t         radio_enable;           /* minor version 8 */
        uint8_t         aes_key[AO_AES_LEN];    /* minor version 9 */
        uint32_t        frequency;              /* minor version 10 */
-#if HAS_RADIO_CHANNELS
-       struct ao_radio_channel radio_channels[AO_NUM_CHANNELS];        /* minor version 10 */
-#endif
+       uint16_t        apogee_lockout;         /* minor version 11 */
 };
 
 #define AO_IGNITE_MODE_DUAL            0
index 32798f75f0007ee02d68a3f5e6741f202e24c72e..55fb8590eb74669eb2bf9fee6b2f62f7351cc91b 100644 (file)
@@ -85,7 +85,6 @@ _ao_config_get(void)
 
                /* Version 0 stuff */
                ao_config.main_deploy = AO_CONFIG_DEFAULT_MAIN_DEPLOY;
-               ao_config.radio_channel = AO_CONFIG_DEFAULT_RADIO_CHANNEL;
                ao_xmemset(&ao_config.callsign, '\0', sizeof (ao_config.callsign));
                ao_xmemcpy(&ao_config.callsign, CODE_TO_XDATA(AO_CONFIG_DEFAULT_CALLSIGN),
                       sizeof(AO_CONFIG_DEFAULT_CALLSIGN) - 1);
@@ -113,19 +112,12 @@ _ao_config_get(void)
                        ao_config.pad_orientation = AO_CONFIG_DEFAULT_PAD_ORIENTATION;
                if (ao_config.minor < 8)
                        ao_config.radio_enable = TRUE;
-#if HAS_AES
                if (ao_config.minor < 9)
                        ao_xmemset(&ao_config.aes_key, '\0', AO_AES_LEN);
-#endif
-               if (ao_config.minor < 10) {
+               if (ao_config.minor < 10)
                        ao_config.frequency = 434550;
-#if HAS_RADIO_CHANNELS
-                       ao_xmemset(&ao_config.radio_channels, '\0', sizeof (ao_config.radio_channels));
-                       ao_xmemcpy(&ao_config.radio_channels[0].name[0],
-                                  CODE_TO_XDATA("Channel 0"), sizeof("Channel 0"));
-                       ao_config.radio_channels[0].kHz = 434550;
-#endif                            
-               }
+               if (ao_config.minor < 11)
+                       ao_config.apogee_lockout = 0;
                ao_config.minor = AO_CONFIG_MINOR;
                ao_config_dirty = 1;
        }
@@ -184,25 +176,6 @@ ao_config_callsign_set(void) __reentrant
        _ao_config_edit_finish();
 }
 
-void
-ao_config_radio_channel_show(void) __reentrant
-{
-       printf("Radio channel: %d\n",
-              ao_config.radio_channel);
-}
-
-void
-ao_config_radio_channel_set(void) __reentrant
-{
-       ao_cmd_decimal();
-       if (ao_cmd_status != ao_cmd_success)
-               return;
-       _ao_config_edit_start();
-       ao_config.radio_channel = ao_cmd_lex_i;
-       _ao_config_edit_finish();
-       ao_radio_recv_abort();
-}
-
 void
 ao_config_frequency_show(void) __reentrant
 {
@@ -218,13 +191,12 @@ ao_config_frequency_set(void) __reentrant
                return;
        _ao_config_edit_start();
        ao_config.frequency = ao_cmd_lex_u32;
-       ao_config.radio_channel = 0;
        ao_config_set_radio();
        _ao_config_edit_finish();
        ao_radio_recv_abort();
 }
 
-#if HAS_ADC
+#if HAS_FLIGHT
 
 void
 ao_config_main_deploy_show(void) __reentrant
@@ -328,7 +300,25 @@ ao_config_apogee_delay_set(void) __reentrant
        _ao_config_edit_finish();
 }
 
-#endif /* HAS_ADC */
+void
+ao_config_apogee_lockout_show(void) __reentrant
+{
+       printf ("Apogee lockout: %d seconds\n",
+               ao_config.apogee_lockout);
+}
+
+void
+ao_config_apogee_lockout_set(void) __reentrant
+{
+       ao_cmd_decimal();
+       if (ao_cmd_status != ao_cmd_success)
+               return;
+       _ao_config_edit_start();
+       ao_config.apogee_lockout = ao_cmd_lex_i;
+       _ao_config_edit_finish();
+}
+
+#endif /* HAS_FLIGHT */
 
 void
 ao_config_radio_cal_show(void) __reentrant
@@ -467,50 +457,6 @@ ao_config_key_set(void) __reentrant
 }
 #endif
 
-#if HAS_RADIO_CHANNELS
-void
-ao_config_radio_config_show(void) __reentrant
-{
-       uint8_t i;
-       for (i = 0; i < AO_NUM_CHANNELS; i++)
-               if (ao_config.radio_channels[i].name[0]) {
-                       printf("%2d %-16.16s %ld\n",
-                              i,
-                              ao_config.radio_channels[i].name,
-                              ao_config.radio_channels[i].kHz);
-               }
-}
-
-void
-ao_config_radio_config_set(void) __reentrant
-{
-       __xdata struct ao_radio_channel * ch;
-       uint8_t i;
-       ao_cmd_decimal();
-       if (ao_cmd_status != ao_cmd_success)
-               return;
-       if ((uint8_t) ao_cmd_lex_i >= AO_NUM_CHANNELS) {
-               ao_cmd_status = ao_cmd_syntax_error;
-               return;
-       }
-       ch = &ao_config.radio_channels[(uint8_t) ao_cmd_lex_i];
-       _ao_config_edit_start();
-       ao_cmd_white();
-       i = 0;
-       while (ao_cmd_lex_c != '/' && ao_cmd_lex_c != '\n' && i < AO_CHANNEL_NAME_LEN) {
-               ch->name[i++] = ao_cmd_lex_c;
-               ao_cmd_lex();
-       }
-       if (i < AO_CHANNEL_NAME_LEN) {
-               ch->name[i] = '\0';
-               ao_cmd_lex();
-       }
-       ao_cmd_decimal();
-       ch->kHz = ao_cmd_lex_u32;
-       _ao_config_edit_finish();
-}
-#endif
-
 struct ao_config_var {
        __code char     *str;
        void            (*set)(void) __reentrant;
@@ -527,14 +473,14 @@ static void
 ao_config_write(void) __reentrant;
 
 __code struct ao_config_var ao_config_vars[] = {
-#if HAS_ADC
+#if HAS_FLIGHT
        { "m <meters>\0Main deploy (m)",
          ao_config_main_deploy_set,    ao_config_main_deploy_show, },
        { "d <delay>\0Apogee delay (s)",
          ao_config_apogee_delay_set,   ao_config_apogee_delay_show },
-#endif /* HAS_ADC */
-       { "r <channel>\0Radio channel",
-         ao_config_radio_channel_set,  ao_config_radio_channel_show },
+       { "L <seconds>\0Apogee detect lockout (s)",
+         ao_config_apogee_lockout_set, ao_config_apogee_lockout_show, },
+#endif /* HAS_FLIGHT */
        { "F <freq>\0Frequency (kHz)",
          ao_config_frequency_set, ao_config_frequency_show },
        { "c <call>\0Callsign (8 char max)",
@@ -562,10 +508,6 @@ __code struct ao_config_var ao_config_vars[] = {
 #if HAS_AES
        { "k <32 hex digits>\0Set AES encryption key",
          ao_config_key_set, ao_config_key_show },
-#endif
-#if HAS_RADIO_CHANNELS
-       { "C <n> <name>/<freq> <radio>\0Set radio chan config",
-         ao_config_radio_config_set,ao_config_radio_config_show },
 #endif
        { "s\0Show",
          ao_config_show,               0 },