1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +03:00

Curve names used instead of CV<X> when available

This commit is contained in:
Bertrand Songis 2016-01-14 23:13:26 +01:00
parent 0dd15ebbab
commit a1883db889
37 changed files with 114 additions and 108 deletions

View file

@ -638,7 +638,7 @@ void putsVBat(coord_t x, coord_t y, LcdFlags att)
putsVolts(x, y, g_vbat100mV, att); putsVolts(x, y, g_vbat100mV, att);
} }
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att) void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att)
{ {
lcdDrawText(x, y, str, att & ~LEADING0); lcdDrawText(x, y, str, att & ~LEADING0);
lcdDrawNumber(lcdNextPos, y, idx, att|LEFT, 2); lcdDrawNumber(lcdNextPos, y, idx, att|LEFT, 2);
@ -653,13 +653,13 @@ void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH) else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH)
putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att); putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att);
else if (idx < MIXSRC_CH1) else if (idx < MIXSRC_CH1)
putsStrIdx(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att); drawStringWithIndex(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att);
else if (idx <= MIXSRC_LAST_CH) { else if (idx <= MIXSRC_LAST_CH) {
putsStrIdx(x, y, STR_CH, idx-MIXSRC_CH1+1, att); drawStringWithIndex(x, y, STR_CH, idx-MIXSRC_CH1+1, att);
} }
#if defined(GVARS) || !defined(PCBSTD) #if defined(GVARS) || !defined(PCBSTD)
else if (idx <= MIXSRC_LAST_GVAR) else if (idx <= MIXSRC_LAST_GVAR)
putsStrIdx(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att); drawStringWithIndex(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att);
#endif #endif
else if (idx < MIXSRC_FIRST_TELEM) { else if (idx < MIXSRC_FIRST_TELEM) {
lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-(MIXSRC_SW1-MIXSRC_THR)-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att); lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-(MIXSRC_SW1-MIXSRC_THR)-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att);
@ -687,7 +687,7 @@ void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
uint8_t len = sizeof(g_model.header.name); uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len; while (len>0 && !name[len-1]) --len;
if (len==0) { if (len==0) {
putsStrIdx(x, y, STR_MODEL, id+1, att|LEADING0); drawStringWithIndex(x, y, STR_MODEL, id+1, att|LEADING0);
} }
else { else {
lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att); lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att);
@ -704,7 +704,7 @@ void putsSwitches(coord_t x, coord_t y, int8_t idx, LcdFlags att)
} }
#if defined(CPUARM) && defined(FLIGHT_MODES) #if defined(CPUARM) && defined(FLIGHT_MODES)
if (idx >= SWSRC_FIRST_FLIGHT_MODE) { if (idx >= SWSRC_FIRST_FLIGHT_MODE) {
return putsStrIdx(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att); return drawStringWithIndex(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att);
} }
#endif #endif
return lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx, att); return lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx, att);
@ -718,11 +718,11 @@ void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att)
if (att & CONDENSED) if (att & CONDENSED)
lcdDrawNumber(x+FW*1, y, idx-1, (att & ~CONDENSED), 1); lcdDrawNumber(x+FW*1, y, idx-1, (att & ~CONDENSED), 1);
else else
putsStrIdx(x, y, STR_FP, idx-1, att); drawStringWithIndex(x, y, STR_FP, idx-1, att);
} }
#endif #endif
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att) void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att)
{ {
if (idx < 0) { if (idx < 0) {
lcdDrawChar(x-3, y, '!', att); lcdDrawChar(x-3, y, '!', att);

View file

@ -167,12 +167,12 @@ void lcdDrawNumber(coord_t x, coord_t y, lcdint_t val, LcdFlags mode, uint8_t le
void lcdDrawNumber(coord_t x, coord_t y, lcdint_t val, LcdFlags mode=0); void lcdDrawNumber(coord_t x, coord_t y, lcdint_t val, LcdFlags mode=0);
void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val); void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val);
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att=0); void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att=0);
void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
void putsSwitches(coord_t x, coord_t y, int8_t swtch, LcdFlags att=0); void putsSwitches(coord_t x, coord_t y, int8_t swtch, LcdFlags att=0);
void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void putsTimerMode(coord_t x, coord_t y, int8_t mode, LcdFlags att=0); void putsTimerMode(coord_t x, coord_t y, int8_t mode, LcdFlags att=0);
void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att); void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att);
#if defined(ROTARY_ENCODERS) #if defined(ROTARY_ENCODERS)

View file

@ -44,7 +44,7 @@ void menuGeneralDiagAna(uint8_t event)
#else #else
coord_t y = MENU_HEADER_HEIGHT + 1 + (i/2)*FH; coord_t y = MENU_HEADER_HEIGHT + 1 + (i/2)*FH;
uint8_t x = i&1 ? 64+5 : 0; uint8_t x = i&1 ? 64+5 : 0;
putsStrIdx(x, y, PSTR("A"), i+1); drawStringWithIndex(x, y, PSTR("A"), i+1);
lcdDrawChar(lcdNextPos, y, ':'); lcdDrawChar(lcdNextPos, y, ':');
#endif #endif
lcdDrawHexNumber(x+3*FW-1, y, anaIn(i)); lcdDrawHexNumber(x+3*FW-1, y, anaIn(i));

View file

