From 9cdf70f9d88a1c592def4096a37edc7091c98585 Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 18 Jan 2012 20:24:15 +0000 Subject: [PATCH] open9x translations --- src/file.cpp | 2 +- src/general_menus.cpp | 88 ++++++------ src/gruvin9x.cpp | 24 ++-- src/gruvin9x.h | 15 --- src/lcd.cpp | 40 +++--- src/main_views.cpp | 40 +++--- src/menus.cpp | 10 +- src/menus.h | 5 +- src/model_menus.cpp | 192 +++++++++++++------------- src/o9xstrings.cpp | 198 ++++++++++++++++++++++++++- src/o9xstrings.h | 249 +++++++++++++++++++++++++++++++--- src/pers.cpp | 4 +- src/pulses.cpp | 2 +- src/statistics_views.cpp | 33 ++--- src/templates.h | 2 - src/translations/en.h | 281 ++++++++++++++++++++++++++++++++++++--- 16 files changed, 903 insertions(+), 282 deletions(-) diff --git a/src/file.cpp b/src/file.cpp index 7397398d4..8cd70c8ba 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -393,7 +393,7 @@ void RlcFile::nextWriteStep() } if (s_write_err == ERR_FULL) { - alert(PSTR("EEPROM overflow")); + alert(STR_EEPROMOVERFLOW); m_write_step = 0; m_write_len = 0; } diff --git a/src/general_menus.cpp b/src/general_menus.cpp index 8616dcd15..f15f32b4a 100644 --- a/src/general_menus.cpp +++ b/src/general_menus.cpp @@ -67,7 +67,7 @@ void menuProcSetup(uint8_t event) #undef PARAM_OFS #define PARAM_OFS 17*FW - SIMPLE_MENU("RADIO SETUP", menuTabDiag, e_Setup, COUNT_ITEMS+1); + SIMPLE_MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, COUNT_ITEMS+1); int8_t sub = m_posVert; @@ -78,14 +78,14 @@ void menuProcSetup(uint8_t event) uint8_t subN = 1; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; @@ -199,7 +199,7 @@ void menuProcSetup(uint8_t event) if(s_pgOfsAETR + lcd_puts_P(0, y,STR_RXCHANNELORD);// RAET->AETR for (uint8_t i=1; i<=4; i++) putsChnLetter((16+i)*FW, y, CHANNEL_ORDER(i), attr); if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.templateSetup, 0, 23); @@ -243,7 +243,7 @@ void menuProcSetup(uint8_t event) }subN++; if(s_pgOfs7*FH) return; @@ -260,7 +260,7 @@ void menuProcSetup(uint8_t event) // SD card interface contains Real-Time-Clock chip void menuProcTime(uint8_t event) { - MENU("DATE AND TIME", menuTabDiag, e_FrskyTime, 3, {0, 2/*, 2*/}); + MENU(STR_MENUDATEANDTIME, menuTabDiag, e_FrskyTime, 3, {0, 2/*, 2*/}); int8_t sub = m_posVert - 1; // vertical position (1 = page counter, top/right) uint8_t subSub = m_posHorz; // horizontal position @@ -354,7 +354,7 @@ void menuProcTime(uint8_t event) void menuProcTrainer(uint8_t event) { - MENU("TRAINER", menuTabDiag, e_Trainer, 7, {0, 2, 2, 2, 2, 0/*, 0*/}); + MENU(STR_MENUTRAINER, menuTabDiag, e_Trainer, 7, {0, 2, 2, 2, 2, 0/*, 0*/}); int8_t sub = m_posVert; uint8_t subSub = m_posHorz; @@ -363,11 +363,11 @@ void menuProcTrainer(uint8_t event) uint8_t blink ; if (SLAVE_MODE) { // i am the slave - lcd_puts_P(7*FW, 3*FH, PSTR("Slave")); + lcd_puts_P(7*FW, 3*FH, STR_SLAVE); return; } - lcd_puts_P(3*FW, 1*FH, PSTR("mode % src")); + lcd_puts_P(3*FW, 1*FH, STR_MODESRC); sub--; y = 2*FH; @@ -400,13 +400,13 @@ void menuProcTrainer(uint8_t event) y += FH; } - lcd_puts_P(0*FW, y, PSTR("Multiplier")); + lcd_puts_P(0*FW, y, STR_MULTIPLIER); lcd_outdezAtt(13*FW, y, g_eeGeneral.PPM_Multiplier+10, (sub==4 ? INVERS : 0)|PREC1); if(sub==4) CHECK_INCDEC_GENVAR(event, g_eeGeneral.PPM_Multiplier, -10, 40); y += FH; edit = (sub==5); - lcd_putsAtt(0*FW, y, PSTR("Cal"), edit ? INVERS : 0); + lcd_putsAtt(0*FW, y, STR_CAL, edit ? INVERS : 0); for (uint8_t i=0; i<4; i++) { uint8_t x = (i*8+16)*FW/2; #if defined (DECIMALS_DISPLAYED) @@ -427,20 +427,20 @@ void menuProcTrainer(uint8_t event) void menuProcDiagVers(uint8_t event) { - SIMPLE_MENU("VERSION", menuTabDiag, e_Vers, 1); + SIMPLE_MENU(STR_MENUVERSION, menuTabDiag, e_Vers, 1); lcd_puts_P(0, 2*FH,stamp4 ); lcd_puts_P(0, 3*FH,stamp1 ); lcd_puts_P(0, 4*FH,stamp5 ); lcd_puts_P(0, 5*FH,stamp2 ); lcd_puts_P(0, 6*FH,stamp3 ); - lcd_puts_P(0, 7*FH,PSTR("EEPROM v")); + lcd_puts_P(0, 7*FH,STR_EEPROMV); lcd_outdezAtt(8*FW, 7*FH, g_eeGeneral.myVers, LEFT); } void menuProcDiagKeys(uint8_t event) { - SIMPLE_MENU("DIAG", menuTabDiag, e_Keys, 1); + SIMPLE_MENU(STR_MENUDIAG, menuTabDiag, e_Keys, 1); for(uint8_t i=0; i<9; i++) { @@ -455,19 +455,19 @@ void menuProcDiagKeys(uint8_t event) { uint8_t y=(5-i)*FH+2*FH; bool t=keyState((EnumKeys)(KEY_MENU+i)); - lcd_putsn_P(0, y, PSTR(" Menu Exit Down UpRight Left")+5*i, 5); + lcd_putsn_P(0, y, STR_VKEYS+LEN_VKEYS*i, LEN_VKEYS); lcd_putcAtt(5*FW+2, y, t+'0', t); } #if defined (PCBV4) for(uint8_t i=0; i<2; i++) { uint8_t y = i*FH + FH; - lcd_putsn_P(14*FW, y, PSTR("RE1RE2")+3*i, 3); + lcd_putsn_P(14*FW, y, STR_RE1RE2+LEN_RE1RE2*i, LEN_RE1RE2); lcd_outdezNAtt(18*FW, y, g_rotenc[i], LEFT|(keyState((EnumKeys)(BTN_RE1+i)) ? INVERS : 0)); } #endif - lcd_putsn_P(14*FW, 3*FH, PSTR("Trim- +"), 7); + lcd_puts_P(14*FW, 3*FH, STR_VTRIM); for(uint8_t i=0; i<4; i++) { uint8_t y=i*FH+FH*4; @@ -481,15 +481,15 @@ void menuProcDiagKeys(uint8_t event) void menuProcDiagAna(uint8_t event) { - SIMPLE_MENU("ANA", menuTabDiag, e_Ana, 2); + SIMPLE_MENU(STR_MENUANA, menuTabDiag, e_Ana, 2); int8_t sub = m_posVert ; for(uint8_t i=0; i<8; i++) { uint8_t y=i*FH; - lcd_putsn_P( 4*FW, y,PSTR("A1A2A3A4A5A6A7A8")+2*i,2); - lcd_outhex4( 8*FW, y,anaIn(i)); + putsStrIdx(4*FW, y, PSTR("A"), i+1); + lcd_outhex4( 8*FW, y, anaIn(i)); if(i<7) lcd_outdez8(17*FW, y, (int32_t)calibratedStick[i]*100/1024); else @@ -498,7 +498,7 @@ void menuProcDiagAna(uint8_t event) // lcd_outdezAtt( 21*FW, 3*FH, g_eeGeneral.vBatCalib, 0) ; // lcd_outdezAtt( 21*FW, 4*FH, abRunningAvg, 0) ; // Display raw BandGap result (debug) - lcd_putsn_P( 19*FW, 5*FH,PSTR("BG"),2) ; + lcd_puts_P( 19*FW, 5*FH, STR_BG) ; lcd_outdezAtt(21*FW, 6*FH, BandGap, 0); lcd_outdezAtt(21*FW, 7*FH, anaIn(7)*35/512, PREC1); @@ -506,11 +506,9 @@ void menuProcDiagAna(uint8_t event) } -const prog_char APM menuWhenDone[] = " [MENU] WHEN DONE "; - void menuProcDiagCalib(uint8_t event) { - SIMPLE_MENU("CALIBRATION", menuTabDiag, e_Calib, 1); + SIMPLE_MENU(STR_MENUCALIBRATION, menuTabDiag, e_Calib, 1); static int16_t midVals[7]; static int16_t loVals[7]; @@ -546,14 +544,14 @@ void menuProcDiagCalib(uint8_t event) case 0: // START CALIBRATION // [MENU] - lcd_putsAtt(2*FW, 3*FH, PSTR(" [MENU] TO START "), 0); + lcd_puts_P(2*FW, 3*FH, STR_MENUTOSTART); break; case 1: // SET MIDPOINT // [MENU] - lcd_putsAtt(2*FW, 2*FH, PSTR(" SET MIDPOINT "), s_noScroll ? INVERS : 0); - lcd_putsnAtt(2*FW, 3*FH, menuWhenDone, 18, 0); + lcd_putsAtt(2*FW, 2*FH, STR_SETMIDPOINT, s_noScroll ? INVERS : 0); + lcd_puts_P(2*FW, 3*FH, STR_MENUWHENDONE); for (uint8_t i=0; i<7; i++) { loVals[i] = 15000; @@ -565,8 +563,8 @@ void menuProcDiagCalib(uint8_t event) case 2: // MOVE STICKS/POTS // [MENU] - lcd_putsAtt(2*FW, 2*FH, PSTR(" MOVE STICKS/POTS "), s_noScroll ? INVERS : 0); - lcd_putsAtt(2*FW, 3*FH, menuWhenDone, 0); + lcd_putsAtt(2*FW, 2*FH, STR_MOVESTICKSPOTS, s_noScroll ? INVERS : 0); + lcd_puts_P(2*FW, 3*FH, STR_MENUWHENDONE); for (uint8_t i=0; i<7; i++) { if (abs(loVals[i]-hiVals[i])>50) { diff --git a/src/gruvin9x.cpp b/src/gruvin9x.cpp index 6fb13ef26..48ce76283 100644 --- a/src/gruvin9x.cpp +++ b/src/gruvin9x.cpp @@ -59,12 +59,6 @@ bool warble = false; uint8_t heartbeat; // TODO reduce these tabs -const prog_char APM modi12x3[]= - "RUD ELE THR AIL " - "RUD THR ELE AIL " - "AIL ELE THR RUD " - "AIL THR ELE RUD "; - const prog_char APM s_charTab[] = "_-.,"; //R=1 @@ -560,17 +554,17 @@ void checkLowEEPROM() if(g_eeGeneral.disableMemoryWarning) return; if(EeFsGetFree() < 200) { - alert(PSTR("EEPROM low mem")); + alert(STR_EEPROMLOWMEM); } } void alertMessages( const prog_char * s, const prog_char * t ) { lcd_clear(); - lcd_putsAtt(64-5*FW,0*FH,PSTR("ALERT"),DBLSIZE); + lcd_putsAtt(64-5*FW,0*FH,STR_ALERT,DBLSIZE); lcd_puts_P(0,4*FH,s); lcd_puts_P(0,5*FH,t); - lcd_puts_P(0,6*FH, PSTR("Press any key to skip") ) ; + lcd_puts_P(0,6*FH, STR_PRESSANYKEYTOSKIP ) ; refreshDisplay(); lcdSetRefVolt(g_eeGeneral.contrast); @@ -592,7 +586,7 @@ void checkTHR() if(v<=lowLim) return; // first - display warning - alertMessages( PSTR("Throttle not idle"), PSTR("Reset throttle") ) ; + alertMessages( STR_THROTTLENOTIDLE, STR_RESETTHROTTLE ) ; //loop until all switches are reset while (1) @@ -620,7 +614,7 @@ void checkTHR() void checkAlarm() // added by Gohst { if(g_eeGeneral.disableAlarmWarning) return; - if(!g_eeGeneral.beeperVal) alert(PSTR("Alarms Disabled")); + if(!g_eeGeneral.beeperVal) alert(STR_ALARMSDISABLED); } void checkSwitches() @@ -628,7 +622,7 @@ void checkSwitches() if(!g_eeGeneral.switchWarning) return; // if warning is on // first - display warning - alertMessages( PSTR("Switches not off"), PSTR("Please reset them") ) ; + alertMessages( STR_SWITCHESNOTOFF, STR_PLEASERESETTHEM ) ; bool state = (g_eeGeneral.switchWarning > 0); @@ -661,7 +655,7 @@ uint8_t g_beepVal[5]; void message(const prog_char * s) { lcd_clear(); - lcd_putsAtt(64-5*FW,0*FH,PSTR("MESSAGE"),DBLSIZE); + lcd_putsAtt(64-5*FW,0*FH,STR_MESSAGE,DBLSIZE); lcd_puts_P(0,4*FW,s); refreshDisplay(); lcdSetRefVolt(g_eeGeneral.contrast); @@ -670,9 +664,9 @@ void message(const prog_char * s) void alert(const prog_char * s, bool defaults) { lcd_clear(); - lcd_putsAtt(64-5*FW,0*FH,PSTR("ALERT"),DBLSIZE); + lcd_putsAtt(64-5*FW,0*FH,STR_ALERT,DBLSIZE); lcd_puts_P(0,4*FH,s); - lcd_puts_P(64-6*FW,7*FH,PSTR("press any Key")); + lcd_puts_P(64-6*FW,7*FH,STR_PRESSANYKEY); refreshDisplay(); lcdSetRefVolt(defaults ? 25 : g_eeGeneral.contrast); beepErr(); diff --git a/src/gruvin9x.h b/src/gruvin9x.h index d23962c0d..bf611f45f 100644 --- a/src/gruvin9x.h +++ b/src/gruvin9x.h @@ -301,19 +301,6 @@ enum EnumKeys { #define CURVE_BASE 7 -#define CSWITCH_STR "---- v>ofs vofs|v|v2 ""v1=v2 ""v1<=v2 " -#define CSW_LEN_FUNC 7 - -#ifdef LOGS -#define LOGS_STR "SDCARD Logs " -#else -#define LOGS_STR -#endif -#define FSWITCH_STR "---- ""Trainer ""Trainer RUD ""Trainer ELE ""Trainer THR ""Trainer AIL ""Instant Trim ""Trims2Offsets "LOGS_STR -#define FSW_LEN_FUNC 14 - -#define SWASH_TYPE_STR "--- ""120 ""120X ""140 ""90 " - #define SWASH_TYPE_120 1 #define SWASH_TYPE_120X 2 #define SWASH_TYPE_140 3 @@ -422,8 +409,6 @@ enum EnumKeys { #define PROTO_SILV_C 5 #define PROTO_CTP1009 6 #define PROT_MAX 6 -#define PROT_STR "PPM PXX DSM2 SILV_ASILV_BSILV_CTRAC09" -#define PROT_STR_LEN 6 extern uint8_t heartbeat; diff --git a/src/lcd.cpp b/src/lcd.cpp index 48d74b1ee..be24519cf 100644 --- a/src/lcd.cpp +++ b/src/lcd.cpp @@ -145,7 +145,7 @@ void lcd_putsnAtt(uint8_t x,uint8_t y,const prog_char * s,uint8_t len,uint8_t mo } void lcd_putsn_P(uint8_t x,uint8_t y,const prog_char * s,uint8_t len) { - lcd_putsnAtt( x,y,s,len,0); + lcd_putsnAtt(x, y, s, len, 0); } void lcd_putsAtt(uint8_t x,uint8_t y,const prog_char * s,uint8_t mode) @@ -405,20 +405,18 @@ void putsStrIdx(uint8_t x, uint8_t y, const prog_char *str, uint8_t idx, uint8_t void putsChnRaw(uint8_t x, uint8_t y, uint8_t idx, uint8_t att) { if (idx==0) - lcd_putsnAtt(x, y, PSTR("----"), 4, att); - else if (idx<=NUM_STICKS) - lcd_putsnAtt(x, y, modi12x3+4*(idx-1), 4, att); + lcd_putsnAtt(x, y, STR_MMMINV, LEN_MMMINV, att); else if (idx<=NUM_STICKS+NUM_POTS+2+3) - lcd_putsnAtt(x,y,PSTR("P1 P2 P3 MAX FULLCYC1CYC2CYC3")+4*(idx-5), 4, att); + lcd_putsnAtt(x, y, STR_VSRCRAW+LEN_VSRCRAW*(idx-1), LEN_VSRCRAW, att); else if (idx<=NUM_STICKS+NUM_POTS+2+3+NUM_PPM) - putsStrIdx(x,y,PSTR("PPM"), idx - (NUM_STICKS+NUM_POTS+2+3), att); + putsStrIdx(x, y, STR_PPM, idx - (NUM_STICKS+NUM_POTS+2+3), att); else if (idx<=NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT) - putsStrIdx(x, y, PSTR("CH"), idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM), att); + putsStrIdx(x, y, STR_CH, idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM), att); else if (idx<=NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT+MAX_TIMERS) - putsStrIdx(x, y, PSTR("TMR"), idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT), att); + putsStrIdx(x, y, STR_TMR, idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT), att); #ifdef FRSKY - else if (idx<=NUM_XCHNRAW) - lcd_putsnAtt(x, y, PSTR(TELEMETRY_CHANNELS)+TELEMETRY_STRLEN*(idx-1-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+MAX_TIMERS+NUM_CHNOUT)), TELEMETRY_STRLEN, att); + else /*if (idx<=NUM_XCHNRAW)*/ + lcd_putsnAtt(x, y, STR_TELEMCHNS+LEN_TELEMCHNS*(idx-1-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+MAX_TIMERS+NUM_CHNOUT)), LEN_TELEMCHNS, att); #endif } @@ -430,7 +428,7 @@ void putsChn(uint8_t x, uint8_t y, uint8_t idx, uint8_t att) void putsChnLetter(uint8_t x, uint8_t y, uint8_t idx, uint8_t attr) { - lcd_putsnAtt(x, y, PSTR("RETA")+idx-1, 1, attr); + lcd_putsnAtt(x, y, STR_RETA123+idx-1, 1, attr); } void putsModelName(uint8_t x, uint8_t y, char *name, uint8_t id, uint8_t att) @@ -438,37 +436,35 @@ void putsModelName(uint8_t x, uint8_t y, char *name, uint8_t id, uint8_t att) uint8_t len = sizeof(g_model.name); while (len>0 && !name[len-1]) --len; if (len==0) { - putsStrIdx(x, y, PSTR("MODEL"), id+1, att|LEADING0); + putsStrIdx(x, y, STR_MODEL, id+1, att|LEADING0); } else { lcd_putsnAtt(x, y, name, sizeof(g_model.name), ZCHAR|att); } } -#define SWITCHES_STR "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC" void putsSwitches(uint8_t x, uint8_t y, int8_t idx, uint8_t att) { switch(idx){ - case 0: lcd_putsAtt(x,y,PSTR("---"),att);return; - case MAX_SWITCH: lcd_putsAtt(x,y,PSTR("ON "),att);return; - case -MAX_SWITCH: lcd_putsAtt(x,y,PSTR("OFF"),att);return; + case 0: lcd_putsnAtt(x, y, STR_MMMINV, LEN_MMMINV, att);return; + case MAX_SWITCH: lcd_putsnAtt(x, y, STR_ONOFF, LEN_OFFON, att);return; + case -MAX_SWITCH: lcd_putsnAtt(x, y, STR_OFFON, LEN_OFFON, att);return; } if (idx<0) lcd_vlineStip(x-2, y, 8, 0x5E/*'!'*/); - lcd_putsnAtt(x, y, PSTR(SWITCHES_STR)+3*(abs(idx)-1), 3, att); + lcd_putsnAtt(x, y, STR_VSWITCHES+LEN_VSWITCHES*(abs(idx)-1), LEN_VSWITCHES, att); } void putsFlightPhase(uint8_t x, uint8_t y, int8_t idx, uint8_t att) { - if (idx==0) { lcd_putsAtt(x,y,PSTR("---"),att); return; } + if (idx==0) { lcd_putsnAtt(x, y, STR_MMMINV, LEN_MMMINV, att); return; } if (idx < 0) { lcd_vlineStip(x-2, y, 8, 0x5E/*'!'*/); idx = -idx; } - putsStrIdx(x, y, PSTR("FP"), idx-1, att); + putsStrIdx(x, y, STR_FP, idx-1, att); } -#define CURV_STR "---x>0x<0|x|f>0f<0|f|" void putsCurve(uint8_t x, uint8_t y, uint8_t idx, uint8_t att) { if (idx < CURVE_BASE) - lcd_putsnAtt(x, y, PSTR(CURV_STR)+3*idx, 3, att); + lcd_putsnAtt(x, y, STR_VCURVEFUNC+LEN_VCURVEFUNC*idx, LEN_VCURVEFUNC, att); else putsStrIdx(x, y, PSTR("c"), idx-CURVE_BASE+1, att); } @@ -480,7 +476,7 @@ void putsTmrMode(uint8_t x, uint8_t y, int8_t mode, uint8_t att) lcd_putcAtt(x-1*FW, y, '!', att); } else if (mode < TMR_VAROFS) { - lcd_putsnAtt(x, y, PSTR("OFFABSTHsTH%THt")+3*mode, 3, att); + lcd_putsnAtt(x, y, STR_VTMRMODES+LEN_VTMRMODES*mode, LEN_VTMRMODES, att); return; } diff --git a/src/main_views.cpp b/src/main_views.cpp index 12e722302..80ec2be08 100644 --- a/src/main_views.cpp +++ b/src/main_views.cpp @@ -84,7 +84,7 @@ void doMainScreenGrphics() #if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) void displayAltitudeLine(uint8_t x, uint8_t y, uint8_t flags) { - lcd_puts_P(x, y, PSTR("Alt:")); + lcd_puts_P(x, y, STR_ALT); uint16_t value = frskyHubData.baroAltitude + baroAltitudeOffset; lcd_outdezAtt(lcd_lastPos, (flags & DBLSIZE) ? y-FH : y, value, flags|LEFT|UNSIGN); lcd_putc(lcd_lastPos, y, 'm') ; @@ -157,7 +157,7 @@ void menuMainView(uint8_t event) JETI_EnableRXD(); // enable JETI-Telemetry reception chainMenu(menuProcJeti); #else - chainMenu(menuProcStatistic2); + chainMenu(menuProcDebug); #endif killEvents(event); break; @@ -333,7 +333,7 @@ void menuMainView(uint8_t event) V_BAR(SCREEN_WIDTH/2-5*4+2+i*5, SCREEN_HEIGHT-8, len) } for (uint8_t i=0; i<12; i++) { - if ((i%6) < 3) lcd_puts_P(i<6 ? 2*FW-2 : 16*FW-2, (i%3)*FH+4*FH, PSTR("SW")); + if ((i%6) < 3) lcd_puts_P(i<6 ? 2*FW-2 : 16*FW-2, (i%3)*FH+4*FH, STR_SW); lcd_putcAtt((i<6 ? 2*FW-2 : 16*FW-2) + 2 * FW + ((i%6) < 3 ? 0 : FW), (i%3)*FH+4*FH, i<9 ? '1'+i : 'A'+i-9, getSwitch(10+i, 0) ? INVERS : 0); } } @@ -376,7 +376,7 @@ void menuMainView(uint8_t event) // Display RX Batt Volts only if a valid channel (A1/A2) has been selected if (g_eeFrsky.rxVoltsChannel >0) { - y+=FH; lcd_puts_P(2*FW, y, PSTR("Rx Batt:")); + y+=FH; lcd_puts_P(2*FW, y, STR_RXBATT); // Rx batt voltage bar frame // Minimum voltage @@ -407,11 +407,11 @@ void menuMainView(uint8_t event) } #endif - lcd_puts_P(0, 6*FH, PSTR("Rx:")); + lcd_puts_P(0, 6*FH, STR_RX); lcd_outdezAtt(3 * FW, 5*FH+2, staticRSSI[0], DBLSIZE|LEFT); lcd_outdezAtt(4 * FW, 7*FH, frskyRSSI[0].min, 0); lcd_outdezAtt(6 * FW, 7*FH, frskyRSSI[0].max, LEFT); - lcd_puts_P(11 * FW - 2, 6*FH, PSTR("Tx:")); + lcd_puts_P(11 * FW - 2, 6*FH, STR_TX); lcd_outdezAtt(14 * FW - 2, 5*FH+2, staticRSSI[1], DBLSIZE|LEFT); lcd_outdezAtt(15 * FW - 2, 7*FH, frskyRSSI[1].min, 0); lcd_outdezAtt(17 * FW - 2, 7*FH, frskyRSSI[1].max, LEFT); @@ -456,20 +456,20 @@ void menuMainView(uint8_t event) lcd_putc(lcd_lastPos+1, 3*FH, frskyHubData.gpsLatitudeNS ? frskyHubData.gpsLatitudeNS : '-'); // Course / Heading - lcd_puts_P(5, 5*FH, PSTR("Hdg:")); + lcd_puts_P(5, 5*FH, STR_HDG); lcd_outdezNAtt(lcd_lastPos, 5*FH, frskyHubData.gpsCourse_bp, LEFT|LEADING0, 3); // before '.' lcd_plot(lcd_lastPos, 6*FH-2, 0); // small decimal point lcd_outdezAtt(lcd_lastPos+2, 5*FH, frskyHubData.gpsCourse_ap, LEFT); // after '.' lcd_putc(lcd_lastPos, 5*FH, '@'); // Speed - lcd_puts_P(76, 5*FH, PSTR("Spd:")); + lcd_puts_P(76, 5*FH, STR_SPD); lcd_outdezAtt(lcd_lastPos, 5*FH, frskyHubData.gpsSpeed_bp, LEFT); // before '.' lcd_plot(lcd_lastPos, 6*FH-2, 0); // small decimal point lcd_outdezAtt(lcd_lastPos+2, 5*FH, frskyHubData.gpsSpeed_ap, LEFT|UNSIGN); // after '.' // Altitude - lcd_puts_P(7*FW, 7*FH, PSTR("Alt:")); + lcd_puts_P(7*FW, 7*FH, STR_ALT); lcd_outdezNAtt(lcd_lastPos, 7*FH, frskyHubData.gpsAltitude_bp, LEFT|LEADING0, 3); // before '.' lcd_plot(lcd_lastPos, 8*FH-2, 0); // small decimal point lcd_outdezAtt(lcd_lastPos+2, 7*FH, frskyHubData.gpsAltitude_ap, LEFT|UNSIGN); // after '.' @@ -479,31 +479,31 @@ void menuMainView(uint8_t event) uint8_t y = 2*FH; // Temperature 1 - lcd_puts_P(0, y, PSTR("Temp1:")); + lcd_puts_P(0, y, STR_TEMP1); lcd_outdezNAtt(lcd_lastPos, y, frskyHubData.temperature1, LEFT); lcd_puts_P(lcd_lastPos, y, PSTR("@C")); y += FH; // Temperature 2 - lcd_puts_P(0, y, PSTR("Temp2:")); + lcd_puts_P(0, y, STR_TEMP2); lcd_outdezNAtt(lcd_lastPos, y, frskyHubData.temperature2, LEFT); lcd_puts_P(lcd_lastPos, y, PSTR("@C")); y += 2*FH; // RPM - lcd_puts_P(0, y, PSTR("RPM:")); + lcd_puts_P(0, y, STR_RPM); lcd_outdezNAtt(lcd_lastPos, y, frskyHubData.rpm, LEFT); y += FH; // Fuel - lcd_puts_P(0, y, PSTR("Fuel:")); + lcd_puts_P(0, y, STR_FUEL); lcd_outdezNAtt(lcd_lastPos, y, frskyHubData.fuelLevel, LEFT); lcd_putc(lcd_lastPos, y, '%'); y += FH; // Volts - lcd_puts_P(0, y, PSTR("Volts:")); + lcd_puts_P(0, y, STR_VOLTS); lcd_outdezNAtt(lcd_lastPos, y, frskyHubData.volts, LEFT); lcd_putc(lcd_lastPos, y, 'V'); y = 2*FH; @@ -513,7 +513,7 @@ void menuMainView(uint8_t event) y += 2*FH; // Acceleromter - lcd_puts_P(11*FW, y, PSTR("Accel")); + lcd_puts_P(11*FW, y, STR_ACCEL); y += FH; lcd_puts_P(11*FW, y, PSTR("x:")); lcd_outdezNAtt(FW*17, y, (int32_t)frskyHubData.accelX * 100 / 256, PREC2); @@ -530,7 +530,7 @@ void menuMainView(uint8_t event) #endif else { y0 = 5*FH; - //lcd_puts_P(2*FW-3, y0, PSTR("Tele:")); + //lcd_puts_P(2*FW-3, y0, STR_TELE); x0 = 4*FW-3; for (int i=0; i<2; i++) { if (g_model.frsky.channels[i].ratio) { @@ -542,15 +542,15 @@ void menuMainView(uint8_t event) } } y0+=FH; - //lcd_puts_P(2*FW-3, y0, PSTR("RSSI:")); - lcd_puts_P(4*FW-3, y0, PSTR("Rx:")); + //lcd_puts_P(2*FW-3, y0, STR_RSSI); + lcd_puts_P(4*FW-3, y0, STR_RX); lcd_outdezAtt(7*FW-3, y0, staticRSSI[0], LEFT); - lcd_puts_P(13*FW-3, y0, PSTR("Tx:")); + lcd_puts_P(13*FW-3, y0, STR_TX); lcd_outdezAtt(16*FW-3, y0, staticRSSI[1], LEFT); } } else { - lcd_putsAtt(22, 40, PSTR("NO DATA"), DBLSIZE); + lcd_putsAtt(22, 40, STR_NODATA, DBLSIZE); } } #endif diff --git a/src/menus.cpp b/src/menus.cpp index c22771988..a417efa0e 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -33,17 +33,11 @@ uint8_t s_noScroll; int16_t g_chans512[NUM_CHNOUT]; // TODO not here! -// TODO does it save flash now? void menu_lcd_onoff( uint8_t x,uint8_t y, uint8_t value, uint8_t mode ) { lcd_putsnAtt(x, y, STR_OFFON+LEN_OFFON*value, LEN_OFFON, mode ? INVERS:0) ; } -void menu_lcd_HYPHINV( uint8_t x,uint8_t y, uint8_t value, uint8_t mode ) -{ - lcd_putsnAtt( x, y, STR_MMMINV+LEN_MMMINV*value, LEN_MMMINV, mode ? INVERS:0) ; -} - void DisplayScreenIndex(uint8_t index, uint8_t count, uint8_t attr) { lcd_outdezAtt(128,0,count,attr); @@ -392,7 +386,7 @@ void popMenu() (*g_menuStack[g_menuStackPtr])(EVT_ENTRY_UP); } else { - alert(PSTR("menuStack underflow")); + alert(STR_MENUSERROR); } } @@ -411,7 +405,7 @@ void pushMenu(MenuFuncP newMenu) if(g_menuStackPtr >= DIM(g_menuStack)) { g_menuStackPtr--; - alert(PSTR("menuStack overflow")); + alert(STR_MENUSERROR); return; } beepKey(); diff --git a/src/menus.h b/src/menus.h index 6f463d521..024eb883c 100644 --- a/src/menus.h +++ b/src/menus.h @@ -45,7 +45,6 @@ extern uint8_t s_noHi; extern uint8_t s_noScroll; void menu_lcd_onoff(uint8_t x, uint8_t y, uint8_t value, uint8_t mode); -void menu_lcd_HYPHINV(uint8_t x, uint8_t y, uint8_t value, uint8_t mode); extern MenuFuncP g_menuStack[5]; extern uint8_t g_menuStackPtr; @@ -67,7 +66,7 @@ void menuMainView(uint8_t event); void menuProcSetup(uint8_t event); void menuProcModelSelect(uint8_t event); void menuProcStatistic(uint8_t event); -void menuProcStatistic2(uint8_t event); +void menuProcDebug(uint8_t event); #if defined(NAVIGATION_POT1) || defined(NAVIGATION_RE1) extern int16_t p1valdiff; @@ -99,7 +98,7 @@ bool check_submenu_simple(uint8_t event, uint8_t maxrow); typedef PROGMEM void (*MenuFuncP_PROGMEM)(uint8_t event); #define TITLEP(pstr) lcd_putsAtt(0,0,pstr,INVERS) -#define TITLE(str) TITLEP(PSTR(str)) +#define TITLE(str) TITLEP(str) #define MENU(title, tab, menu, lines_count, ...) \ TITLE(title); \ diff --git a/src/model_menus.cpp b/src/model_menus.cpp index d1a58721b..1c5080d5e 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -156,7 +156,7 @@ void menuProcModelSelect(uint8_t event) { char name[sizeof(g_model.name)]; - TITLE("MODELSEL"); + TITLE(STR_MENUMODELSEL); // flush eeprom write eeFlush(); @@ -179,7 +179,7 @@ void menuProcModelSelect(uint8_t event) if (!check_submenu_simple(_event_, MAX_MODELS-1)) return; int8_t sub = m_posVert; - lcd_puts_P( 9*FW, 0, PSTR("free")); + lcd_puts_P( 9*FW, 0, STR_FREE); lcd_outdezAtt( 17*FW, 0, EeFsGetFree(),0); DisplayScreenIndex(e_ModelSelect, DIM(menuTabModel), INVERS); @@ -194,7 +194,7 @@ void menuProcModelSelect(uint8_t event) break; case EVT_KEY_LONG(KEY_EXIT): if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && EFile::exists(FILE_MODEL(sub))) { - s_warning = PSTR("DELETE MODEL"); + s_warning = STR_DELETEMODEL; killEvents(_event); break; } @@ -211,7 +211,7 @@ void menuProcModelSelect(uint8_t event) case EVT_KEY_LONG(KEY_MENU): case EVT_KEY_BREAK(KEY_MENU): if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) { - displayPopup(s_copyMode==COPY_MODE ? PSTR("Copying model...") : PSTR("Moving model...")); + displayPopup(s_copyMode==COPY_MODE ? STR_COPYINGMODEL : STR_MOVINGMODEL); eeCheck(true); // force writing of current model data before this is changed uint8_t cur = (16 + sub + s_copyTgtOfs) % 16; @@ -243,7 +243,7 @@ void menuProcModelSelect(uint8_t event) return; } else if (_event == EVT_KEY_LONG(KEY_MENU)) { - displayPopup(PSTR("Loading model...")); + displayPopup(STR_LOADINGMODEL); eeCheck(true); // force writing of current model data before this is changed if (g_eeGeneral.currModel != sub) { g_eeGeneral.currModel = sub; @@ -387,14 +387,14 @@ void EditName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, boo void menuProcModel(uint8_t event) { lcd_outdezNAtt(7*FW,0,g_eeGeneral.currModel+1,INVERS+LEADING0,2); - MENU("SETUP", menuTabModel, e_Model, (g_model.protocol ? 10 : 11), {0,sizeof(g_model.name)-1,2,2,0,0,0,0,6,2,1}); + MENU(STR_MENUSETUP, menuTabModel, e_Model, (g_model.protocol ? 10 : 11), {0,sizeof(g_model.name)-1,2,2,0,0,0,0,6,2,1}); uint8_t sub = m_posVert; uint8_t y = 1*FH; uint8_t subN = 1; if(s_pgOfs7*FH) return; }subN++; @@ -402,7 +402,7 @@ void menuProcModel(uint8_t event) TimerData *timer = &g_model.timer1; for (uint8_t i=0; i<2; i++, timer=&g_model.timer2) { if (s_pgOfsmode, sub==subN && m_posHorz==0 ? ((s_editMode>0) ? BLINK : INVERS) : 0); putsTime(14*FW, y, timer->val, (sub==subN && m_posHorz==1 ? ((s_editMode>0) ? BLINK : INVERS):0), @@ -436,28 +436,28 @@ void menuProcModel(uint8_t event) } if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs NUM_POTS) idx = NUM_STICKS+2+3+NUM_PPM+g_model.thrTraceSrc; else if (g_model.thrTraceSrc > 0) idx = NUM_STICKS+g_model.thrTraceSrc; @@ -467,15 +467,15 @@ void menuProcModel(uint8_t event) }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs0 ? BLINK : INVERS):0)); if(!g_model.protocol) { lcd_putsnAtt(PARAM_OFS+4*FW, y, STR_NCHANNELS+LEN_NCHANNELS*(g_model.ppmNCH+2), LEN_NCHANNELS, ((sub==subN && m_posHorz==1) ? ((s_editMode>0) ? BLINK : INVERS) : 0)); - lcd_putsAtt(PARAM_OFS+11*FW, y, PSTR("u"),0); + lcd_puts_P(PARAM_OFS+11*FW, y, PSTR("u")); lcd_outdezAtt(PARAM_OFS+11*FW, y, (g_model.ppmDelay*50)+300, ((sub==subN && m_posHorz==2) ? ((s_editMode>0) ? BLINK : INVERS) : 0)); } else if (sub==subN) { @@ -517,10 +517,10 @@ void menuProcModel(uint8_t event) if(s_pgOfs0 ? BLINK : INVERS) : 0) | PREC1|LEFT); - lcd_putsnAtt(PARAM_OFS+6*FW, y, PSTR("POSNEG")+3*g_model.pulsePol, 3, (sub==subN && m_posHorz==1) ? INVERS : 0); + lcd_putsnAtt(PARAM_OFS+6*FW, y, STR_POSNEG+LEN_POSNEG*g_model.pulsePol, LEN_POSNEG, (sub==subN && m_posHorz==1) ? INVERS : 0); if(sub==subN && (s_editMode>0 || p1valdiff)) { switch (m_posHorz) { case 0: @@ -545,7 +545,7 @@ void menuProcPhaseOne(uint8_t event) PhaseData *phase = phaseaddress(s_currIdx); putsFlightPhase(13*FW, 0, s_currIdx+1, 0); - SUBMENU("FLIGHT PHASE", (s_currIdx==0 ? 3 : 5), {6, 0, 3/*, 0, 0*/}); + SUBMENU(STR_MENUFLIGHTPHASE, (s_currIdx==0 ? 3 : 5), {6, 0, 3/*, 0, 0*/}); int8_t sub = m_posVert; @@ -554,16 +554,16 @@ void menuProcPhaseOne(uint8_t event) uint8_t attr = sub==k ? INVERS : 0; switch(i) { case 0: - lcd_puts_P(0, y, PSTR("Name")); + lcd_puts_P(0, y, STR_NAME); EditName(10*FW, y, phase->name, sizeof(phase->name), event, attr, m_posHorz); break; case 1: - lcd_puts_P(0, y, PSTR("Switch")); + lcd_puts_P(0, y, STR_SWITCH); putsSwitches(10*FW, y, phase->swtch, attr); if(attr) CHECK_INCDEC_MODELVAR(event, phase->swtch, -MAX_DRSWITCH, MAX_DRSWITCH); break; case 2: - lcd_puts_P(0, y, PSTR("Trims")); + lcd_puts_P(0, y, STR_TRIMS); for (uint8_t t=0; t TRIM_EXTENDED_MAX) { @@ -585,12 +585,12 @@ void menuProcPhaseOne(uint8_t event) } break; case 3: - lcd_puts_P(0, y, PSTR("Fade In")); + lcd_puts_P(0, y, STR_FADEIN); lcd_outdezAtt(10*FW, y, phase->fadeIn, attr|LEFT); if(attr) CHECK_INCDEC_MODELVAR(event, phase->fadeIn, 0, 15); break; case 4: - lcd_puts_P(0, y, PSTR("Fade Out")); + lcd_puts_P(0, y, STR_FADEOUT); lcd_outdezAtt(10*FW, y, phase->fadeOut, attr|LEFT); if(attr) CHECK_INCDEC_MODELVAR(event, phase->fadeOut, 0, 15); break; @@ -600,7 +600,7 @@ void menuProcPhaseOne(uint8_t event) void menuProcPhasesAll(uint8_t event) { - SIMPLE_MENU("FLIGHT PHASES", menuTabModel, e_PhasesAll, 1+MAX_PHASES+1); + SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_PhasesAll, 1+MAX_PHASES+1); int8_t sub = m_posVert - 1; @@ -626,7 +626,7 @@ void menuProcPhasesAll(uint8_t event) putsFlightPhase(0, y, i+1, att); lcd_putsnAtt(4*FW, y, p->name, 6, ZCHAR); if (i == 0) { - lcd_puts_P(11*FW+FW/2, y, PSTR("(default)")); + lcd_puts_P(11*FW+FW/2, y, STR_DEFAULT); } else { putsSwitches(11*FW+FW/2, y, p->swtch, 0); @@ -649,56 +649,62 @@ void menuProcPhasesAll(uint8_t event) } att = (sub==MAX_PHASES && !trimsCheckTimer) ? INVERS : 0; - lcd_putsAtt(0, 7*FH, PSTR("Check Trims"), att); + lcd_putsAtt(0, 7*FH, STR_CHECKTRIMS, att); putsFlightPhase(6*FW, 7*FH, getFlightPhase()+1, att); } #ifdef HELI + +void menu_lcd_HYPHINV( uint8_t x,uint8_t y, uint8_t value, uint8_t mode ) +{ + lcd_putsnAtt( x, y, STR_MMMINV+LEN_MMMINV*value, LEN_MMMINV, mode ? INVERS:0) ; +} + void menuProcHeli(uint8_t event) { - SIMPLE_MENU("HELI SETUP", menuTabModel, e_Heli, 7); + SIMPLE_MENU(STR_MENUHELISETUP, menuTabModel, e_Heli, 7); int8_t sub = m_posVert; uint8_t y = 1*FH; uint8_t subN = 1; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; }subN++; if(s_pgOfs7*FH) return; @@ -743,7 +749,7 @@ void menuProcCurveOne(uint8_t event) static int8_t dfltCrv; static uint8_t autoThrStep; - TITLE("CURVE"); + TITLE(STR_MENUCURVE); lcd_outdezAtt(5*FW+1, 0, s_curveChan+1, INVERS|LEFT); theFile.DisplayProgressBar(20*FW+1); @@ -816,8 +822,8 @@ void menuProcCurveOne(uint8_t event) lcd_outdezAtt(x, y, crv[i], attr); } - lcd_puts_P(0*FW, 7*FH, PSTR("MODE")); - lcd_putsnAtt(5*FW-2, 7*FH, PSTR("EDIT ""PRSET""A.THR")+5*(s_editMode<=0)*m_posHorz, 5, s_editMode>0 || autoThrStep ? 0 : INVERS); + lcd_puts_P(0*FW, 7*FH, STR_MODE); + lcd_putsnAtt(5*FW-2, 7*FH, STR_CURVMODES+LEN_CURVMODES*(s_editMode<=0)*m_posHorz, LEN_CURVMODES, s_editMode>0 || autoThrStep ? 0 : INVERS); if (s_editMode>0 || autoThrStep) { for (uint8_t i=0; i= (expo ? MAX_EXPOS : MAX_MIXERS)) { - s_warning = (expo ? PSTR("No free expo!") : PSTR("No free mixer!")); + s_warning = (expo ? STR_NOFREEEXPO : STR_NOFREEMIXER); return true; } return false; @@ -1038,7 +1044,7 @@ inline void editExpoVals(uint8_t event, uint8_t which, bool edit, uint8_t y, uin if(edit) CHECK_INCDEC_MODELVAR(event, ed->swtch, -MAX_DRSWITCH, MAX_DRSWITCH); break; case 4: - lcd_putsnAtt(6*FW+5, y, PSTR("---x>0x<0")+9-3*ed->mode, 3, invBlk); + lcd_putsnAtt(6*FW+5, y, STR_VWHEN+3*LEN_VWHEN-LEN_VWHEN*ed->mode, LEN_VWHEN, invBlk); if(edit) ed->mode = 4 - checkIncDecModel(event, 4-ed->mode, 1, 3); break; case 5: @@ -1057,14 +1063,14 @@ void menuProcExpoOne(uint8_t event) ExpoData *ed = expoaddress(s_currIdx); putsChnRaw(7*FW+FW/2,0,ed->chn+1,0); - SIMPLE_SUBMENU("DR/EXPO", 6); + SIMPLE_SUBMENU(STR_MENUDREXPO, 6); int8_t sub = m_posVert; uint8_t y = FH; for (uint8_t i=0; i<7; i++) { - lcd_putsnAtt(0, y, PSTR("Weight""Expo ""Phase ""Swtch ""When ""Curve "" ")+6*i, 6, 0); + lcd_putsnAtt(0, y, STR_EXPLABELS+LEN_EXPLABELS*i, LEN_EXPLABELS, 0); editExpoVals(event, i, sub==i, y, s_currIdx); y+=FH; } @@ -1089,7 +1095,7 @@ void menuProcExpoOne(uint8_t event) void menuProcMixOne(uint8_t event) { - TITLEP(s_currCh ? PSTR("INSERT MIX ") : PSTR("EDIT MIX ")); + TITLEP(s_currCh ? STR_INSERTMIX : STR_EDITMIX); MixData *md2 = mixaddress(s_currIdx) ; putsChn(lcd_lastPos+1*FW,0,md2->destCh,0); SIMPLE_SUBMENU_NOTITLE(13); @@ -1103,28 +1109,28 @@ void menuProcMixOne(uint8_t event) uint8_t attr = sub==i ? INVERS : 0; switch(i) { case 0: - lcd_puts_P( 2*FW,y,PSTR("Source")); + lcd_puts_P( 2*FW,y,STR_SOURCE); putsChnRaw( FW*10,y,md2->srcRaw,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->srcRaw, 1,NUM_XCHNRAW); break; case 1: - lcd_puts_P( 2*FW,y,PSTR("Weight")); + lcd_puts_P( 2*FW,y,STR_WEIGHT); lcd_outdezAtt(FW*10,y,md2->weight,attr|LEFT); if(attr) CHECK_INCDEC_MODELVAR( event, md2->weight, -125,125); break; case 2: - lcd_puts_P( 2*FW,y,PSTR("Offset")); + lcd_puts_P( 2*FW,y,STR_OFFSET); lcd_outdezAtt(FW*10,y,md2->sOffset,attr|LEFT); if(attr) CHECK_INCDEC_MODELVAR( event, md2->sOffset, -125,125); break; case 3: // TODO hidden when src is not a STICK as it has no sense - lcd_puts_P( 2*FW,y,PSTR("Trim")); - lcd_putsnAtt(FW*10,y, PSTR("ON OFF")+3*md2->carryTrim,3,attr); //default is 0=ON + lcd_puts_P( 2*FW,y,STR_TRIM); + lcd_putsnAtt(FW*10,y, STR_OFFON+LEN_OFFON*(1-md2->carryTrim), LEN_OFFON, attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->carryTrim, 0,1); break; case 4: - lcd_putsAtt( 2*FW,y,PSTR("Curves"),0); + lcd_puts_P(2*FW, y, STR_CURVES); putsCurve(FW*10, y, md2->curve, attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->curve, 0,MAX_CURVE5+MAX_CURVE9+7-1); if(attr && md2->curve>=CURVE_BASE && event==EVT_KEY_FIRST(KEY_MENU)){ @@ -1133,45 +1139,45 @@ void menuProcMixOne(uint8_t event) } break; case 5: - lcd_puts_P( 2*FW,y,PSTR("Switch")); + lcd_puts_P( 2*FW,y,STR_SWITCH); putsSwitches(10*FW, y,md2->swtch,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->swtch, -MAX_SWITCH, MAX_SWITCH); break; case 6: - lcd_puts_P( 2*FW,y,PSTR("F.Phase")); + lcd_puts_P( 2*FW,y,STR_FPHASE); putsFlightPhase(10*FW, y, md2->phase, attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->phase, -MAX_PHASES, MAX_PHASES); break; case 7: - lcd_puts_P( 2*FW,y,PSTR("Warning")); + lcd_puts_P( 2*FW,y,STR_WARNING); if(md2->mixWarn) lcd_outdezAtt(FW*10,y,md2->mixWarn,attr|LEFT); else - lcd_putsAtt( FW*10,y,PSTR("OFF"),attr); + lcd_puts_P( FW*10,y,STR_OFF); if(attr) CHECK_INCDEC_MODELVAR( event, md2->mixWarn, 0,3); break; case 8: - lcd_puts_P( 2*FW,y,PSTR("Multpx")); - lcd_putsnAtt(10*FW, y,PSTR("Add MultiplyReplace ")+8*md2->mltpx,8,attr); + lcd_puts_P( 2*FW,y,STR_MULTPX); + lcd_putsnAtt(10*FW, y, STR_VMLTPX+LEN_VMLTPX*md2->mltpx, LEN_VMLTPX, attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->mltpx, 0, 2); break; case 9: - lcd_puts_P( 2*FW,y,PSTR("Delay Down")); + lcd_puts_P( 2*FW,y,STR_DELAYDOWN); lcd_outdezAtt(FW*16,y,md2->delayDown,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->delayDown, 0,15); break; case 10: - lcd_puts_P( 2*FW,y,PSTR("Delay Up")); + lcd_puts_P( 2*FW,y,STR_DELAYUP); lcd_outdezAtt(FW*16,y,md2->delayUp,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->delayUp, 0,15); break; case 11: - lcd_puts_P( 2*FW,y,PSTR("Slow Down")); + lcd_puts_P( 2*FW,y,STR_SLOWDOWN); lcd_outdezAtt(FW*16,y,md2->speedDown,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->speedDown, 0,15); break; case 12: - lcd_puts_P( 2*FW,y,PSTR("Slow Up")); + lcd_puts_P( 2*FW,y,STR_SLOWUP); lcd_outdezAtt(FW*16,y,md2->speedUp,attr); if(attr) CHECK_INCDEC_MODELVAR( event, md2->speedUp, 0,15); break; @@ -1188,7 +1194,7 @@ inline void displayMixerLine(uint8_t row, uint8_t mix, uint8_t ch, uint8_t idx, uint8_t y = (row-s_pgOfs)*FH; MixData *md = mixaddress(mix); if (idx > 0) - lcd_putsnAtt(FW, y, PSTR("+=*=:=")+md->mltpx*2, 2, 0); + lcd_putsnAtt(FW, y, STR_VMLTPX2+LEN_VMLTPX2*md->mltpx, LEN_VMLTPX2, 0); putsChnRaw(4*FW+2, y, md->srcRaw, 0); @@ -1258,7 +1264,7 @@ void menuProcExpoMix(uint8_t expo, uint8_t _event_) event -= KEY_EXIT; } - TITLEP(expo ? PSTR("DR/EXPO") : PSTR("MIXER")); + TITLEP(expo ? STR_DREXPO : STR_MIXER); lcd_outdezAtt(lcd_lastPos+2*FW+FW/2, 0, getExpoMixCount(expo)); lcd_puts_P(lcd_lastPos, 0, expo ? PSTR("/14") : PSTR("/32")); SIMPLE_MENU_NOTITLE(menuTabModel, expo ? e_ExposAll : e_MixAll, s_maxLines); @@ -1448,7 +1454,7 @@ void menuProcMixAll(uint8_t event) void menuProcLimits(uint8_t event) { - MENU("LIMITS", menuTabModel, e_Limits, NUM_CHNOUT+2, {0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3/*, 0*/}); + MENU(STR_MENULIMITS, menuTabModel, e_Limits, NUM_CHNOUT+2, {0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3/*, 0*/}); static bool swVal[NUM_CHNOUT]; @@ -1461,7 +1467,7 @@ void menuProcLimits(uint8_t event) if (k==NUM_CHNOUT) { //last line available - add the "copy trim menu" line uint8_t attr = (sub==NUM_CHNOUT) ? INVERS : 0; - lcd_putsAtt(3*FW, y, PSTR("COPY TRIM [MENU]"), s_noHi ? 0 : attr); + lcd_putsAtt(3*FW, y, STR_COPYTRIMMENU, s_noHi ? 0 : attr); if (attr && event==EVT_KEY_LONG(KEY_MENU)) { s_noHi = NO_HI_LEN; killEvents(event); @@ -1516,7 +1522,7 @@ void menuProcLimits(uint8_t event) } break; case 3: - lcd_putsnAtt( 18*FW, y, PSTR("---INV")+ld->revert*3,3,attr); + lcd_putsnAtt(18*FW, y, STR_MMMINV+LEN_MMMINV*ld->revert, LEN_MMMINV, attr); if (active) { CHECK_INCDEC_MODELVAR(event, ld->revert, 0, 1); } @@ -1528,7 +1534,7 @@ void menuProcLimits(uint8_t event) void menuProcCurvesAll(uint8_t event) { - SIMPLE_MENU("CURVES", menuTabModel, e_CurvesAll, 1+MAX_CURVE5+MAX_CURVE9); + SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVE5+MAX_CURVE9); int8_t sub = m_posVert - 1; @@ -1553,7 +1559,7 @@ void menuProcCurvesAll(uint8_t event) if(cv9 && (yd>6)) break; if(yd>7) break; if(!m) m = attr; - putsStrIdx(0, y, PSTR("CV"), k+1, attr); + putsStrIdx(0, y, STR_CV, k+1, attr); int8_t *crv = cv9 ? g_model.curves9[k-MAX_CURVE5] : g_model.curves5[k]; for (uint8_t j = 0; j < (5); j++) { lcd_outdezAtt( j*(3*FW+3) + 7*FW + 2, y, crv[j], 0); @@ -1572,7 +1578,7 @@ void menuProcCurvesAll(uint8_t event) void menuProcCustomSwitches(uint8_t event) { - MENU("CUSTOM SWITCHES", menuTabModel, e_CustomSwitches, NUM_CSW+1, {0, 2/*repeated...*/}); + MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1, {0, 2/*repeated...*/}); uint8_t y = 0; uint8_t k = 0; @@ -1586,9 +1592,9 @@ void menuProcCustomSwitches(uint8_t event) CustomSwData &cs = g_model.customSw[k]; //write SW names here - lcd_putsnAtt( 0*FW , y, PSTR("SW"),2,0); - lcd_putc( 2*FW, y, k + (k>8 ? 'A'-9: '1')); - lcd_putsnAtt( 4*FW - 1, y, PSTR(CSWITCH_STR)+CSW_LEN_FUNC*cs.func,CSW_LEN_FUNC,m_posHorz==0 ? attr : 0); + lcd_puts_P(0*FW, y, STR_SW); + lcd_putc(2*FW, y, k + (k>8 ? 'A'-9: '1')); + lcd_putsnAtt(4*FW - 1, y, STR_VCSWFUNC+LEN_VCSWFUNC*cs.func, LEN_VCSWFUNC, m_posHorz==0 ? attr : 0); uint8_t cstate = CS_STATE(cs.func); int8_t v1_min=0, v1_max=NUM_XCHNRAW, v2_min=0, v2_max=NUM_XCHNRAW; @@ -1673,7 +1679,7 @@ void menuProcCustomSwitches(uint8_t event) void menuProcFunctionSwitches(uint8_t event) { - MENU("FUNC SWITCHES", menuTabModel, e_FunctionSwitches, NUM_FSW+1, {0, 1/*repeated*/}); + MENU(STR_MENUFUNCSWITCHES, menuTabModel, e_FunctionSwitches, NUM_FSW+1, {0, 1/*repeated*/}); uint8_t y = 0; uint8_t k = 0; @@ -1696,7 +1702,7 @@ void menuProcFunctionSwitches(uint8_t event) break; case 1: if (sd->swtch) { - lcd_putsnAtt(5*FW, y, PSTR(FSWITCH_STR)+FSW_LEN_FUNC*sd->func, FSW_LEN_FUNC, attr); + lcd_putsnAtt(5*FW, y, STR_VFSWFUNC+LEN_VFSWFUNC*sd->func, LEN_VFSWFUNC, attr); if (active) { CHECK_INCDEC_MODELVAR( event, sd->func, 0, FUNC_MAX-1); } @@ -1712,7 +1718,7 @@ void menuProcFunctionSwitches(uint8_t event) void menuProcSafetySwitches(uint8_t event) { - MENU("SAFETY SWITCHES", menuTabModel, e_SafetySwitches, NUM_CHNOUT+1, {0, 1/*repeated*/}); + MENU(STR_MENUSAFETYSWITCHES, menuTabModel, e_SafetySwitches, NUM_CHNOUT+1, {0, 1/*repeated*/}); uint8_t y = 0; uint8_t k = 0; @@ -1749,9 +1755,9 @@ void menuProcSafetySwitches(uint8_t event) void menuProcTelemetry(uint8_t event) { #if defined FRSKY_HUB || defined WS_HOW_HIGH - MENU("TELEMETRY", menuTabModel, e_Telemetry, 14, {0, -1, 1, 0, 1, 2, 2, -1, 1, 0, 1, 2, 2, 0}); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 14, {0, -1, 1, 0, 1, 2, 2, -1, 1, 0, 1, 2, 2, 0}); #else - MENU("TELEMETRY", menuTabModel, e_Telemetry, 13, {0, -1, 1, 0, 1, 2, 2, -1, 1, 0, 1, 2, 2}); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 13, {0, -1, 1, 0, 1, 2, 2, -1, 1, 0, 1, 2, 2}); #endif int8_t sub = m_posVert; @@ -1774,16 +1780,16 @@ void menuProcTelemetry(uint8_t event) for (int i=0; i<2; i++) { if(s_pgOfs0 || p1valdiff)) { if (m_posHorz == 0) g_model.frsky.channels[i].ratio = checkIncDec(event, g_model.frsky.channels[i].ratio, 0, 255, EE_MODEL); @@ -1795,7 +1801,7 @@ void menuProcTelemetry(uint8_t event) if(s_pgOfs0 || p1valdiff)) g_model.frsky.channels[i].barMin = checkIncDec(event, g_model.frsky.channels[i].barMin, 0, 255, EE_MODEL); @@ -1814,9 +1820,9 @@ void menuProcTelemetry(uint8_t event) for (int j=0; j<2; j++) { if(s_pgOfs")+ALARM_GREATER(i, j),1,(sub==subN && m_posHorz==1 ? blink:0)); + lcd_puts_P(4, y, STR_ALARM); + lcd_putsnAtt(8*FW, y, STR_VALARM+LEN_VALARM*ALARM_LEVEL(i, j), LEN_VALARM, (sub==subN && m_posHorz==0 ? blink:0)); + lcd_putsnAtt(12*FW, y, STR_VALARMFN+LEN_VALARMFN*ALARM_GREATER(i, j), LEN_VALARMFN,(sub==subN && m_posHorz==1 ? blink:0)); putsTelemetryChannel(14*FW, y, i, g_model.frsky.channels[i].alarms_value[j], (sub==subN && m_posHorz==2 ? blink:0) | LEFT); if(sub==subN && (s_editMode>0 || p1valdiff)) { @@ -1844,15 +1850,13 @@ void menuProcTelemetry(uint8_t event) #if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) if(s_pgOfs7*FH) return; uint8_t attr = s_noHi ? 0 : ((sub==NUM_TEMPLATES) ? INVERS : 0); - lcd_putsAtt( 1*FW,y,PSTR("CLEAR MIXES [MENU]"),attr); + lcd_putsAtt( 1*FW,y,STR_CLEARMIXMENU,attr); y+=FH; } #endif diff --git a/src/o9xstrings.cpp b/src/o9xstrings.cpp index da6016f06..81c9aca09 100644 --- a/src/o9xstrings.cpp +++ b/src/o9xstrings.cpp @@ -12,15 +12,211 @@ const prog_char APM STR_OPEN9X[] = TR_OFFON TR_MMMINV TR_NCHANNELS - TR_BEEPER + TR_VBEEPER TR_ADCFILTER TR_WARNSW TR_TRNMODE TR_TRNCHN + TR_VTRIMINC + TR_RETA123 + TR_VPROTOS + TR_POSNEG + TR_VCURVEFUNC + TR_CURVMODES + TR_EXPLABELS + TR_VMLTPX + TR_VMLTPX2 + TR_VCSWFUNC + TR_VFSWFUNC + TR_VTELEMUNIT + TR_VALARM + TR_VALARMFN + TR_VTELPROTO + TR_VTEMPLATES + TR_VSWASHTYPE + TR_VKEYS + TR_VSWITCHES + TR_VSRCRAW + TR_VTMRMODES + TR_TELEMCHNS #if defined(PCBV3) + TR_RE1RE2 TR_DATETIME #endif ; // 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 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 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 prog_char APM STR_T10MSUS[] = TR_T10MSUS; +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 prog_char APM STR_MENURADIOSETUP[] = TR_MENURADIOSETUP; +#ifdef PCBV3 +const prog_char APM STR_MENUDATEANDTIME[] = 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 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; +#ifdef HELI +const prog_char APM STR_MENUHELISETUP[] = 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; +#ifdef FRSKY +const prog_char APM STR_MENUTELEMETRY[] = TR_MENUTELEMETRY; +#endif +#ifdef TEMPLATES +const prog_char APM STR_MENUTEMPLATES[] = TR_MENUTEMPLATES; +#endif +const prog_char APM STR_MENUSTAT[] = TR_MENUSTAT; +const prog_char APM STR_MENUDEBUG[] = TR_MENUDEBUG; + +#ifdef CTP1009 +const prog_char APM STR_PULSETABOVERFLOW[] = TR_PULSETABOVERFLOW; +#endif + + diff --git a/src/o9xstrings.h b/src/o9xstrings.h index 4f514b484..1d9483cf9 100644 --- a/src/o9xstrings.h +++ b/src/o9xstrings.h @@ -14,33 +14,246 @@ extern const PROGMEM char STR_OPEN9X[]; -#define OFS_OFFON 0 -#define OFS_MMMINV (OFS_OFFON + PSIZE(TR_OFFON)) -#define OFS_NCHANNELS (OFS_MMMINV + PSIZE(TR_MMMINV)) -#define OFS_BEEPER (OFS_NCHANNELS + PSIZE(TR_NCHANNELS)) -#define OFS_ADCFILTER (OFS_BEEPER + PSIZE(TR_BEEPER)) -#define OFS_WARNSW (OFS_ADCFILTER + PSIZE(TR_ADCFILTER)) -#define OFS_TRNMODE (OFS_WARNSW + PSIZE(TR_WARNSW)) -#define OFS_TRNCHN (OFS_TRNMODE + PSIZE(TR_TRNMODE)) +#define OFS_OFFON 0 +#define OFS_MMMINV (OFS_OFFON + PSIZE(TR_OFFON)) +#define OFS_NCHANNELS (OFS_MMMINV + PSIZE(TR_MMMINV)) +#define OFS_VBEEPER (OFS_NCHANNELS + PSIZE(TR_NCHANNELS)) +#define OFS_ADCFILTER (OFS_VBEEPER + PSIZE(TR_VBEEPER)) +#define OFS_WARNSW (OFS_ADCFILTER + PSIZE(TR_ADCFILTER)) +#define OFS_TRNMODE (OFS_WARNSW + PSIZE(TR_WARNSW)) +#define OFS_TRNCHN (OFS_TRNMODE + PSIZE(TR_TRNMODE)) +#define OFS_VTRIMINC (OFS_TRNCHN + PSIZE(TR_TRNCHN)) +#define OFS_RETA123 (OFS_VTRIMINC + PSIZE(TR_VTRIMINC)) +#define OFS_VPROTOS (OFS_RETA123 + PSIZE(TR_RETA123)) +#define OFS_POSNEG (OFS_VPROTOS + PSIZE(TR_VPROTOS)) +#define OFS_VCURVEFUNC (OFS_POSNEG + PSIZE(TR_POSNEG)) +#define OFS_CURVMODES (OFS_VCURVEFUNC + PSIZE(TR_VCURVEFUNC)) +#define OFS_EXPLABELS (OFS_CURVMODES + PSIZE(TR_CURVMODES)) +#define OFS_VMLTPX (OFS_EXPLABELS + PSIZE(TR_EXPLABELS)) +#define OFS_VMLTPX2 (OFS_VMLTPX + PSIZE(TR_VMLTPX)) +#define OFS_VCSWFUNC (OFS_VMLTPX2 + PSIZE(TR_VMLTPX2)) +#define OFS_VFSWFUNC (OFS_VCSWFUNC + PSIZE(TR_VCSWFUNC)) +#define OFS_VTELEMUNIT (OFS_VFSWFUNC + PSIZE(TR_VFSWFUNC)) +#define OFS_VALARM (OFS_VTELEMUNIT + PSIZE(TR_VTELEMUNIT)) +#define OFS_VALARMFN (OFS_VALARM + PSIZE(TR_VALARM)) +#define OFS_VTELPROTO (OFS_VALARMFN + PSIZE(TR_VALARMFN)) +#define OFS_VTEMPLATES (OFS_VTELPROTO + PSIZE(TR_VTELPROTO)) +#define OFS_VSWASHTYPE (OFS_VTEMPLATES + PSIZE(TR_VTEMPLATES)) +#define OFS_VKEYS (OFS_VSWASHTYPE + PSIZE(TR_VSWASHTYPE)) +#define OFS_VSWITCHES (OFS_VKEYS + PSIZE(TR_VKEYS)) +#define OFS_VSRCRAW (OFS_VSWITCHES + PSIZE(TR_VSWITCHES)) +#define OFS_VTMRMODES (OFS_VSRCRAW + PSIZE(TR_VSRCRAW)) +#define OFS_TELEMCHNS (OFS_VTMRMODES + PSIZE(TR_VTMRMODES)) + #if defined(PCBV3) -#define OFS_DATETIME (OFS_TRNCHN + PSIZE(TR_TRNCHN)) +#define OFS_RE1RE2 (OFS_TELEMCHNS + PSIZE(TR_TELEMCHNS)) +#define OFS_DATETIME (OFS_RE1RE2 + PSIZE(TR_RE1RE2)) #endif -#define STR_OFFON (STR_OPEN9X + OFS_OFFON) -#define STR_MMMINV (STR_OPEN9X + OFS_MMMINV) -#define STR_NCHANNELS (STR_OPEN9X + OFS_NCHANNELS) -#define STR_BEEPER (STR_OPEN9X + OFS_BEEPER) -#define STR_ADCFILTER (STR_OPEN9X + OFS_ADCFILTER) -#define STR_WARNSW (STR_OPEN9X + OFS_WARNSW) -#define STR_TRNMODE (STR_OPEN9X + OFS_TRNMODE) -#define STR_TRNCHN (STR_OPEN9X + OFS_TRNCHN) +#define STR_OFFON (STR_OPEN9X + OFS_OFFON) +#define STR_ONOFF (STR_OPEN9X + OFS_OFFON + LEN_OFFON) +#define STR_MMMINV (STR_OPEN9X + OFS_MMMINV) +#define STR_NCHANNELS (STR_OPEN9X + OFS_NCHANNELS) +#define STR_VBEEPER (STR_OPEN9X + OFS_VBEEPER) +#define STR_ADCFILTER (STR_OPEN9X + OFS_ADCFILTER) +#define STR_WARNSW (STR_OPEN9X + OFS_WARNSW) +#define STR_TRNMODE (STR_OPEN9X + OFS_TRNMODE) +#define STR_TRNCHN (STR_OPEN9X + OFS_TRNCHN) +#define STR_VTRIMINC (STR_OPEN9X + OFS_VTRIMINC) +#define STR_RETA123 (STR_OPEN9X + OFS_RETA123) +#define STR_VPROTOS (STR_OPEN9X + OFS_VPROTOS) +#define STR_POSNEG (STR_OPEN9X + OFS_POSNEG) +#define STR_VCURVEFUNC (STR_OPEN9X + OFS_VCURVEFUNC) +#define STR_VWHEN STR_VCURVEFUNC +#define LEN_VWHEN LEN_VCURVEFUNC +#define STR_CURVMODES (STR_OPEN9X + OFS_CURVMODES) +#define STR_EXPLABELS (STR_OPEN9X + OFS_EXPLABELS) +#define STR_VMLTPX (STR_OPEN9X + OFS_VMLTPX) +#define STR_VMLTPX2 (STR_OPEN9X + OFS_VMLTPX2) +#define STR_VCSWFUNC (STR_OPEN9X + OFS_VCSWFUNC) +#define STR_VFSWFUNC (STR_OPEN9X + OFS_VFSWFUNC) +#define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT) +#define STR_VALARM (STR_OPEN9X + OFS_VALARM) +#define STR_VALARMFN (STR_OPEN9X + OFS_VALARMFN) +#define STR_VTELPROTO (STR_OPEN9X + OFS_VTELPROTO) +#define STR_VTEMPLATES (STR_OPEN9X + OFS_VTEMPLATES) +#define STR_VSWASHTYPE (STR_OPEN9X + OFS_VSWASHTYPE) +#define STR_VKEYS (STR_OPEN9X + OFS_VKEYS) +#define STR_VSWITCHES (STR_OPEN9X + OFS_VSWITCHES) +#define STR_VSRCRAW (STR_OPEN9X + OFS_VSRCRAW) +#define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES) +#define STR_TELEMCHNS (STR_OPEN9X + OFS_TELEMCHNS) #if defined(PCBV3) -#define STR_DATETIME (STR_OPEN9X + OFS_DATETIME) +#define STR_RE1RE2 (STR_OPEN9X + OFS_RE1RE2) +#define STR_DATETIME (STR_OPEN9X + OFS_DATETIME) #endif // The 0-terminated-strings extern const PROGMEM char STR_POPUPS[]; +extern const PROGMEM char STR_MENUWHENDONE[]; +extern const PROGMEM char STR_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 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[]; + + +#ifdef CTP1009 +extern const PROGMEM char STR_PULSETABOVERFLOW[]; +#endif #endif diff --git a/src/pers.cpp b/src/pers.cpp index 7bf2763ee..2c54bcee7 100644 --- a/src/pers.cpp +++ b/src/pers.cpp @@ -151,8 +151,8 @@ void eeReadAll() !eeLoadGeneral() ) { - alert(PSTR("Bad EEprom Data"), true); - message(PSTR("EEPROM Formatting")); + alert(STR_BADEEPROMDATA, true); + message(STR_EEPROMFORMATTING); EeFsFormat(); //alert(PSTR("format ok")); generalDefault(); diff --git a/src/pulses.cpp b/src/pulses.cpp index 7481a64f6..67c151f42 100644 --- a/src/pulses.cpp +++ b/src/pulses.cpp @@ -405,7 +405,7 @@ inline void __attribute__ ((always_inline)) setupPulsesTracerCtp1009() sendByteTra( (chk>>4) | (chk<<4) ); _send_hilo( 7000*2, 2000*2 ); } - if((pulses2MHzWPtr-pulses2MHz) >= (signed)DIM(pulses2MHz)) alert(PSTR("pulse tab overflow")); + if((pulses2MHzWPtr-pulses2MHz) >= (signed)DIM(pulses2MHz)) alert(STR_PULSETABOVERFLOW); } #endif diff --git a/src/statistics_views.cpp b/src/statistics_views.cpp index 4a38de855..05e4ca9fc 100644 --- a/src/statistics_views.cpp +++ b/src/statistics_views.cpp @@ -23,11 +23,11 @@ void menuProcStatistic(uint8_t event) { - TITLE("STAT"); + TITLE(STR_MENUSTAT); switch(event) { case EVT_KEY_FIRST(KEY_UP): - chainMenu(menuProcStatistic2); + chainMenu(menuProcDebug); break; case EVT_KEY_FIRST(KEY_DOWN): case EVT_KEY_FIRST(KEY_EXIT): @@ -35,17 +35,17 @@ void menuProcStatistic(uint8_t event) break; } - lcd_puts_P( 1*FW, FH*1, PSTR("TM1")); + lcd_puts_P( 1*FW, FH*1, STR_TM1); putsTime( 5*FW, FH*1, s_timerVal[0], 0, 0); - lcd_puts_P( 17*FW, FH*1, PSTR("TM2")); + lcd_puts_P( 17*FW, FH*1, STR_TM2); putsTime( 12*FW, FH*1, s_timerVal[1], 0, 0); - lcd_puts_P( 1*FW, FH*2, PSTR("THR")); + lcd_puts_P( 1*FW, FH*2, STR_THR); putsTime( 5*FW, FH*2, s_timeCumThr, 0, 0); - lcd_puts_P( 17*FW, FH*2, PSTR("TH%")); + lcd_puts_P( 17*FW, FH*2, STR_TH); putsTime( 12*FW, FH*2, s_timeCum16ThrP/16, 0, 0); - lcd_puts_P( 17*FW, FH*0, PSTR("TOT")); + lcd_puts_P( 17*FW, FH*0, STR_TOT); putsTime( 12*FW, FH*0, s_timeCumTot, 0, 0); uint16_t traceRd = s_traceCnt>MAXTRACE ? s_traceWr : 0; @@ -67,9 +67,10 @@ void menuProcStatistic(uint8_t event) } } -void menuProcStatistic2(uint8_t event) +// TODO ifdef DEBUG +void menuProcDebug(uint8_t event) { - TITLE("STAT2"); + TITLE(STR_MENUDEBUG); switch(event) { case EVT_KEY_FIRST(KEY_MENU): @@ -87,19 +88,19 @@ void menuProcStatistic2(uint8_t event) chainMenu(menuMainView); break; } - lcd_puts_P( 0*FW, 1*FH, PSTR("tmr1Lat max us")); + lcd_puts_P( 0*FW, 1*FH, STR_TMR1LATMAXUS); lcd_outdez8(15*FW , 1*FH, g_tmr1Latency_max/2 ); - lcd_puts_P( 0*FW, 2*FH, PSTR("tmr1Lat min us")); + lcd_puts_P( 0*FW, 2*FH, STR_TMR1LATMINUS); lcd_outdez8(15*FW , 2*FH, g_tmr1Latency_min/2 ); - lcd_puts_P( 0*FW, 3*FH, PSTR("tmr1 Jitter us")); + lcd_puts_P( 0*FW, 3*FH, STR_TMR1JITTERUS); lcd_outdez8(15*FW , 3*FH, (g_tmr1Latency_max - g_tmr1Latency_min) /2 ); - lcd_puts_P( 0*FW, 4*FH, PSTR("tmain max ms")); + lcd_puts_P( 0*FW, 4*FH, STR_TMAINMAXMS); lcd_outdezAtt(15*FW, 4*FH, (g_timeMain*100)/16, PREC2); - lcd_puts_P( 0*FW, 5*FH, PSTR("t10ms us")); + lcd_puts_P( 0*FW, 5*FH, STR_T10MSUS); lcd_outdez8(15*FW , 5*FH, g_time_per10/2 ); #ifndef SIMU - lcd_puts_P( 0*FW, 6*FH, PSTR("Free Stack min b")); + lcd_puts_P( 0*FW, 6*FH, STR_FREESTACKMINB); lcd_outdezAtt(18*FW-1, 6*FH, stack_free(), UNSIGN) ; #endif - lcd_puts_P( 3*FW, 7*FH, PSTR("[MENU] to reset")); + lcd_puts_P( 3*FW, 7*FH, STR_MENUTORESET); } diff --git a/src/templates.h b/src/templates.h index 253e1e5a4..58782c189 100644 --- a/src/templates.h +++ b/src/templates.h @@ -69,8 +69,6 @@ #define CURVE5(x) ((x)-1) #define CURVE9(x) (MAX_CURVE5+(x)-1) -#define TEMPLATES_STR "Simple 4-CH ""T-Cut ""V-Tail ""Elevon\\Delta""eCCPM ""Heli Setup ""Servo Test " -#define TEMPLATES_LEN 12 #define NUM_TEMPLATES 7 void clearMixes(); diff --git a/src/translations/en.h b/src/translations/en.h index f30b8f039..6c9c0c8c8 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -1,31 +1,274 @@ // NON ZERO TERMINATED STRINGS -#define LEN_OFFON 3 -#define TR_OFFON "OFF""ON " +#define LEN_OFFON 3 +#define TR_OFFON "OFF""ON " -#define LEN_MMMINV 3 -#define TR_MMMINV "---""INV" +#define LEN_MMMINV 3 +#define TR_MMMINV "---""INV" -#define LEN_NCHANNELS 4 -#define TR_NCHANNELS "4CH 6CH 8CH 10CH12CH14CH16CH" +#define LEN_NCHANNELS 4 +#define TR_NCHANNELS "4CH 6CH 8CH 10CH12CH14CH16CH" -#define LEN_BEEPER 5 -#define TR_BEEPER "Quiet""NoKey""Norm ""Long ""xLong" +#define LEN_VBEEPER 5 +#define TR_VBEEPER "Quiet""NoKey""Norm ""Long ""xLong" -#define LEN_ADCFILTER 4 -#define TR_ADCFILTER "SING""OSMP""FILT" +#define LEN_ADCFILTER 4 +#define TR_ADCFILTER "SING""OSMP""FILT" -#define LEN_WARNSW 4 -#define TR_WARNSW "Down""OFF ""Up " +#define LEN_WARNSW 4 +#define TR_WARNSW "Down""OFF ""Up " -#define LEN_TRNMODE 3 -#define TR_TRNMODE "off"" +="" :=" +#define LEN_TRNMODE 3 +#define TR_TRNMODE "off"" +="" :=" -#define LEN_TRNCHN 3 -#define TR_TRNCHN "ch1ch2ch3ch4" +#define LEN_TRNCHN 3 +#define TR_TRNCHN "ch1ch2ch3ch4" -#define LEN_DATETIME 5 -#define TR_DATETIME "DATE:""TIME:" +#define LEN_DATETIME 5 +#define TR_DATETIME "DATE:""TIME:" + +#define LEN_VTRIMINC 6 +#define TR_VTRIMINC "Exp ""ExFine""Fine ""Medium""Coarse" + +#define LEN_RETA123 1 +#define TR_RETA123 "RETA123" + +#define LEN_VPROTOS 6 +#define TR_VPROTOS "PPM ""PXX ""DSM2 ""SILV_A""SILV_B""SILV_C""TRAC09" + +#define LEN_POSNEG 3 +#define TR_POSNEG "POS""NEG" + +#define LEN_VCURVEFUNC 3 +#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" + +#define LEN_CURVMODES 5 +#define TR_CURVMODES "EDIT ""PRSET""A.THR" + +#define LEN_EXPLABELS 6 +#define TR_EXPLABELS "Weight""Expo ""Phase ""Swtch ""When ""Curve "" " + +#define LEN_VMLTPX 8 +#define TR_VMLTPX "Add ""Multiply""Replace " + +#define LEN_VMLTPX2 2 +#define TR_VMLTPX2 "+=""*="":=" + +#define LEN_VCSWFUNC 7 +#define TR_VCSWFUNC "---- ""v>ofs ""vofs""|v|v2 ""v1=v2 ""v1<=v2 " + +#define LEN_VFSWFUNC 14 +#ifdef LOGS +#define TR_SDCLOGGS "SDCARD Logs " +#else +#define TR_SDCLOGGS +#endif +#define TR_VFSWFUNC "---- ""Trainer ""Trainer RUD ""Trainer ELE ""Trainer THR ""Trainer AIL ""Instant Trim ""Trims2Offsets "TR_SDCLOGGS + +#define LEN_VTELEMUNIT 1 +#define TR_VTELEMUNIT "v""-" + +#define LEN_VALARM 3 +#define TR_VALARM "---""Yel""Org""Red" + +#define LEN_VALARMFN 1 +#define TR_VALARMFN "<>" + +#define LEN_VTELPROTO 4 +#if defined(WS_HOW_HIGH) +#define TR_VTELPROTO "NoneHub WSHH" +#elif defined(FRSKY_HUB) +#define TR_VTELPROTO "NoneHub " +#endif + +#define LEN_VTEMPLATES 12 +#define TR_VTEMPLATES "Simple 4-CH ""T-Cut ""V-Tail ""Elevon\\Delta""eCCPM ""Heli Setup ""Servo Test " + +#define LEN_VSWASHTYPE 6 +#define TR_VSWASHTYPE "--- ""120 ""120X ""140 ""90 " + +#define LEN_VKEYS 5 +#define TR_VKEYS " Menu"" Exit"" Down"" Up""Right"" Left" + +#define LEN_RE1RE2 3 +#define TR_RE1RE2 "RE1""RE2" + +#define LEN_VSWITCHES 3 +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC" + +#define LEN_VSRCRAW 4 +#define TR_VSRCRAW "RUD ""ELE ""THR ""AIL ""P1 ""P2 ""P3 ""MAX ""FULL""CYC1""CYC2""CYC3" + +#define LEN_VTMRMODES 3 +#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt" + +#define LEN_TELEMCHNS 3 +#if defined(FRSKY_HUB) +#define TR_TELEMCHNS "AD1AD2ALTRPM" +#elif defined(WS_HOW_HIGH) +#define TR_TELEMCHNS "AD1AD2ALT" +#elif defined(FRSKY) +#define TR_TELEMCHNS "AD1AD2" +#endif // ZERO TERMINATED STRINGS -#define TR_POPUPS "[MENU] [EXIT]"; +#define TR_POPUPS "[MENU] [EXIT]" +#define TR_MENUWHENDONE " [MENU] WHEN DONE" +#define TR_FREE "free" +#define TR_DELETEMODEL "DELETE MODEL" +#define TR_COPYINGMODEL "Copying model..." +#define TR_MOVINGMODEL "Moving model..." +#define TR_LOADINGMODEL "Loading model..." +#define TR_NAME "Name" +#define TR_TIMER "Timer" +#define TR_ELIMITS "E.Limits" +#define TR_ETRIMS "E.Trims" +#define TR_TRIMINC "Trim Inc" +#define TR_TTRACE "T-Trace" +#define TR_TTRIM "T-Trim" +#define TR_BEEPCTR "Beep Ctr" +#define TR_PROTO "Proto" +#define TR_PPMFRAME "PPM frame" +#define TR_MS "ms" +#define TR_SWITCH "Switch" +#define TR_TRIMS "Trims" +#define TR_FADEIN "Fade In" +#define TR_FADEOUT "Fade Out" +#define TR_DEFAULT "(default)" +#define TR_CHECKTRIMS "Check Trims" +#define TR_SWASHTYPE "Swash Type" +#define TR_COLLECTIVE "Collective" +#define TR_SWASHRING "Swash Ring" +#define TR_ELEDIRECTION "ELE Direction" +#define TR_AILDIRECTION "AIL Direction" +#define TR_COLDIRECTION "COL Direction" +#define TR_MODE "MODE" +#define TR_NOFREEEXPO "No free expo!" +#define TR_NOFREEMIXER "No free mixer!" +#define TR_INSERTMIX "INSERT MIX " +#define TR_EDITMIX "EDIT MIX " +#define TR_SOURCE "Source" +#define TR_WEIGHT "Weight" +#define TR_OFFSET "Offset" +#define TR_TRIM "Trim" +#define TR_CURVES "Curves" +#define TR_FPHASE "F.Phase" +#define TR_WARNING "Warning" +#define TR_OFF "OFF" +#define TR_MULTPX "Multpx" +#define TR_DELAYDOWN "Delay Down" +#define TR_DELAYUP "Delay Up" +#define TR_SLOWDOWN "Slow Down" +#define TR_SLOWUP "Slow Up" +#define TR_DREXPO "DR/EXPO" +#define TR_MIXER "MIXER" +#define TR_COPYTRIMMENU "COPY TRIM [MENU]" +#define TR_CV "CV" +#define TR_SW "SW" +#define TR_ACHANNEL "A channel" +#define TR_MAX "Max" +#define TR_CALIB "Calib" +#define TR_BAR "Bar" +#define TR_ALARM "Alarm" +#define TR_USRPROTO "UsrProto" +#define TR_CLEARMIXMENU "CLEAR MIXES [MENU]" +#define TR_BEEPER "Beeper" +#define TR_CONTRAST "Contrast" +#define TR_BATTERYWARNING "Battery warning" +#define TR_INACTIVITYALARM "Inactivity alarm" +#define TR_FILTERADC "Filter ADC" +#define TR_THROTTLEREVERSE "Throttle reverse" +#define TR_MINUTEBEEP "Minute beep" +#define TR_BEEPCOUNTDOWN "Beep countdown" +#define TR_FLASHONBEEP "Flash on beep" +#define TR_LIGHTSWITCH "Light switch" +#define TR_LIGHTOFFAFTER "Light off after" +#define TR_SPLASHSCREEN "Splash screen" +#define TR_THROTTLEWARNING "Throttle Warning" +#define TR_SWITCHWARNING "Switch Warning" +#define TR_MEMORYWARNING "Memory Warning" +#define TR_ALARMWARNING "Alarm Warning" +#define TR_NODATAALARM "NO DATA Alarm" +#define TR_RXCHANNELORD "Rx Channel Ord" +#define TR_MODE2 "Mode" +#define TR_SLAVE "Slave" +#define TR_MODESRC "mode % src" +#define TR_MULTIPLIER "Multiplier" +#define TR_CAL "Cal" +#define TR_EEPROMV "EEPROM v" +#define TR_VTRIM "Trim- +" +#define TR_BG "BG" +#define TR_MENUTOSTART " [MENU] TO START " +#define TR_SETMIDPOINT " SET MIDPOINT " +#define TR_MOVESTICKSPOTS " MOVE STICKS/POTS " +#define TR_ALT "Alt:" +#define TR_RXBATT "Rx Batt:" +#define TR_RX "Rx:" +#define TR_TX "Tx:" +#define TR_HDG "Hdg:" +#define TR_SPD "Spd:" +#define TR_TEMP1 "Temp1:" +#define TR_TEMP2 "Temp2:" +#define TR_RPM "RPM:" +#define TR_FUEL "Fuel:" +#define TR_VOLTS "Volts:" +#define TR_ACCEL "Accel" +#define TR_TELE "Tele:" +#define TR_RSSI "RSSI:" +#define TR_NODATA "NO DATA" +#define TR_TM1 "TM1" +#define TR_TM2 "TM2" +#define TR_THR "THR" +#define TR_TH "TH%" +#define TR_TOT "TOT" +#define TR_TMR1LATMAXUS "tmr1Lat max us" +#define TR_TMR1LATMINUS "tmr1Lat min us" +#define TR_TMR1JITTERUS "tmr1 Jitter us" +#define TR_TMAINMAXMS "tmain max ms" +#define TR_T10MSUS "t10ms us" +#define TR_FREESTACKMINB "Free Stack min b" +#define TR_MENUTORESET "[MENU] to reset" +#define TR_PPM "PPM" +#define TR_CH "CH" +#define TR_TMR "TMR" +#define TR_MODEL "MODEL" +#define TR_FP "FP" +#define TR_EEPROMLOWMEM "EEPROM low mem" +#define TR_ALERT "ALERT" +#define TR_PRESSANYKEYTOSKIP "Press any key to skip" +#define TR_THROTTLENOTIDLE "Throttle not idle" +#define TR_RESETTHROTTLE "Reset throttle" +#define TR_ALARMSDISABLED "Alarms Disabled" +#define TR_SWITCHESNOTOFF "Switches not off" +#define TR_PLEASERESETTHEM "Please reset them" +#define TR_MESSAGE "MESSAGE" +#define TR_PRESSANYKEY "press any Key" +#define TR_BADEEPROMDATA "Bad EEprom Data" +#define TR_EEPROMFORMATTING "EEPROM Formatting" +#define TR_EEPROMOVERFLOW "EEPROM overflow" +#define TR_PULSETABOVERFLOW "PULSES OVERFLOW" + +#define TR_MENURADIOSETUP "RADIO SETUP" +#define TR_MENUDATEANDTIME "DATE AND TIME" +#define TR_MENUTRAINER "TRAINER" +#define TR_MENUVERSION "VERSION" +#define TR_MENUDIAG "DIAG" +#define TR_MENUANA "ANA" +#define TR_MENUCALIBRATION "CALIBRATION" +#define TR_MENUSERROR "MENUS OVERFLOW" +#define TR_MENUMODELSEL "MODELSEL" +#define TR_MENUSETUP "SETUP" +#define TR_MENUFLIGHTPHASE "FLIGHT PHASE" +#define TR_MENUFLIGHTPHASES "FLIGHT PHASES" +#define TR_MENUHELISETUP "HELI SETUP" +#define TR_MENUDREXPO "DR/EXPO" +#define TR_MENULIMITS "LIMITS" +#define TR_MENUCURVES "CURVES" +#define TR_MENUCURVE "CURVE" +#define TR_MENUCUSTOMSWITCHES "CUSTOM SWITCHES" +#define TR_MENUFUNCSWITCHES "FUNC SWITCHES" +#define TR_MENUSAFETYSWITCHES "SAFETY SWITCHES" +#define TR_MENUTELEMETRY "TELEMETRY" +#define TR_MENUTEMPLATES "TEMPLATES" +#define TR_MENUSTAT "STAT" +#define TR_MENUDEBUG "DEBUG"