[Taranis X9E] Pots and Switches full support. Removed 2x2 switches

feature
This commit is contained in:
bsongis
2015-03-09 18:51:14 +01:00
parent dd0d34ba14
commit 0eeb0437db
16 changed files with 318 additions and 256 deletions
+25 -26
View File
@@ -60,12 +60,12 @@ enum menuGeneralHwItems {
ITEM_SETUP_HW_SF,
ITEM_SETUP_HW_SG,
ITEM_SETUP_HW_SH,
ITEM_SETUP_HW_SI,
ITEM_SETUP_HW_SJ,
ITEM_SETUP_HW_SK,
ITEM_SETUP_HW_SL,
ITEM_SETUP_HW_SM,
ITEM_SETUP_HW_SN,
CASE_REV9E(ITEM_SETUP_HW_SI)
CASE_REV9E(ITEM_SETUP_HW_SJ)
CASE_REV9E(ITEM_SETUP_HW_SK)
CASE_REV9E(ITEM_SETUP_HW_SL)
CASE_REV9E(ITEM_SETUP_HW_SM)
CASE_REV9E(ITEM_SETUP_HW_SN)
CASE_REV9E(ITEM_SETUP_HW_SO)
CASE_REV9E(ITEM_SETUP_HW_SP)
CASE_REV9E(ITEM_SETUP_HW_SQ)
@@ -87,8 +87,7 @@ enum menuGeneralHwItems {
#if defined(REV9E)
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
#else
#define SWITCH_ROWS(x) uint8_t(IS_2x2POS(x) ? 0 : HIDDEN_ROW)
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, SWITCH_ROWS(0), SWITCH_ROWS(1), SWITCH_ROWS(2), SWITCH_ROWS(3), SWITCH_ROWS(4), SWITCH_ROWS(6)
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
#endif
void menuGeneralHardware(uint8_t event)
@@ -107,7 +106,7 @@ void menuGeneralHardware(uint8_t event)
LcdFlags attr = (sub == k ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
switch (k) {
case ITEM_SETUP_HW_LABEL_STICKS:
lcd_putsLeft(y, "Sticks");
lcd_putsLeft(y, STR_STICKS);
break;
case ITEM_SETUP_HW_STICK1:
case ITEM_SETUP_HW_STICK2:
@@ -129,7 +128,7 @@ void menuGeneralHardware(uint8_t event)
break;
}
case ITEM_SETUP_HW_LABEL_POTS:
lcd_putsLeft(y, "Pots");
lcd_putsLeft(y, STR_POTS);
break;
case ITEM_SETUP_HW_POT1:
case ITEM_SETUP_HW_POT2:
@@ -149,18 +148,22 @@ void menuGeneralHardware(uint8_t event)
else
lcd_putsiAtt(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0);
uint8_t potType = (g_eeGeneral.potsType & mask) >> shift;
uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift;
#if !defined(REV9E)
if (potType == POT_TYPE_NONE && k <= ITEM_SETUP_HW_POT2)
potType = POT_TYPE_DETENT;
#endif
potType = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", STR_POTTYPES, potType, 0, POT_TYPE_MAX, m_posHorz == 1 ? attr : 0, event);
#if !defined(REV9E)
if (potType == POT_TYPE_DETENT && k <= ITEM_SETUP_HW_POT2)
potType = POT_TYPE_NONE;
g_eeGeneral.potsType &= ~mask;
g_eeGeneral.potsType |= (potType << shift);
#endif
g_eeGeneral.potsConfig &= ~mask;
g_eeGeneral.potsConfig |= (potType << shift);
break;
}
case ITEM_SETUP_HW_LABEL_SWITCHES:
lcd_putsLeft(y, "Switches");
lcd_putsLeft(y, STR_SWITCHES);
break;
case ITEM_SETUP_HW_SA:
case ITEM_SETUP_HW_SB:
@@ -170,13 +173,13 @@ void menuGeneralHardware(uint8_t event)
case ITEM_SETUP_HW_SF:
case ITEM_SETUP_HW_SG:
case ITEM_SETUP_HW_SH:
#if defined(REV9E)
case ITEM_SETUP_HW_SI:
case ITEM_SETUP_HW_SJ:
case ITEM_SETUP_HW_SK:
case ITEM_SETUP_HW_SL:
case ITEM_SETUP_HW_SM:
case ITEM_SETUP_HW_SN:
#if defined(REV9E)
case ITEM_SETUP_HW_SO:
case ITEM_SETUP_HW_SP:
case ITEM_SETUP_HW_SQ:
@@ -193,20 +196,16 @@ void menuGeneralHardware(uint8_t event)
else
lcd_putsiAtt(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0);
#if defined(REV9E)
config = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", "\007None\0 DefaultToggle\0""2POS\0 3POS\0", config, SWITCH_NONE, SWITCH_3POS, m_posHorz == 1 ? attr : 0, event);
config = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_3POS, m_posHorz == 1 ? attr : 0, event);
if (attr && checkIncDec_Ret) {
uint32_t mask = 0x0f << (4*index);
TRACE("avant %x", g_eeGeneral.switchConfig);
g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | ((uint32_t(config)&0xf) << (4*index));
TRACE("apres %x", g_eeGeneral.switchConfig);
uint64_t mask = (uint64_t)0x07 << (3*index);
g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | ((uint64_t(config) & 0x07) << (3*index));
}
#else
if (k <= ITEM_SETUP_HW_SH) {
config = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", "\007DefaultToggle\0""2POS\0 3POS\0 2x2POS\0", config, SWITCH_NONE, SWITCH_2x2POS, m_posHorz == 1 ? attr : 0, event);
if (attr && checkIncDec_Ret) {
uint32_t mask = 0x0f << (4*index);
g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | (((uint32_t)(config)&0xf) << (4*index));
}
config = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SWTYPES, config, SWITCH_DEFAULT, SWITCH_3POS, m_posHorz == 1 ? attr : 0, event);
if (attr && checkIncDec_Ret) {
uint32_t mask = 0x03 << (2*index);
g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | (((uint32_t)(config) & 0x03) << (2*index));
}
#endif
break;