@ -238,7 +238,7 @@ void menuModelCurvesAll(uint8_t event)
uint8_t attr = (sub == k ? INVERS : 0); uint8_t attr = (sub == k ? INVERS : 0);
#if defined(GVARS) && defined(PCBSTD) #if defined(GVARS) && defined(PCBSTD)
if (k >= MAX_CURVES) { if (k >= MAX_CURVES) {
putsStrIdx(0, y, STR_GV, k-MAX_CURVES+1); drawStringWithIndex(0, y, STR_GV, k-MAX_CURVES+1);
if (GVAR_SELECTED()) { if (GVAR_SELECTED()) {
if (attr && s_editMode>0) attr |= BLINK; if (attr && s_editMode>0) attr |= BLINK;
lcdDrawNumber(10*FW, y, GVAR_VALUE(k-MAX_CURVES, -1), attr); lcdDrawNumber(10*FW, y, GVAR_VALUE(k-MAX_CURVES, -1), attr);
@ -248,7 +248,7 @@ void menuModelCurvesAll(uint8_t event)
else else
#endif #endif
{ {
putsStrIdx(0, y, STR_CV, k+1, attr); drawStringWithIndex(0, y, STR_CV, k+1, attr);
} }
} }

View file

@ -140,7 +140,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
#if defined(GVARS) #if defined(GVARS)
else if (func == FUNC_ADJUST_GVAR) { else if (func == FUNC_ADJUST_GVAR) {
maxParam = MAX_GVARS-1; maxParam = MAX_GVARS-1;
putsStrIdx(lcdNextPos, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr); drawStringWithIndex(lcdNextPos, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr);
#if defined(CPUARM) #if defined(CPUARM)
if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags); if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags);
#else #else
@ -262,7 +262,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
val_displayed = (val_displayed > 250 ? 0 : 251); val_displayed = (val_displayed > 250 ? 0 : 251);
} }
if (val_displayed > 250) { if (val_displayed > 250) {
putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed-250, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed-250, attr);
} }
else { else {
lcdDrawNumber(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT); lcdDrawNumber(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT);
@ -309,7 +309,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
break; break;
case FUNC_ADJUST_GVAR_GVAR: case FUNC_ADJUST_GVAR_GVAR:
val_max = MAX_GVARS-1; val_max = MAX_GVARS-1;
putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr);
break; break;
default: // FUNC_ADJUST_GVAR_INC default: // FUNC_ADJUST_GVAR_INC
val_max = 1; val_max = 1;

View file

@ -150,7 +150,7 @@ void menuModelPhaseOne(uint8_t event)
uint8_t posHorz = menuHorizontalPosition; uint8_t posHorz = menuHorizontalPosition;
if (attr && posHorz > 0 && s_currIdx==0) posHorz++; if (attr && posHorz > 0 && s_currIdx==0) posHorz++;
putsStrIdx(INDENT_WIDTH, y, STR_GV, idx+1); drawStringWithIndex(INDENT_WIDTH, y, STR_GV, idx+1);
editName(4*FW, y, g_model.gvars[idx].name, LEN_GVAR_NAME, event, posHorz==0 ? attr : 0); editName(4*FW, y, g_model.gvars[idx].name, LEN_GVAR_NAME, event, posHorz==0 ? attr : 0);

View file

@ -307,7 +307,7 @@ void menuModelExpoOne(uint8_t event)
case EXPO_FIELD_CURVE: case EXPO_FIELD_CURVE:
lcd_putsLeft(y, STR_CURVE); lcd_putsLeft(y, STR_CURVE);
if (ed->curveMode!=MODE_EXPO || ed->curveParam==0) { if (ed->curveMode!=MODE_EXPO || ed->curveParam==0) {
putsCurve(EXPO_ONE_2ND_COLUMN-3*FW, y, ed->curveParam, attr); drawCurveName(EXPO_ONE_2ND_COLUMN-3*FW, y, ed->curveParam, attr);
if (attr) { if (attr) {
CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1); CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1);
if (ed->curveParam) ed->curveMode = MODE_CURVE; if (ed->curveParam) ed->curveMode = MODE_CURVE;
@ -532,7 +532,7 @@ void menuModelMixOne(uint8_t event)
lcd_putsColumnLeft(COLUMN_X, y, STR_CURVE); lcd_putsColumnLeft(COLUMN_X, y, STR_CURVE);
int8_t curveParam = md2->curveParam; int8_t curveParam = md2->curveParam;
if (md2->curveMode == MODE_CURVE) { if (md2->curveMode == MODE_CURVE) {
putsCurve(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr); drawCurveName(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr);
if (attr) { if (attr) {
if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){ if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){
s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE);
@ -666,7 +666,7 @@ void displayMixInfos(coord_t y, MixData *md)
{ {
if (md->curveParam) { if (md->curveParam) {
if (md->curveMode == MODE_CURVE) if (md->curveMode == MODE_CURVE)
putsCurve(MIX_LINE_CURVE_POS, y, md->curveParam); drawCurveName(MIX_LINE_CURVE_POS, y, md->curveParam);
else else
displayGVar(MIX_LINE_CURVE_POS+3*FW, y, md->curveParam, -100, 100); displayGVar(MIX_LINE_CURVE_POS+3*FW, y, md->curveParam, -100, 100);
} }
@ -693,7 +693,7 @@ void displayMixLine(coord_t y, MixData *md)
void displayExpoInfos(coord_t y, ExpoData *ed) void displayExpoInfos(coord_t y, ExpoData *ed)
{ {
if (ed->curveMode == MODE_CURVE) if (ed->curveMode == MODE_CURVE)
putsCurve(EXPO_LINE_EXPO_POS-3*FW, y, ed->curveParam); drawCurveName(EXPO_LINE_EXPO_POS-3*FW, y, ed->curveParam);
else else
displayGVar(EXPO_LINE_EXPO_POS, y, ed->curveParam, -100, 100); displayGVar(EXPO_LINE_EXPO_POS, y, ed->curveParam, -100, 100);

View file

@ -179,7 +179,7 @@ void menuModelSetup(uint8_t event)
{ {
unsigned int timerIdx = (k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)); unsigned int timerIdx = (k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0));
TimerData * timer = &g_model.timers[timerIdx]; TimerData * timer = &g_model.timers[timerIdx];
putsStrIdx(0*FW, y, STR_TIMER, timerIdx+1); drawStringWithIndex(0*FW, y, STR_TIMER, timerIdx+1);
putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0); putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0);
putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0); putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0);
if (attr && (editMode>0 || p1valdiff)) { if (attr && (editMode>0 || p1valdiff)) {
@ -269,7 +269,7 @@ void menuModelSetup(uint8_t event)
timer->countdownBeep = editCheckBox(timer->countdownBeep, MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, attr, event); timer->countdownBeep = editCheckBox(timer->countdownBeep, MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, attr, event);
} }
else { else {
putsStrIdx(0*FW, y, STR_TIMER, k>=ITEM_MODEL_TIMER2 ? 2 : 1); drawStringWithIndex(0*FW, y, STR_TIMER, k>=ITEM_MODEL_TIMER2 ? 2 : 1);
putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0); putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0);
putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0); putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0);
if (attr && (editMode>0 || p1valdiff)) { if (attr && (editMode>0 || p1valdiff)) {

View file

@ -436,7 +436,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM4: case SENSOR_FIELD_PARAM4:
{ {
putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); drawStringWithIndex(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1);
int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1];
if (attr) { if (attr) {
source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable);
@ -854,7 +854,7 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SCREEN_LABEL4: case ITEM_TELEMETRY_SCREEN_LABEL4:
{ {
uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k);
putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
if (newScreenType != oldScreenType) { if (newScreenType != oldScreenType) {
@ -866,7 +866,7 @@ void menuModelTelemetry(uint8_t event)
#else #else
{ {
uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 1 : 2); uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 1 : 2);
putsStrIdx(0*FW, y, STR_SCREEN, screenIndex); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex);
#if defined(GAUGES) #if defined(GAUGES)
bool screenType = g_model.frsky.screensType & screenIndex; bool screenType = g_model.frsky.screensType & screenIndex;
if (screenType != (bool)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, screenType, 0, 1, attr, event)) if (screenType != (bool)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, screenType, 0, 1, attr, event))

View file

@ -110,7 +110,7 @@ NOINLINE uint8_t getRssiAlarmValue(uint8_t alarm)
#if !defined(CPUARM) #if !defined(CPUARM)
void displayVoltageScreenLine(uint8_t y, uint8_t index) void displayVoltageScreenLine(uint8_t y, uint8_t index)
{ {
putsStrIdx(0, y, STR_A, index+1, 0); drawStringWithIndex(0, y, STR_A, index+1, 0);
if (TELEMETRY_STREAMING()) { if (TELEMETRY_STREAMING()) {
putsTelemetryChannelValue(3*FW+6*FW+4, y-FH, index+TELEM_A1-1, frskyData.analog[index].value, DBLSIZE); putsTelemetryChannelValue(3*FW+6*FW+4, y-FH, index+TELEM_A1-1, frskyData.analog[index].value, DBLSIZE);
lcdDrawChar(12*FW-1, y-FH, '<'); putsTelemetryChannelValue(17*FW, y-FH, index+TELEM_A1-1, frskyData.analog[index].min, NO_UNIT); lcdDrawChar(12*FW-1, y-FH, '<'); putsTelemetryChannelValue(17*FW, y-FH, index+TELEM_A1-1, frskyData.analog[index].min, NO_UNIT);
@ -333,7 +333,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
coord_t pos[] = {0, 65, 130}; coord_t pos[] = {0, 65, 130};
if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER && i!=3) { if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER && i!=3) {
// there is not enough space on LCD for displaying "Tmr1" or "Tmr2" and still see the - sign, we write "T1" or "T2" instead // there is not enough space on LCD for displaying "Tmr1" or "Tmr2" and still see the - sign, we write "T1" or "T2" instead
putsStrIdx(pos[j], 1+FH+2*FH*i, "T", field-MIXSRC_FIRST_TIMER+1, 0); drawStringWithIndex(pos[j], 1+FH+2*FH*i, "T", field-MIXSRC_FIRST_TIMER+1, 0);
} }
else if (field >= MIXSRC_FIRST_TELEM && isGPSSensor(1+(field-MIXSRC_FIRST_TELEM)/3) && telemetryItems[(field-MIXSRC_FIRST_TELEM)/3].isAvailable()) { else if (field >= MIXSRC_FIRST_TELEM && isGPSSensor(1+(field-MIXSRC_FIRST_TELEM)/3) && telemetryItems[(field-MIXSRC_FIRST_TELEM)/3].isAvailable()) {
// we don't display GPS name, no space for it // we don't display GPS name, no space for it

View file

@ -158,7 +158,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
else { else {
value = (int16_t) GV_CALC_VALUE_IDX_POS(idx-1, delta); value = (int16_t) GV_CALC_VALUE_IDX_POS(idx-1, delta);
} }
putsStrIdx(x, y, STR_GV, idx, attr); drawStringWithIndex(x, y, STR_GV, idx, attr);
} }
else { else {
lcdDrawNumber(x, y, value, attr); lcdDrawNumber(x, y, value, attr);
@ -198,7 +198,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
value = (int16_t) GV_CALC_VALUE_IDX_POS(idx, delta); value = (int16_t) GV_CALC_VALUE_IDX_POS(idx, delta);
idx++; idx++;
} }
putsStrIdx(x, y, STR_GV, idx, attr); drawStringWithIndex(x, y, STR_GV, idx, attr);
} }
else { else {
lcdDrawNumber(x, y, value, attr); lcdDrawNumber(x, y, value, attr);

View file

@ -442,7 +442,7 @@ void putsVBat(coord_t x, coord_t y, LcdFlags att)
putsVolts(x, y, g_vbat100mV, att); putsVolts(x, y, g_vbat100mV, att);
} }
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, int idx, LcdFlags att, const char *prefix) void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, int idx, LcdFlags att, const char *prefix)
{ {
// TODO quick & dirty, dangerous // TODO quick & dirty, dangerous
char s[32]; char s[32];
@ -503,9 +503,9 @@ void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH) else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH)
putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att); putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att);
else if (idx < MIXSRC_CH1) else if (idx < MIXSRC_CH1)
putsStrIdx(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att); drawStringWithIndex(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att);
else if (idx <= MIXSRC_LAST_CH) { else if (idx <= MIXSRC_LAST_CH) {
putsStrIdx(x, y, STR_CH, idx-MIXSRC_CH1+1, att); drawStringWithIndex(x, y, STR_CH, idx-MIXSRC_CH1+1, att);
#if 0 #if 0
if (ZEXIST(g_model.limitData[idx-MIXSRC_CH1].name) && (att & STREXPANDED)) { if (ZEXIST(g_model.limitData[idx-MIXSRC_CH1].name) && (att & STREXPANDED)) {
lcdDrawChar(lcdNextPos, y, ' ', att); lcdDrawChar(lcdNextPos, y, ' ', att);
@ -514,7 +514,7 @@ void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
#endif #endif
} }
else if (idx <= MIXSRC_LAST_GVAR) else if (idx <= MIXSRC_LAST_GVAR)
putsStrIdx(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att); drawStringWithIndex(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att);
else if (idx < MIXSRC_FIRST_TELEM) { else if (idx < MIXSRC_FIRST_TELEM) {
lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att); lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att);
} }
@ -540,7 +540,7 @@ void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
uint8_t len = sizeof(g_model.header.name); uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len; while (len>0 && !name[len-1]) --len;
if (len==0) { if (len==0) {
putsStrIdx(x, y, STR_MODEL, id+1, att|LEADING0); drawStringWithIndex(x, y, STR_MODEL, id+1, att|LEADING0);
} }
else { else {
lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att); lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att);
@ -629,7 +629,7 @@ void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att)
lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, att); lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, att);
} }
else { else {
putsStrIdx(x, y, STR_FP, abs(idx)-1, att); drawStringWithIndex(x, y, STR_FP, abs(idx)-1, att);
} }
} }
@ -652,27 +652,30 @@ void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att)
break; break;
case CURVE_REF_CUSTOM: case CURVE_REF_CUSTOM:
putsCurve(x, y, curve.value, att); drawCurveName(x, y, curve.value, att);
break; break;
} }
} }
} }
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att) void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags flags)
{ {
if (idx == 0) { if (idx == 0) {
return lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, att); return lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, flags);
} }
bool neg = false; bool neg = false;
if (idx < 0) { if (idx < 0) {
idx = -idx; idx = -idx;
neg = true; neg = true;
} }
putsStrIdx(x, y, STR_CV, idx, att); if (ZEXIST(g_model.curves[idx-1].name))
lcdDrawSizedText(x, y, g_model.curves[idx-1].name, LEN_CURVE_NAME, ZCHAR|flags);
else
drawStringWithIndex(x, y, STR_CV, idx, flags);
if (neg) { if (neg) {
if ((att&INVERS) && ((~att&BLINK) || BLINK_ON_PHASE)) if ((flags&INVERS) && ((~flags&BLINK) || BLINK_ON_PHASE))
att &= ~(INVERS|BLINK); flags &= ~(INVERS|BLINK);
lcdDrawChar(x-3, y, '!', att); lcdDrawChar(x-3, y, '!', flags);
} }
} }

