TMR1 / TMR2 / ALT may now be used in custom switches!

This commit is contained in:
bsongis
2012-01-09 20:56:38 +00:00
parent 21328f75ea
commit 6b38d8f0ee
5 changed files with 49 additions and 16 deletions
+15 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}
+1
View File
@@ -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