TMR1 / TMR2 / ALT may now be used in custom switches!
This commit is contained in:
+15
-3
@@ -297,8 +297,12 @@ FORCEINLINE int16_t getValue(uint8_t i)
|
||||
else if(i<PPM_BASE+NUM_CAL_PPM) return (g_ppmIns[i-PPM_BASE] - g_eeGeneral.trainer.calib[i-PPM_BASE])*2;
|
||||
else if(i<PPM_BASE+NUM_PPM) return g_ppmIns[i-PPM_BASE]*2;
|
||||
else if(i<CHOUT_BASE+NUM_CHNOUT) return ex_chans[i-CHOUT_BASE];
|
||||
else if(i<CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS) return s_timerVal[i-CHOUT_BASE-NUM_CHNOUT];
|
||||
#ifdef FRSKY
|
||||
else if(i<CHOUT_BASE+NUM_CHNOUT+NUM_TELEMETRY) return frskyTelemetry[i-CHOUT_BASE-NUM_CHNOUT].value;
|
||||
else if(i<CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+2) return frskyTelemetry[i-CHOUT_BASE-NUM_CHNOUT-MAX_TIMERS].value;
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
else if(i<CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+3) return frskyHubData.baroAltitude + baroAltitudeOffset;
|
||||
#endif
|
||||
#endif
|
||||
else return 0;
|
||||
}
|
||||
@@ -358,10 +362,18 @@ bool __getSwitch(int8_t swtch)
|
||||
int16_t y;
|
||||
if (s == CS_VOFS) {
|
||||
#ifdef FRSKY
|
||||
if (cs.v1 > CHOUT_BASE+NUM_CHNOUT)
|
||||
y = 125+cs.v2;
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
if (cs.v1 > CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+2)
|
||||
y = (128+cs.v2) * 4;
|
||||
else
|
||||
#endif
|
||||
if (cs.v1 > CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS)
|
||||
y = 128+cs.v2;
|
||||
else
|
||||
#endif
|
||||
if (cs.v1 > CHOUT_BASE+NUM_CHNOUT)
|
||||
y = 98+cs.v2;
|
||||
else
|
||||
y = calc100toRESX(cs.v2);
|
||||
|
||||
switch (cs.func) {
|
||||
|
||||
+8
-4
@@ -356,15 +356,19 @@ enum EnumKeys {
|
||||
#define NUM_PPM 8
|
||||
#define CHOUT_BASE (PPM_BASE+NUM_PPM)
|
||||
|
||||
#ifdef FRSKY
|
||||
#if defined(FRSKY)
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
#define NUM_TELEMETRY 3
|
||||
#define TELEMETRY_CHANNELS "AD1AD2ALT"
|
||||
#else
|
||||
#define NUM_TELEMETRY 2
|
||||
#define TELEMETRY_CHANNELS "AD1AD2"
|
||||
#define TELEMETRY_STRLEN 3
|
||||
#endif
|
||||
#else
|
||||
#define NUM_TELEMETRY 0
|
||||
#define TELEMETRY_CHANNELS ""
|
||||
#define TELEMETRY_STRLEN 0
|
||||
#endif
|
||||
#define TELEMETRY_STRLEN 3
|
||||
|
||||
#define DSW_THR 1
|
||||
#define DSW_RUD 2
|
||||
@@ -581,7 +585,7 @@ void eeLoadModel(uint8_t id);
|
||||
int8_t eeFindEmptyModel(uint8_t id, bool down);
|
||||
|
||||
///number of real input channels (1-9) plus virtual input channels X1-X4
|
||||
#define NUM_XCHNRAW (NUM_STICKS+NUM_POTS+2/*MAX/FULL*/+3/*CYC1-CYC3*/+NUM_PPM+NUM_CHNOUT+NUM_TELEMETRY)
|
||||
#define NUM_XCHNRAW (NUM_STICKS+NUM_POTS+2/*MAX/FULL*/+3/*CYC1-CYC3*/+NUM_PPM+NUM_CHNOUT+MAX_TIMERS+NUM_TELEMETRY)
|
||||
///number of real output channels (CH1-CH8) plus virtual output channels X1-X4
|
||||
#define NUM_XCHNOUT (NUM_CHNOUT) //(NUM_CHNOUT)//+NUM_VIRT)
|
||||
|
||||
|
||||
+5
-1
@@ -414,8 +414,12 @@ void putsChnRaw(uint8_t x, uint8_t y, uint8_t idx, uint8_t att)
|
||||
putsStrIdx(x,y,PSTR("PPM"), idx - (NUM_STICKS+NUM_POTS+2+3), att);
|
||||
else if (idx<=NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT)
|
||||
putsStrIdx(x, y, PSTR("CH"), idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM), att);
|
||||
else if (idx<=NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT+MAX_TIMERS)
|
||||
putsStrIdx(x, y, PSTR("TMR"), idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT), att);
|
||||
#ifdef FRSKY
|
||||
else if (idx<=NUM_XCHNRAW)
|
||||
lcd_putsnAtt(x, y, PSTR(TELEMETRY_CHANNELS)+TELEMETRY_STRLEN*(idx-1-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT)), TELEMETRY_STRLEN, att);
|
||||
lcd_putsnAtt(x, y, PSTR(TELEMETRY_CHANNELS)+TELEMETRY_STRLEN*(idx-1-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+MAX_TIMERS+NUM_CHNOUT)), TELEMETRY_STRLEN, att);
|
||||
#endif
|
||||
}
|
||||
|
||||
void putsChn(uint8_t x, uint8_t y, uint8_t idx, uint8_t att)
|
||||
|
||||
+20
-8
@@ -1590,35 +1590,47 @@ void menuProcCustomSwitches(uint8_t event)
|
||||
if(cstate == CS_VOFS)
|
||||
{
|
||||
putsChnRaw(12*FW, y, cs.v1, m_posHorz==1 ? attr : 0);
|
||||
|
||||
#if defined(FRSKY)
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
if (cs.v1 > NUM_XCHNRAW-1) {
|
||||
lcd_outdezAtt(20*FW, y, (128+cs.v2) * 4, m_posHorz==2 ? attr : 0);
|
||||
v2_min = -128; v2_max = 127;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (cs.v1 > NUM_XCHNRAW-NUM_TELEMETRY) {
|
||||
putsTelemetryChannel(20*FW, y, cs.v1+NUM_TELEMETRY-NUM_XCHNRAW-1, 128+cs.v2, m_posHorz==2 ? attr : 0);
|
||||
v2_min = -128; v2_max = 127;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
lcd_outdezAtt( 20*FW, y, cs.v2 ,m_posHorz==2 ? attr : 0);
|
||||
if (cs.v1 > NUM_XCHNRAW-NUM_TELEMETRY-MAX_TIMERS) {
|
||||
putsTime(17*FW, y, 98+cs.v2, m_posHorz==2 ? attr : 0, m_posHorz==2 ? attr : 0); // TODO optim
|
||||
v2_min = -128; v2_max = 127;
|
||||
}
|
||||
else {
|
||||
lcd_outdezAtt(20*FW, y, cs.v2, m_posHorz==2 ? attr : 0);
|
||||
v2_min = -125; v2_max = 125;
|
||||
}
|
||||
}
|
||||
else if(cstate == CS_VBOOL)
|
||||
{
|
||||
putsSwitches(13*FW, y, cs.v1 ,m_posHorz==1 ? attr : 0);
|
||||
putsSwitches(17*FW, y, cs.v2 ,m_posHorz==2 ? attr : 0);
|
||||
putsSwitches(13*FW, y, cs.v1, m_posHorz==1 ? attr : 0);
|
||||
putsSwitches(17*FW, y, cs.v2, m_posHorz==2 ? attr : 0);
|
||||
v1_min = -MAX_SWITCH; v1_max = MAX_SWITCH;
|
||||
v2_min = -MAX_SWITCH; v2_max = MAX_SWITCH;
|
||||
}
|
||||
else // cstate == CS_COMP
|
||||
{
|
||||
putsChnRaw( 12*FW, y, cs.v1 ,m_posHorz==1 ? attr : 0);
|
||||
putsChnRaw( 17*FW, y, cs.v2 ,m_posHorz==2 ? attr : 0);
|
||||
putsChnRaw(12*FW, 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);
|
||||
CHECK_INCDEC_MODELVAR(event, cs.func, 0,CS_MAXF);
|
||||
if (cstate != CS_STATE(cs.func)) {
|
||||
cs.v1 = 0;
|
||||
cs.v2 = 0;
|
||||
@@ -1628,7 +1640,7 @@ void menuProcCustomSwitches(uint8_t event)
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +227,7 @@ PACK(typedef struct t_PhaseData {
|
||||
}) PhaseData;
|
||||
|
||||
#define MAX_MODELS 16
|
||||
#define MAX_TIMERS 2
|
||||
#define MAX_PHASES 5
|
||||
#define MAX_MIXERS 32
|
||||
#define MAX_EXPOS 14
|
||||
|
||||
Reference in New Issue
Block a user