From 4a8f0979fda5bf9bfe6f7fdbd980796db13eff45 Mon Sep 17 00:00:00 2001 From: bsongis Date: Thu, 19 Jul 2012 19:06:55 +0000 Subject: [PATCH] Flash saving Momentary switches a little bit modified (depending of the function) in Function Switches New trigger ONm in Function Switches --- src/eeprom_arm.cpp | 3 + src/eeprom_avr.cpp | 12 ++-- src/lcd.cpp | 8 +-- src/lcd.h | 2 +- src/model_menus.cpp | 130 +++++++++++++++++------------------ src/open9x.cpp | 86 ++++++++++++++--------- src/open9x.h | 9 +++ src/templates.cpp | 156 +++++++++++++++++++++++------------------- src/translations/cz.h | 4 +- src/translations/de.h | 4 +- src/translations/en.h | 4 +- src/translations/fr.h | 4 +- src/translations/it.h | 4 +- src/translations/se.h | 4 +- 14 files changed, 235 insertions(+), 195 deletions(-) diff --git a/src/eeprom_arm.cpp b/src/eeprom_arm.cpp index 496de579b..c99aa5cef 100644 --- a/src/eeprom_arm.cpp +++ b/src/eeprom_arm.cpp @@ -503,6 +503,9 @@ void eeLoadModel(uint8_t id) clearKeyEvents(); } + activeFunctions = 0; + activeFunctionSwitches = 0; + resetProto(); resetAll(); } diff --git a/src/eeprom_avr.cpp b/src/eeprom_avr.cpp index 781540128..e3bfaef67 100644 --- a/src/eeprom_avr.cpp +++ b/src/eeprom_avr.cpp @@ -273,17 +273,10 @@ bool EFile::exists(uint8_t i_fileId) */ void EFile::swap(uint8_t i_fileId1, uint8_t i_fileId2) { - -#if ((__GNUC__ > 4 || __GNUC__ == 4) && (__GNUC_MINOR__ > 7 || __GNUC_MINOR__ == 7)) - DirEnt tmp; - __builtin_memcpy(&tmp, __builtin_assume_aligned(&eeFs.files[i_fileId1], sizeof(DirEnt)), sizeof(DirEnt)); - __builtin_memcpy(&eeFs.files[i_fileId1], __builtin_assume_aligned(&eeFs.files[i_fileId2], sizeof(DirEnt)), sizeof(DirEnt)); - __builtin_memcpy(&eeFs.files[i_fileId2], __builtin_assume_aligned(&tmp, sizeof(DirEnt)), sizeof(DirEnt)); -#else DirEnt tmp = eeFs.files[i_fileId1]; eeFs.files[i_fileId1] = eeFs.files[i_fileId2]; eeFs.files[i_fileId2] = tmp; -#endif + s_sync_write = true; EeFsFlushDirEnt(i_fileId1); EeFsFlushDirEnt(i_fileId2); @@ -870,6 +863,9 @@ void eeLoadModel(uint8_t id) clearKeyEvents(); } + activeFunctions = 0; + activeFunctionSwitches = 0; + resetProto(); resetAll(); diff --git a/src/lcd.cpp b/src/lcd.cpp index 34f9ed90c..974d2556b 100644 --- a/src/lcd.cpp +++ b/src/lcd.cpp @@ -528,18 +528,18 @@ void putsSwitches(uint8_t x, uint8_t y, int8_t idx, uint8_t att) { if (idx == 0) return lcd_putsiAtt(x, y, STR_MMMINV, 0, att); - if (~att & SWONLY) { + if (att & SWONOFF) { if (idx == SWITCH_ON) return lcd_putsiAtt(x, y, STR_OFFON, 1, att); if (idx == SWITCH_OFF) return lcd_putsiAtt(x, y, STR_OFFON, 0, att); } - if (idx<0) { + if (idx < 0) { lcd_vlineStip(x-2, y, 8, 0x5E/*'!'*/); idx = -idx; } if (idx > MAX_SWITCH) { - idx -= ((att & SWONLY) ? MAX_SWITCH : MAX_SWITCH+1); + idx -= ((att & SWONOFF) ? MAX_SWITCH+1 : MAX_SWITCH); if (~att & SWCONDENSED) lcd_putcAtt(x+3*FW, y, 'm', att); } lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att); @@ -580,7 +580,7 @@ void putsTmrMode(uint8_t x, uint8_t y, int8_t mode, uint8_t att) return; } - putsSwitches(x, y, mode-(TMR_VAROFS-1), att|SWONLY); + putsSwitches(x, y, mode-(TMR_VAROFS-1), att); } void putsTrimMode(uint8_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att) diff --git a/src/lcd.h b/src/lcd.h index 046d55ba5..fffd48caf 100644 --- a/src/lcd.h +++ b/src/lcd.h @@ -73,7 +73,7 @@ #define ROUND 0x08 /* switches flags */ -#define SWONLY 0x10 /* means no ON OFF, only switches */ +#define SWONOFF 0x10 /* means inlude ON OFF in switches */ #define SWCONDENSED 0x20 /* means that THRm will be displayed as THR */ /* telemetry flags */ diff --git a/src/model_menus.cpp b/src/model_menus.cpp index a131b0c4b..98a7ac0c8 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -1105,13 +1105,13 @@ void menuProcCurveOne(uint8_t event) if (s_curveChan >= MAX_CURVE5) { points = 9; - crv = g_model.curves9[s_curveChan-MAX_CURVE5]; } else { points = 5; - crv = g_model.curves5[s_curveChan]; } + crv = curveaddress(s_curveChan); + switch(event) { case EVT_ENTRY: dfltCrv = 0; @@ -2127,7 +2127,7 @@ void menuProcCurvesAll(uint8_t event) if(yd>7) break; if(!m) m = attr; putsStrIdx(0, y, STR_CV, k+1, attr); - int8_t *crv = cv9 ? g_model.curves9[k-MAX_CURVE5] : g_model.curves5[k]; + int8_t *crv = curveaddress(k); for (uint8_t j = 0; j < (5); j++) { lcd_outdezAtt( j*(3*FW+3) + 7*FW + 2, y, crv[j], 0); } @@ -2156,7 +2156,7 @@ enum CustomSwitchFields { void menuProcCustomSwitchOne(uint8_t event) { TITLEP(STR_MENUCUSTOMSWITCH); - CustomSwData &cs = g_model.customSw[s_currIdx]; + CustomSwData * cs = cswaddress(s_currIdx); uint8_t sw = DSW_SW1+s_currIdx; putsSwitches(14*FW, 0, sw, (getSwitch(sw, 0) ? BOLD : 0)); SIMPLE_SUBMENU_NOTITLE(CSW_FIELD_COUNT); @@ -2167,16 +2167,16 @@ void menuProcCustomSwitchOne(uint8_t event) uint8_t y = (k+2) * FH; uint8_t i = k + s_pgOfs; uint8_t attr = (sub==i ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0); - uint8_t cstate = CS_STATE(cs.func); + uint8_t cstate = CS_STATE(cs->func); switch(i) { case CSW_FIELD_FUNCTION: lcd_putsLeft(y, STR_FUNC); - lcd_putsiAtt(CSW_2ND_COLUMN, y, STR_VCSWFUNC, cs.func, attr); + lcd_putsiAtt(CSW_2ND_COLUMN, y, STR_VCSWFUNC, cs->func, attr); if (attr) { - CHECK_INCDEC_MODELVAR(event, cs.func, 0, CS_MAXF); - if (cstate != CS_STATE(cs.func)) { - cs.v1 = 0; - cs.v2 = 0; + CHECK_INCDEC_MODELVAR(event, cs->func, 0, CS_MAXF); + if (cstate != CS_STATE(cs->func)) { + cs->v1 = 0; + cs->v2 = 0; } } break; @@ -2185,14 +2185,14 @@ void menuProcCustomSwitchOne(uint8_t event) lcd_putsLeft(y, STR_V1); int8_t v1_min=0, v1_max=NUM_XCHNCSW; if (cstate == CS_VBOOL) { - putsSwitches(CSW_2ND_COLUMN, y, cs.v1, attr); + putsSwitches(CSW_2ND_COLUMN, y, cs->v1, attr); v1_min = SWITCH_OFF; v1_max = SWITCH_ON; } else { - putsChnRaw(CSW_2ND_COLUMN, y, cs.v1, attr); + putsChnRaw(CSW_2ND_COLUMN, y, cs->v1, attr); } if (attr) { - CHECK_INCDEC_MODELVAR(event, cs.v1, v1_min, v1_max); + CHECK_INCDEC_MODELVAR(event, cs->v1, v1_min, v1_max); } break; } @@ -2201,16 +2201,16 @@ void menuProcCustomSwitchOne(uint8_t event) lcd_putsLeft(y, STR_V2); int8_t v2_min=0, v2_max=NUM_XCHNCSW; if (cstate == CS_VBOOL) { - putsSwitches(CSW_2ND_COLUMN, y, cs.v2, attr); + putsSwitches(CSW_2ND_COLUMN, y, cs->v2, attr); v2_min = SWITCH_OFF; v2_max = SWITCH_ON; } else if (cstate == CS_VOFS) { #if defined(FRSKY) - if (cs.v1 > NUM_XCHNCSW-NUM_TELEMETRY) { - putsTelemetryChannel(CSW_2ND_COLUMN, y, cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs.v2), attr|LEFT); - v2_min = -128; v2_max = maxTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; - if (cs.v2 > v2_max) { - cs.v2 = v2_max; + if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) { + putsTelemetryChannel(CSW_2ND_COLUMN, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), attr|LEFT); + v2_min = -128; v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; + if (cs->v2 > v2_max) { + cs->v2 = v2_max; eeDirty(EE_MODEL); } } @@ -2218,32 +2218,32 @@ void menuProcCustomSwitchOne(uint8_t event) #endif { v2_min = -125; v2_max = 125; - lcd_outdezAtt(CSW_2ND_COLUMN, y, cs.v2, attr|LEFT); + lcd_outdezAtt(CSW_2ND_COLUMN, y, cs->v2, attr|LEFT); } } else { - putsChnRaw(CSW_2ND_COLUMN, y, cs.v2, attr); + putsChnRaw(CSW_2ND_COLUMN, y, cs->v2, attr); } if (attr) { - CHECK_INCDEC_MODELVAR(event, cs.v2, v2_min, v2_max); + CHECK_INCDEC_MODELVAR(event, cs->v2, v2_min, v2_max); } break; } case CSW_FIELD_DURATION: lcd_putsLeft(y, STR_DURATION); - if (cs.duration > 0) - lcd_outdezAtt(CSW_2ND_COLUMN, y, 5*cs.duration, attr|PREC1|LEFT); + if (cs->duration > 0) + lcd_outdezAtt(CSW_2ND_COLUMN, y, 5*cs->duration, attr|PREC1|LEFT); else lcd_putsiAtt(CSW_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR(event, cs.duration, 0, MAX_CSW_DURATION); + if (attr) CHECK_INCDEC_MODELVAR(event, cs->duration, 0, MAX_CSW_DURATION); break; case CSW_FIELD_DELAY: lcd_putsLeft(y, STR_DELAY); - if (cs.delay > 0) - lcd_outdezAtt(CSW_2ND_COLUMN, y, 5*cs.delay, attr|PREC1|LEFT); + if (cs->delay > 0) + lcd_outdezAtt(CSW_2ND_COLUMN, y, 5*cs->delay, attr|PREC1|LEFT); else lcd_putsiAtt(CSW_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR(event, cs.delay, 0, MAX_CSW_DELAY); + if (attr) CHECK_INCDEC_MODELVAR(event, cs->delay, 0, MAX_CSW_DELAY); break; } } @@ -2277,47 +2277,47 @@ void menuProcCustomSwitches(uint8_t event) for (uint8_t i=0; i<7; i++) { y = (i+1)*FH; k = i+s_pgOfs; - CustomSwData &cs = g_model.customSw[k]; + CustomSwData * cs = cswaddress(k); // CSW name uint8_t sw = DSW_SW1+k; putsSwitches(0, y, sw, (sub==k ? INVERS : 0) | (getSwitch(sw, 0) ? BOLD : 0)); - if (cs.func > 0) { + if (cs->func > 0) { // CSW func - lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs.func, 0); + lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs->func, 0); // CSW params - uint8_t cstate = CS_STATE(cs.func); + uint8_t cstate = CS_STATE(cs->func); if (cstate == CS_VOFS) { - putsChnRaw(12*FW-6, y, cs.v1, 0); + putsChnRaw(12*FW-6, y, cs->v1, 0); #if defined(FRSKY) - if (cs.v1 > NUM_XCHNCSW-NUM_TELEMETRY) { - putsTelemetryChannel(19*FW, y, cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs.v2), 0); - int8_t v2_max = maxTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; - if (cs.v2 > v2_max) { - cs.v2 = v2_max; + if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) { + putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), 0); + int8_t v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; + if (cs->v2 > v2_max) { + cs->v2 = v2_max; eeDirty(EE_MODEL); } } else #endif { - lcd_outdezAtt(19*FW, y, cs.v2, 0); + lcd_outdezAtt(19*FW, y, cs->v2, 0); } } else if (cstate == CS_VBOOL) { - putsSwitches(12*FW-6, y, cs.v1, 0); - putsSwitches(17*FW, y, cs.v2, 0); + putsSwitches(12*FW-6, y, cs->v1, 0); + putsSwitches(17*FW, y, cs->v2, 0); } else // cstate == CS_COMP { - putsChnRaw(12*FW-6, y, cs.v1, 0); - putsChnRaw(17*FW, y, cs.v2, 0); + putsChnRaw(12*FW-6, y, cs->v1, 0); + putsChnRaw(17*FW, y, cs->v2, 0); } } } @@ -2335,66 +2335,66 @@ void menuProcCustomSwitches(uint8_t event) y = (i+1)*FH; k = i+s_pgOfs; uint8_t attr = (sub==k ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); - CustomSwData &cs = g_model.customSw[k]; + CustomSwData * cs = cswaddress(k); // CSW name uint8_t sw = DSW_SW1+k; putsSwitches(0, y, sw, getSwitch(sw, 0) ? BOLD : 0); // CSW func - lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs.func, m_posHorz==0 ? attr : 0); + lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs->func, m_posHorz==0 ? attr : 0); // CSW params - uint8_t cstate = CS_STATE(cs.func); + uint8_t cstate = CS_STATE(cs->func); int8_t v1_min=0, v1_max=NUM_XCHNCSW, v2_min=0, v2_max=NUM_XCHNCSW; if (cstate == CS_VOFS) { - putsChnRaw(12*FW-6, y, cs.v1, (m_posHorz==1 ? attr : 0)); + putsChnRaw(12*FW-6, y, cs->v1, (m_posHorz==1 ? attr : 0)); #if defined(FRSKY) - if (cs.v1 > NUM_XCHNCSW-NUM_TELEMETRY) { - putsTelemetryChannel(19*FW, y, cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs.v2), m_posHorz==2 ? attr : 0); - v2_min = -128; v2_max = maxTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; - if (cs.v2 > v2_max) { - cs.v2 = v2_max; + if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) { + putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), m_posHorz==2 ? attr : 0); + v2_min = -128; v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128; + if (cs->v2 > v2_max) { + cs->v2 = v2_max; eeDirty(EE_MODEL); } } else #endif { - lcd_outdezAtt(19*FW, y, cs.v2, m_posHorz==2 ? attr : 0); + lcd_outdezAtt(19*FW, y, cs->v2, m_posHorz==2 ? attr : 0); v2_min = -125; v2_max = 125; } } else if (cstate == CS_VBOOL) { - putsSwitches(12*FW-6, y, cs.v1, m_posHorz==1 ? attr : 0); - putsSwitches(17*FW, y, cs.v2, m_posHorz==2 ? attr : 0); + putsSwitches(12*FW-6, y, cs->v1, m_posHorz==1 ? attr : 0); + putsSwitches(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0); v1_min = SWITCH_OFF; v1_max = SWITCH_ON; v2_min = SWITCH_OFF; v2_max = SWITCH_ON; } else // cstate == CS_COMP { - putsChnRaw(12*FW-6, y, cs.v1, m_posHorz==1 ? attr : 0); - putsChnRaw(17*FW, y, cs.v2, m_posHorz==2 ? attr : 0); + putsChnRaw(12*FW-6, y, cs->v1, m_posHorz==1 ? attr : 0); + putsChnRaw(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0); } if ((s_editMode>0 || p1valdiff) && attr) { switch (m_posHorz) { case 0: - CHECK_INCDEC_MODELVAR(event, cs.func, 0,CS_MAXF); - if (cstate != CS_STATE(cs.func)) { - cs.v1 = 0; - cs.v2 = 0; + CHECK_INCDEC_MODELVAR(event, cs->func, 0,CS_MAXF); + if (cstate != CS_STATE(cs->func)) { + cs->v1 = 0; + cs->v2 = 0; } break; case 1: - CHECK_INCDEC_MODELVAR(event, cs.v1, v1_min, v1_max); + CHECK_INCDEC_MODELVAR(event, cs->v1, v1_min, v1_max); break; case 2: - CHECK_INCDEC_MODELVAR(event, cs.v2, v2_min, v2_max); + CHECK_INCDEC_MODELVAR(event, cs->v2, v2_min, v2_max); break; } } @@ -2427,9 +2427,9 @@ void menuProcFunctionSwitches(uint8_t event) uint8_t active = (attr && (s_editMode>0 || p1valdiff)); switch (j) { case 0: - putsSwitches(3, y, sd->swtch, attr | ((abs(sd->swtch) <= MAX_SWITCH && getSwitch(sd->swtch, 0) && (sd->func >= 16 || (FSW_PARAM(sd) & 1))) ? BOLD : 0)); + putsSwitches(3, y, sd->swtch, SWONOFF | attr | ((abs(sd->swtch) <= MAX_SWITCH && getSwitch(sd->swtch, 0) && (sd->func >= 16 || (FSW_PARAM(sd) & 1))) ? BOLD : 0)); if (active) { - CHECK_INCDEC_MODELSWITCH( event, sd->swtch, SWITCH_OFF-MAX_SWITCH, SWITCH_ON+MAX_SWITCH); + CHECK_INCDEC_MODELSWITCH( event, sd->swtch, SWITCH_OFF-MAX_SWITCH, SWITCH_ON+MAX_SWITCH+1); } break; case 1: diff --git a/src/open9x.cpp b/src/open9x.cpp index 928192188..94740e5ac 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -162,6 +162,16 @@ LimitData *limitaddress(uint8_t idx) return &g_model.limitData[idx]; } +int8_t *curveaddress(uint8_t idx) +{ + return (idx >= MAX_CURVE5 ? g_model.curves9[idx-MAX_CURVE5] : g_model.curves5[idx]); +} + +CustomSwData *cswaddress(uint8_t idx) +{ + return &g_model.customSw[idx]; +} + void generalDefault() { memset(&g_eeGeneral, 0, sizeof(g_eeGeneral)); @@ -236,7 +246,7 @@ int16_t intpol(int16_t x, uint8_t idx) // -100, -75, -50, -25, 0 ,25 ,50, 75, 10 #define D9 (RESX * 2 / 8) #define D5 (RESX * 2 / 4) bool cv9 = idx >= MAX_CURVE5; - int8_t *crv = cv9 ? g_model.curves9[idx-MAX_CURVE5] : g_model.curves5[idx]; + int8_t *crv = curveaddress(idx); int16_t erg; x+=RESXu; @@ -553,10 +563,10 @@ bool __getSwitch(int8_t swtch) } else { cs_idx -= MAX_PSWITCH+1; - volatile CustomSwData &cs = g_model.customSw[cs_idx]; - if (cs.func == CS_OFF) return false; + CustomSwData * cs = cswaddress(cs_idx); + if (cs->func == CS_OFF) return false; - uint8_t s = CS_STATE(cs.func); + uint8_t s = CS_STATE(cs->func); if (s == CS_VBOOL) { GETSWITCH_RECURSIVE_TYPE mask = ((GETSWITCH_RECURSIVE_TYPE)1 << cs_idx); if (s_last_switch_used & mask) { @@ -564,9 +574,9 @@ bool __getSwitch(int8_t swtch) } else { s_last_switch_used |= mask; - bool res1 = __getSwitch(cs.v1); - bool res2 = __getSwitch(cs.v2); - switch (cs.func) { + bool res1 = __getSwitch(cs->v1); + bool res2 = __getSwitch(cs->v2); + switch (cs->func) { case CS_AND: result = (res1 && res2); break; @@ -586,26 +596,26 @@ bool __getSwitch(int8_t swtch) #endif } else { - int16_t x = getValue(cs.v1-1); + int16_t x = getValue(cs->v1-1); int16_t y; if (s == CS_VOFS) { #if defined(FRSKY) // Telemetry - if (cs.v1 > CSW_CHOUT_BASE+NUM_CHNOUT) { - y = convertTelemValue(cs.v1-(CSW_CHOUT_BASE+NUM_CHNOUT), 128+cs.v2); - uint8_t idx = cs.v1-CSW_CHOUT_BASE-NUM_CHNOUT-TELEM_ALT; + if (cs->v1 > CSW_CHOUT_BASE+NUM_CHNOUT) { + y = convertTelemValue(cs->v1-(CSW_CHOUT_BASE+NUM_CHNOUT), 128+cs->v2); + uint8_t idx = cs->v1-CSW_CHOUT_BASE-NUM_CHNOUT-TELEM_ALT; if (idx < THLD_MAX) { // Fill the threshold array - barsThresholds[idx] = 128 + cs.v2; + barsThresholds[idx] = 128 + cs->v2; } } else #endif { - y = calc100toRESX(cs.v2); + y = calc100toRESX(cs->v2); } - switch (cs.func) { + switch (cs->func) { case CS_VPOS: result = (x>y); break; @@ -622,9 +632,9 @@ bool __getSwitch(int8_t swtch) } } else { - y = getValue(cs.v2-1); + y = getValue(cs->v2-1); - switch (cs.func) { + switch (cs->func) { case CS_EQUAL: result = (x==y); break; @@ -649,24 +659,24 @@ bool __getSwitch(int8_t swtch) } #if defined(PCBARM) - if (cs.delay) { + if (cs->delay) { if (result) { if (delays[cs_idx] > get_tmr10ms()) result = false; } else { - delays[cs_idx] = get_tmr10ms() + (cs.delay*50); + delays[cs_idx] = get_tmr10ms() + (cs->delay*50); } } - if (cs.duration) { + if (cs->duration) { if (result) { if (durations[cs_idx] < get_tmr10ms()) { result = false; - if (cs.delay) delays[cs_idx] = get_tmr10ms() + (cs.delay*50); + if (cs->delay) delays[cs_idx] = get_tmr10ms() + (cs->delay*50); } } else { - durations[cs_idx] = get_tmr10ms() + (cs.duration*50); + durations[cs_idx] = get_tmr10ms() + (cs->duration*50); } } @@ -1596,15 +1606,8 @@ void testFunc() } #endif - -#if defined(PCBARM) -#define MASK_FSW_TYPE uint32_t // current max = 32 function switches -#else -#define MASK_FSW_TYPE uint16_t // current max = 16 function switches -#endif - uint16_t activeFunctions = 0; -MASK_FSW_TYPE active_switches = 0; +MASK_FSW_TYPE activeFunctionSwitches = 0; #if defined(PCBARM) || defined(SOMO) void playValue(uint8_t idx) @@ -1764,7 +1767,7 @@ void evalFunctions() } } - if (~active_switches & switch_mask) { + if (~activeFunctionSwitches & switch_mask) { if (sd->func == FUNC_RESET) { switch (FSW_PARAM(sd)) { case 0: @@ -1783,7 +1786,7 @@ void evalFunctions() } } - if ((!momentary) || (~active_switches & switch_mask)) { + if ((!momentary) || (~activeFunctionSwitches & switch_mask)) { if (sd->func == FUNC_PLAY_SOUND) { AUDIO_PLAY(AU_FRSKY_FIRST+FSW_PARAM(sd)); } @@ -1835,11 +1838,26 @@ void evalFunctions() #endif } - newActiveFunctions |= function_mask; - active_switches |= switch_mask; + if (momentary) { + if (~activeFunctionSwitches & switch_mask) { + if (~activeFunctions & function_mask) { + newActiveFunctions |= function_mask; + } + } + else { + newActiveFunctions |= (activeFunctions & function_mask); + } + } + else { + newActiveFunctions |= function_mask; + } + + activeFunctionSwitches |= switch_mask; } else { - active_switches &= (~switch_mask); + activeFunctionSwitches &= (~switch_mask); + if (momentary) + newActiveFunctions |= (activeFunctions & function_mask); } } } diff --git a/src/open9x.h b/src/open9x.h index 87f95e7d7..9c057050c 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -777,6 +777,8 @@ extern PhaseData *phaseaddress(uint8_t idx); extern ExpoData *expoaddress(uint8_t idx); extern MixData *mixaddress(uint8_t idx); extern LimitData *limitaddress(uint8_t idx); +extern int8_t *curveaddress(uint8_t idx); +extern CustomSwData *cswaddress(uint8_t idx); extern void deleteExpoMix(uint8_t expo, uint8_t idx); @@ -809,6 +811,13 @@ inline bool isMixActive(uint8_t mix) #define isMixActive(x) false #endif +#if defined(PCBARM) +#define MASK_FSW_TYPE uint32_t // current max = 32 function switches +#else +#define MASK_FSW_TYPE uint16_t // current max = 16 function switches +#endif + +extern MASK_FSW_TYPE activeFunctionSwitches; extern uint16_t activeFunctions; inline bool isFunctionActive(uint8_t func) { diff --git a/src/templates.cpp b/src/templates.cpp index ec83d05fb..34ab5e31d 100644 --- a/src/templates.cpp +++ b/src/templates.cpp @@ -53,49 +53,63 @@ #include "open9x.h" -MixData* setDest(uint8_t dch, bool clear=false) +MixData* setDest(uint8_t dch, uint8_t src, bool clear=false) { - uint8_t i = 0; - while (isrcRaw && mix->destCh <= dch) { + if (clear && mix->destCh == dch) + deleteExpoMix(0, i); + else { + if (++i==MAX_MIXERS) { + // TODO should return null pointer but needs to be tested then + mix = mixaddress(0); + break; + } + } + } + else { + break; + } + } + + memmove(mix+1, mix, (MAX_MIXERS-(i+1))*sizeof(MixData) ); + memset(mix,0,sizeof(MixData)); + mix->destCh = dch; + mix->srcRaw = src; + mix->weight = 100; + return mix; } void clearMixes() { - memset(g_model.mixData,0,sizeof(g_model.mixData)); //clear all mixes - STORE_MODELVARS; + memset(g_model.mixData, 0, sizeof(g_model.mixData)); //clear all mixes + STORE_MODELVARS; } void clearCurves() { - memset(g_model.curves5,0,sizeof(g_model.curves5)); //clear all curves - memset(g_model.curves9,0,sizeof(g_model.curves9)); //clear all curves + memset(g_model.curves5, 0, sizeof(g_model.curves5)); //clear all curves + memset(g_model.curves9, 0, sizeof(g_model.curves9)); //clear all curves } void setCurve(uint8_t c, const pm_int8_t ar[]) { - if(cfunc = func; + cs->v1 = v1; + cs->v2 = v2; } const pm_int8_t heli_ar1[] PROGMEM = {-100, 20, 50, 70, 90}; @@ -106,7 +120,7 @@ const pm_int8_t heli_ar5[] PROGMEM = {-100, 0, 0, 0, 100}; void applyTemplate(uint8_t idx) { - MixData *md = &g_model.mixData[0]; + MixData *md; //CC(STK) -> vSTK //ICC(vSTK) -> STK @@ -124,43 +138,43 @@ void applyTemplate(uint8_t idx) // Simple 4-Ch case TMPL_SIMPLE_4CH: clearMixes(); - md=setDest(ICC(STK_RUD)); md->srcRaw=MIXSRC_Rud; md->weight=100; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_Ele; md->weight=100; - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_Thr; md->weight=100; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_Ail; md->weight=100; + setDest(ICC(STK_RUD), MIXSRC_Rud); + setDest(ICC(STK_ELE), MIXSRC_Ele); + setDest(ICC(STK_THR), MIXSRC_Thr); + setDest(ICC(STK_AIL), MIXSRC_Ail); break; // T-Cut case TMPL_THR_CUT: - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_MAX; md->weight=-100; md->swtch=DSW_THR; md->mltpx=MLTPX_REP; + md=setDest(ICC(STK_THR), MIXSRC_MAX); md->weight=-100; md->swtch=DSW_THR; md->mltpx=MLTPX_REP; break; // V-Tail case TMPL_V_TAIL: - md=setDest(ICC(STK_RUD), true); md->srcRaw=MIXSRC_Rud; md->weight= 100; - md=setDest(ICC(STK_RUD)); md->srcRaw=MIXSRC_Ele; md->weight=-100; - md=setDest(ICC(STK_ELE), true); md->srcRaw=MIXSRC_Rud; md->weight= 100; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_Ele; md->weight= 100; + setDest(ICC(STK_RUD), MIXSRC_Rud, true); + md=setDest(ICC(STK_RUD), MIXSRC_Ele); md->weight=-100; + setDest(ICC(STK_ELE), MIXSRC_Rud, true); + setDest(ICC(STK_ELE), MIXSRC_Ele); break; // Elevon\\Delta case TMPL_ELEVON_DELTA: - md=setDest(ICC(STK_ELE), true); md->srcRaw=MIXSRC_Ele; md->weight= 100; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_Ail; md->weight= 100; - md=setDest(ICC(STK_AIL), true); md->srcRaw=MIXSRC_Ele; md->weight= 100; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_Ail; md->weight=-100; + setDest(ICC(STK_ELE), MIXSRC_Ele, true); + setDest(ICC(STK_ELE), MIXSRC_Ail); + setDest(ICC(STK_AIL), MIXSRC_Ele, true); + md=setDest(ICC(STK_AIL), MIXSRC_Ail); md->weight=-100; break; // eCCPM case TMPL_ECCPM: - md=setDest(ICC(STK_ELE), true); md->srcRaw=MIXSRC_Ele; md->weight= 72; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_Thr; md->weight= 55; - md=setDest(ICC(STK_AIL), true); md->srcRaw=MIXSRC_Ele; md->weight=-36; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_Ail; md->weight= 62; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_Thr; md->weight= 55; - md=setDest(5, true); md->srcRaw=MIXSRC_Ele; md->weight=-36; - md=setDest(5); md->srcRaw=MIXSRC_Ail; md->weight=-62; - md=setDest(5); md->srcRaw=MIXSRC_Thr; md->weight= 55; + md=setDest(ICC(STK_ELE), MIXSRC_Ele, true); md->weight= 72; + md=setDest(ICC(STK_ELE), MIXSRC_Thr); md->weight= 55; + md=setDest(ICC(STK_AIL), MIXSRC_Ele, true); md->weight=-36; + md=setDest(ICC(STK_AIL), MIXSRC_Ail); md->weight= 62; + md=setDest(ICC(STK_AIL), MIXSRC_Thr); md->weight= 55; + md=setDest(5, MIXSRC_Ele, true); md->weight=-36; + md=setDest(5, MIXSRC_Ail); md->weight=-62; + md=setDest(5, MIXSRC_Thr); md->weight= 55; break; // Heli Setup @@ -169,34 +183,34 @@ void applyTemplate(uint8_t idx) clearCurves(); //Set up Mixes - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_CH9; md->weight= 50; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_CH10; md->weight=-100; - md=setDest(ICC(STK_AIL)); md->srcRaw=MIXSRC_CH11; md->weight= 100; md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_AIL), MIXSRC_CH9); md->weight= 50; + md=setDest(ICC(STK_AIL), MIXSRC_CH10); md->weight=-100; + md=setDest(ICC(STK_AIL), MIXSRC_CH11); md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_CH9; md->weight=-100; - md=setDest(ICC(STK_ELE)); md->srcRaw=MIXSRC_CH11; md->weight= 100; md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_ELE), MIXSRC_CH9); md->weight=-100; + md=setDest(ICC(STK_ELE), MIXSRC_CH11); md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_Thr; md->weight= 100; md->swtch=DSW_ID0; md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_Thr; md->weight= 100; md->swtch=DSW_ID1; md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_Thr; md->weight= 110; md->swtch=DSW_ID2; md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_THR)); md->srcRaw=MIXSRC_MAX; md->weight=-125; md->swtch=DSW_THR; md->mltpx=MLTPX_REP; md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_THR), MIXSRC_Thr); md->swtch=DSW_ID0; md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_THR), MIXSRC_Thr); md->swtch=DSW_ID1; md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_THR), MIXSRC_Thr); md->weight= 110; md->swtch=DSW_ID2; md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(ICC(STK_THR), MIXSRC_MAX); md->weight=-125; md->swtch=DSW_THR; md->mltpx=MLTPX_REP; md->carryTrim=TRIM_OFF; - md=setDest(ICC(STK_RUD)); md->srcRaw=MIXSRC_Rud; md->weight=100; + md=setDest(ICC(STK_RUD), MIXSRC_Rud); - md=setDest(4); md->srcRaw=MIXSRC_MAX; md->weight= 50; md->swtch=-DSW_GEA; md->carryTrim=TRIM_OFF; - md=setDest(4); md->srcRaw=MIXSRC_MAX; md->weight=-50; md->swtch= DSW_GEA; md->carryTrim=TRIM_OFF; - md=setDest(4); md->srcRaw=STK_P3; md->weight= 40; md->carryTrim=TRIM_OFF; + md=setDest(4, MIXSRC_MAX); md->weight= 50; md->swtch=-DSW_GEA; md->carryTrim=TRIM_OFF; + md=setDest(4, MIXSRC_MAX); md->weight=-50; md->swtch= DSW_GEA; md->carryTrim=TRIM_OFF; + md=setDest(4, STK_P3); md->weight= 40; md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=MIXSRC_CH9; md->weight= -50; - md=setDest(5); md->srcRaw=MIXSRC_CH10; md->weight=-100; - md=setDest(5); md->srcRaw=MIXSRC_CH11; md->weight=-100; md->carryTrim=TRIM_OFF; + md=setDest(5, MIXSRC_CH9); md->weight= -50; + md=setDest(5, MIXSRC_CH10); md->weight=-100; + md=setDest(5, MIXSRC_CH11); md->weight=-100; md->carryTrim=TRIM_OFF; - md=setDest(8); md->srcRaw=MIXSRC_Ele; md->weight= 60; - md=setDest(9); md->srcRaw=MIXSRC_Ail; md->weight=-52; - md=setDest(10); md->srcRaw=MIXSRC_Thr; md->weight= 70; md->swtch=DSW_ID0; md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(10); md->srcRaw=MIXSRC_Thr; md->weight= 70; md->swtch=DSW_ID1; md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(10); md->srcRaw=MIXSRC_Thr; md->weight= 70; md->swtch=DSW_ID2; md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(10); md->srcRaw=MIXSRC_Thr; md->weight=100; md->swtch=DSW_THR; md->curve=CV(5); md->carryTrim=TRIM_OFF; md->mltpx=MLTPX_REP; + md=setDest(8, MIXSRC_Ele); md->weight= 60; + md=setDest(9, MIXSRC_Ail); md->weight=-52; + md=setDest(10, MIXSRC_Thr); md->weight= 70; md->swtch=DSW_ID0; md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(10, MIXSRC_Thr); md->weight= 70; md->swtch=DSW_ID1; md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(10, MIXSRC_Thr); md->weight= 70; md->swtch=DSW_ID2; md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(10, MIXSRC_Thr); md->swtch=DSW_THR; md->curve=CV(5); md->carryTrim=TRIM_OFF; md->mltpx=MLTPX_REP; //Set up Curves setCurve(CURVE5(1), heli_ar1); @@ -208,8 +222,8 @@ void applyTemplate(uint8_t idx) // Servo Test case TMPL_SERVO_TEST: - md=setDest(15, true); md->srcRaw=MIXSRC_SW1; md->weight=110; md->mltpx=MLTPX_ADD; md->delayUp = 6; md->delayDown = 6; md->speedUp = 8; md->speedDown = 8; - setSwitch(1, CS_VNEG, CSW_CHOUT_BASE+16, 0); + md=setDest(15, MIXSRC_SW1, true); md->weight=110; md->mltpx=MLTPX_ADD; md->delayUp = 6; md->delayDown = 6; md->speedUp = 8; md->speedDown = 8; + setSwitch(1, CS_VNEG, CSW_CHOUT_BASE+16, 0); break; default: diff --git a/src/translations/cz.h b/src/translations/cz.h index eaf64b8cf..5cc1bf503 100644 --- a/src/translations/cz.h +++ b/src/translations/cz.h @@ -213,9 +213,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON" #else -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC"" ON" #endif #define LEN_VSRCRAW "\004" diff --git a/src/translations/de.h b/src/translations/de.h index 0817ed5b7..7f5011ddc 100644 --- a/src/translations/de.h +++ b/src/translations/de.h @@ -213,9 +213,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW"" ON" #else -#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 TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC"" ON" #endif #define LEN_VSRCRAW "\004" diff --git a/src/translations/en.h b/src/translations/en.h index e689e3d3b..fb6fb4dbe 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -214,9 +214,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON" #else -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC"" ON" #endif #define LEN_VSRCRAW "\004" diff --git a/src/translations/fr.h b/src/translations/fr.h index b78cc665c..354931894 100644 --- a/src/translations/fr.h +++ b/src/translations/fr.h @@ -211,9 +211,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW"" ON" #else -#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 TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC"" ON" #endif #define LEN_VSRCRAW "\004" diff --git a/src/translations/it.h b/src/translations/it.h index 99d084906..98f547634 100644 --- a/src/translations/it.h +++ b/src/translations/it.h @@ -213,9 +213,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW" +#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW"" ON" #else -#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 TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC"" ON" #endif #define LEN_VSRCRAW "\004" diff --git a/src/translations/se.h b/src/translations/se.h index 1ab92f656..747885a3d 100644 --- a/src/translations/se.h +++ b/src/translations/se.h @@ -211,9 +211,9 @@ #define LEN_VSWITCHES "\003" #if defined(PCBARM) -#define TR_VSWITCHES "GAS""ROD""H\205J""ID0""ID1""ID2""SKE""LAN""TRN""BR1""BR2""BR3""BR4""BR5""BR6""BR7""BR8""BR9""BRA""BRB""BRC""BRD""BRE""BRF""BRG""BRH""BRI""BRJ""BRK""BRL""BRM""BRN""BRO""BRP""BRQ""BRR""BRS""BRT""BRU""BRV""BRW" +#define TR_VSWITCHES "GAS""ROD""H\205J""ID0""ID1""ID2""SKE""LAN""TRN""BR1""BR2""BR3""BR4""BR5""BR6""BR7""BR8""BR9""BRA""BRB""BRC""BRD""BRE""BRF""BRG""BRH""BRI""BRJ""BRK""BRL""BRM""BRN""BRO""BRP""BRQ""BRR""BRS""BRT""BRU""BRV""BRW"" ON" #else -#define TR_VSWITCHES "GAS""ROD""H\205J""ID0""ID1""ID2""SKE""LAN""TRN""BR1""BR2""BR3""BR4""BR5""BR6""BR7""BR8""BR9""BRA""BRB""BRC" +#define TR_VSWITCHES "GAS""ROD""H\205J""ID0""ID1""ID2""SKE""LAN""TRN""BR1""BR2""BR3""BR4""BR5""BR6""BR7""BR8""BR9""BRA""BRB""BRC"" ON" #endif #define LEN_VSRCRAW "\004"