altos: Switch ao_config.c __xdata to __pdata
[fw/altos] / src / ao_config.c
index c7fc7dd234786debbe434da390ba378ff286d2c0..813164eadbb84a33108ec76059384f37605605bc 100644 (file)
@@ -18,8 +18,8 @@
 #include "ao.h"
 
 __xdata struct ao_config ao_config;
-__xdata uint8_t ao_config_loaded;
-__xdata uint8_t ao_config_dirty;
+__pdata uint8_t ao_config_loaded;
+__pdata uint8_t ao_config_dirty;
 __xdata uint8_t ao_config_mutex;
 
 #define AO_CONFIG_DEFAULT_MAIN_DEPLOY  250
@@ -116,8 +116,9 @@ void
 ao_config_callsign_set(void) __reentrant
 {
        uint8_t c;
-       char callsign[AO_MAX_CALLSIGN + 1];
+       static __xdata char callsign[AO_MAX_CALLSIGN + 1];
 
+       memset(callsign, '\0', sizeof callsign);
        ao_cmd_white();
        c = 0;
        while (ao_cmd_lex_c != '\n') {
@@ -131,8 +132,6 @@ ao_config_callsign_set(void) __reentrant
                return;
        ao_mutex_get(&ao_config_mutex);
        _ao_config_get();
-       while (c < AO_MAX_CALLSIGN + 1)
-               callsign[c++] = '\0';
        memcpy(&ao_config.callsign, &callsign,
               AO_MAX_CALLSIGN + 1);
        ao_config_dirty = 1;
@@ -336,7 +335,7 @@ ao_config_log_set(void) __reentrant
 #endif /* HAS_EEPROM */
 
 struct ao_config_var {
-       const char      *str;
+       __code char     *str;
        void            (*set)(void) __reentrant;
        void            (*show)(void) __reentrant;
 };