View file

@ -179,14 +179,14 @@ void lcd_putsCenter(coord_t y, const pm_char * s, LcdFlags attr=0);
void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0); void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0);
void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags=0, uint8_t len=0, const char * prefix=NULL, const char * suffix=NULL); void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags=0, uint8_t len=0, const char * prefix=NULL, const char * suffix=NULL);
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, int idx, LcdFlags att=0, const char *prefix=""); void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, int idx, LcdFlags att=0, const char *prefix="");
void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void putsSwitches(coord_t x, coord_t y, swsrc_t swtch, LcdFlags flags=0); void putsSwitches(coord_t x, coord_t y, swsrc_t swtch, LcdFlags flags=0);
void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att=0); void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att=0);
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void putsTimerMode(coord_t x, coord_t y, int8_t mode, LcdFlags att=0); void putsTimerMode(coord_t x, coord_t y, int8_t mode, LcdFlags att=0);
void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att); void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att);

View file

@ -314,7 +314,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, evt_t event, uint8_t a
if (attr && menuHorizontalPosition==1) CHECK_INCDEC_MODELVAR_ZERO(event, curve.value, CURVE_BASE-1); if (attr && menuHorizontalPosition==1) CHECK_INCDEC_MODELVAR_ZERO(event, curve.value, CURVE_BASE-1);
break; break;
case CURVE_REF_CUSTOM: case CURVE_REF_CUSTOM:
putsCurve(lcdNextPos+10, y, curve.value, (menuHorizontalPosition==1 ? attr : 0)); drawCurveName(lcdNextPos+10, y, curve.value, (menuHorizontalPosition==1 ? attr : 0));
if (attr && menuHorizontalPosition==1) { if (attr && menuHorizontalPosition==1) {
if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) {
s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1);
@ -351,7 +351,7 @@ bool menuModelCurvesAll(evt_t event)
uint8_t k = i + menuVerticalOffset; uint8_t k = i + menuVerticalOffset;
LcdFlags attr = (sub == k ? INVERS : 0); LcdFlags attr = (sub == k ? INVERS : 0);
{ {
putsStrIdx(MENUS_MARGIN_LEFT, y, STR_CV, k+1, attr); drawStringWithIndex(MENUS_MARGIN_LEFT, y, STR_CV, k+1, attr);
CurveData & crv = g_model.curves[k]; CurveData & crv = g_model.curves[k];
editName(CURVES_NAME_POS, y, crv.name, sizeof(crv.name), 0, 0); editName(CURVES_NAME_POS, y, crv.name, sizeof(crv.name), 0, 0);
lcdDrawNumber(CURVES_POINTS_POS, y, 5+crv.points, LEFT, 0, NULL, STR_PTS); lcdDrawNumber(CURVES_POINTS_POS, y, 5+crv.points, LEFT, 0, NULL, STR_PTS);

View file

@ -125,7 +125,7 @@ bool menuCustomFunctions(evt_t event, CustomFunctionData * functions, CustomFunc
coord_t y = MENU_CONTENT_TOP + i*FH; coord_t y = MENU_CONTENT_TOP + i*FH;
unsigned int k = i+menuVerticalOffset; unsigned int k = i+menuVerticalOffset;
putsStrIdx(MENUS_MARGIN_LEFT, y, functions == g_model.customFn ? STR_SF : STR_GF, k+1, (sub==k && menuHorizontalPosition<0) ? INVERS : 0); drawStringWithIndex(MENUS_MARGIN_LEFT, y, functions == g_model.customFn ? STR_SF : STR_GF, k+1, (sub==k && menuHorizontalPosition<0) ? INVERS : 0);
CustomFunctionData *cfn = &functions[k]; CustomFunctionData *cfn = &functions[k];
unsigned int func = CFN_FUNC(cfn); unsigned int func = CFN_FUNC(cfn);
@ -170,14 +170,14 @@ bool menuCustomFunctions(evt_t event, CustomFunctionData * functions, CustomFunc
#if defined(GVARS) #if defined(GVARS)
else if (func == FUNC_ADJUST_GVAR) { else if (func == FUNC_ADJUST_GVAR) {
maxParam = MAX_GVARS-1; maxParam = MAX_GVARS-1;
putsStrIdx(MODEL_CUSTOM_FUNC_2ND_COLUMN_EXT, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_2ND_COLUMN_EXT, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr);
if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags); if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags);
break; break;
} }
#endif #endif
else if (func == FUNC_SET_TIMER) { else if (func == FUNC_SET_TIMER) {
maxParam = MAX_TIMERS-1; maxParam = MAX_TIMERS-1;
putsStrIdx(MODEL_CUSTOM_FUNC_2ND_COLUMN_EXT, y, STR_TIMER, CFN_TIMER_INDEX(cfn)+1, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_2ND_COLUMN_EXT, y, STR_TIMER, CFN_TIMER_INDEX(cfn)+1, attr);
if (active) CFN_TIMER_INDEX(cfn) = checkIncDec(event, CFN_TIMER_INDEX(cfn), 0, maxParam, eeFlags); if (active) CFN_TIMER_INDEX(cfn) = checkIncDec(event, CFN_TIMER_INDEX(cfn), 0, maxParam, eeFlags);
break; break;
} }
@ -294,7 +294,7 @@ bool menuCustomFunctions(evt_t event, CustomFunctionData * functions, CustomFunc
break; break;
case FUNC_ADJUST_GVAR_GVAR: case FUNC_ADJUST_GVAR_GVAR:
val_max = MAX_GVARS-1; val_max = MAX_GVARS-1;
putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr);
break; break;
default: // FUNC_ADJUST_GVAR_INC default: // FUNC_ADJUST_GVAR_INC
val_max = 1; val_max = 1;

View file

@ -51,7 +51,7 @@ bool menuModelCustomScriptOne(evt_t event)
{ {
ScriptData &sd = g_model.scriptsData[s_currIdx]; ScriptData &sd = g_model.scriptsData[s_currIdx];
// putsStrIdx(lcdLastPos+FW, 0, "LUA", s_currIdx+1, 0); // drawStringWithIndex(lcdLastPos+FW, 0, "LUA", s_currIdx+1, 0);
SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, 0, { 0, 0, LABEL(inputs), 0/*repeated*/ }); SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, 0, { 0, 0, LABEL(inputs), 0/*repeated*/ });
@ -141,7 +141,7 @@ bool menuModelCustomScripts(evt_t event)
ScriptData &sd = g_model.scriptsData[i]; ScriptData &sd = g_model.scriptsData[i];
// LUAx header // LUAx header
putsStrIdx(MENUS_MARGIN_LEFT, y, "LUA", i+1, sub==i ? INVERS : 0); drawStringWithIndex(MENUS_MARGIN_LEFT, y, "LUA", i+1, sub==i ? INVERS : 0);
// LUA script // LUA script
if (ZEXIST(sd.file)) { if (ZEXIST(sd.file)) {

View file

@ -52,7 +52,7 @@ bool menuModelGVars(evt_t event)
int i = l+menuVerticalOffset; int i = l+menuVerticalOffset;
coord_t y = MENU_CONTENT_TOP + l*FH; coord_t y = MENU_CONTENT_TOP + l*FH;
if (g_model.gvars[i].popup) lcdDrawText(MENUS_MARGIN_LEFT+25, y, "!"); if (g_model.gvars[i].popup) lcdDrawText(MENUS_MARGIN_LEFT+25, y, "!");
putsStrIdx(MENUS_MARGIN_LEFT, y, STR_GV, i+1, ((sub==i && menuHorizontalPosition<0) ? INVERS : 0)); drawStringWithIndex(MENUS_MARGIN_LEFT, y, STR_GV, i+1, ((sub==i && menuHorizontalPosition<0) ? INVERS : 0));
for (int j=0; j<1+MAX_FLIGHT_MODES; j++) { for (int j=0; j<1+MAX_FLIGHT_MODES; j++) {
LcdFlags attr = ((sub==i && menuHorizontalPosition==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); LcdFlags attr = ((sub==i && menuHorizontalPosition==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);

View file

@ -226,7 +226,7 @@ bool menuModelLimits(evt_t event)
#if defined(CURVES) #if defined(CURVES)
case ITEM_LIMITS_CURVE: case ITEM_LIMITS_CURVE:
putsCurve(LIMITS_CURVE_POS, y, ld->curve, attr); drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr);
if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) {
s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1);
pushMenu(menuModelCurveOne); pushMenu(menuModelCurveOne);

View file

@ -105,7 +105,7 @@ void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, evt_t event)
if (attr && menuHorizontalPosition < 0) { if (attr && menuHorizontalPosition < 0) {
lcdDrawSolidFilledRect(MODEL_SETUP_2ND_COLUMN-INVERT_HORZ_MARGIN, y-INVERT_VERT_MARGIN+1, 90+2*INVERT_HORZ_MARGIN, INVERT_LINE_HEIGHT, TEXT_INVERTED_BGCOLOR); lcdDrawSolidFilledRect(MODEL_SETUP_2ND_COLUMN-INVERT_HORZ_MARGIN, y-INVERT_VERT_MARGIN+1, 90+2*INVERT_HORZ_MARGIN, INVERT_LINE_HEIGHT, TEXT_INVERTED_BGCOLOR);
} }
putsStrIdx(MENUS_MARGIN_LEFT, y, STR_TIMER, timerIdx+1); drawStringWithIndex(MENUS_MARGIN_LEFT, y, STR_TIMER, timerIdx+1);
putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, (menuHorizontalPosition<=0 ? attr : 0)); putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, (menuHorizontalPosition<=0 ? attr : 0));
putsTimer(MODEL_SETUP_2ND_COLUMN+50, y, timer->start, (menuHorizontalPosition!=0 ? attr : 0)); putsTimer(MODEL_SETUP_2ND_COLUMN+50, y, timer->start, (menuHorizontalPosition!=0 ? attr : 0));
if (attr && s_editMode>0) { if (attr && s_editMode>0) {
@ -583,9 +583,9 @@ bool menuModelSetup(evt_t event)
ModuleData & moduleData = g_model.moduleData[moduleIdx]; ModuleData & moduleData = g_model.moduleData[moduleIdx];
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_CHANNELRANGE); lcdDrawText(MENUS_MARGIN_LEFT, y, STR_CHANNELRANGE);
if ((int8_t)PORT_CHANNELS_ROWS(moduleIdx) >= 0) { if ((int8_t)PORT_CHANNELS_ROWS(moduleIdx) >= 0) {
putsStrIdx(MODEL_SETUP_2ND_COLUMN, y, STR_CH, moduleData.channelsStart+1, menuHorizontalPosition==0 ? attr : 0); drawStringWithIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CH, moduleData.channelsStart+1, menuHorizontalPosition==0 ? attr : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+30, y, "-"); lcdDrawText(MODEL_SETUP_2ND_COLUMN+30, y, "-");
putsStrIdx(MODEL_SETUP_2ND_COLUMN+40, y, STR_CH, moduleData.channelsStart+NUM_CHANNELS(moduleIdx), menuHorizontalPosition==1 ? attr : 0); drawStringWithIndex(MODEL_SETUP_2ND_COLUMN+40, y, STR_CH, moduleData.channelsStart+NUM_CHANNELS(moduleIdx), menuHorizontalPosition==1 ? attr : 0);
if (attr && s_editMode>0) { if (attr && s_editMode>0) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -392,7 +392,7 @@ bool menuModelSensor(evt_t event)
case SENSOR_FIELD_PARAM4: case SENSOR_FIELD_PARAM4:
{ {
putsStrIdx(MENUS_MARGIN_LEFT, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); drawStringWithIndex(MENUS_MARGIN_LEFT, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1);
int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1];
if (attr) { if (attr) {
source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable);
@ -695,7 +695,7 @@ bool menuModelTelemetry(evt_t event)
case ITEM_TELEMETRY_SCREEN_LABEL4: case ITEM_TELEMETRY_SCREEN_LABEL4:
{ {
uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k);
putsStrIdx(MENUS_MARGIN_LEFT, y, STR_SCREEN, screenIndex+1); drawStringWithIndex(MENUS_MARGIN_LEFT, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_COL2, y, STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_COL2, y, STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
if (newScreenType != oldScreenType) { if (newScreenType != oldScreenType) {

View file

@ -164,7 +164,7 @@ void drawTimer(coord_t x, coord_t y, int index)
if (ZLEN(timerData.name) > 0) { if (ZLEN(timerData.name) > 0) {
lcdDrawSizedText(x+78, y+20, timerData.name, LEN_TIMER_NAME, ZCHAR|SMLSIZE|TEXT_COLOR); lcdDrawSizedText(x+78, y+20, timerData.name, LEN_TIMER_NAME, ZCHAR|SMLSIZE|TEXT_COLOR);
} }
putsStrIdx(x+137, y+17, "TMR", index+1, SMLSIZE|TEXT_COLOR); drawStringWithIndex(x+137, y+17, "TMR", index+1, SMLSIZE|TEXT_COLOR);
} }
@ -391,7 +391,7 @@ bool menuMainView(evt_t event)
if (gvarDisplayTimer > 0) { if (gvarDisplayTimer > 0) {
gvarDisplayTimer--; gvarDisplayTimer--;
displayMessageBox(); displayMessageBox();
putsStrIdx(WARNING_LINE_X, WARNING_LINE_Y, STR_GV, gvarLastChanged+1, DBLSIZE|YELLOW); drawStringWithIndex(WARNING_LINE_X, WARNING_LINE_Y, STR_GV, gvarLastChanged+1, DBLSIZE|YELLOW);
lcdDrawSizedText(WARNING_LINE_X+45, WARNING_LINE_Y, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, DBLSIZE|YELLOW|ZCHAR); lcdDrawSizedText(WARNING_LINE_X+45, WARNING_LINE_Y, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, DBLSIZE|YELLOW|ZCHAR);
lcdDrawNumber(WARNING_LINE_X, WARNING_INFOLINE_Y, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)), DBLSIZE|LEFT); lcdDrawNumber(WARNING_LINE_X, WARNING_INFOLINE_Y, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)), DBLSIZE|LEFT);
} }

View file

@ -302,10 +302,10 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
if (idx < 0) { if (idx < 0) {
value = (int16_t) GV_CALC_VALUE_IDX_NEG(idx, delta); value = (int16_t) GV_CALC_VALUE_IDX_NEG(idx, delta);
idx = -idx; idx = -idx;
putsStrIdx(x, y, STR_GV, idx, attr, "-"); drawStringWithIndex(x, y, STR_GV, idx, attr, "-");
} }
else { else {
putsStrIdx(x, y, STR_GV, idx, attr); drawStringWithIndex(x, y, STR_GV, idx, attr);
value = (int16_t) GV_CALC_VALUE_IDX_POS(idx-1, delta); value = (int16_t) GV_CALC_VALUE_IDX_POS(idx-1, delta);
} }
} }

View file

@ -601,7 +601,7 @@ void putsVBat(coord_t x, coord_t y, LcdFlags att)
putsVolts(x, y, g_vbat100mV, att); putsVolts(x, y, g_vbat100mV, att);
} }
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att) void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att)
{ {
lcdDrawText(x, y, str, att & ~LEADING0); lcdDrawText(x, y, str, att & ~LEADING0);
lcdDrawNumber(lcdNextPos, y, idx, att|LEFT, 2); lcdDrawNumber(lcdNextPos, y, idx, att|LEFT, 2);
@ -638,7 +638,7 @@ void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att)
else else
#endif #endif
{ {
putsStrIdx(x, y, "LUA", qr.quot+1, att); drawStringWithIndex(x, y, "LUA", qr.quot+1, att);
lcdDrawChar(lcdLastPos, y, 'a'+qr.rem, att); lcdDrawChar(lcdLastPos, y, 'a'+qr.rem, att);
} }
} }
@ -671,16 +671,16 @@ void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att)
else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH) else if (idx <= MIXSRC_LAST_LOGICAL_SWITCH)
putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att); putsSwitches(x, y, SWSRC_SW1+idx-MIXSRC_SW1, att);
else if (idx < MIXSRC_CH1) else if (idx < MIXSRC_CH1)
putsStrIdx(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att); drawStringWithIndex(x, y, STR_PPM_TRAINER, idx-MIXSRC_FIRST_TRAINER+1, att);
else if (idx <= MIXSRC_LAST_CH) { else if (idx <= MIXSRC_LAST_CH) {
putsStrIdx(x, y, STR_CH, idx-MIXSRC_CH1+1, att); drawStringWithIndex(x, y, STR_CH, idx-MIXSRC_CH1+1, att);
if (ZEXIST(g_model.limitData[idx-MIXSRC_CH1].name) && (att & STREXPANDED)) { if (ZEXIST(g_model.limitData[idx-MIXSRC_CH1].name) && (att & STREXPANDED)) {
lcdDrawChar(lcdLastPos, y, ' ', att|SMLSIZE); lcdDrawChar(lcdLastPos, y, ' ', att|SMLSIZE);
lcdDrawSizedText(lcdLastPos+3, y, g_model.limitData[idx-MIXSRC_CH1].name, LEN_CHANNEL_NAME, ZCHAR|att|SMLSIZE); lcdDrawSizedText(lcdLastPos+3, y, g_model.limitData[idx-MIXSRC_CH1].name, LEN_CHANNEL_NAME, ZCHAR|att|SMLSIZE);
} }
} }
else if (idx <= MIXSRC_LAST_GVAR) { else if (idx <= MIXSRC_LAST_GVAR) {
putsStrIdx(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att); drawStringWithIndex(x, y, STR_GV, idx-MIXSRC_GVAR1+1, att);
} }
else if (idx < MIXSRC_FIRST_TELEM) { else if (idx < MIXSRC_FIRST_TELEM) {
lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att); lcdDrawTextAtIndex(x, y, STR_VSRCRAW, idx-MIXSRC_Rud+1-NUM_LOGICAL_SWITCH-NUM_TRAINER-NUM_CHNOUT-MAX_GVARS, att);
@ -703,7 +703,7 @@ void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
uint8_t len = sizeof(g_model.header.name); uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len; while (len>0 && !name[len-1]) --len;
if (len==0) { if (len==0) {
putsStrIdx(x, y, STR_MODEL, id+1, att|LEADING0); drawStringWithIndex(x, y, STR_MODEL, id+1, att|LEADING0);
} }
else { else {
lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att); lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att);
@ -738,25 +738,25 @@ void putsSwitches(coord_t x, coord_t y, int32_t idx, LcdFlags att)
} }
else if (idx <= SWSRC_LAST_MULTIPOS_SWITCH) { else if (idx <= SWSRC_LAST_MULTIPOS_SWITCH) {
div_t swinfo = div(idx - SWSRC_FIRST_MULTIPOS_SWITCH, XPOTS_MULTIPOS_COUNT); div_t swinfo = div(idx - SWSRC_FIRST_MULTIPOS_SWITCH, XPOTS_MULTIPOS_COUNT);
putsStrIdx(x, y, "S", swinfo.quot*10+swinfo.rem+11, att); drawStringWithIndex(x, y, "S", swinfo.quot*10+swinfo.rem+11, att);
} }
else if (idx <= SWSRC_LAST_TRIM) { else if (idx <= SWSRC_LAST_TRIM) {
lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx-SWSRC_FIRST_TRIM+1, att); lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx-SWSRC_FIRST_TRIM+1, att);
} }
else if (idx <= SWSRC_LAST_LOGICAL_SWITCH) { else if (idx <= SWSRC_LAST_LOGICAL_SWITCH) {
putsStrIdx(x, y, "L", idx-SWSRC_FIRST_LOGICAL_SWITCH+1, att); drawStringWithIndex(x, y, "L", idx-SWSRC_FIRST_LOGICAL_SWITCH+1, att);
} }
else if (idx <= SWSRC_ONE) { else if (idx <= SWSRC_ONE) {
lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx-SWSRC_ON+1+(2*NUM_STICKS), att); lcdDrawTextAtIndex(x, y, STR_VSWITCHES, idx-SWSRC_ON+1+(2*NUM_STICKS), att);
} }
else if (idx <= SWSRC_LAST_FLIGHT_MODE) { else if (idx <= SWSRC_LAST_FLIGHT_MODE) {
putsStrIdx(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att); drawStringWithIndex(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att);
} }
else if (idx == SWSRC_TELEMETRY_STREAMING) { else if (idx == SWSRC_TELEMETRY_STREAMING) {
lcdDrawText(x, y, "Tele", att); lcdDrawText(x, y, "Tele", att);
} }
else if (idx <= SWSRC_LAST_FLIGHT_MODE) { else if (idx <= SWSRC_LAST_FLIGHT_MODE) {
putsStrIdx(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att); drawStringWithIndex(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att);
} }
else if (idx == SWSRC_TELEMETRY_STREAMING) { else if (idx == SWSRC_TELEMETRY_STREAMING) {
lcdDrawText(x, y, "Tele", att); lcdDrawText(x, y, "Tele", att);
@ -774,7 +774,7 @@ void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att)
if (att & CONDENSED) if (att & CONDENSED)
lcdDrawNumber(x+FW*1, y, idx-1, (att & ~CONDENSED), 1); lcdDrawNumber(x+FW*1, y, idx-1, (att & ~CONDENSED), 1);
else else
putsStrIdx(x, y, STR_FP, idx-1, att); drawStringWithIndex(x, y, STR_FP, idx-1, att);
} }
#endif #endif
@ -797,24 +797,27 @@ void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att)
break; break;
case CURVE_REF_CUSTOM: case CURVE_REF_CUSTOM:
putsCurve(x, y, curve.value, att); drawCurveName(x, y, curve.value, att);
break; break;
} }
} }
} }
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att) void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags flags)
{ {
if (idx == 0) { if (idx == 0) {
return lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, att); return lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, flags);
} }
if (idx < 0) { if (idx < 0) {
lcdDrawChar(x-3, y, '!', att); lcdDrawChar(x-3, y, '!', flags);
idx = -idx; idx = -idx;
} }
putsStrIdx(x, y, STR_CV, idx, att); if (ZEXIST(g_model.curves[idx-1].name))
lcdDrawSizedText(x, y, g_model.curves[idx-1].name, LEN_CURVE_NAME, ZCHAR|flags);
else
drawStringWithIndex(x, y, STR_CV, idx, flags);
} }
void putsTimerMode(coord_t x, coord_t y, int32_t mode, LcdFlags att) void putsTimerMode(coord_t x, coord_t y, int32_t mode, LcdFlags att)

