mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 00:05:17 +03:00
open9x translations
This commit is contained in:
parent
40d418c007
commit
9cdf70f9d8
16 changed files with 903 additions and 282 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Beeper"));
|
||||
lcd_putsnAtt(PARAM_OFS - FW, y, STR_BEEPER+LEN_BEEPER*g_eeGeneral.beeperVal, LEN_BEEPER, (sub==subN ? INVERS:0));
|
||||
lcd_puts_P(0, y, STR_BEEPER);
|
||||
lcd_putsnAtt(PARAM_OFS - FW, y, STR_VBEEPER+LEN_VBEEPER*g_eeGeneral.beeperVal, LEN_VBEEPER, (sub==subN ? INVERS:0));
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.beeperVal, 0, 4);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Contrast"));
|
||||
lcd_puts_P(0, y, STR_CONTRAST);
|
||||
lcd_outdezAtt(PARAM_OFS,y,g_eeGeneral.contrast,(sub==subN ? INVERS : 0)|LEFT);
|
||||
if(sub==subN) {
|
||||
CHECK_INCDEC_GENVAR(event, g_eeGeneral.contrast, 10, 45);
|
||||
|
@ -95,14 +95,14 @@ void menuProcSetup(uint8_t event)
|
|||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Battery warning"));
|
||||
lcd_puts_P(0, y,STR_BATTERYWARNING);
|
||||
putsVolts(PARAM_OFS, y, g_eeGeneral.vBatWarn, (sub==subN ? INVERS : 0)|LEFT);
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 40, 120); //4-12V
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Inactivity alarm"));
|
||||
lcd_puts_P(0, y,STR_INACTIVITYALARM);
|
||||
lcd_outdezAtt(PARAM_OFS, y, g_eeGeneral.inactivityTimer, (sub==subN ? INVERS : 0)|LEFT);
|
||||
lcd_putc(lcd_lastPos, y, 'm');
|
||||
if(sub==subN) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes
|
||||
|
@ -110,49 +110,49 @@ void menuProcSetup(uint8_t event)
|
|||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Filter ADC"));
|
||||
lcd_puts_P(0, y,STR_FILTERADC);
|
||||
lcd_putsnAtt(PARAM_OFS, y, STR_ADCFILTER+LEN_ADCFILTER*g_eeGeneral.filterInput, LEN_ADCFILTER, (sub==subN ? INVERS:0));
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.filterInput, 0, 2);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y,PSTR("Throttle reverse"));
|
||||
lcd_puts_P(0, y,STR_THROTTLEREVERSE);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_eeGeneral.throttleReversed, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.throttleReversed, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Minute beep"));
|
||||
lcd_puts_P(0, y, STR_MINUTEBEEP);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_eeGeneral.minuteBeep, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.minuteBeep, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Beep countdown"));
|
||||
lcd_puts_P(0, y, STR_BEEPCOUNTDOWN);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_eeGeneral.preBeep, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.preBeep, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Flash on beep"));
|
||||
lcd_puts_P(0, y, STR_FLASHONBEEP);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_eeGeneral.flashBeep, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.flashBeep, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Light switch"));
|
||||
lcd_puts_P(0, y, STR_LIGHTSWITCH);
|
||||
putsSwitches(PARAM_OFS,y,g_eeGeneral.lightSw,sub==subN ? INVERS : 0);
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.lightSw, -MAX_SWITCH, MAX_SWITCH);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Light off after"));
|
||||
lcd_puts_P(0, y, STR_LIGHTOFFAFTER);
|
||||
if(g_eeGeneral.lightAutoOff) {
|
||||
lcd_outdezAtt(PARAM_OFS, y, g_eeGeneral.lightAutoOff*5,LEFT|(sub==subN ? INVERS : 0));
|
||||
lcd_putc(lcd_lastPos, y, 's');
|
||||
|
@ -167,7 +167,7 @@ void menuProcSetup(uint8_t event)
|
|||
#ifdef SPLASH
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t b = 1-g_eeGeneral.disableSplashScreen;
|
||||
lcd_puts_P(0, y,PSTR("Splash screen"));
|
||||
lcd_puts_P(0, y,STR_SPLASHSCREEN);
|
||||
menu_lcd_onoff( PARAM_OFS, y, b, sub==subN ) ;
|
||||
if(sub==subN)
|
||||
{
|
||||
|
@ -180,7 +180,7 @@ void menuProcSetup(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t b = 1-g_eeGeneral.disableThrottleWarning;
|
||||
lcd_puts_P(0, y,PSTR("Throttle Warning"));
|
||||
lcd_puts_P(0, y,STR_THROTTLEWARNING);
|
||||
menu_lcd_onoff( PARAM_OFS, y, b, sub==subN ) ;
|
||||
if(sub==subN)
|
||||
{
|
||||
|
@ -191,7 +191,7 @@ void menuProcSetup(uint8_t event)
|
|||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Switch Warning"));
|
||||
lcd_puts_P(0, y, STR_SWITCHWARNING);
|
||||
lcd_putsnAtt(PARAM_OFS, y, STR_WARNSW+LEN_WARNSW*(1+g_eeGeneral.switchWarning), LEN_WARNSW, (sub==subN ? INVERS:0));
|
||||
if(sub==subN) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchWarning, -1, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
|
@ -199,7 +199,7 @@ void menuProcSetup(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t b = 1-g_eeGeneral.disableMemoryWarning;
|
||||
lcd_puts_P(0, y, PSTR("Memory Warning"));
|
||||
lcd_puts_P(0, y, STR_MEMORYWARNING);
|
||||
menu_lcd_onoff( PARAM_OFS, y, b, sub==subN ) ;
|
||||
if(sub==subN)
|
||||
{
|
||||
|
@ -211,7 +211,7 @@ void menuProcSetup(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t b = 1-g_eeGeneral.disableAlarmWarning;
|
||||
lcd_puts_P(0, y,PSTR("Alarm Warning"));
|
||||
lcd_puts_P(0, y,STR_ALARMWARNING);
|
||||
menu_lcd_onoff( PARAM_OFS, y, b, sub==subN ) ;
|
||||
if(sub==subN)
|
||||
{
|
||||
|
@ -223,7 +223,7 @@ void menuProcSetup(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t b = g_eeGeneral.enableTelemetryAlarm;
|
||||
lcd_puts_P(0, y,PSTR("NO DATA Alarm"));
|
||||
lcd_puts_P(0, y,STR_NODATAALARM);
|
||||
menu_lcd_onoff( PARAM_OFS, y, b, sub==subN ) ;
|
||||
if(sub==subN)
|
||||
{
|
||||
|
@ -235,7 +235,7 @@ void menuProcSetup(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
uint8_t attr = sub==subN?INVERS:0;
|
||||
lcd_puts_P(0, y,PSTR("Rx Channel Ord"));// RAET->AETR
|
||||
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_pgOfs<subN) {
|
||||
lcd_puts_P( 1*FW, y, PSTR("Mode"));
|
||||
lcd_puts_P( 1*FW, y, STR_MODE2); // TODO STR_MODE would save flash
|
||||
if(y<7*FH) {for(uint8_t i=0; i<4; i++) lcd_img((6+4*i)*FW, y, sticks,i,0); }
|
||||
if((y+=FH)>7*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,14 +481,14 @@ 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);
|
||||
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);
|
||||
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -301,19 +301,6 @@ enum EnumKeys {
|
|||
|
||||
#define CURVE_BASE 7
|
||||
|
||||
#define CSWITCH_STR "---- v>ofs v<ofs |v|>ofs|v|<ofsAND OR XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<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;
|
||||
|
||||
|
|
38
src/lcd.cpp
38
src/lcd.cpp
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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); \
|
||||
|
|
|
@ -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_pgOfs<subN) {
|
||||
lcd_puts_P(0*FW, y, PSTR("Name"));
|
||||
lcd_puts_P(0*FW, y, STR_NAME);
|
||||
EditName(PARAM_OFS, y, g_model.name, sizeof(g_model.name), event, sub==subN, m_posHorz);
|
||||
if((y+=FH)>7*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_pgOfs<subN) {
|
||||
lcd_putsnAtt(0*FW, y, PSTR("Timer1Timer2")+6*i, 6, 0);
|
||||
putsStrIdx(0*FW, y, STR_TIMER, i+1);
|
||||
putsTmrMode(PARAM_OFS, y, timer->mode, 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_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("E.Limits"));
|
||||
lcd_puts_P( 0, y, STR_ELIMITS);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_model.extendedLimits, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event,g_model.extendedLimits,0,1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("E.Trims"));
|
||||
lcd_puts_P( 0, y, STR_ETRIMS);
|
||||
menu_lcd_onoff( PARAM_OFS, y, g_model.extendedTrims, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event,g_model.extendedTrims,0,1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("Trim Inc"));
|
||||
lcd_putsnAtt( PARAM_OFS, y, PSTR("Exp ExFineFine MediumCoarse")+6*g_model.trimInc,6,(sub==subN ? INVERS:0));
|
||||
lcd_puts_P( 0, y, STR_TRIMINC);
|
||||
lcd_putsnAtt(PARAM_OFS, y, STR_VTRIMINC+LEN_VTRIMINC*g_model.trimInc, LEN_VTRIMINC, (sub==subN ? INVERS:0));
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event,g_model.trimInc,0,4);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("T-Trace"));
|
||||
lcd_puts_P( 0, y, STR_TTRACE);
|
||||
int8_t idx = 3;
|
||||
if (g_model.thrTraceSrc > 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_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("T-Trim"));
|
||||
lcd_puts_P( 0, y, STR_TTRIM);
|
||||
menu_lcd_onoff(PARAM_OFS, y, g_model.thrTrim, sub==subN && m_posHorz==0) ;
|
||||
if (sub==subN) CHECK_INCDEC_MODELVAR(event,g_model.thrTrim,0,1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("Beep Ctr"));
|
||||
for(uint8_t i=0;i<7;i++) lcd_putsnAtt(PARAM_OFS+i*FW, y, PSTR("RETA123")+i,1, ((m_posHorz==i) && (sub==subN)) ? BLINK : ((g_model.beepANACenter & (1<<i)) ? INVERS : 0 ) );
|
||||
lcd_puts_P( 0, y, STR_BEEPCTR);
|
||||
for(uint8_t i=0;i<7;i++) lcd_putsnAtt(PARAM_OFS+i*FW, y, STR_RETA123+LEN_RETA123*i, LEN_RETA123, ((m_posHorz==i) && (sub==subN)) ? BLINK : ((g_model.beepANACenter & (1<<i)) ? INVERS : 0 ) );
|
||||
if(sub==subN){
|
||||
if((event==EVT_KEY_FIRST(KEY_MENU)) || p1valdiff) {
|
||||
killEvents(event);
|
||||
|
@ -488,12 +488,12 @@ void menuProcModel(uint8_t event)
|
|||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P(0, y, PSTR("Proto"));
|
||||
lcd_putsnAtt(PARAM_OFS, y, PSTR(PROT_STR)+PROT_STR_LEN*g_model.protocol,PROT_STR_LEN,
|
||||
lcd_puts_P(0, y, STR_PROTO);
|
||||
lcd_putsnAtt(PARAM_OFS, y, STR_VPROTOS+LEN_VPROTOS*g_model.protocol, LEN_VPROTOS,
|
||||
(sub==subN && m_posHorz==0 ? (s_editMode>0 ? 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_pgOfs<subN) {
|
||||
if (!g_model.protocol) {
|
||||
lcd_puts_P(0, y, PSTR("PPM frame"));
|
||||
lcd_puts_P(PARAM_OFS+3*FW, y, PSTR("ms"));
|
||||
lcd_puts_P(0, y, STR_PPMFRAME);
|
||||
lcd_puts_P(PARAM_OFS+3*FW, y, STR_MS);
|
||||
lcd_outdezAtt(PARAM_OFS, y, (int16_t)g_model.ppmFrameLength*5 + 225, ((sub==subN && m_posHorz==0) ? (s_editMode>0 ? 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<NUM_STICKS; t++) {
|
||||
int16_t v = getTrimValue(s_currIdx, t);
|
||||
if (v > 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_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("Swash Type"));
|
||||
lcd_putsnAtt( 14*FW, y, PSTR(SWASH_TYPE_STR)+6*g_model.swashR.type,6,(sub==subN ? INVERS:0));
|
||||
lcd_puts_P( 0, y, STR_SWASHTYPE);
|
||||
lcd_putsnAtt( 14*FW, y, STR_VSWASHTYPE+LEN_VSWASHTYPE*g_model.swashR.type, LEN_VSWASHTYPE, (sub==subN ? INVERS:0));
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event,g_model.swashR.type,0,SWASH_TYPE_NUM);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("Collective"));
|
||||
lcd_puts_P( 0, y, STR_COLLECTIVE);
|
||||
putsChnRaw(14*FW, y, g_model.swashR.collectiveSource, sub==subN ? INVERS : 0);
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.swashR.collectiveSource, 0, NUM_XCHNRAW);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("Swash Ring"));
|
||||
lcd_puts_P( 0, y, STR_SWASHRING);
|
||||
lcd_outdezAtt(14*FW, y, g_model.swashR.value, LEFT|(sub==subN ? INVERS : 0));
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.swashR.value, 0, 100);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("ELE Direction"));
|
||||
lcd_puts_P( 0, y, STR_ELEDIRECTION);
|
||||
menu_lcd_HYPHINV( 14*FW, y, g_model.swashR.invertELE, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.swashR.invertELE, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("AIL Direction"));
|
||||
lcd_puts_P( 0, y, STR_AILDIRECTION);
|
||||
menu_lcd_HYPHINV( 14*FW, y, g_model.swashR.invertAIL, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.swashR.invertAIL, 0, 1);
|
||||
if((y+=FH)>7*FH) return;
|
||||
}subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
lcd_puts_P( 0, y, PSTR("COL Direction"));
|
||||
lcd_puts_P( 0, y, STR_COLDIRECTION);
|
||||
menu_lcd_HYPHINV( 14*FW, y, g_model.swashR.invertCOL, sub==subN ) ;
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.swashR.invertCOL, 0, 1);
|
||||
if((y+=FH)>7*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<points; i++) {
|
||||
|
@ -860,7 +866,7 @@ bool reachExpoMixCountLimit(uint8_t expo)
|
|||
{
|
||||
// check mixers count limit
|
||||
if (getExpoMixCount(expo) >= (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_puts_P(0*FW, y, STR_SW);
|
||||
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_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_pgOfs<subN) {
|
||||
y=(subN-s_pgOfs)*FH;
|
||||
lcd_putsAtt(0, y, PSTR("A channel"), 0);
|
||||
lcd_puts_P(0, y, STR_ACHANNEL);
|
||||
lcd_outdezAtt(2*FW, y, 1+i, 0);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
y=(subN-s_pgOfs)*FH;
|
||||
lcd_putsAtt(4, y, PSTR("Max"), 0);
|
||||
lcd_puts_P(4, y, STR_MAX);
|
||||
putsTelemetryValue(8*FW, y, g_model.frsky.channels[i].ratio, g_model.frsky.channels[i].type, (sub==subN && m_posHorz==0 ? blink:0)|NO_UNIT|LEFT);
|
||||
lcd_putsnAtt(lcd_lastPos, y, PSTR("v-")+g_model.frsky.channels[i].type, 1, (sub==subN && m_posHorz==1 ? blink:0));
|
||||
lcd_putsnAtt(lcd_lastPos, y, STR_VTELEMUNIT+LEN_VTELEMUNIT*g_model.frsky.channels[i].type, LEN_VTELEMUNIT, (sub==subN && m_posHorz==1 ? blink:0));
|
||||
if (sub==subN && (s_editMode>0 || 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_pgOfs<subN) {
|
||||
y=(subN-s_pgOfs)*FH;
|
||||
lcd_putsAtt(4, y, PSTR("Calib"), 0);
|
||||
lcd_puts_P(4, y, STR_CALIB);
|
||||
putsTelemetryChannel(8*FW, y, i, frskyTelemetry[i].value, (sub==subN ? blink:0)|LEFT);
|
||||
if(sub==subN) CHECK_INCDEC_MODELVAR(event, g_model.frsky.channels[i].offset, -127, 127);
|
||||
}
|
||||
|
@ -1803,7 +1809,7 @@ void menuProcTelemetry(uint8_t event)
|
|||
|
||||
if(s_pgOfs<subN) {
|
||||
y=(subN-s_pgOfs)*FH;
|
||||
lcd_puts_P(4, y, PSTR("Bar"));
|
||||
lcd_puts_P(4, y, STR_BAR);
|
||||
putsTelemetryChannel(8*FW, y, i, g_model.frsky.channels[i].barMin, (sub==subN && m_posHorz==0 ? blink:0)|LEFT);
|
||||
putsTelemetryChannel(13*FW, y, i, g_model.frsky.channels[i].barMax, (sub==subN && m_posHorz==1 ? blink:0)|LEFT);
|
||||
if(sub==subN && m_posHorz==0 && (s_editMode>0 || 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<subN) {
|
||||
y=(subN-s_pgOfs)*FH;
|
||||
lcd_putsAtt(4, y, PSTR("Alarm"), 0);
|
||||
lcd_putsnAtt(8*FW, y, PSTR("---YelOrgRed")+3*ALARM_LEVEL(i, j),3,(sub==subN && m_posHorz==0 ? blink:0));
|
||||
lcd_putsnAtt(12*FW, y, PSTR("<>")+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_pgOfs<subN) {
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_puts_P(0, y, PSTR("UsrProto"));
|
||||
lcd_puts_P(0, y, STR_USRPROTO);
|
||||
#if defined(WS_HOW_HIGH)
|
||||
#define USR_PROTO_STR "NoneHub WSHH"
|
||||
#define USR_PROTO_MAX 2
|
||||
#else
|
||||
#define USR_PROTO_STR "NoneHub "
|
||||
#define USR_PROTO_MAX 1
|
||||
#endif
|
||||
lcd_putsnAtt(10*FW, y, PSTR(USR_PROTO_STR)+4*g_model.frsky.usrProto, 4, sub==subN ? INVERS:0);
|
||||
lcd_putsnAtt(10*FW, y, STR_VTELPROTO+LEN_VTELPROTO*g_model.frsky.usrProto, LEN_VTELPROTO, sub==subN ? INVERS:0);
|
||||
if (sub==subN)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.usrProto, 0, USR_PROTO_MAX);
|
||||
}
|
||||
|
@ -1863,7 +1867,7 @@ void menuProcTelemetry(uint8_t event)
|
|||
#ifdef TEMPLATES
|
||||
void menuProcTemplates(uint8_t event)
|
||||
{
|
||||
SIMPLE_MENU("TEMPLATES", menuTabModel, e_Templates, 1+NUM_TEMPLATES+1);
|
||||
SIMPLE_MENU(STR_MENUTEMPLATES, menuTabModel, e_Templates, 1+NUM_TEMPLATES+1);
|
||||
|
||||
uint8_t y = 0;
|
||||
uint8_t k = 0;
|
||||
|
@ -1890,13 +1894,13 @@ void menuProcTemplates(uint8_t event)
|
|||
|
||||
//write mix names here
|
||||
lcd_outdezNAtt(3*FW, y, k+1, (sub==k ? INVERS : 0)|LEADING0, 2);
|
||||
lcd_putsnAtt(4*FW, y, PSTR(TEMPLATES_STR)+TEMPLATES_LEN*k, TEMPLATES_LEN, (s_noHi ? 0 : (sub==k ? INVERS : 0)));
|
||||
lcd_putsnAtt(4*FW, y, STR_VTEMPLATES+LEN_VTEMPLATES*k, LEN_VTEMPLATES, (s_noHi ? 0 : (sub==k ? INVERS : 0)));
|
||||
y+=FH;
|
||||
}
|
||||
if(y>7*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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
221
src/o9xstrings.h
221
src/o9xstrings.h
|
@ -17,30 +17,243 @@ 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_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_ONOFF (STR_OPEN9X + OFS_OFFON + LEN_OFFON)
|
||||
#define STR_MMMINV (STR_OPEN9X + OFS_MMMINV)
|
||||
#define STR_NCHANNELS (STR_OPEN9X + OFS_NCHANNELS)
|
||||
#define STR_BEEPER (STR_OPEN9X + OFS_BEEPER)
|
||||
#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_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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
#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"
|
||||
|
@ -26,6 +26,249 @@
|
|||
#define LEN_DATETIME 5
|
||||
#define TR_DATETIME "DATE:""TIME:"
|
||||
|
||||
// ZERO TERMINATED STRINGS
|
||||
#define TR_POPUPS "[MENU] [EXIT]";
|
||||
#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 ""v<ofs ""|v|>ofs""|v|<ofs""AND ""OR ""XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<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_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"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue