altos: Make sure pa to altitude conversion is done with 32 bits
[fw/altos] / src / core / ao_config.c
index f19dd9cd8d198b6f0724119afa5bdeebfb0b882d..e85ddcb4d74d9a53dbb0b2ed9630d4be0f667cfe 100644 (file)
@@ -102,6 +102,7 @@ _ao_config_get(void)
                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);
+               ao_config._legacy_radio_channel = 0;
        }
        minor = ao_config.minor;
        if (minor != AO_CONFIG_MINOR) {
@@ -131,7 +132,7 @@ _ao_config_get(void)
                if (minor < 9)
                        ao_xmemset(&ao_config.aes_key, '\0', AO_AES_LEN);
                if (minor < 10)
-                       ao_config.frequency = 434550;
+                       ao_config.frequency = 434550 + ao_config._legacy_radio_channel * 100;
                if (minor < 11)
                        ao_config.apogee_lockout = 0;
 #if AO_PYRO_NUM
@@ -143,8 +144,12 @@ _ao_config_get(void)
        }
 #if HAS_RADIO
 #if HAS_FORCE_FREQ
-       if (ao_force_freq)
+       if (ao_force_freq) {
                ao_config.frequency = 434550;
+               ao_config.radio_cal = ao_radio_cal;
+               ao_xmemcpy(&ao_config.callsign, CODE_TO_XDATA(AO_CONFIG_DEFAULT_CALLSIGN),
+                      sizeof(AO_CONFIG_DEFAULT_CALLSIGN) - 1);
+       }
 #endif
        ao_config_set_radio();
 #endif
@@ -463,6 +468,9 @@ ao_config_radio_enable_set(void) __reentrant
 #endif /* HAS_RADIO */
        
 #if HAS_AES
+
+__xdata uint8_t        ao_config_aes_seq = 1;
+
 void
 ao_config_key_show(void) __reentrant
 {
@@ -485,6 +493,7 @@ ao_config_key_set(void) __reentrant
                        break;
                ao_config.aes_key[i] = ao_cmd_lex_i;
        }
+       ++ao_config_aes_seq;
        _ao_config_edit_finish();
 }
 #endif