View file

@ -142,7 +142,7 @@ void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode, uint8_t len
void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode=0); void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode=0);
void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val); void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val);
void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att=0); void drawStringWithIndex(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags att=0);
void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
void putsSwitches(coord_t x, coord_t y, int32_t swtch, LcdFlags att=0); void putsSwitches(coord_t x, coord_t y, int32_t swtch, LcdFlags att=0);
void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
@ -151,7 +151,7 @@ void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
#if !defined(BOOT) #if !defined(BOOT)
void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att); void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att);
#endif #endif
void putsCurve(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void putsTimerMode(coord_t x, coord_t y, int32_t mode, LcdFlags att=0); void putsTimerMode(coord_t x, coord_t y, int32_t mode, LcdFlags att=0);
void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att); void putsTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att);

View file

@ -36,7 +36,7 @@ void menuGeneralDiagAna(uint8_t event)
#else #else
coord_t y = MENU_HEADER_HEIGHT + 1 + (i/2)*FH; coord_t y = MENU_HEADER_HEIGHT + 1 + (i/2)*FH;
uint8_t x = i&1 ? 64+5 : 0; uint8_t x = i&1 ? 64+5 : 0;
putsStrIdx(x, y, PSTR("A"), i+1); drawStringWithIndex(x, y, PSTR("A"), i+1);
lcdDrawChar(lcdNextPos, y, ':'); lcdDrawChar(lcdNextPos, y, ':');
#endif #endif
lcdDrawHexNumber(x+3*FW-1, y, anaIn(i)); lcdDrawHexNumber(x+3*FW-1, y, anaIn(i));

