1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

Enable set binding mode as a firmware option for frsky radios (#4743)

* Enable set binding mode as a firmware option for frsky radios

* Improvements based on Bertrand's comments

* Last feedbacks
This commit is contained in:
3djc 2017-04-06 22:36:10 +02:00 committed by Bertrand Songis
parent 8794f45816
commit 3a8f9adb4d
24 changed files with 248 additions and 6 deletions

View file

@ -171,6 +171,33 @@ enum MenuModelSetupItems {
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? HEADER_LINE+ITEM_MODEL_SETUP_MAX : HEADER_LINE+ITEM_MODEL_SETUP_MAX-1)
#endif
#if defined(BINDING_OPTIONS)
void onBindMenu(const char * result)
{
if (result == STR_BINDING_1_8_TELEM_ON) {
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off = false;
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 = false;
}
else if (result == STR_BINDING_1_8_TELEM_OFF) {
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off = true;
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 = false;
}
else if (result == STR_BINDING_9_16_TELEM_ON) {
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off = false;
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 = true;
}
else if (result == STR_BINDING_9_16_TELEM_OFF) {
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off = true;
g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 = true;
}
else {
return;
}
moduleFlag[INTERNAL_MODULE] = MODULE_BIND;
}
#endif
void menuModelSetup(event_t event)
{
#if defined(PCBX7)
@ -870,11 +897,37 @@ void menuModelSetup(event_t event)
s_editMode=0;
}
#endif
#if defined(BINDING_OPTIONS)
if (attr && l_posHorz>0) {
if(s_editMode>0) {
if (l_posHorz == 1) {
if (IS_MODULE_XJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol== RF_PROTO_X16 && s_current_protocol[INTERNAL_MODULE] == PROTO_PXX) {
if(event==EVT_KEY_BREAK(KEY_ENTER)) {
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_ON);
POPUP_MENU_ADD_ITEM(STR_BINDING_1_8_TELEM_OFF);
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_ON);
POPUP_MENU_ADD_ITEM(STR_BINDING_9_16_TELEM_OFF);
POPUP_MENU_SELECT_ITEM(g_model.moduleData[INTERNAL_MODULE].pxx.receiver_telem_off + (g_model.moduleData[INTERNAL_MODULE].pxx.receiver_channel_9_16 << 1));
POPUP_MENU_START(onBindMenu);
continue;
}
if (moduleFlag[INTERNAL_MODULE] == MODULE_BIND)
newFlag = MODULE_BIND;
}
else {
newFlag = MODULE_BIND;
}
}
else if (l_posHorz == 2) {
newFlag = MODULE_RANGECHECK;
}
#else
if (attr && l_posHorz>0 && s_editMode>0) {
if (l_posHorz == 1)
newFlag = MODULE_BIND;
else if (l_posHorz == 2) {
newFlag = MODULE_RANGECHECK;
#endif
}
}
moduleFlag[moduleIdx] = newFlag;