All X9E switches now working
This commit is contained in:
@@ -1388,6 +1388,10 @@ enum menuGeneralHwItems {
|
||||
ITEM_SETUP_HW_SL,
|
||||
ITEM_SETUP_HW_SM,
|
||||
ITEM_SETUP_HW_SN,
|
||||
CASE_REV9E(ITEM_SETUP_HW_SO)
|
||||
CASE_REV9E(ITEM_SETUP_HW_SP)
|
||||
CASE_REV9E(ITEM_SETUP_HW_SQ)
|
||||
CASE_REV9E(ITEM_SETUP_HW_SR)
|
||||
ITEM_SETUP_HW_UART3_MODE,
|
||||
ITEM_SETUP_HW_MAX
|
||||
};
|
||||
@@ -1400,11 +1404,16 @@ enum menuGeneralHwItems {
|
||||
#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, 0, 0
|
||||
#endif
|
||||
|
||||
#define SWITCH_ROWS(x) uint8_t(IS_2x2POS(x) ? 0 : HIDDEN_ROW)
|
||||
#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)
|
||||
#endif
|
||||
|
||||
void menuGeneralHardware(uint8_t event)
|
||||
{
|
||||
MENU(STR_HARDWARE, menuTabGeneral, e_Hardware, ITEM_SETUP_HW_MAX+1, {0, LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), 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), 0});
|
||||
MENU(STR_HARDWARE, menuTabGeneral, e_Hardware, ITEM_SETUP_HW_MAX+1, {0, LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, 0});
|
||||
|
||||
uint8_t sub = m_posVert - 1;
|
||||
|
||||
@@ -1480,23 +1489,39 @@ void menuGeneralHardware(uint8_t event)
|
||||
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:
|
||||
case ITEM_SETUP_HW_SR:
|
||||
#endif
|
||||
{
|
||||
int index = k-ITEM_SETUP_HW_SA;
|
||||
char label[] = INDENT "S*";
|
||||
label[2] = 'A' + index;
|
||||
uint32_t config = SWITCH_CONFIG(index);
|
||||
int config = SWITCH_CONFIG(index);
|
||||
lcd_putsAtt(0, y, label, m_posHorz < 0 ? attr : 0);
|
||||
if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && m_posHorz == 0))
|
||||
editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, m_posHorz == 0 ? attr : 0);
|
||||
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);
|
||||
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);
|
||||
}
|
||||
#else
|
||||
if (k <= ITEM_SETUP_HW_SH) {
|
||||
config = selectMenuItem(HW_SETTINGS_COLUMN+5*FW, y, "", "\007DefaultToggle\0""2POS\0 3POS\0 2x2POS\0", config, 0, 4, m_posHorz == 1 ? attr : 0, event);
|
||||
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) | (config << (4*index));
|
||||
g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | (((uint32_t)(config)&0xf) << (4*index));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case ITEM_SETUP_HW_UART3_MODE:
|
||||
|
||||
@@ -3056,7 +3056,7 @@ enum ExposFields {
|
||||
CASE_PCBTARANIS(EXPO_FIELD_OFFSET)
|
||||
CASE_9X(EXPO_FIELD_EXPO)
|
||||
CASE_CURVES(EXPO_FIELD_CURVE)
|
||||
CASE_FLIGHT_MODES(EXPO_FIELD_FLIGHT_PHASE)
|
||||
CASE_FLIGHT_MODES(EXPO_FIELD_FLIGHT_MODES)
|
||||
EXPO_FIELD_SWITCH,
|
||||
EXPO_FIELD_SIDE,
|
||||
CASE_PCBTARANIS(EXPO_FIELD_TRIM)
|
||||
@@ -3094,11 +3094,12 @@ void menuModelExpoOne(uint8_t event)
|
||||
coord_t y = MENU_TITLE_HEIGHT + 1;
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
for (uint8_t k=0; k<LCD_LINES-1; k++) {
|
||||
int8_t i = k + s_pgOfs;
|
||||
for (int j=0; j<=i; j++) {
|
||||
if (mstate_tab[j] == HIDDEN_ROW)
|
||||
i++;
|
||||
for (unsigned int k=0; k<LCD_LINES-1; k++) {
|
||||
int i = k + s_pgOfs;
|
||||
for (int j=0; j<=i; ++j) {
|
||||
if (j<(int)DIM(mstate_tab) && mstate_tab[j] == HIDDEN_ROW) {
|
||||
++i;
|
||||
}
|
||||
}
|
||||
#else
|
||||
for (uint8_t i=0; i<EXPO_FIELD_MAX+1; i++) {
|
||||
@@ -3182,7 +3183,7 @@ void menuModelExpoOne(uint8_t event)
|
||||
#endif
|
||||
|
||||
#if defined(FLIGHT_MODES)
|
||||
case EXPO_FIELD_FLIGHT_PHASE:
|
||||
case EXPO_FIELD_FLIGHT_MODES:
|
||||
ed->flightModes = editFlightModes(EXPO_ONE_2ND_COLUMN-IF_9X(EXPO_ONE_FP_WIDTH), y, event, ed->flightModes, attr);
|
||||
break;
|
||||
#endif
|
||||
|
||||
+11
-3
@@ -1484,9 +1484,13 @@ enum SwitchContext
|
||||
|
||||
bool isSwitchAvailable(int swtch, SwitchContext context)
|
||||
{
|
||||
#if defined(PCBTARANIS)
|
||||
uint32_t index = switchInfo(abs(swtch)).quot;
|
||||
#endif
|
||||
|
||||
if (swtch < 0) {
|
||||
#if defined(PCBTARANIS)
|
||||
if (swtch == -SWSRC_SF0 || swtch == -SWSRC_SF2 || swtch == -SWSRC_SH0 || swtch == -SWSRC_SH2)
|
||||
if (!IS_3POS(index))
|
||||
return false;
|
||||
#endif
|
||||
if (swtch == -SWSRC_ON || swtch == -SWSRC_One) {
|
||||
@@ -1495,9 +1499,13 @@ bool isSwitchAvailable(int swtch, SwitchContext context)
|
||||
swtch = -swtch;
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(PCBTARANIS) && defined(REV9E)
|
||||
if (swtch >= SWSRC_SA1 && swtch <= SWSRC_SR1 && (swtch-SWSRC_SA1)%3 == 0) {
|
||||
return IS_3POS(index);
|
||||
}
|
||||
#elif defined(PCBTARANIS)
|
||||
if (swtch == SWSRC_SA1 || swtch == SWSRC_SB1 || swtch == SWSRC_SC1 || swtch == SWSRC_SD1 || swtch == SWSRC_SE1 || swtch == SWSRC_SG1) {
|
||||
return IS_3POS((swtch-SWSRC_SA0)/3);
|
||||
return IS_3POS(index);
|
||||
}
|
||||
if (swtch >= SWSRC_SI0 && swtch <= SWSRC_SM2) {
|
||||
return IS_2x2POS((swtch-SWSRC_SI0)/2);
|
||||
|
||||
@@ -717,6 +717,15 @@ void menuMainView(uint8_t event)
|
||||
lcd_bmp(BITMAP_X, BITMAP_Y, modelBitmap);
|
||||
|
||||
// Switches
|
||||
#if defined(REV9E)
|
||||
for (uint8_t i=0; i<8; i++) {
|
||||
getvalue_t sw;
|
||||
getvalue_t val;
|
||||
val = getValue(MIXSRC_SA+i);
|
||||
sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
|
||||
putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (i<4 ? 8*FW+3 : 24*FW+1) : (i<4 ? 3*FW+2 : 8*FW-1), (i%4)*FH+3*FH, sw, 0);
|
||||
}
|
||||
#else
|
||||
for (uint8_t i=0; i<8; i++) {
|
||||
getvalue_t sw;
|
||||
getvalue_t val;
|
||||
@@ -741,6 +750,7 @@ void menuMainView(uint8_t event)
|
||||
}
|
||||
putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (i<4 ? 8*FW+3 : 24*FW+1) : (i<4 ? 3*FW+2 : 8*FW-1), (i%4)*FH+3*FH, sw, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (g_eeGeneral.view == VIEW_TIMERS) {
|
||||
displayTimers();
|
||||
|
||||
Reference in New Issue
Block a user