View file

@ -129,7 +129,7 @@ void menuModelCurveOne(uint8_t event)
int8_t * points = curveAddress(s_curveChan); int8_t * points = curveAddress(s_curveChan);
lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y"); lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y");
putsStrIdx(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_curveChan+1); drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, "CV", s_curveChan+1);
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0)); SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0));
@ -260,7 +260,7 @@ void editCurveRef(coord_t x, coord_t y, CurveRef & curve, uint8_t event, uint8_t
if (attr && menuHorizontalPosition==1) CHECK_INCDEC_MODELVAR_ZERO(event, curve.value, CURVE_BASE-1); if (attr && menuHorizontalPosition==1) CHECK_INCDEC_MODELVAR_ZERO(event, curve.value, CURVE_BASE-1);
break; break;
case CURVE_REF_CUSTOM: case CURVE_REF_CUSTOM:
putsCurve(x+5*FW+2, y, curve.value, menuHorizontalPosition==1 ? attr : 0); drawCurveName(x+5*FW+2, y, curve.value, menuHorizontalPosition==1 ? attr : 0);
if (attr && menuHorizontalPosition==1) { if (attr && menuHorizontalPosition==1) {
if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) { if (event==EVT_KEY_LONG(KEY_ENTER) && curve.value!=0) {
s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1); s_curveChan = (curve.value<0 ? -curve.value-1 : curve.value-1);
@ -294,7 +294,7 @@ void menuModelCurvesAll(uint8_t event)
int k = i + menuVerticalOffset; int k = i + menuVerticalOffset;
LcdFlags attr = (sub == k ? INVERS : 0); LcdFlags attr = (sub == k ? INVERS : 0);
{ {
putsStrIdx(0, y, STR_CV, k+1, attr); drawStringWithIndex(0, y, STR_CV, k+1, attr);
CurveData & crv = g_model.curves[k]; CurveData & crv = g_model.curves[k];
editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0); editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0);
lcdDrawNumber(11*FW, y, 5+crv.points, LEFT); lcdDrawNumber(11*FW, y, 5+crv.points, LEFT);

View file

@ -172,7 +172,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
coord_t y = MENU_HEADER_HEIGHT + 1 + i*FH; coord_t y = MENU_HEADER_HEIGHT + 1 + i*FH;
int k = i+menuVerticalOffset; int k = i+menuVerticalOffset;
putsStrIdx(0, y, functions == g_model.customFn ? STR_SF : STR_GF, k+1, (sub==k && menuHorizontalPosition<0) ? INVERS : 0); drawStringWithIndex(0, y, functions == g_model.customFn ? STR_SF : STR_GF, k+1, (sub==k && menuHorizontalPosition<0) ? INVERS : 0);
CustomFunctionData *cfn = &functions[k]; CustomFunctionData *cfn = &functions[k];
uint8_t func = CFN_FUNC(cfn); uint8_t func = CFN_FUNC(cfn);
@ -220,14 +220,14 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
#if defined(GVARS) #if defined(GVARS)
else if (func == FUNC_ADJUST_GVAR) { else if (func == FUNC_ADJUST_GVAR) {
maxParam = MAX_GVARS-1; maxParam = MAX_GVARS-1;
putsStrIdx(lcdNextPos, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr); drawStringWithIndex(lcdNextPos, y, STR_GV, CFN_GVAR_INDEX(cfn)+1, attr);
if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags); if (active) CFN_GVAR_INDEX(cfn) = checkIncDec(event, CFN_GVAR_INDEX(cfn), 0, maxParam, eeFlags);
break; break;
} }
#endif #endif
else if (func == FUNC_SET_TIMER) { else if (func == FUNC_SET_TIMER) {
maxParam = TIMERS-1; maxParam = TIMERS-1;
putsStrIdx(lcdNextPos, y, STR_TIMER, CFN_TIMER_INDEX(cfn)+1, attr); drawStringWithIndex(lcdNextPos, y, STR_TIMER, CFN_TIMER_INDEX(cfn)+1, attr);
if (active) CFN_TIMER_INDEX(cfn) = checkIncDec(event, CFN_TIMER_INDEX(cfn), 0, maxParam, eeFlags); if (active) CFN_TIMER_INDEX(cfn) = checkIncDec(event, CFN_TIMER_INDEX(cfn), 0, maxParam, eeFlags);
break; break;
} }
@ -358,7 +358,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
break; break;
case FUNC_ADJUST_GVAR_GVAR: case FUNC_ADJUST_GVAR_GVAR:
val_max = MAX_GVARS-1; val_max = MAX_GVARS-1;
putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); drawStringWithIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr);
break; break;
default: // FUNC_ADJUST_GVAR_INC default: // FUNC_ADJUST_GVAR_INC
val_min = -100; val_max = +100; val_min = -100; val_max = +100;

