From acd523e6993164bb91945b95b71ee94c39caf18b Mon Sep 17 00:00:00 2001 From: "mihlit@mihlit.cz" Date: Thu, 2 Feb 2012 11:23:38 +0000 Subject: [PATCH] make code compatible with up-to-date build environment These changes make it possible to compile open9x with old (avr-gcc 4.3.3, avr-libc 1.6.7) and up-to-date (avr-gcc 4.6.2, avr-libc 1.8.0) build environments. See Issue 1 for more details. --- src/beeper.cpp | 2 +- src/drivers.cpp | 4 +- src/font.lbm | 2 +- src/font_dblsize.lbm | 2 +- src/general_menus.cpp | 2 +- src/lcd.cpp | 16 +-- src/lcd.h | 12 +- src/menus.cpp | 4 +- src/menus.h | 10 +- src/model_menus.cpp | 8 +- src/o9xstrings.cpp | 326 +++++++++++++++++++++--------------------- src/o9xstrings.h | 326 +++++++++++++++++++++--------------------- src/open9x.cpp | 20 +-- src/open9x.h | 13 +- src/pgmtypes.h | 15 ++ src/pulses.cpp | 2 +- src/s9xsplash.lbm | 2 +- src/simpgmspace.h | 12 +- src/stamp.cpp | 10 +- src/sticks.lbm | 2 +- src/templates.cpp | 28 ++-- 21 files changed, 418 insertions(+), 400 deletions(-) create mode 100644 src/pgmtypes.h diff --git a/src/beeper.cpp b/src/beeper.cpp index 7ec0b4e83..b1bc2b3a6 100644 --- a/src/beeper.cpp +++ b/src/beeper.cpp @@ -32,7 +32,7 @@ uint8_t hapticTick = 0; #endif // The various "beep" tone lengths -static prog_uint8_t APM beepTab[]= { +static const pm_uint8_t beepTab[] PROGMEM = { // 0 1 2 3 4 0, 1, 8, 30, 100, //silent 1, 1, 8, 30, 100, //xShort diff --git a/src/drivers.cpp b/src/drivers.cpp index 07a2fa11e..9e3f9730b 100644 --- a/src/drivers.cpp +++ b/src/drivers.cpp @@ -402,7 +402,7 @@ void per10ms() // Trim switches ... #if defined (PCBV4) - static prog_uchar APM crossTrim[]={ + static const pm_uchar crossTrim[] PROGMEM ={ 1<0 ) {val--;} else {val=max;} -bool check(uint8_t event, uint8_t curr, MenuFuncP *menuTab, uint8_t menuTabSize, prog_uint8_t *horTab, uint8_t horTabMax, uint8_t maxrow) +bool check(uint8_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, uint8_t maxrow) { #ifdef NAVIGATION_RE1 // check rotary encoder 1 if changed -> cursor down/up diff --git a/src/menus.h b/src/menus.h index 00d01a048..cfc617054 100644 --- a/src/menus.h +++ b/src/menus.h @@ -91,18 +91,18 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); extern uint8_t m_posVert; extern uint8_t m_posHorz; inline void minit(){m_posVert=m_posHorz=0;} -bool check(uint8_t event, uint8_t curr, MenuFuncP *menuTab, uint8_t menuTabSize, prog_uint8_t *subTab, uint8_t subTabMax, uint8_t maxrow); -bool check_simple(uint8_t event, uint8_t curr, MenuFuncP *menuTab, uint8_t menuTabSize, uint8_t maxrow); +bool check(uint8_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, const pm_uint8_t *subTab, uint8_t subTabMax, uint8_t maxrow); +bool check_simple(uint8_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, uint8_t maxrow); bool check_submenu_simple(uint8_t event, uint8_t maxrow); -typedef PROGMEM void (*MenuFuncP_PROGMEM)(uint8_t event); +typedef void (*MenuFuncP_PROGMEM)(uint8_t event); #define TITLEP(pstr) lcd_putsAtt(0,0,pstr,INVERS) #define TITLE(str) TITLEP(str) #define MENU(title, tab, menu, lines_count, ...) \ TITLE(title); \ -static prog_uint8_t APM mstate_tab[] = __VA_ARGS__; \ +static const pm_uint8_t mstate_tab[] PROGMEM = __VA_ARGS__; \ if (!check(event,menu,tab,DIM(tab),mstate_tab,DIM(mstate_tab)-1,lines_count-1)) return; #define SIMPLE_MENU_NOTITLE(tab, menu, lines_count) \ @@ -114,7 +114,7 @@ SIMPLE_MENU_NOTITLE(tab, menu, lines_count) #define SUBMENU(title, lines_count, ...) \ TITLE(title); \ -static prog_uint8_t APM mstate_tab[] = __VA_ARGS__; \ +static const pm_uint8_t mstate_tab[] PROGMEM = __VA_ARGS__; \ if (!check(event,0,NULL,0,mstate_tab,DIM(mstate_tab)-1,lines_count-1)) return; #define SIMPLE_SUBMENU_NOTITLE(lines_count) \ diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 32fdae3a0..1713c5524 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -69,7 +69,7 @@ void menuProcTemplates(uint8_t event); #endif void menuProcExpoOne(uint8_t event); -MenuFuncP_PROGMEM APM menuTabModel[] = { +const MenuFuncP_PROGMEM menuTabModel[] PROGMEM = { menuProcModelSelect, menuProcModel, #ifdef HELI @@ -91,8 +91,8 @@ MenuFuncP_PROGMEM APM menuTabModel[] = { #endif }; -const prog_char * s_warning = 0; -const prog_char * s_warning_info; +const pm_char * s_warning = 0; +const pm_char * s_warning_info; uint8_t s_warning_info_len; // uint8_t s_warning_info_att not needed now uint8_t s_confirmation = 0; @@ -105,7 +105,7 @@ void displayBox() // could be a place for a s_warning_info } -void displayPopup(const prog_char * pstr) +void displayPopup(const pm_char * pstr) { s_warning = pstr; displayBox(); diff --git a/src/o9xstrings.cpp b/src/o9xstrings.cpp index 227fa5bf6..8ff946009 100644 --- a/src/o9xstrings.cpp +++ b/src/o9xstrings.cpp @@ -1,7 +1,7 @@ #include "open9x.h" // The non-0-terminated-strings -const prog_char APM STR_OPEN9X[] = +const pm_char STR_OPEN9X[] PROGMEM = TR_OFFON TR_MMMINV TR_NCHANNELS @@ -49,198 +49,198 @@ const prog_char APM STR_OPEN9X[] = ; // The 0-terminated-strings -const prog_char APM STR_POPUPS[] = TR_POPUPS; -const prog_char APM STR_MENUWHENDONE[] = TR_MENUWHENDONE; -const prog_char APM STR_FREE[] = TR_FREE; -const prog_char APM STR_DELETEMODEL[] = TR_DELETEMODEL; -const prog_char APM STR_COPYINGMODEL[] = TR_COPYINGMODEL; -const prog_char APM STR_MOVINGMODEL[] = TR_MOVINGMODEL; -const prog_char APM STR_LOADINGMODEL[] = TR_LOADINGMODEL; -const prog_char APM STR_NAME[] = TR_NAME; -const prog_char APM STR_TIMER[] = TR_TIMER; -const prog_char APM STR_ELIMITS[] = TR_ELIMITS; -const prog_char APM STR_ETRIMS[] = TR_ETRIMS; -const prog_char APM STR_TRIMINC[] = TR_TRIMINC; -const prog_char APM STR_TTRACE[] = TR_TTRACE; -const prog_char APM STR_TTRIM[] = TR_TTRIM; -const prog_char APM STR_BEEPCTR[] = TR_BEEPCTR; -const prog_char APM STR_PROTO[] = TR_PROTO; -const prog_char APM STR_PPMFRAME[] = TR_PPMFRAME; -const prog_char APM STR_MS[] = TR_MS; -const prog_char APM STR_SWITCH[] = TR_SWITCH; -const prog_char APM STR_TRIMS[] = TR_TRIMS; -const prog_char APM STR_FADEIN[] = TR_FADEIN; -const prog_char APM STR_FADEOUT[] = TR_FADEOUT; -const prog_char APM STR_DEFAULT[] = TR_DEFAULT; -const prog_char APM STR_CHECKTRIMS[] = TR_CHECKTRIMS; +const pm_char STR_POPUPS[] PROGMEM = TR_POPUPS; +const pm_char STR_MENUWHENDONE[] PROGMEM = TR_MENUWHENDONE; +const pm_char STR_FREE[] PROGMEM = TR_FREE; +const pm_char STR_DELETEMODEL[] PROGMEM = TR_DELETEMODEL; +const pm_char STR_COPYINGMODEL[] PROGMEM = TR_COPYINGMODEL; +const pm_char STR_MOVINGMODEL[] PROGMEM = TR_MOVINGMODEL; +const pm_char STR_LOADINGMODEL[] PROGMEM = TR_LOADINGMODEL; +const pm_char STR_NAME[] PROGMEM = TR_NAME; +const pm_char STR_TIMER[] PROGMEM = TR_TIMER; +const pm_char STR_ELIMITS[] PROGMEM = TR_ELIMITS; +const pm_char STR_ETRIMS[] PROGMEM = TR_ETRIMS; +const pm_char STR_TRIMINC[] PROGMEM = TR_TRIMINC; +const pm_char STR_TTRACE[] PROGMEM = TR_TTRACE; +const pm_char STR_TTRIM[] PROGMEM = TR_TTRIM; +const pm_char STR_BEEPCTR[] PROGMEM = TR_BEEPCTR; +const pm_char STR_PROTO[] PROGMEM = TR_PROTO; +const pm_char STR_PPMFRAME[] PROGMEM = TR_PPMFRAME; +const pm_char STR_MS[] PROGMEM = TR_MS; +const pm_char STR_SWITCH[] PROGMEM = TR_SWITCH; +const pm_char STR_TRIMS[] PROGMEM = TR_TRIMS; +const pm_char STR_FADEIN[] PROGMEM = TR_FADEIN; +const pm_char STR_FADEOUT[] PROGMEM = TR_FADEOUT; +const pm_char STR_DEFAULT[] PROGMEM = TR_DEFAULT; +const pm_char STR_CHECKTRIMS[] PROGMEM = TR_CHECKTRIMS; #ifdef HELI -const prog_char APM STR_SWASHTYPE[] = TR_SWASHTYPE; -const prog_char APM STR_COLLECTIVE[] = TR_COLLECTIVE; -const prog_char APM STR_SWASHRING[] = TR_SWASHRING; -const prog_char APM STR_ELEDIRECTION[] = TR_ELEDIRECTION; -const prog_char APM STR_AILDIRECTION[] = TR_AILDIRECTION; -const prog_char APM STR_COLDIRECTION[] = TR_COLDIRECTION; +const pm_char STR_SWASHTYPE[] PROGMEM = TR_SWASHTYPE; +const pm_char STR_COLLECTIVE[] PROGMEM = TR_COLLECTIVE; +const pm_char STR_SWASHRING[] PROGMEM = TR_SWASHRING; +const pm_char STR_ELEDIRECTION[] PROGMEM = TR_ELEDIRECTION; +const pm_char STR_AILDIRECTION[] PROGMEM = TR_AILDIRECTION; +const pm_char STR_COLDIRECTION[] PROGMEM = TR_COLDIRECTION; #endif -const prog_char APM STR_MODE[] = TR_MODE; -const prog_char APM STR_NOFREEEXPO[] = TR_NOFREEEXPO; -const prog_char APM STR_NOFREEMIXER[] = TR_NOFREEMIXER; -const prog_char APM STR_INSERTMIX[] = TR_INSERTMIX; -const prog_char APM STR_EDITMIX[] = TR_EDITMIX; -const prog_char APM STR_SOURCE[] = TR_SOURCE; -const prog_char APM STR_WEIGHT[] = TR_WEIGHT; -const prog_char APM STR_OFFSET[] = TR_OFFSET; -const prog_char APM STR_TRIM[] = TR_TRIM; -const prog_char APM STR_CURVES[] = TR_CURVES; -const prog_char APM STR_FPHASE[] = TR_FPHASE; -const prog_char APM STR_WARNING[] = TR_WARNING; -const prog_char APM STR_OFF[] = TR_OFF; -const prog_char APM STR_MULTPX[] = TR_MULTPX; -const prog_char APM STR_DELAYDOWN[] = TR_DELAYDOWN; -const prog_char APM STR_DELAYUP[] = TR_DELAYUP; -const prog_char APM STR_SLOWDOWN[] = TR_SLOWDOWN; -const prog_char APM STR_SLOWUP[] = TR_SLOWUP; -const prog_char APM STR_DREXPO[] = TR_DREXPO; -const prog_char APM STR_MIXER[] = TR_MIXER; -const prog_char APM STR_COPYTRIMMENU[] = TR_COPYTRIMMENU; -const prog_char APM STR_CV[] = TR_CV; -const prog_char APM STR_SW[] = TR_SW; -const prog_char APM STR_ACHANNEL[] = TR_ACHANNEL; -const prog_char APM STR_MAX[] = TR_MAX; -const prog_char APM STR_CALIB[] = TR_CALIB; -const prog_char APM STR_BAR[] = TR_BAR; -const prog_char APM STR_ALARM[] = TR_ALARM; -const prog_char APM STR_USRPROTO[] = TR_USRPROTO; -const prog_char APM STR_CLEARMIXMENU[] = TR_CLEARMIXMENU; -const prog_char APM STR_BEEPER[] = TR_BEEPER; -const prog_char APM STR_CONTRAST[] = TR_CONTRAST; -const prog_char APM STR_BATTERYWARNING[] = TR_BATTERYWARNING; -const prog_char APM STR_INACTIVITYALARM[] = TR_INACTIVITYALARM; -const prog_char APM STR_FILTERADC[] = TR_FILTERADC; -const prog_char APM STR_THROTTLEREVERSE[] = TR_THROTTLEREVERSE; -const prog_char APM STR_MINUTEBEEP[] = TR_MINUTEBEEP; -const prog_char APM STR_BEEPCOUNTDOWN[] = TR_BEEPCOUNTDOWN; -const prog_char APM STR_FLASHONBEEP[] = TR_FLASHONBEEP; -const prog_char APM STR_LIGHTSWITCH[] = TR_LIGHTSWITCH; -const prog_char APM STR_LIGHTOFFAFTER[] = TR_LIGHTOFFAFTER; -const prog_char APM STR_SPLASHSCREEN[] = TR_SPLASHSCREEN; -const prog_char APM STR_THROTTLEWARNING[] = TR_THROTTLEWARNING; -const prog_char APM STR_SWITCHWARNING[] = TR_SWITCHWARNING; -const prog_char APM STR_MEMORYWARNING[] = TR_MEMORYWARNING; -const prog_char APM STR_ALARMWARNING[] = TR_ALARMWARNING; -const prog_char APM STR_NODATAALARM[] = TR_NODATAALARM; -const prog_char APM STR_RXCHANNELORD[] = TR_RXCHANNELORD; -const prog_char APM STR_MODE2[] = TR_MODE2; -const prog_char APM STR_SLAVE[] = TR_SLAVE; -const prog_char APM STR_MODESRC[] = TR_MODESRC; -const prog_char APM STR_MULTIPLIER[] = TR_MULTIPLIER; -const prog_char APM STR_CAL[] = TR_CAL; -const prog_char APM STR_EEPROMV[] = TR_EEPROMV; -const prog_char APM STR_VTRIM[] = TR_VTRIM; -const prog_char APM STR_BG[] = TR_BG; -const prog_char APM STR_MENUTOSTART[] = TR_MENUTOSTART; -const prog_char APM STR_SETMIDPOINT[] = TR_SETMIDPOINT; -const prog_char APM STR_MOVESTICKSPOTS[] = TR_MOVESTICKSPOTS; -const prog_char APM STR_ALT[] = TR_ALT; -const prog_char APM STR_RXBATT[] = TR_RXBATT; -const prog_char APM STR_RX[] = TR_RX; -const prog_char APM STR_TX[] = TR_TX; -const prog_char APM STR_HDG[] = TR_HDG; -const prog_char APM STR_SPD[] = TR_SPD; -const prog_char APM STR_TEMP1[] = TR_TEMP1; -const prog_char APM STR_TEMP2[] = TR_TEMP2; -const prog_char APM STR_RPM[] = TR_RPM; -const prog_char APM STR_FUEL[] = TR_FUEL; -const prog_char APM STR_VOLTS[] = TR_VOLTS; -const prog_char APM STR_ACCEL[] = TR_ACCEL; -const prog_char APM STR_TELE[] = TR_TELE; -const prog_char APM STR_RSSI[] = TR_RSSI; -const prog_char APM STR_NODATA[] = TR_NODATA; -const prog_char APM STR_TM1[] = TR_TM1; -const prog_char APM STR_TM2[] = TR_TM2; -const prog_char APM STR_THR[] = TR_THR; -const prog_char APM STR_TH[] = TR_TH; -const prog_char APM STR_TOT[] = TR_TOT; -const prog_char APM STR_TMR1LATMAXUS[] = TR_TMR1LATMAXUS; -const prog_char APM STR_TMR1LATMINUS[] = TR_TMR1LATMINUS; -const prog_char APM STR_TMR1JITTERUS[] = TR_TMR1JITTERUS; -const prog_char APM STR_TMAINMAXMS[] = TR_TMAINMAXMS; +const pm_char STR_MODE[] PROGMEM = TR_MODE; +const pm_char STR_NOFREEEXPO[] PROGMEM = TR_NOFREEEXPO; +const pm_char STR_NOFREEMIXER[] PROGMEM = TR_NOFREEMIXER; +const pm_char STR_INSERTMIX[] PROGMEM = TR_INSERTMIX; +const pm_char STR_EDITMIX[] PROGMEM = TR_EDITMIX; +const pm_char STR_SOURCE[] PROGMEM = TR_SOURCE; +const pm_char STR_WEIGHT[] PROGMEM = TR_WEIGHT; +const pm_char STR_OFFSET[] PROGMEM = TR_OFFSET; +const pm_char STR_TRIM[] PROGMEM = TR_TRIM; +const pm_char STR_CURVES[] PROGMEM = TR_CURVES; +const pm_char STR_FPHASE[] PROGMEM = TR_FPHASE; +const pm_char STR_WARNING[] PROGMEM = TR_WARNING; +const pm_char STR_OFF[] PROGMEM = TR_OFF; +const pm_char STR_MULTPX[] PROGMEM = TR_MULTPX; +const pm_char STR_DELAYDOWN[] PROGMEM = TR_DELAYDOWN; +const pm_char STR_DELAYUP[] PROGMEM = TR_DELAYUP; +const pm_char STR_SLOWDOWN[] PROGMEM = TR_SLOWDOWN; +const pm_char STR_SLOWUP[] PROGMEM = TR_SLOWUP; +const pm_char STR_DREXPO[] PROGMEM = TR_DREXPO; +const pm_char STR_MIXER[] PROGMEM = TR_MIXER; +const pm_char STR_COPYTRIMMENU[] PROGMEM = TR_COPYTRIMMENU; +const pm_char STR_CV[] PROGMEM = TR_CV; +const pm_char STR_SW[] PROGMEM = TR_SW; +const pm_char STR_ACHANNEL[] PROGMEM = TR_ACHANNEL; +const pm_char STR_MAX[] PROGMEM = TR_MAX; +const pm_char STR_CALIB[] PROGMEM = TR_CALIB; +const pm_char STR_BAR[] PROGMEM = TR_BAR; +const pm_char STR_ALARM[] PROGMEM = TR_ALARM; +const pm_char STR_USRPROTO[] PROGMEM = TR_USRPROTO; +const pm_char STR_CLEARMIXMENU[] PROGMEM = TR_CLEARMIXMENU; +const pm_char STR_BEEPER[] PROGMEM = TR_BEEPER; +const pm_char STR_CONTRAST[] PROGMEM = TR_CONTRAST; +const pm_char STR_BATTERYWARNING[] PROGMEM = TR_BATTERYWARNING; +const pm_char STR_INACTIVITYALARM[] PROGMEM = TR_INACTIVITYALARM; +const pm_char STR_FILTERADC[] PROGMEM = TR_FILTERADC; +const pm_char STR_THROTTLEREVERSE[] PROGMEM = TR_THROTTLEREVERSE; +const pm_char STR_MINUTEBEEP[] PROGMEM = TR_MINUTEBEEP; +const pm_char STR_BEEPCOUNTDOWN[] PROGMEM = TR_BEEPCOUNTDOWN; +const pm_char STR_FLASHONBEEP[] PROGMEM = TR_FLASHONBEEP; +const pm_char STR_LIGHTSWITCH[] PROGMEM = TR_LIGHTSWITCH; +const pm_char STR_LIGHTOFFAFTER[] PROGMEM = TR_LIGHTOFFAFTER; +const pm_char STR_SPLASHSCREEN[] PROGMEM = TR_SPLASHSCREEN; +const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING; +const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING; +const pm_char STR_MEMORYWARNING[] PROGMEM = TR_MEMORYWARNING; +const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING; +const pm_char STR_NODATAALARM[] PROGMEM = TR_NODATAALARM; +const pm_char STR_RXCHANNELORD[] PROGMEM = TR_RXCHANNELORD; +const pm_char STR_MODE2[] PROGMEM = TR_MODE2; +const pm_char STR_SLAVE[] PROGMEM = TR_SLAVE; +const pm_char STR_MODESRC[] PROGMEM = TR_MODESRC; +const pm_char STR_MULTIPLIER[] PROGMEM = TR_MULTIPLIER; +const pm_char STR_CAL[] PROGMEM = TR_CAL; +const pm_char STR_EEPROMV[] PROGMEM = TR_EEPROMV; +const pm_char STR_VTRIM[] PROGMEM = TR_VTRIM; +const pm_char STR_BG[] PROGMEM = TR_BG; +const pm_char STR_MENUTOSTART[] PROGMEM = TR_MENUTOSTART; +const pm_char STR_SETMIDPOINT[] PROGMEM = TR_SETMIDPOINT; +const pm_char STR_MOVESTICKSPOTS[] PROGMEM = TR_MOVESTICKSPOTS; +const pm_char STR_ALT[] PROGMEM = TR_ALT; +const pm_char STR_RXBATT[] PROGMEM = TR_RXBATT; +const pm_char STR_RX[] PROGMEM = TR_RX; +const pm_char STR_TX[] PROGMEM = TR_TX; +const pm_char STR_HDG[] PROGMEM = TR_HDG; +const pm_char STR_SPD[] PROGMEM = TR_SPD; +const pm_char STR_TEMP1[] PROGMEM = TR_TEMP1; +const pm_char STR_TEMP2[] PROGMEM = TR_TEMP2; +const pm_char STR_RPM[] PROGMEM = TR_RPM; +const pm_char STR_FUEL[] PROGMEM = TR_FUEL; +const pm_char STR_VOLTS[] PROGMEM = TR_VOLTS; +const pm_char STR_ACCEL[] PROGMEM = TR_ACCEL; +const pm_char STR_TELE[] PROGMEM = TR_TELE; +const pm_char STR_RSSI[] PROGMEM = TR_RSSI; +const pm_char STR_NODATA[] PROGMEM = TR_NODATA; +const pm_char STR_TM1[] PROGMEM = TR_TM1; +const pm_char STR_TM2[] PROGMEM = TR_TM2; +const pm_char STR_THR[] PROGMEM = TR_THR; +const pm_char STR_TH[] PROGMEM = TR_TH; +const pm_char STR_TOT[] PROGMEM = TR_TOT; +const pm_char STR_TMR1LATMAXUS[] PROGMEM = TR_TMR1LATMAXUS; +const pm_char STR_TMR1LATMINUS[] PROGMEM = TR_TMR1LATMINUS; +const pm_char STR_TMR1JITTERUS[] PROGMEM = TR_TMR1JITTERUS; +const pm_char STR_TMAINMAXMS[] PROGMEM = TR_TMAINMAXMS; #ifdef DEBUG -const prog_char APM STR_T10MSUS[] = TR_T10MSUS; +const pm_char STR_T10MSUS[] PROGMEM = TR_T10MSUS; #endif -const prog_char APM STR_FREESTACKMINB[] = TR_FREESTACKMINB; -const prog_char APM STR_MENUTORESET[] = TR_MENUTORESET; -const prog_char APM STR_PPM[] = TR_PPM; -const prog_char APM STR_CH[] = TR_CH; -const prog_char APM STR_TMR[] = TR_TMR; -const prog_char APM STR_MODEL[] = TR_MODEL; -const prog_char APM STR_FP[] = TR_FP; -const prog_char APM STR_EEPROMLOWMEM[] = TR_EEPROMLOWMEM; -const prog_char APM STR_ALERT[] = TR_ALERT; -const prog_char APM STR_PRESSANYKEYTOSKIP[] = TR_PRESSANYKEYTOSKIP; -const prog_char APM STR_THROTTLENOTIDLE[] = TR_THROTTLENOTIDLE; -const prog_char APM STR_RESETTHROTTLE[] = TR_RESETTHROTTLE; -const prog_char APM STR_ALARMSDISABLED[] = TR_ALARMSDISABLED; -const prog_char APM STR_SWITCHESNOTOFF[] = TR_SWITCHESNOTOFF; -const prog_char APM STR_PLEASERESETTHEM[] = TR_PLEASERESETTHEM; -const prog_char APM STR_MESSAGE[] = TR_MESSAGE; -const prog_char APM STR_PRESSANYKEY[] = TR_PRESSANYKEY; -const prog_char APM STR_BADEEPROMDATA[] = TR_BADEEPROMDATA; -const prog_char APM STR_EEPROMFORMATTING[] = TR_EEPROMFORMATTING; -const prog_char APM STR_EEPROMOVERFLOW[] = TR_EEPROMOVERFLOW; -const prog_char APM STR_MENUSERROR[] = TR_MENUSERROR; +const pm_char STR_FREESTACKMINB[] PROGMEM = TR_FREESTACKMINB; +const pm_char STR_MENUTORESET[] PROGMEM = TR_MENUTORESET; +const pm_char STR_PPM[] PROGMEM = TR_PPM; +const pm_char STR_CH[] PROGMEM = TR_CH; +const pm_char STR_TMR[] PROGMEM = TR_TMR; +const pm_char STR_MODEL[] PROGMEM = TR_MODEL; +const pm_char STR_FP[] PROGMEM = TR_FP; +const pm_char STR_EEPROMLOWMEM[] PROGMEM = TR_EEPROMLOWMEM; +const pm_char STR_ALERT[] PROGMEM = TR_ALERT; +const pm_char STR_PRESSANYKEYTOSKIP[] PROGMEM = TR_PRESSANYKEYTOSKIP; +const pm_char STR_THROTTLENOTIDLE[] PROGMEM = TR_THROTTLENOTIDLE; +const pm_char STR_RESETTHROTTLE[] PROGMEM = TR_RESETTHROTTLE; +const pm_char STR_ALARMSDISABLED[] PROGMEM = TR_ALARMSDISABLED; +const pm_char STR_SWITCHESNOTOFF[] PROGMEM = TR_SWITCHESNOTOFF; +const pm_char STR_PLEASERESETTHEM[] PROGMEM = TR_PLEASERESETTHEM; +const pm_char STR_MESSAGE[] PROGMEM = TR_MESSAGE; +const pm_char STR_PRESSANYKEY[] PROGMEM = TR_PRESSANYKEY; +const pm_char STR_BADEEPROMDATA[] PROGMEM = TR_BADEEPROMDATA; +const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; +const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; +const pm_char STR_MENUSERROR[] PROGMEM = TR_MENUSERROR; -const prog_char APM STR_MENURADIOSETUP[] = TR_MENURADIOSETUP; +const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; #ifdef PCBV4 -const prog_char APM STR_MENUDATEANDTIME[] = TR_MENUDATEANDTIME; +const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; #endif -const prog_char APM STR_MENUTRAINER[] = TR_MENUTRAINER; -const prog_char APM STR_MENUVERSION[] = TR_MENUVERSION; -const prog_char APM STR_MENUDIAG[] = TR_MENUDIAG; -const prog_char APM STR_MENUANA[] = TR_MENUANA; -const prog_char APM STR_MENUCALIBRATION[] = TR_MENUCALIBRATION; +const pm_char STR_MENUTRAINER[] PROGMEM = TR_MENUTRAINER; +const pm_char STR_MENUVERSION[] PROGMEM = TR_MENUVERSION; +const pm_char STR_MENUDIAG[] PROGMEM = TR_MENUDIAG; +const pm_char STR_MENUANA[] PROGMEM = TR_MENUANA; +const pm_char STR_MENUCALIBRATION[] PROGMEM = TR_MENUCALIBRATION; -const prog_char APM STR_MENUMODELSEL[] = TR_MENUMODELSEL; -const prog_char APM STR_MENUSETUP[] = TR_MENUSETUP; -const prog_char APM STR_MENUFLIGHTPHASE[] = TR_MENUFLIGHTPHASE; -const prog_char APM STR_MENUFLIGHTPHASES[] = TR_MENUFLIGHTPHASES; +const pm_char STR_MENUMODELSEL[] PROGMEM = TR_MENUMODELSEL; +const pm_char STR_MENUSETUP[] PROGMEM = TR_MENUSETUP; +const pm_char STR_MENUFLIGHTPHASE[] PROGMEM = TR_MENUFLIGHTPHASE; +const pm_char STR_MENUFLIGHTPHASES[] PROGMEM = TR_MENUFLIGHTPHASES; #ifdef HELI -const prog_char APM STR_MENUHELISETUP[] = TR_MENUHELISETUP; +const pm_char STR_MENUHELISETUP[] PROGMEM = TR_MENUHELISETUP; #endif -const prog_char APM STR_MENUDREXPO[] = TR_MENUDREXPO; -const prog_char APM STR_MENULIMITS[] = TR_MENULIMITS; -const prog_char APM STR_MENUCURVES[] = TR_MENUCURVES; -const prog_char APM STR_MENUCURVE[] = TR_MENUCURVE; -const prog_char APM STR_MENUCUSTOMSWITCHES[] = TR_MENUCUSTOMSWITCHES; -const prog_char APM STR_MENUFUNCSWITCHES[] = TR_MENUFUNCSWITCHES; -const prog_char APM STR_MENUSAFETYSWITCHES[] = TR_MENUSAFETYSWITCHES; +const pm_char STR_MENUDREXPO[] PROGMEM = TR_MENUDREXPO; +const pm_char STR_MENULIMITS[] PROGMEM = TR_MENULIMITS; +const pm_char STR_MENUCURVES[] PROGMEM = TR_MENUCURVES; +const pm_char STR_MENUCURVE[] PROGMEM = TR_MENUCURVE; +const pm_char STR_MENUCUSTOMSWITCHES[] PROGMEM = TR_MENUCUSTOMSWITCHES; +const pm_char STR_MENUFUNCSWITCHES[] PROGMEM = TR_MENUFUNCSWITCHES; +const pm_char STR_MENUSAFETYSWITCHES[] PROGMEM = TR_MENUSAFETYSWITCHES; #ifdef FRSKY -const prog_char APM STR_MENUTELEMETRY[] = TR_MENUTELEMETRY; +const pm_char STR_MENUTELEMETRY[] PROGMEM = TR_MENUTELEMETRY; #endif #ifdef TEMPLATES -const prog_char APM STR_MENUTEMPLATES[] = TR_MENUTEMPLATES; +const pm_char STR_MENUTEMPLATES[] PROGMEM = TR_MENUTEMPLATES; #endif -const prog_char APM STR_MENUSTAT[] = TR_MENUSTAT; -const prog_char APM STR_MENUDEBUG[] = TR_MENUDEBUG; +const pm_char STR_MENUSTAT[] PROGMEM = TR_MENUSTAT; +const pm_char STR_MENUDEBUG[] PROGMEM = TR_MENUDEBUG; #if defined(DSM2) || defined(PXX) -const prog_char APM STR_RXNUM[] = TR_RXNUM; +const pm_char STR_RXNUM[] PROGMEM = TR_RXNUM; #endif #if defined(PXX) -const prog_char APM STR_SYNCMENU[] = TR_SYNCMENU; +const pm_char STR_SYNCMENU[] PROGMEM = TR_SYNCMENU; #endif #if defined(HAPTIC) -const prog_char APM STR_HAPTICSTRENGTH[] = TR_HAPTICSTRENGTH; +const pm_char STR_HAPTICSTRENGTH[] PROGMEM = TR_HAPTICSTRENGTH; #endif #if defined(AUDIO) -const prog_char APM STR_SPKRPITCH[] = TR_SPKRPITCH; +const pm_char STR_SPKRPITCH[] PROGMEM = TR_SPKRPITCH; #endif diff --git a/src/o9xstrings.h b/src/o9xstrings.h index 450c445ff..5d15626ff 100644 --- a/src/o9xstrings.h +++ b/src/o9xstrings.h @@ -13,7 +13,7 @@ // The non-0-terminated-strings -extern const PROGMEM char STR_OPEN9X[]; +extern const pm_char STR_OPEN9X[]; #define OFS_OFFON 0 #define OFS_MMMINV (OFS_OFFON + PSIZE(TR_OFFON)) @@ -128,169 +128,169 @@ extern const PROGMEM char STR_OPEN9X[]; // The 0-terminated-strings -extern const PROGMEM char STR_POPUPS[]; -extern const PROGMEM char STR_MENUWHENDONE[]; -extern const PROGMEM char STR_FREE[]; +extern const pm_char STR_POPUPS[]; +extern const pm_char STR_MENUWHENDONE[]; +extern const pm_char STR_FREE[]; #define LEN_FREE PSIZE(TR_FREE) -extern const PROGMEM char STR_DELETEMODEL[]; -extern const PROGMEM char STR_COPYINGMODEL[]; -extern const PROGMEM char STR_MOVINGMODEL[]; -extern const PROGMEM char STR_LOADINGMODEL[]; -extern const PROGMEM char STR_NAME[]; -extern const PROGMEM char STR_TIMER[]; -extern const PROGMEM char STR_ELIMITS[]; -extern const PROGMEM char STR_ETRIMS[]; -extern const PROGMEM char STR_TRIMINC[]; -extern const PROGMEM char STR_TTRACE[]; -extern const PROGMEM char STR_TTRIM[]; -extern const PROGMEM char STR_BEEPCTR[]; -extern const PROGMEM char STR_PROTO[]; -extern const PROGMEM char STR_PPMFRAME[]; -extern const PROGMEM char STR_MS[]; -extern const PROGMEM char STR_SWITCH[]; -extern const PROGMEM char STR_TRIMS[]; -extern const PROGMEM char STR_FADEIN[]; -extern const PROGMEM char STR_FADEOUT[]; -extern const PROGMEM char STR_DEFAULT[]; -extern const PROGMEM char STR_CHECKTRIMS[]; -extern const PROGMEM char STR_SWASHTYPE[]; -extern const PROGMEM char STR_COLLECTIVE[]; -extern const PROGMEM char STR_SWASHRING[]; -extern const PROGMEM char STR_ELEDIRECTION[]; -extern const PROGMEM char STR_AILDIRECTION[]; -extern const PROGMEM char STR_COLDIRECTION[]; -extern const PROGMEM char STR_MODE[]; -extern const PROGMEM char STR_NOFREEEXPO[]; -extern const PROGMEM char STR_NOFREEMIXER[]; -extern const PROGMEM char STR_INSERTMIX[]; -extern const PROGMEM char STR_EDITMIX[]; -extern const PROGMEM char STR_SOURCE[]; -extern const PROGMEM char STR_WEIGHT[]; -extern const PROGMEM char STR_OFFSET[]; -extern const PROGMEM char STR_TRIM[]; -extern const PROGMEM char STR_CURVES[]; -extern const PROGMEM char STR_FPHASE[]; -extern const PROGMEM char STR_WARNING[]; -extern const PROGMEM char STR_OFF[]; -extern const PROGMEM char STR_MULTPX[]; -extern const PROGMEM char STR_DELAYDOWN[]; -extern const PROGMEM char STR_DELAYUP[]; -extern const PROGMEM char STR_SLOWDOWN[]; -extern const PROGMEM char STR_SLOWUP[]; -extern const PROGMEM char STR_DREXPO[]; -extern const PROGMEM char STR_MIXER[]; -extern const PROGMEM char STR_COPYTRIMMENU[]; -extern const PROGMEM char STR_CV[]; -extern const PROGMEM char STR_SW[]; -extern const PROGMEM char STR_ACHANNEL[]; -extern const PROGMEM char STR_MAX[]; -extern const PROGMEM char STR_CALIB[]; -extern const PROGMEM char STR_BAR[]; -extern const PROGMEM char STR_ALARM[]; -extern const PROGMEM char STR_USRPROTO[]; -extern const PROGMEM char STR_CLEARMIXMENU[]; -extern const PROGMEM char STR_BEEPER[]; -extern const PROGMEM char STR_CONTRAST[]; -extern const PROGMEM char STR_BATTERYWARNING[]; -extern const PROGMEM char STR_INACTIVITYALARM[]; -extern const PROGMEM char STR_FILTERADC[]; -extern const PROGMEM char STR_THROTTLEREVERSE[]; -extern const PROGMEM char STR_MINUTEBEEP[]; -extern const PROGMEM char STR_BEEPCOUNTDOWN[]; -extern const PROGMEM char STR_FLASHONBEEP[]; -extern const PROGMEM char STR_LIGHTSWITCH[]; -extern const PROGMEM char STR_LIGHTOFFAFTER[]; -extern const PROGMEM char STR_SPLASHSCREEN[]; -extern const PROGMEM char STR_THROTTLEWARNING[]; -extern const PROGMEM char STR_SWITCHWARNING[]; -extern const PROGMEM char STR_MEMORYWARNING[]; -extern const PROGMEM char STR_ALARMWARNING[]; -extern const PROGMEM char STR_NODATAALARM[]; -extern const PROGMEM char STR_RXCHANNELORD[]; -extern const PROGMEM char STR_MODE2[]; -extern const PROGMEM char STR_SLAVE[]; -extern const PROGMEM char STR_MODESRC[]; -extern const PROGMEM char STR_MULTIPLIER[]; -extern const PROGMEM char STR_CAL[]; -extern const PROGMEM char STR_EEPROMV[]; -extern const PROGMEM char STR_VTRIM[]; -extern const PROGMEM char STR_BG[]; -extern const PROGMEM char STR_MENUTOSTART[]; -extern const PROGMEM char STR_SETMIDPOINT[]; -extern const PROGMEM char STR_MOVESTICKSPOTS[]; -extern const PROGMEM char STR_ALT[]; -extern const PROGMEM char STR_RXBATT[]; -extern const PROGMEM char STR_RX[]; -extern const PROGMEM char STR_TX[]; -extern const PROGMEM char STR_HDG[]; -extern const PROGMEM char STR_SPD[]; -extern const PROGMEM char STR_TEMP1[]; -extern const PROGMEM char STR_TEMP2[]; -extern const PROGMEM char STR_RPM[]; -extern const PROGMEM char STR_FUEL[]; -extern const PROGMEM char STR_VOLTS[]; -extern const PROGMEM char STR_ACCEL[]; -extern const PROGMEM char STR_TELE[]; -extern const PROGMEM char STR_RSSI[]; -extern const PROGMEM char STR_NODATA[]; -extern const PROGMEM char STR_TM1[]; -extern const PROGMEM char STR_TM2[]; -extern const PROGMEM char STR_THR[]; -extern const PROGMEM char STR_TH[]; -extern const PROGMEM char STR_TOT[]; -extern const PROGMEM char STR_TMR1LATMAXUS[]; -extern const PROGMEM char STR_TMR1LATMINUS[]; -extern const PROGMEM char STR_TMR1JITTERUS[]; -extern const PROGMEM char STR_TMAINMAXMS[]; -extern const PROGMEM char STR_T10MSUS[]; -extern const PROGMEM char STR_FREESTACKMINB[]; -extern const PROGMEM char STR_MENUTORESET[]; -extern const PROGMEM char STR_PPM[]; -extern const PROGMEM char STR_CH[]; -extern const PROGMEM char STR_TMR[]; -extern const PROGMEM char STR_MODEL[]; -extern const PROGMEM char STR_FP[]; -extern const PROGMEM char STR_EEPROMLOWMEM[]; -extern const PROGMEM char STR_ALERT[]; -extern const PROGMEM char STR_PRESSANYKEYTOSKIP[]; -extern const PROGMEM char STR_THROTTLENOTIDLE[]; -extern const PROGMEM char STR_RESETTHROTTLE[]; -extern const PROGMEM char STR_ALARMSDISABLED[]; -extern const PROGMEM char STR_SWITCHESNOTOFF[]; -extern const PROGMEM char STR_PLEASERESETTHEM[]; -extern const PROGMEM char STR_MESSAGE[]; -extern const PROGMEM char STR_PRESSANYKEY[]; +extern const pm_char STR_DELETEMODEL[]; +extern const pm_char STR_COPYINGMODEL[]; +extern const pm_char STR_MOVINGMODEL[]; +extern const pm_char STR_LOADINGMODEL[]; +extern const pm_char STR_NAME[]; +extern const pm_char STR_TIMER[]; +extern const pm_char STR_ELIMITS[]; +extern const pm_char STR_ETRIMS[]; +extern const pm_char STR_TRIMINC[]; +extern const pm_char STR_TTRACE[]; +extern const pm_char STR_TTRIM[]; +extern const pm_char STR_BEEPCTR[]; +extern const pm_char STR_PROTO[]; +extern const pm_char STR_PPMFRAME[]; +extern const pm_char STR_MS[]; +extern const pm_char STR_SWITCH[]; +extern const pm_char STR_TRIMS[]; +extern const pm_char STR_FADEIN[]; +extern const pm_char STR_FADEOUT[]; +extern const pm_char STR_DEFAULT[]; +extern const pm_char STR_CHECKTRIMS[]; +extern const pm_char STR_SWASHTYPE[]; +extern const pm_char STR_COLLECTIVE[]; +extern const pm_char STR_SWASHRING[]; +extern const pm_char STR_ELEDIRECTION[]; +extern const pm_char STR_AILDIRECTION[]; +extern const pm_char STR_COLDIRECTION[]; +extern const pm_char STR_MODE[]; +extern const pm_char STR_NOFREEEXPO[]; +extern const pm_char STR_NOFREEMIXER[]; +extern const pm_char STR_INSERTMIX[]; +extern const pm_char STR_EDITMIX[]; +extern const pm_char STR_SOURCE[]; +extern const pm_char STR_WEIGHT[]; +extern const pm_char STR_OFFSET[]; +extern const pm_char STR_TRIM[]; +extern const pm_char STR_CURVES[]; +extern const pm_char STR_FPHASE[]; +extern const pm_char STR_WARNING[]; +extern const pm_char STR_OFF[]; +extern const pm_char STR_MULTPX[]; +extern const pm_char STR_DELAYDOWN[]; +extern const pm_char STR_DELAYUP[]; +extern const pm_char STR_SLOWDOWN[]; +extern const pm_char STR_SLOWUP[]; +extern const pm_char STR_DREXPO[]; +extern const pm_char STR_MIXER[]; +extern const pm_char STR_COPYTRIMMENU[]; +extern const pm_char STR_CV[]; +extern const pm_char STR_SW[]; +extern const pm_char STR_ACHANNEL[]; +extern const pm_char STR_MAX[]; +extern const pm_char STR_CALIB[]; +extern const pm_char STR_BAR[]; +extern const pm_char STR_ALARM[]; +extern const pm_char STR_USRPROTO[]; +extern const pm_char STR_CLEARMIXMENU[]; +extern const pm_char STR_BEEPER[]; +extern const pm_char STR_CONTRAST[]; +extern const pm_char STR_BATTERYWARNING[]; +extern const pm_char STR_INACTIVITYALARM[]; +extern const pm_char STR_FILTERADC[]; +extern const pm_char STR_THROTTLEREVERSE[]; +extern const pm_char STR_MINUTEBEEP[]; +extern const pm_char STR_BEEPCOUNTDOWN[]; +extern const pm_char STR_FLASHONBEEP[]; +extern const pm_char STR_LIGHTSWITCH[]; +extern const pm_char STR_LIGHTOFFAFTER[]; +extern const pm_char STR_SPLASHSCREEN[]; +extern const pm_char STR_THROTTLEWARNING[]; +extern const pm_char STR_SWITCHWARNING[]; +extern const pm_char STR_MEMORYWARNING[]; +extern const pm_char STR_ALARMWARNING[]; +extern const pm_char STR_NODATAALARM[]; +extern const pm_char STR_RXCHANNELORD[]; +extern const pm_char STR_MODE2[]; +extern const pm_char STR_SLAVE[]; +extern const pm_char STR_MODESRC[]; +extern const pm_char STR_MULTIPLIER[]; +extern const pm_char STR_CAL[]; +extern const pm_char STR_EEPROMV[]; +extern const pm_char STR_VTRIM[]; +extern const pm_char STR_BG[]; +extern const pm_char STR_MENUTOSTART[]; +extern const pm_char STR_SETMIDPOINT[]; +extern const pm_char STR_MOVESTICKSPOTS[]; +extern const pm_char STR_ALT[]; +extern const pm_char STR_RXBATT[]; +extern const pm_char STR_RX[]; +extern const pm_char STR_TX[]; +extern const pm_char STR_HDG[]; +extern const pm_char STR_SPD[]; +extern const pm_char STR_TEMP1[]; +extern const pm_char STR_TEMP2[]; +extern const pm_char STR_RPM[]; +extern const pm_char STR_FUEL[]; +extern const pm_char STR_VOLTS[]; +extern const pm_char STR_ACCEL[]; +extern const pm_char STR_TELE[]; +extern const pm_char STR_RSSI[]; +extern const pm_char STR_NODATA[]; +extern const pm_char STR_TM1[]; +extern const pm_char STR_TM2[]; +extern const pm_char STR_THR[]; +extern const pm_char STR_TH[]; +extern const pm_char STR_TOT[]; +extern const pm_char STR_TMR1LATMAXUS[]; +extern const pm_char STR_TMR1LATMINUS[]; +extern const pm_char STR_TMR1JITTERUS[]; +extern const pm_char STR_TMAINMAXMS[]; +extern const pm_char STR_T10MSUS[]; +extern const pm_char STR_FREESTACKMINB[]; +extern const pm_char STR_MENUTORESET[]; +extern const pm_char STR_PPM[]; +extern const pm_char STR_CH[]; +extern const pm_char STR_TMR[]; +extern const pm_char STR_MODEL[]; +extern const pm_char STR_FP[]; +extern const pm_char STR_EEPROMLOWMEM[]; +extern const pm_char STR_ALERT[]; +extern const pm_char STR_PRESSANYKEYTOSKIP[]; +extern const pm_char STR_THROTTLENOTIDLE[]; +extern const pm_char STR_RESETTHROTTLE[]; +extern const pm_char STR_ALARMSDISABLED[]; +extern const pm_char STR_SWITCHESNOTOFF[]; +extern const pm_char STR_PLEASERESETTHEM[]; +extern const pm_char STR_MESSAGE[]; +extern const pm_char STR_PRESSANYKEY[]; #define LEN_PRESSANYKEY PSIZE(TR_PRESSANYKEY) -extern const PROGMEM char STR_BADEEPROMDATA[]; -extern const PROGMEM char STR_EEPROMFORMATTING[]; -extern const PROGMEM char STR_EEPROMOVERFLOW[]; -extern const PROGMEM char STR_MENUSERROR[]; -extern const PROGMEM char STR_MENURADIOSETUP[]; -extern const PROGMEM char STR_MENUDATEANDTIME[]; -extern const PROGMEM char STR_MENUTRAINER[]; -extern const PROGMEM char STR_MENUVERSION[]; -extern const PROGMEM char STR_MENUDIAG[]; -extern const PROGMEM char STR_MENUANA[]; -extern const PROGMEM char STR_MENUCALIBRATION[]; -extern const PROGMEM char STR_MENUMODELSEL[]; -extern const PROGMEM char STR_MENUSETUP[]; -extern const PROGMEM char STR_MENUFLIGHTPHASE[]; -extern const PROGMEM char STR_MENUFLIGHTPHASES[]; -extern const PROGMEM char STR_MENUHELISETUP[]; -extern const PROGMEM char STR_MENUDREXPO[]; -extern const PROGMEM char STR_MENULIMITS[]; -extern const PROGMEM char STR_MENUCURVES[]; -extern const PROGMEM char STR_MENUCURVE[]; -extern const PROGMEM char STR_MENUCUSTOMSWITCHES[]; -extern const PROGMEM char STR_MENUFUNCSWITCHES[]; -extern const PROGMEM char STR_MENUSAFETYSWITCHES[]; -extern const PROGMEM char STR_MENUTELEMETRY[]; -extern const PROGMEM char STR_MENUTEMPLATES[]; -extern const PROGMEM char STR_MENUSTAT[]; -extern const PROGMEM char STR_MENUDEBUG[]; -extern const PROGMEM char STR_RXNUM[]; -extern const PROGMEM char STR_SYNCMENU[]; -extern const PROGMEM char STR_HAPTICSTRENGTH[]; -extern const PROGMEM char STR_SPKRPITCH[]; +extern const pm_char STR_BADEEPROMDATA[]; +extern const pm_char STR_EEPROMFORMATTING[]; +extern const pm_char STR_EEPROMOVERFLOW[]; +extern const pm_char STR_MENUSERROR[]; +extern const pm_char STR_MENURADIOSETUP[]; +extern const pm_char STR_MENUDATEANDTIME[]; +extern const pm_char STR_MENUTRAINER[]; +extern const pm_char STR_MENUVERSION[]; +extern const pm_char STR_MENUDIAG[]; +extern const pm_char STR_MENUANA[]; +extern const pm_char STR_MENUCALIBRATION[]; +extern const pm_char STR_MENUMODELSEL[]; +extern const pm_char STR_MENUSETUP[]; +extern const pm_char STR_MENUFLIGHTPHASE[]; +extern const pm_char STR_MENUFLIGHTPHASES[]; +extern const pm_char STR_MENUHELISETUP[]; +extern const pm_char STR_MENUDREXPO[]; +extern const pm_char STR_MENULIMITS[]; +extern const pm_char STR_MENUCURVES[]; +extern const pm_char STR_MENUCURVE[]; +extern const pm_char STR_MENUCUSTOMSWITCHES[]; +extern const pm_char STR_MENUFUNCSWITCHES[]; +extern const pm_char STR_MENUSAFETYSWITCHES[]; +extern const pm_char STR_MENUTELEMETRY[]; +extern const pm_char STR_MENUTEMPLATES[]; +extern const pm_char STR_MENUSTAT[]; +extern const pm_char STR_MENUDEBUG[]; +extern const pm_char STR_RXNUM[]; +extern const pm_char STR_SYNCMENU[]; +extern const pm_char STR_HAPTICSTRENGTH[]; +extern const pm_char STR_SPKRPITCH[]; #endif diff --git a/src/open9x.cpp b/src/open9x.cpp index 6e4c40f03..62a8ddaf2 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -22,9 +22,9 @@ #include "open9x.h" #ifdef SPLASH -prog_uchar APM spsMarker[] = { "SPS" }; +const pm_uchar spsMarker[] PROGMEM = { "SPS" }; #include "s9xsplash.lbm" -prog_uchar APM speMarker[] = { "SPE" }; +const pm_uchar speMarker[] PROGMEM = { "SPE" }; #endif #include "menus.h" @@ -51,13 +51,13 @@ audioQueue audio; uint8_t heartbeat; -const prog_char APM s_charTab[] = "_-.,"; +const pm_char s_charTab[] PROGMEM = "_-.,"; //R=1 //E=2 //T=3 //A=4 -const prog_uint8_t APM chout_ar[] = { //First number is 0..23 -> template setup, Second is relevant channel out +const pm_uint8_t chout_ar[] PROGMEM = { //First number is 0..23 -> template setup, Second is relevant channel out 1,2,3,4 , 1,2,4,3 , 1,3,2,4 , 1,3,4,2 , 1,4,2,3 , 1,4,3,2, 2,1,3,4 , 2,1,4,3 , 2,3,1,4 , 2,3,4,1 , 2,4,1,3 , 2,4,3,1, 3,1,2,4 , 3,1,4,2 , 3,2,1,4 , 3,2,4,1 , 3,4,1,2 , 3,4,2,1, @@ -69,7 +69,7 @@ mode2 rud thr ele ail mode3 ail ele thr rud mode4 ail thr ele rud */ -const prog_uint8_t APM modn12x3[]= { +const pm_uint8_t modn12x3[] PROGMEM = { 1, 2, 3, 4, 1, 3, 2, 4, 4, 2, 3, 1, @@ -552,7 +552,7 @@ void checkLowEEPROM() } } -void alertMessages( const prog_char * s, const prog_char * t ) +void alertMessages( const pm_char * s, const pm_char * t ) { lcd_clear(); lcd_putsAtt(64-5*FW,0*FH,STR_ALERT,DBLSIZE); @@ -643,7 +643,7 @@ void checkSwitches() } } -void message(const prog_char * s) +void message(const pm_char * s) { lcd_clear(); lcd_putsAtt(64-5*FW, 0*FH, STR_MESSAGE, DBLSIZE); @@ -652,7 +652,7 @@ void message(const prog_char * s) lcdSetRefVolt(g_eeGeneral.contrast); } -void alert(const prog_char * s, bool defaults) +void alert(const pm_char * s, bool defaults) { lcd_clear(); lcd_putsAtt(64-5*FW, 0*FH, STR_ALERT, DBLSIZE); @@ -766,9 +766,9 @@ static uint16_t s_anaFilt[8]; uint16_t anaIn(uint8_t chan) { // ana-in: 3 1 2 0 4 5 6 7 - //static prog_char APM crossAna[]={4,2,3,1,5,6,7,0}; // wenn schon Tabelle, dann muss sich auch lohnen + //static pm_char crossAna[] PROGMEM ={4,2,3,1,5,6,7,0}; // wenn schon Tabelle, dann muss sich auch lohnen // Google Translate (German): // if table already, then it must also be worthwhile - static prog_char APM crossAna[]={3,1,2,0,4,5,6,7}; + static const pm_char crossAna[] PROGMEM ={3,1,2,0,4,5,6,7}; volatile uint16_t *p = &s_anaFilt[pgm_read_byte(crossAna+chan)]; return *p; } diff --git a/src/open9x.h b/src/open9x.h index d306b5ada..7f113580b 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -52,10 +52,13 @@ //#define __ATTR_PROGMEM__ #include +#undef PROGMEM +#define PROGMEM __attribute__(( section(".progmem.data") )) +#include "pgmtypes.h" #ifdef __cplusplus #define APM __attribute__(( section(".progmem.data") )) #undef PSTR -#define PSTR(s) (__extension__({static prog_char APM __c[] = (s);&__c[0];})) +#define PSTR(s) (__extension__({static const pm_char __c[] PROGMEM = (s);&__c[0];})) #endif #include @@ -252,8 +255,8 @@ extern uint16_t DEBUG2; #define SLAVE_MODE (PING & (1< 1..4 -> 1..4 @@ -433,8 +436,8 @@ extern uint8_t keyDown(); /// Gibt Alarm Maske auf lcd aus. /// Die Maske wird so lange angezeigt bis eine beliebige Taste gedrueckt wird. -void alert(const prog_char * s, bool defaults=false); -void message(const prog_char * s); +void alert(const pm_char * s, bool defaults=false); +void message(const pm_char * s); /// periodisches Hauptprogramm void perMain(); /// Bearbeitet alle zeitkritischen Jobs. diff --git a/src/pgmtypes.h b/src/pgmtypes.h new file mode 100644 index 000000000..00b5ed763 --- /dev/null +++ b/src/pgmtypes.h @@ -0,0 +1,15 @@ +#ifndef __PGMTYPES__ +#define __PGMTYPES__ + +typedef void pm_void; +typedef char pm_char; +typedef unsigned char pm_uchar; +typedef int8_t pm_int8_t; +typedef uint8_t pm_uint8_t; +typedef int16_t pm_int16_t; +typedef uint16_t pm_uint16_t; +typedef int32_t pm_int32_t; +typedef uint32_t pm_uint32_t; + +#endif /* __PGMTYPES__ */ + diff --git a/src/pulses.cpp b/src/pulses.cpp index 7a4ed283d..b74582c8a 100644 --- a/src/pulses.cpp +++ b/src/pulses.cpp @@ -215,7 +215,7 @@ FORCEINLINE void setupPulsesPPM() } #if defined(PXX) -prog_uint16_t APM CRCTable[]= +pm_uint16_t CRCTable[] PROGMEM = { 0x0000,0x1189,0x2312,0x329b,0x4624,0x57ad,0x6536,0x74bf, 0x8c48,0x9dc1,0xaf5a,0xbed3,0xca6c,0xdbe5,0xe97e,0xf8f7, diff --git a/src/s9xsplash.lbm b/src/s9xsplash.lbm index ebce5d92f..0f2c403c1 100644 --- a/src/s9xsplash.lbm +++ b/src/s9xsplash.lbm @@ -1,4 +1,4 @@ -prog_uchar APM s9xsplash[] = { +const pm_uchar s9xsplash[] PROGMEM = { 128,64, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc, diff --git a/src/simpgmspace.h b/src/simpgmspace.h index 9ce23661c..653c339f0 100644 --- a/src/simpgmspace.h +++ b/src/simpgmspace.h @@ -74,12 +74,12 @@ void sig(int sgn) #define APM -typedef unsigned char prog_uchar; -typedef const char prog_char; -typedef const uint16_t prog_uint16_t; -typedef const uint8_t prog_uint8_t; -typedef const int16_t prog_int16_t; -typedef const int8_t prog_int8_t; +typedef unsigned char pm_uchar; +typedef const char pm_char; +typedef const uint16_t pm_uint16_t; +typedef const uint8_t pm_uint8_t; +typedef const int16_t pm_int16_t; +typedef const int8_t pm_int8_t; extern sem_t eeprom_write_sem; diff --git a/src/stamp.cpp b/src/stamp.cpp index bf8af4d06..9587cd4c2 100644 --- a/src/stamp.cpp +++ b/src/stamp.cpp @@ -4,10 +4,10 @@ #define STR2(s) #s #define DEFNUMSTR(s) STR2(s) -const char APM stamp1[] = "VERS: V" VERS_STR; -const char APM stamp2[] = " SVN: " SVN_STR; -const char APM stamp3[] = "DATE: " DATE_STR; -const char APM stamp4[] = "TIME: " TIME_STR; -const char APM stamp5[] = " MOD: " MOD_STR; +const pm_char stamp1[] PROGMEM = "VERS: V" VERS_STR; +const pm_char stamp2[] PROGMEM = " SVN: " SVN_STR; +const pm_char stamp3[] PROGMEM = "DATE: " DATE_STR; +const pm_char stamp4[] PROGMEM = "TIME: " TIME_STR; +const pm_char stamp5[] PROGMEM = " MOD: " MOD_STR; diff --git a/src/sticks.lbm b/src/sticks.lbm index 6854b9017..cfc3ddf5d 100644 --- a/src/sticks.lbm +++ b/src/sticks.lbm @@ -1,4 +1,4 @@ -prog_uchar APM sticks[] = { +const pm_uchar sticks[] PROGMEM = { 18,8, 0x00,0x08,0x1c,0x08,0x08,0x08,0x1c,0x08,0x00,0x00,0x08,0x22,0x00,0x49,0x00,0x22,0x08,0x00, 0x00,0x00,0x00,0x00,0x22,0x7f,0x22,0x00,0x00,0x00,0x08,0x22,0x00,0x49,0x00,0x22,0x08,0x00, diff --git a/src/templates.cpp b/src/templates.cpp index 47fb238de..60495c97e 100644 --- a/src/templates.cpp +++ b/src/templates.cpp @@ -49,14 +49,14 @@ #include "open9x.h" #include "templates.h" -const char stn1[] APM = "Simple 4-CH"; -const char stn2[] APM = "T-Cut"; -const char stn3[] APM = "V-Tail"; -const char stn4[] APM = "Elevon\\Delta"; -const char stn5[] APM = "eCCPM"; -const char stn6[] APM = "Heli Setup"; -const char stn7[] APM = "Servo Test"; -const prog_char* n_Templates[] = +const pm_char stn1[] PROGMEM = "Simple 4-CH"; +const pm_char stn2[] PROGMEM = "T-Cut"; +const pm_char stn3[] PROGMEM = "V-Tail"; +const pm_char stn4[] PROGMEM = "Elevon\\Delta"; +const pm_char stn5[] PROGMEM = "eCCPM"; +const pm_char stn6[] PROGMEM = "Heli Setup"; +const pm_char stn7[] PROGMEM = "Servo Test"; +const pm_char * const n_Templates[] PROGMEM = { stn1, stn2, @@ -92,7 +92,7 @@ void clearCurves() memset(g_model.curves9,0,sizeof(g_model.curves9)); //clear all curves } -void setCurve(uint8_t c, const prog_int8_t ar[]) +void setCurve(uint8_t c, const pm_int8_t ar[]) { if(c