From 6d4e908de01411129d158b8178496a348f12e3f7 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 14 Feb 2019 17:09:15 +0100 Subject: [PATCH] Custom popup for receiver registration --- radio/src/gui/128x64/gui.h | 13 -- radio/src/gui/128x64/model_flightmodes.cpp | 4 +- radio/src/gui/128x64/model_outputs_arm.cpp | 2 +- radio/src/gui/128x64/model_select.cpp | 6 - radio/src/gui/128x64/model_setup.cpp | 132 ++++++++++++------ .../gui/128x64/model_special_functions.cpp | 2 +- radio/src/gui/128x64/model_telemetry.cpp | 4 +- radio/src/gui/128x64/radio_setup.cpp | 12 +- radio/src/gui/212x64/model_setup.cpp | 8 +- radio/src/gui/480x272/model_setup.cpp | 14 +- radio/src/gui/navigation/navigation_9x.cpp | 62 -------- radio/src/gui/navigation/navigation_x7.cpp | 3 - radio/src/gui/navigation/navigation_x9d.cpp | 2 - radio/src/gui/navigation/navigation_xlite.cpp | 3 - radio/src/opentx.cpp | 12 +- radio/src/opentx.h | 34 +++-- radio/src/pulses/pxx2.cpp | 10 +- radio/src/storage/eeprom_raw.h | 2 - radio/src/storage/eeprom_rlc.cpp | 14 -- radio/src/storage/eeprom_rlc.h | 13 -- radio/src/telemetry/telemetry.cpp | 28 ++-- 21 files changed, 160 insertions(+), 220 deletions(-) diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 0c218020d..397e7fcdb 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -53,21 +53,8 @@ extern uint8_t noHighlightCounter; #define NO_HIGHLIGHT() (noHighlightCounter > 0) #define START_NO_HIGHLIGHT() do { noHighlightCounter = 25; } while(0) - void drawSlider(coord_t x, coord_t y, uint8_t value, uint8_t max, uint8_t attr); -#if defined(NAVIGATION_POT1) -extern int16_t p1valdiff; -#else - #define p1valdiff 0 -#endif - -#if defined(NAVIGATION_POT2) -extern int8_t p2valdiff; -#else - #define p2valdiff 0 -#endif - extern int8_t checkIncDec_Ret; // global helper vars #define EDIT_SELECT_MENU -1 diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index f6f46800b..9672d8601 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -126,7 +126,7 @@ void menuModelFlightModeOne(event_t event) lcdDrawTextAlignedLeft(y, STR_ROTARY_ENCODER); for (uint8_t t=0; t0) || p1valdiff)) { + if (attr && menuHorizontalPosition == t && editMode > 0) { int16_t v = flightModeAddress(s_currIdx)->rotaryEncoders[t]; if (v < ROTARY_ENCODER_MAX) v = ROTARY_ENCODER_MAX; v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_FLIGHT_MODES-1, EE_MODEL); @@ -175,7 +175,7 @@ void menuModelFlightModeOne(event_t event) else { lcdDrawText(9*FW, y, STR_OWN, posHorz==1 ? attr : 0); } - if (attr && s_currIdx>0 && posHorz==1 && (editMode>0 || p1valdiff)) { + if (attr && s_currIdx>0 && posHorz==1 && editMode > 0) { if (v < GVAR_MAX) v = GVAR_MAX; v = checkIncDec(event, v, GVAR_MAX, GVAR_MAX+MAX_FLIGHT_MODES-1, EE_MODEL); if (checkIncDec_Ret) { diff --git a/radio/src/gui/128x64/model_outputs_arm.cpp b/radio/src/gui/128x64/model_outputs_arm.cpp index e3e27b387..2e1437240 100644 --- a/radio/src/gui/128x64/model_outputs_arm.cpp +++ b/radio/src/gui/128x64/model_outputs_arm.cpp @@ -113,7 +113,7 @@ void menuModelLimitsOne(event_t event) coord_t y = MENU_HEADER_HEIGHT + 1 + k*FH; uint8_t i = k + menuVerticalOffset; uint8_t attr = (sub==i ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0); - uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ; + uint8_t active = (attr && s_editMode > 0) ; int limit = (g_model.extendedLimits ? LIMIT_EXT_MAX : 1000); switch (i) { diff --git a/radio/src/gui/128x64/model_select.cpp b/radio/src/gui/128x64/model_select.cpp index e91a3a53b..dd097197b 100644 --- a/radio/src/gui/128x64/model_select.cpp +++ b/radio/src/gui/128x64/model_select.cpp @@ -89,12 +89,6 @@ void menuModelSelect(event_t event) check_submenu_simple(_event_, MAX_MODELS - HEADER_LINE); -#if defined(NAVIGATION_POT2) - if (event==0 && p2valdiff<0) { - event = EVT_KEY_FIRST(KEY_RIGHT); - } -#endif - if (s_editMode > 0) s_editMode = 0; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 1001281bb..c68efbc71 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -236,8 +236,8 @@ enum MenuModelSetupItems { void onPXX2BindMenu(const char * result) { - reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index = (result - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]) / sizeof(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]); - reusableBuffer.modelsetup.pxx2_bind_step = BIND_RX_NAME_SELECTED; + reusableBuffer.modelSetup.pxx2.bindSelectedReceiverIndex = (result - reusableBuffer.modelSetup.pxx2.bindCandidateReceiversNames[0]) / sizeof(reusableBuffer.modelSetup.pxx2.bindCandidateReceiversNames[0]); + reusableBuffer.modelSetup.pxx2.bindStep = BIND_RX_NAME_SELECTED; } void onBindMenu(const char * result) @@ -267,6 +267,61 @@ void onBindMenu(const char * result) moduleSettings[moduleIdx].mode = MODULE_MODE_BIND; } +void runPopupRegister(event_t event) +{ + menuVerticalPosition = reusableBuffer.modelSetup.pxx2.registerPopupVerticalPosition; + menuHorizontalPosition = reusableBuffer.modelSetup.pxx2.registerPopupHorizontalPosition; + s_editMode = reusableBuffer.modelSetup.pxx2.registerPopupEditMode; + uint8_t backupVerticalOffset = menuVerticalOffset; + + switch (event) { + case EVT_KEY_BREAK(KEY_ENTER): + if (menuVerticalPosition != 2) { + break; + } + else if (menuHorizontalPosition == 0) { + // [Enter] pressed + moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_REGISTER; + } + // no break + + case EVT_KEY_LONG(KEY_EXIT): + s_editMode = 0; + // no break; + + case EVT_KEY_BREAK(KEY_EXIT): + if (s_editMode <= 0) { + warningText = NULL; + } + break; + } + + if (warningText) { + const uint8_t dialogRows[] = { 0, 0, 1}; + check(event, 0, nullptr, 0, dialogRows, 2, 2); + + drawMessageBox(); + + lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y - 3, "Reg. ID"); + editName(WARNING_LINE_X + 8*FW, WARNING_LINE_Y - 3, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID, event, menuVerticalPosition == 0); + + lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y - 2 + FH, "Rx Name"); + editName(WARNING_LINE_X + 8*FW, WARNING_LINE_Y - 2 + FH, reusableBuffer.modelSetup.pxx2.registerRxName, PXX2_LEN_RX_NAME, event, menuVerticalPosition == 1); + + // lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH + 2, STR_POPUPS_ENTER_EXIT); + lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH + 2, TR_ENTER, menuVerticalPosition == 2 && menuHorizontalPosition == 0 ? INVERS : 0); + lcdDrawText(WARNING_LINE_X + 8*FW, WARNING_LINE_Y+2*FH + 2, TR_EXIT, menuVerticalPosition == 2 && menuHorizontalPosition == 1 ? INVERS : 0); + + reusableBuffer.modelSetup.pxx2.registerPopupVerticalPosition = menuVerticalPosition; + reusableBuffer.modelSetup.pxx2.registerPopupHorizontalPosition = menuHorizontalPosition; + reusableBuffer.modelSetup.pxx2.registerPopupEditMode = s_editMode; + } + + menuVerticalPosition = ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER + HEADER_LINE; + menuHorizontalPosition = 1; + menuVerticalOffset = backupVerticalOffset; + s_editMode = (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_REGISTER ? EDIT_MODIFY_FIELD : 0); +} void menuModelSetup(event_t event) { @@ -370,7 +425,7 @@ void menuModelSetup(event_t event) TITLE(STR_MENUSETUP); if (event == EVT_ENTRY) { - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; } uint8_t sub = menuVerticalPosition - HEADER_LINE; @@ -405,7 +460,7 @@ void menuModelSetup(event_t event) drawStringWithIndex(0*FW, y, STR_TIMER, timerIdx+1); drawTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0); drawTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, RIGHT | (menuHorizontalPosition==1 ? attr : 0), menuHorizontalPosition==2 ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { div_t qr = div(timer->start, 60); switch (menuHorizontalPosition) { case 0: @@ -736,7 +791,7 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(x, y, STR_RETA123, i, ((menuHorizontalPosition==i) && attr) ? BLINK|INVERS : (((g_model.beepANACenter & ((BeepANACenter)1<0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: g_model.moduleData[EXTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].type, @@ -877,7 +932,7 @@ void menuModelSetup(event_t event) if (pdef->subTypeString != nullptr) lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, pdef->subTypeString, g_model.moduleData[EXTERNAL_MODULE].subType, attr); } - if (attr && (editMode > 0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: if (multi_rfProto == MM_RF_CUSTOM_SELECTED) @@ -971,7 +1026,7 @@ void menuModelSetup(event_t event) lcdDrawNumber(lcdLastRightPos, y, g_model.trainerData.channelsStart+1, LEFT | (menuHorizontalPosition==0 ? attr : 0)); lcdDrawChar(lcdLastRightPos, y, '-'); lcdDrawNumber(lcdLastRightPos + FW+1, y, g_model.trainerData.channelsStart + 8 + g_model.trainerData.channelsCount, LEFT | (menuHorizontalPosition==1 ? attr : 0)); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR_ZERO(event, g_model.trainerData.channelsStart, 32-8-g_model.trainerData.channelsCount); @@ -1001,7 +1056,7 @@ void menuModelSetup(event_t event) lcdDrawNumber(lcdLastRightPos, y, moduleData.channelsStart+1, LEFT | (menuHorizontalPosition==0 ? attr : 0)); lcdDrawChar(lcdLastRightPos, y, '-'); lcdDrawNumber(lcdLastRightPos + FW+1, y, moduleData.channelsStart+sentModuleChannels(moduleIdx), LEFT | (menuHorizontalPosition==1 ? attr : 0)); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.channelsStart, 32-8-moduleData.channelsCount); @@ -1026,7 +1081,7 @@ void menuModelSetup(event_t event) lcdDrawChar(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.trainerData.delay*50)+300, RIGHT | ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)); lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.trainerData.pulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR(event, g_model.trainerData.frameLength, -20, 35); @@ -1062,23 +1117,22 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, INDENT "Module"); lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_RANGE, (menuHorizontalPosition==0 ? attr : 0) ); lcdDrawText(lcdLastRightPos, y, "[Reg]", (menuHorizontalPosition==1 ? attr : 0) ); - if (attr && s_editMode>0 && menuHorizontalPosition == 0 ) { - moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_RANGECHECK; - } - if (attr && menuHorizontalPosition == 1) { - if (event == EVT_KEY_BREAK(KEY_ENTER)) { - moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_REGISTER; + if (attr) { + if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_NORMAL && s_editMode > 0) { + if (menuHorizontalPosition == 1) { + reusableBuffer.modelSetup.pxx2.registerPopupVerticalPosition = 0; + reusableBuffer.modelSetup.pxx2.registerPopupEditMode = 0; + s_editMode = 0; + POPUP_INPUT("", runPopupRegister); + } + else { + moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_RANGECHECK; + } } - if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_REGISTER) { - s_editMode = 1; + if (s_editMode == 0) { + moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL; } } - if (attr && s_editMode==0) { - moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL; - } - if (attr && moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_NORMAL) { - s_editMode = 0; - } break; case ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER: @@ -1147,16 +1201,16 @@ void menuModelSetup(event_t event) if (attr) { if (menuHorizontalPosition == 0) { if (event == EVT_KEY_BREAK(KEY_ENTER)) { - reusableBuffer.modelsetup.pxx2_bind_step = BIND_START; - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count = 0; + reusableBuffer.modelSetup.pxx2.bindStep = BIND_START; + reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount = 0; moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND; } if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND) { s_editMode = 1; - if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_RX_NAME_RECEIVED) { - popupMenuItemsCount = min(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, PXX2_MAX_RECEIVERS_PER_MODULE); + if (reusableBuffer.modelSetup.pxx2.bindStep == BIND_RX_NAME_RECEIVED) { + popupMenuItemsCount = min(reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); for (uint8_t i=0; i 0) { @@ -1200,7 +1254,7 @@ void menuModelSetup(event_t event) lcdDrawChar(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppm.delay*50)+300, RIGHT | ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)); lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppm.pulsePol ? '+' : '-', (CURSOR_ON_LINE() || menuHorizontalPosition==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR(event, moduleData.ppm.frameLength, -20, 35); @@ -1246,7 +1300,7 @@ void menuModelSetup(event_t event) if (xOffsetBind) lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2); if (attr && l_posHorz == 0) { - if (editMode>0 || p1valdiff) { + if (editMode > 0) { CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], MAX_RX_NUM(moduleIdx)); if (checkIncDec_Ret) { modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx]; @@ -1369,7 +1423,7 @@ void menuModelSetup(event_t event) if (moduleData.failsafeMode != FAILSAFE_CUSTOM) menuHorizontalPosition = 0; if (menuHorizontalPosition == 0) { - if (editMode > 0 || p1valdiff) { + if (editMode > 0) { CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.failsafeMode, FAILSAFE_LAST); if (checkIncDec_Ret) SEND_FAILSAFE_NOW(moduleIdx); } @@ -1484,11 +1538,11 @@ void menuModelSetup(event_t event) if (attr) { CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LBT_POWER_MAX); } - if (attr && editMode == 0 && reusableBuffer.modelsetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { - if((reusableBuffer.modelsetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind + if (attr && editMode == 0 && reusableBuffer.modelSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { + if((reusableBuffer.modelSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind POPUP_WARNING(STR_REBIND); } - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; } } } @@ -1550,7 +1604,7 @@ void menuModelSetup(event_t event) lcdDrawNumber(lcdLastRightPos, y, g_model.moduleData[1].channelsStart+1, LEFT | (menuHorizontalPosition<=0 ? attr : 0)); lcdDrawChar(lcdLastRightPos, y, '-'); lcdDrawNumber(lcdLastRightPos + FW+1, y, g_model.moduleData[1].channelsStart+8+g_model.moduleData[1].channelsCount, LEFT | (menuHorizontalPosition!=0 ? attr : 0)); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[1].channelsStart, 32-8-g_model.moduleData[1].channelsCount); @@ -1571,7 +1625,7 @@ void menuModelSetup(event_t event) lcdDrawChar(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.moduleData[1].ppmDelay*50)+300, RIGHT | ((menuHorizontalPosition < 0 || menuHorizontalPosition==1) ? attr : 0)); lcdDrawChar(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.moduleData[1].ppmPulsePol ? '+' : '-', (menuHorizontalPosition < 0 || menuHorizontalPosition==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { + if (attr && editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].ppmFrameLength, -20, 35); diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index f8163d0a0..4ce5b9c87 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -186,7 +186,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF uint8_t func = CFN_FUNC(cfn); for (uint8_t j=0; j<5; j++) { uint8_t attr = ((sub==k && menuHorizontalPosition==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); - uint8_t active = (attr && (s_editMode>0 || p1valdiff)); + uint8_t active = (attr && s_editMode > 0); switch (j) { case 0: if (sub==k && menuHorizontalPosition < 1 && CFN_SWITCH(cfn) == SWSRC_NONE) { diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 1e322f8d0..ddedf5614 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -588,7 +588,7 @@ void menuModelTelemetryFrsky(event_t event) } lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|LEFT); lcdDrawNumber(TELEM_COL2+4*FW, y, 10+g_model.frsky.varioMax, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|LEFT); - if (attr && (s_editMode>0 || p1valdiff)) { + if (attr && s_editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); @@ -605,7 +605,7 @@ void menuModelTelemetryFrsky(event_t event) lcdDrawNumber(TELEM_COL2, y, -5+g_model.frsky.varioCenterMin, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|PREC1|LEFT); lcdDrawNumber(TELEM_COL2+4*FW, y, 5+g_model.frsky.varioCenterMax, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|PREC1|LEFT); lcdDrawTextAtIndex(TELEM_COL2+8*FW, y, STR_VVARIOCENTER, g_model.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0)); - if (attr && (s_editMode>0 || p1valdiff)) { + if (attr && s_editMode > 0) { switch (menuHorizontalPosition) { case 0: CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 6b7a44987..118ba8efd 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -161,11 +161,11 @@ void menuRadioSetup(event_t event) switch (j) { case 0: lcdDrawNumber(RADIO_SETUP_DATE_COLUMN, y, t.tm_year+TM_YEAR_BASE, rowattr|RIGHT); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_year = checkIncDec(event, t.tm_year, 112, 200, 0); + if (rowattr && s_editMode > 0) t.tm_year = checkIncDec(event, t.tm_year, 112, 200, 0); break; case 1: lcdDrawNumber(RADIO_SETUP_DATE_COLUMN+3*FW-2, y, t.tm_mon+1, rowattr|LEADING0|RIGHT, 2); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_mon = checkIncDec(event, t.tm_mon, 0, 11, 0); + if (rowattr && s_editMode > 0) t.tm_mon = checkIncDec(event, t.tm_mon, 0, 11, 0); break; case 2: { @@ -174,7 +174,7 @@ void menuRadioSetup(event_t event) static const uint8_t dmon[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; dlim += dmon[t.tm_mon]; lcdDrawNumber(RADIO_SETUP_DATE_COLUMN+6*FW-4, y, t.tm_mday, rowattr|LEADING0|RIGHT, 2); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_mday = checkIncDec(event, t.tm_mday, 1, dlim, 0); + if (rowattr && s_editMode > 0) t.tm_mday = checkIncDec(event, t.tm_mday, 1, dlim, 0); break; } } @@ -192,15 +192,15 @@ void menuRadioSetup(event_t event) switch (j) { case 0: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN, y, t.tm_hour, rowattr|LEADING0|RIGHT, 2); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_hour = checkIncDec(event, t.tm_hour, 0, 23, 0); + if (rowattr && s_editMode > 0) t.tm_hour = checkIncDec(event, t.tm_hour, 0, 23, 0); break; case 1: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN+3*FWNUM, y, t.tm_min, rowattr|LEADING0|RIGHT, 2); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_min = checkIncDec(event, t.tm_min, 0, 59, 0); + if (rowattr && s_editMode > 0) t.tm_min = checkIncDec(event, t.tm_min, 0, 59, 0); break; case 2: lcdDrawNumber(RADIO_SETUP_TIME_COLUMN+6*FWNUM, y, t.tm_sec, rowattr|LEADING0|RIGHT, 2); - if (rowattr && (s_editMode>0 || p1valdiff)) t.tm_sec = checkIncDec(event, t.tm_sec, 0, 59, 0); + if (rowattr && s_editMode > 0) t.tm_sec = checkIncDec(event, t.tm_sec, 0, 59, 0); break; } } diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index c57e5b4c4..aa9e1e5c8 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -304,7 +304,7 @@ void menuModelSetup(event_t event) MENU_CHECK(STR_MENUSETUP, menuTabModel, MENU_MODEL_SETUP, ITEM_MODEL_SETUP_MAX); if (event == EVT_ENTRY) { - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; } #if (defined(DSM2) || defined(PXX)) @@ -1182,10 +1182,10 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr); if (attr) CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].pxx.power, 0, R9M_LBT_POWER_MAX); - if (attr && s_editMode == 0 && reusableBuffer.modelsetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { - if((reusableBuffer.modelsetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) //switching between mode 2 and 3 does not require rebind + if (attr && s_editMode == 0 && reusableBuffer.modelSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { + if((reusableBuffer.modelSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) //switching between mode 2 and 3 does not require rebind POPUP_WARNING(STR_REBIND); - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; } } } diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index a782b5aa9..fd690479b 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -102,14 +102,14 @@ enum MenuModelSetupItems { void checkModelIdUnique(uint8_t moduleIdx) { - char* warn_buf = reusableBuffer.modelsetup.msg; + char* warn_buf = reusableBuffer.modelSetup.msg; // cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2 - size_t warn_buf_len = sizeof(reusableBuffer.modelsetup.msg) - WARNING_LINE_LEN - 2; + size_t warn_buf_len = sizeof(reusableBuffer.modelSetup.msg) - WARNING_LINE_LEN - 2; if (!modelslist.isModelIdUnique(moduleIdx,warn_buf,warn_buf_len)) { if (warn_buf[0] != 0) { POPUP_WARNING(STR_MODELIDUSED); - SET_WARNING_INFO(warn_buf, sizeof(reusableBuffer.modelsetup.msg), 0); + SET_WARNING_INFO(warn_buf, sizeof(reusableBuffer.modelSetup.msg), 0); } } } @@ -293,7 +293,7 @@ bool menuModelSetup(event_t event) TRAINER_LINE2_ROWS }); if (event == EVT_ENTRY) { - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[EXTERNAL_MODULE].pxx.power; } if (menuEvent) { @@ -1103,12 +1103,12 @@ bool menuModelSetup(event_t event) lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr); if (attr) CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].pxx.power, 0, R9M_LBT_POWER_MAX); - if (attr && s_editMode == 0 && reusableBuffer.modelsetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { - if((reusableBuffer.modelsetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind + if (attr && s_editMode == 0 && reusableBuffer.modelSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) { + if((reusableBuffer.modelSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind POPUP_WARNING(STR_WARNING); SET_WARNING_INFO(STR_REBIND, sizeof(TR_REBIND), 0); } - reusableBuffer.modelsetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; + reusableBuffer.modelSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; } } } diff --git a/radio/src/gui/navigation/navigation_9x.cpp b/radio/src/gui/navigation/navigation_9x.cpp index 63569e4b9..f4336e194 100644 --- a/radio/src/gui/navigation/navigation_9x.cpp +++ b/radio/src/gui/navigation/navigation_9x.cpp @@ -27,14 +27,6 @@ uint8_t menuCalibrationState; vertpos_t menuVerticalPosition; horzpos_t menuHorizontalPosition; -#if defined(NAVIGATION_POT1) -int16_t p1valdiff; -#endif - -#if defined(NAVIGATION_POT2) -int8_t p2valdiff; -#endif - int8_t checkIncDec_Ret; #define DBLKEYS_PRESSED_RGT_LFT(in) ((in & (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_LEFT)) == (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_LEFT)) @@ -126,12 +118,6 @@ int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_fla newval = !val; } -#if defined(NAVIGATION_POT1) - // change values based on P1 - newval -= p1valdiff; - p1valdiff = 0; -#endif - #if defined(AUTOSWITCH) if (i_flags & INCDEC_SWITCH) { newval = checkIncDecMovedSwitch(newval); @@ -172,7 +158,6 @@ int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_fla return newval; } -#define SCROLL_TH 64 #define SCROLL_POT1_TH 32 #define CURSOR_NOT_ALLOWED_IN_ROW(row) ((int8_t)MAXCOL(row) < 0) @@ -192,36 +177,6 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t uint8_t maxcol = MAXCOL(l_posVert); -#if defined(NAVIGATION_POT1) - // check pot 1 - if changed -> scroll values - static int16_t p1val; - static int16_t p1valprev; - p1valdiff = (p1val-calibratedAnalogs[CALIBRATED_POT1]) / SCROLL_POT1_TH; - if (p1valdiff) { - p1valdiff = (p1valprev-calibratedAnalogs[CALIBRATED_POT1]) / 2; - p1val = calibratedAnalogs[CALIBRATED_POT1]; - } - p1valprev = calibratedAnalogs[CALIBRATED_POT1]; -#endif - -#if defined(NAVIGATION_POT2) - // check pot 2 - if changed -> scroll menu - static int16_t p2valprev; - p2valdiff = (p2valprev-calibratedAnalogs[CALIBRATED_POT2]) / SCROLL_TH; - if (p2valdiff) p2valprev = calibratedAnalogs[CALIBRATED_POT2]; -#endif - -#if defined(NAVIGATION_POT3) - // check pot 3 if changed -> cursor down/up - static int16_t p3valprev; - int8_t scrollUD = (p3valprev-calibratedAnalogs[CALIBRATED_POT3]) / SCROLL_TH; - if (scrollUD) p3valprev = calibratedAnalogs[CALIBRATED_POT3]; -#else - #define scrollUD 0 -#endif - - if (p2valdiff || scrollUD || p1valdiff) backlightOn(); // on keypress turn the light on - if (menuTab) { uint8_t attr = 0; @@ -230,10 +185,6 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t int8_t cc = curr; - if (p2valdiff) { - cc = limit((int8_t)0, (int8_t)(cc - p2valdiff), (int8_t)(menuTabSize-1)); - } - switch (event) { #if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_BREAK: @@ -289,19 +240,6 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t } - DISPLAY_PROGRESS_BAR(menuTab ? lcdLastRightPos-2*FW-((curr+1)/10*FWNUM)-2 : 20*FW+1); - - if (s_editMode<=0) { - if (scrollUD) { - l_posVert = limit((int8_t)0, (int8_t)(l_posVert - scrollUD), (int8_t)maxrow); - l_posHorz = min((uint8_t)l_posHorz, MAXCOL(l_posVert)); - } - - if (p2valdiff && l_posVert>0) { - l_posHorz = limit((int8_t)0, (int8_t)((uint8_t)l_posHorz - p2valdiff), (int8_t)maxcol); - } - } - switch (event) { case EVT_ENTRY: diff --git a/radio/src/gui/navigation/navigation_x7.cpp b/radio/src/gui/navigation/navigation_x7.cpp index d084b6a60..f5553267b 100644 --- a/radio/src/gui/navigation/navigation_x7.cpp +++ b/radio/src/gui/navigation/navigation_x7.cpp @@ -230,7 +230,6 @@ int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_fla return newval; } -#define SCROLL_TH 64 #define SCROLL_POT1_TH 32 #define CURSOR_NOT_ALLOWED_IN_ROW(row) ((int8_t)MAXCOL(row) < 0) @@ -285,8 +284,6 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t drawScreenIndex(curr, menuTabSize, 0); } - DISPLAY_PROGRESS_BAR(menuTab ? lcdLastRightPos-2*FW-((curr+1)/10*FWNUM)-2 : 20*FW+1); - switch (event) { case EVT_ENTRY: menuEntryTime = get_tmr10ms(); diff --git a/radio/src/gui/navigation/navigation_x9d.cpp b/radio/src/gui/navigation/navigation_x9d.cpp index a56ca656a..1cfb7d438 100644 --- a/radio/src/gui/navigation/navigation_x9d.cpp +++ b/radio/src/gui/navigation/navigation_x9d.cpp @@ -393,8 +393,6 @@ void check(const char * name, event_t event, uint8_t curr, const MenuHandlerFunc lcdDrawFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, SOLID, FILL_WHITE|GREY_DEFAULT); } - DISPLAY_PROGRESS_BAR(menuTab ? lcdLastRightPos-2*FW-((curr+1)/10*FWNUM)-2 : 20*FW+1); - switch (event) { case EVT_ENTRY: menuEntryTime = get_tmr10ms(); diff --git a/radio/src/gui/navigation/navigation_xlite.cpp b/radio/src/gui/navigation/navigation_xlite.cpp index e98c88073..e365f8e77 100644 --- a/radio/src/gui/navigation/navigation_xlite.cpp +++ b/radio/src/gui/navigation/navigation_xlite.cpp @@ -292,7 +292,6 @@ int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_fla return newval; } -#define SCROLL_TH 64 #define SCROLL_POT1_TH 32 #define CURSOR_NOT_ALLOWED_IN_ROW(row) ((int8_t)MAXCOL(row) < 0) @@ -375,8 +374,6 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t drawScreenIndex(curr, menuTabSize, attr); } - DISPLAY_PROGRESS_BAR(menuTab ? lcdLastRightPos-2*FW-((curr+1)/10*FWNUM)-2 : 20*FW+1); - switch (event) { case EVT_ENTRY: diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index c4666a34d..477c0650e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -368,16 +368,16 @@ void checkModelIdUnique(uint8_t index, uint8_t module) { uint8_t modelId = g_model.header.modelId[module]; uint8_t additionalOnes = 0; - char * name = reusableBuffer.modelsetup.msg; + char * name = reusableBuffer.modelSetup.msg; - memset(reusableBuffer.modelsetup.msg, 0, sizeof(reusableBuffer.modelsetup.msg)); + memset(reusableBuffer.modelSetup.msg, 0, sizeof(reusableBuffer.modelSetup.msg)); if (modelId != 0) { for (uint8_t i = 0; i < MAX_MODELS; i++) { if (i != index) { if (modelId == modelHeaders[i].modelId[module]) { - if ((WARNING_LINE_LEN - 4 - (name - reusableBuffer.modelsetup.msg)) > (signed)(modelHeaders[i].name[0] ? zlen(modelHeaders[i].name, LEN_MODEL_NAME) : sizeof(TR_MODEL) + 2)) { // you cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2 (-2 for the ",") - if (reusableBuffer.modelsetup.msg[0] != 0) { + if ((WARNING_LINE_LEN - 4 - (name - reusableBuffer.modelSetup.msg)) > (signed)(modelHeaders[i].name[0] ? zlen(modelHeaders[i].name, LEN_MODEL_NAME) : sizeof(TR_MODEL) + 2)) { // you cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2 (-2 for the ",") + if (reusableBuffer.modelSetup.msg[0] != 0) { name = strAppend(name, ", "); } if (modelHeaders[i].name[0] == 0) { @@ -402,9 +402,9 @@ void checkModelIdUnique(uint8_t index, uint8_t module) name = strAppend(name, ")"); } - if (reusableBuffer.modelsetup.msg[0] != 0) { + if (reusableBuffer.modelSetup.msg[0] != 0) { POPUP_WARNING(STR_MODELIDUSED); - SET_WARNING_INFO(reusableBuffer.modelsetup.msg, sizeof(reusableBuffer.modelsetup.msg), 0); + SET_WARNING_INFO(reusableBuffer.modelSetup.msg, sizeof(reusableBuffer.modelSetup.msg), 0); } } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 808eccca1..21bfc9c3b 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1118,20 +1118,26 @@ union ReusableBuffer char msg[64]; uint8_t r9mPower; union { - uint8_t pxx2_register_step; - uint8_t pxx2_bind_step; + struct { + union { + uint8_t registerStep; + uint8_t bindStep; + }; + uint32_t bindWaitTimeout; + uint8_t registerPopupVerticalPosition; + uint8_t registerPopupHorizontalPosition; + int8_t registerPopupEditMode; + char registerRxName[PXX2_LEN_RX_NAME]; + char bindCandidateReceiversIds[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME]; + char bindCandidateReceiversNames[PXX2_MAX_RECEIVERS_PER_MODULE][3*PXX2_LEN_RX_NAME+1]; + uint8_t bindCandidateReceiversCount; + uint8_t bindSelectedReceiverIndex; + } pxx2; }; - uint32_t pxx2_bind_wait_timeout; - uint8_t pxx2_register_rx_id[PXX2_LEN_RX_NAME]; - char pxx2_bind_candidate_receivers_ids[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME]; - char pxx2_bind_candidate_receivers_names[PXX2_MAX_RECEIVERS_PER_MODULE][3*PXX2_LEN_RX_NAME+1]; - uint8_t pxx2_bind_candidate_receivers_count; - uint8_t pxx2_bind_selected_receiver_index; - } modelsetup; + } modelSetup; // 103 bytes - struct - { + struct { int16_t midVals[NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_MOUSE_ANALOGS]; int16_t loVals[NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_MOUSE_ANALOGS]; int16_t hiVals[NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_MOUSE_ANALOGS]; @@ -1148,8 +1154,7 @@ union ReusableBuffer #if defined(SDCARD) // 274 bytes - struct - { + struct { char lines[NUM_BODY_LINES][SD_SCREEN_FILE_LENGTH+1+1]; // the last char is used to store the flags (directory) of the line uint32_t available; uint16_t offset; @@ -1158,8 +1163,7 @@ union ReusableBuffer } sdmanager; #endif - struct - { + struct { uint8_t stickMode; } generalSettings; diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 852eb5a6f..f8950455a 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -58,7 +58,7 @@ bool Pxx2Pulses::setupRegisterFrame(uint8_t module) { addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER); - if (reusableBuffer.modelsetup.pxx2_register_step == REGISTER_COUNTER_ID_RECEIVED) { + if (reusableBuffer.modelSetup.pxx2.registerStep == REGISTER_COUNTER_ID_RECEIVED) { Pxx2Transport::addByte(0x01); for (uint8_t i=0; i reusableBuffer.modelsetup.pxx2_bind_wait_timeout) { + if (reusableBuffer.modelSetup.pxx2.bindStep == BIND_WAIT) { + if (get_tmr10ms() > reusableBuffer.modelSetup.pxx2.bindWaitTimeout) { moduleSettings[module].mode = MODULE_MODE_NORMAL; POPUP_INFORMATION(STR_BIND_OK); } @@ -87,10 +87,10 @@ bool Pxx2Pulses::setupBindFrame(uint8_t module) return false; } } - else if (reusableBuffer.modelsetup.pxx2_bind_step == BIND_RX_NAME_SELECTED) { + else if (reusableBuffer.modelSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) { Pxx2Transport::addByte(0x01); for (uint8_t i=0; i> 4); @@ -119,14 +119,14 @@ void processBindFrame(uint8_t module, uint8_t * frame) *c++ = ' '; } *c = '\0'; - ++reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; - reusableBuffer.modelsetup.pxx2_bind_step = BIND_RX_NAME_RECEIVED; + ++reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount; + reusableBuffer.modelSetup.pxx2.bindStep = BIND_RX_NAME_RECEIVED; } } else if (frame[3] == 0x01) { - if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_selected_receiver_index], &frame[4], PXX2_LEN_RX_NAME) == 0) { - reusableBuffer.modelsetup.pxx2_bind_step = BIND_WAIT; - reusableBuffer.modelsetup.pxx2_bind_wait_timeout = get_tmr10ms() + 30; + if (memcmp(reusableBuffer.modelSetup.pxx2.bindCandidateReceiversIds[reusableBuffer.modelSetup.pxx2.bindSelectedReceiverIndex], &frame[4], PXX2_LEN_RX_NAME) == 0) { + reusableBuffer.modelSetup.pxx2.bindStep = BIND_WAIT; + reusableBuffer.modelSetup.pxx2.bindWaitTimeout = get_tmr10ms() + 30; } } }