View file

@ -51,7 +51,7 @@ void menuModelCustomScriptOne(uint8_t event)
{ {
ScriptData & sd = g_model.scriptsData[s_currIdx]; ScriptData & sd = g_model.scriptsData[s_currIdx];
putsStrIdx(PSIZE(TR_MENUCUSTOMSCRIPTS)*FW+FW, 0, "LUA", s_currIdx+1, 0); drawStringWithIndex(PSIZE(TR_MENUCUSTOMSCRIPTS)*FW+FW, 0, "LUA", s_currIdx+1, 0);
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ }); SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ });
@ -137,7 +137,7 @@ void menuModelCustomScripts(uint8_t event)
ScriptData &sd = g_model.scriptsData[i]; ScriptData &sd = g_model.scriptsData[i];
// LUAx header // LUAx header
putsStrIdx(0, y, "LUA", i+1, sub==i ? INVERS : 0); drawStringWithIndex(0, y, "LUA", i+1, sub==i ? INVERS : 0);
// LUA script // LUA script
if (ZEXIST(sd.file)) { if (ZEXIST(sd.file)) {

View file

@ -66,7 +66,7 @@ void menuModelGVarOne(uint8_t event)
{ {
GVarData * gvar = &g_model.gvars[s_currIdx]; GVarData * gvar = &g_model.gvars[s_currIdx];
putsStrIdx(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdx+1, 0); drawStringWithIndex(PSIZE(TR_GVARS)*FW+FW, 0, STR_GV, s_currIdx+1, 0);
drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode())); drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode()));
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
@ -107,7 +107,7 @@ void menuModelGVarOne(uint8_t event)
break; break;
default: default:
putsStrIdx(0, y, STR_FP, k-GVAR_FIELD_FM0); drawStringWithIndex(0, y, STR_FP, k-GVAR_FIELD_FM0);
editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdx, k-GVAR_FIELD_FM0, LEFT|attr); editGVarValue(GVAR_2ND_COLUMN, y, event, s_currIdx, k-GVAR_FIELD_FM0, LEFT|attr);
break; break;
} }
@ -142,7 +142,7 @@ void menuModelGVars(uint8_t event)
if (after2seconds) { if (after2seconds) {
menuTitle = STR_GVARS; menuTitle = STR_GVARS;
for (int i=0; i<MAX_GVARS; i++) { for (int i=0; i<MAX_GVARS; i++) {
putsStrIdx(GVARS_FM_COLUMN(i)-16, 1, STR_FP, i, SMLSIZE|(getFlightMode()==i ? INVERS : 0)); drawStringWithIndex(GVARS_FM_COLUMN(i)-16, 1, STR_FP, i, SMLSIZE|(getFlightMode()==i ? INVERS : 0));
} }
} }
else { else {

View file

@ -232,7 +232,7 @@ void menuModelLimits(uint8_t event)
#if defined(CURVES) #if defined(CURVES)
case ITEM_LIMITS_CURVE: case ITEM_LIMITS_CURVE:
putsCurve(LIMITS_CURVE_POS, y, ld->curve, attr); drawCurveName(LIMITS_CURVE_POS, y, ld->curve, attr);
if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) {
s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1);
pushMenu(menuModelCurveOne); pushMenu(menuModelCurveOne);

View file

@ -120,7 +120,7 @@ void onModelSetupBitmapMenu(const char *result)
void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, uint8_t event) void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, uint8_t event)
{ {
TimerData * timer = &g_model.timers[timerIdx]; TimerData * timer = &g_model.timers[timerIdx];
putsStrIdx(0*FW, y, STR_TIMER, timerIdx+1); drawStringWithIndex(0*FW, y, STR_TIMER, timerIdx+1);
putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0); putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0);
putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0); putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, menuHorizontalPosition==1 ? attr : 0, menuHorizontalPosition==2 ? attr : 0);
@ -357,7 +357,7 @@ void menuModelSetup(uint8_t event)
#if defined(REV9E) #if defined(REV9E)
case ITEM_MODEL_TOP_LCD_TIMER: case ITEM_MODEL_TOP_LCD_TIMER:
lcd_putsLeft(y, STR_TOPLCDTIMER); lcd_putsLeft(y, STR_TOPLCDTIMER);
putsStrIdx(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER, g_model.toplcdTimer+1, attr); drawStringWithIndex(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER, g_model.toplcdTimer+1, attr);
if (attr) { if (attr) {
g_model.toplcdTimer = checkIncDec(event, g_model.toplcdTimer, 0, TIMERS-1, EE_MODEL); g_model.toplcdTimer = checkIncDec(event, g_model.toplcdTimer, 0, TIMERS-1, EE_MODEL);
} }

