altos: Make sure pa to altitude conversion is done with 32 bits
[fw/altos] / src / core / ao_config.c
index ce855ad1b51e1dcfdd6afb8d2d455fe45528e2d9..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