View file

@ -204,7 +204,7 @@ void menuModelSensor(uint8_t event)
{ {
TelemetrySensor * sensor = &g_model.telemetrySensors[s_currIdx]; TelemetrySensor * sensor = &g_model.telemetrySensors[s_currIdx];
putsStrIdx(PSIZE(TR_MENUSENSOR)*FW+FW, 0, STR_SENSOR, s_currIdx+1); drawStringWithIndex(PSIZE(TR_MENUSENSOR)*FW+FW, 0, STR_SENSOR, s_currIdx+1);
putsTelemetryChannelValue(32*FW, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx)); putsTelemetryChannelValue(32*FW, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx));
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
@ -389,7 +389,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM4: case SENSOR_FIELD_PARAM4:
{ {
putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); drawStringWithIndex(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1);
int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1];
if (attr) { if (attr) {
source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); source = checkIncDec(event, source, -MAX_SENSORS, MAX_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable);
@ -688,7 +688,7 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SCREEN_LABEL4: case ITEM_TELEMETRY_SCREEN_LABEL4:
{ {
uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k);
putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
if (newScreenType != oldScreenType) { if (newScreenType != oldScreenType) {

View file

@ -576,7 +576,7 @@ void menuMainView(uint8_t event)
gvarDisplayTimer--; gvarDisplayTimer--;
lcdDrawFilledRect(BITMAP_X, BITMAP_Y, 64, 32, SOLID, ERASE); lcdDrawFilledRect(BITMAP_X, BITMAP_Y, 64, 32, SOLID, ERASE);
lcdDrawRect(BITMAP_X, BITMAP_Y, 64, 32); lcdDrawRect(BITMAP_X, BITMAP_Y, 64, 32);
putsStrIdx(BITMAP_X+FW, BITMAP_Y+FH-1, STR_GV, gvarLastChanged+1); drawStringWithIndex(BITMAP_X+FW, BITMAP_Y+FH-1, STR_GV, gvarLastChanged+1);
lcdDrawSizedText(BITMAP_X+4*FW+FW/2, BITMAP_Y+FH-1, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, ZCHAR); lcdDrawSizedText(BITMAP_X+4*FW+FW/2, BITMAP_Y+FH-1, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, ZCHAR);
lcdDrawText(BITMAP_X+FW, BITMAP_Y+2*FH+3, PSTR("["), BOLD); lcdDrawText(BITMAP_X+FW, BITMAP_Y+2*FH+3, PSTR("["), BOLD);
drawGVarValue(BITMAP_X+2*FW, BITMAP_Y+2*FH+3, gvarLastChanged, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)), LEFT|BOLD); drawGVarValue(BITMAP_X+2*FW, BITMAP_Y+2*FH+3, gvarLastChanged, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)), LEFT|BOLD);

View file

@ -61,7 +61,7 @@ void menuStatisticsView(uint8_t event)
// Timers // Timers
for (int i=0; i<TIMERS; i++) { for (int i=0; i<TIMERS; i++) {
putsStrIdx(STATS_3RD_COLUMN, FH*i+1, "TM", i+1, BOLD); drawStringWithIndex(STATS_3RD_COLUMN, FH*i+1, "TM", i+1, BOLD);
if (timersStates[i].val > 3600) if (timersStates[i].val > 3600)
putsTimer(STATS_3RD_COLUMN + STATS_LABEL_WIDTH, FH*i+1, timersStates[i].val, TIMEHOUR, 0); putsTimer(STATS_3RD_COLUMN + STATS_LABEL_WIDTH, FH*i+1, timersStates[i].val, TIMEHOUR, 0);
else else

View file

@ -127,7 +127,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
LcdFlags att = (i==3 ? NO_UNIT : DBLSIZE|NO_UNIT); LcdFlags att = (i==3 ? NO_UNIT : DBLSIZE|NO_UNIT);
if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER && i!=3) { if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER && i!=3) {
// there is not enough space on LCD for displaying "Tmr1" or "Tmr2" and still see the - sign, we write "T1" or "T2" instead // there is not enough space on LCD for displaying "Tmr1" or "Tmr2" and still see the - sign, we write "T1" or "T2" instead
putsStrIdx(pos[j], 1+FH+2*FH*i, "T", field-MIXSRC_FIRST_TIMER+1, 0); drawStringWithIndex(pos[j], 1+FH+2*FH*i, "T", field-MIXSRC_FIRST_TIMER+1, 0);
if (timersStates[field-MIXSRC_FIRST_TIMER].val > 3600) { if (timersStates[field-MIXSRC_FIRST_TIMER].val > 3600) {
att += TIMEHOUR - DBLSIZE; att += TIMEHOUR - DBLSIZE;
x -= 3*FW; x -= 3*FW;

View file

@ -165,7 +165,7 @@ void drawGVarName(coord_t x, coord_t y, int8_t index, LcdFlags flags)
if (ZEXIST(g_model.gvars[index].name)) if (ZEXIST(g_model.gvars[index].name))
lcdDrawSizedText(x, y, g_model.gvars[index].name, LEN_GVAR_NAME, ZCHAR|flags); lcdDrawSizedText(x, y, g_model.gvars[index].name, LEN_GVAR_NAME, ZCHAR|flags);
else else
putsStrIdx(x, y, STR_GV, index+1, flags); drawStringWithIndex(x, y, STR_GV, index+1, flags);
} }
void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags) void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags)

View file

@ -182,11 +182,11 @@ TEST(Lcd, DblsizeBottomRight)
} }
#if defined(CPUARM) #if defined(CPUARM)
TEST(Lcd, Smlsize_putsStrIdx) TEST(Lcd, Smlsize_drawStringWithIndex)
{ {
lcdClear(); lcdClear();
putsStrIdx(0, 0, "FM", 0, SMLSIZE); drawStringWithIndex(0, 0, "FM", 0, SMLSIZE);
EXPECT_TRUE(checkScreenshot("smlsize_putsstridx")); EXPECT_TRUE(checkScreenshot("smlsize_drawStringWithIndex"));
} }
#endif #endif