1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-23 16:25:12 +03:00

R9M Access Fixes

This commit is contained in:
Bertrand Songis 2019-06-12 14:06:11 +02:00
parent 74cd67fa35
commit f888b83add
No known key found for this signature in database
GPG key ID: F189F79290FEC50F
8 changed files with 20 additions and 15 deletions

View file

@ -1194,7 +1194,7 @@ void menuModelSetup(event_t event)
drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr); drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr);
if (s_editMode && isModuleR9M2(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && moduleInformation.information.modelID) { if (s_editMode && isModuleR9MAccess(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && moduleInformation.information.modelID) {
moduleInformation.information.modelID = 0; moduleInformation.information.modelID = 0;
moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation); moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation);
} }
@ -1338,7 +1338,7 @@ void menuModelSetup(event_t event)
if (attr && l_posHorz > 0) { if (attr && l_posHorz > 0) {
if (s_editMode > 0) { if (s_editMode > 0) {
if (l_posHorz == 1) { if (l_posHorz == 1) {
if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16) || (isModuleXJT2(moduleIdx) && g_model.moduleData[moduleIdx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16) || (isModuleR9M2(moduleIdx) && g_model.moduleData[moduleIdx].subType != MODULE_SUBTYPE_R9M_PXX2_ACCESS)) { if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16) || (isModuleXJT2(moduleIdx) && g_model.moduleData[moduleIdx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16) || (isModuleR9MAccess(moduleIdx) && g_model.moduleData[moduleIdx].subType != MODULE_SUBTYPE_R9M_PXX2_ACCESS)) {
#if defined(PCBXLITE) #if defined(PCBXLITE)
if (EVT_KEY_MASK(event) == KEY_ENTER) { if (EVT_KEY_MASK(event) == KEY_ENTER) {
#elif defined(PCBSKY9X) || defined(PCBAR9X) #elif defined(PCBSKY9X) || defined(PCBAR9X)

View file

@ -1414,7 +1414,7 @@ void menuModelSetup(event_t event)
drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr); drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr);
if (s_editMode && isModuleR9M2(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && moduleInformation.information.modelID) { if (s_editMode && isModuleR9MAccess(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && moduleInformation.information.modelID) {
moduleInformation.information.modelID = 0; moduleInformation.information.modelID = 0;
moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation); moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation);
} }

View file

@ -111,7 +111,7 @@ void menuModelReceiverOptions(event_t event)
break; break;
case ITEM_RECEIVER_PWM_RATE: case ITEM_RECEIVER_PWM_RATE:
reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, isModuleR9M2(g_moduleIdx) ? "6.67ms PWM": "9ms PWM", attr, event); reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, isModuleR9MAccess(g_moduleIdx) ? "6.67ms PWM": "9ms PWM", attr, event);
if (attr && checkIncDec_Ret) { if (attr && checkIncDec_Ret) {
reusableBuffer.hardwareAndSettings.receiverSettings.dirty = true; reusableBuffer.hardwareAndSettings.receiverSettings.dirty = true;
} }

View file

@ -50,10 +50,10 @@ void onPXX2R9MBindModeMenu(const char * result)
else if (result == STR_16CH_WITHOUT_TELEMETRY) { else if (result == STR_16CH_WITHOUT_TELEMETRY) {
reusableBuffer.moduleSetup.bindInformation.lbtMode = 2; reusableBuffer.moduleSetup.bindInformation.lbtMode = 2;
} }
else if (result == STR_FLEX_868) { else if (result == STR_FLEX_915) {
reusableBuffer.moduleSetup.bindInformation.flexMode = 0; reusableBuffer.moduleSetup.bindInformation.flexMode = 0;
} }
else if (result == STR_FLEX_915) { else if (result == STR_FLEX_868) {
reusableBuffer.moduleSetup.bindInformation.flexMode = 1; reusableBuffer.moduleSetup.bindInformation.flexMode = 1;
} }
else { else {
@ -83,14 +83,14 @@ void onPXX2BindMenu(const char * result)
if (result != STR_EXIT) { if (result != STR_EXIT) {
uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition - HEADER_LINE); uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition - HEADER_LINE);
reusableBuffer.moduleSetup.bindInformation.selectedReceiverIndex = (result - reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[0]) / sizeof(reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[0]); reusableBuffer.moduleSetup.bindInformation.selectedReceiverIndex = (result - reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[0]) / sizeof(reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[0]);
if (isModuleR9M2(moduleIdx) && reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant == PXX2_VARIANT_EU) { if (isModuleR9MAccess(moduleIdx) && reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant == PXX2_VARIANT_EU) {
reusableBuffer.moduleSetup.bindInformation.step = BIND_RX_NAME_SELECTED; reusableBuffer.moduleSetup.bindInformation.step = BIND_RX_NAME_SELECTED;
POPUP_MENU_ADD_ITEM(STR_8CH_WITH_TELEMETRY); POPUP_MENU_ADD_ITEM(STR_8CH_WITH_TELEMETRY);
POPUP_MENU_ADD_ITEM(STR_16CH_WITH_TELEMETRY); POPUP_MENU_ADD_ITEM(STR_16CH_WITH_TELEMETRY);
POPUP_MENU_ADD_ITEM(STR_16CH_WITHOUT_TELEMETRY); POPUP_MENU_ADD_ITEM(STR_16CH_WITHOUT_TELEMETRY);
POPUP_MENU_START(onPXX2R9MBindModeMenu); POPUP_MENU_START(onPXX2R9MBindModeMenu);
} }
else if (isModuleR9M2(moduleIdx) && reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant == PXX2_VARIANT_FLEX) { else if (isModuleR9MAccess(moduleIdx) && reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant == PXX2_VARIANT_FLEX) {
reusableBuffer.moduleSetup.bindInformation.step = BIND_RX_NAME_SELECTED; reusableBuffer.moduleSetup.bindInformation.step = BIND_RX_NAME_SELECTED;
POPUP_MENU_ADD_ITEM(STR_FLEX_868); POPUP_MENU_ADD_ITEM(STR_FLEX_868);
POPUP_MENU_ADD_ITEM(STR_FLEX_915); POPUP_MENU_ADD_ITEM(STR_FLEX_915);
@ -142,7 +142,7 @@ void onPXX2ReceiverMenu(const char * result)
else if (result == STR_BIND) { else if (result == STR_BIND) {
memclear(&reusableBuffer.moduleSetup.bindInformation, sizeof(BindInformation)); memclear(&reusableBuffer.moduleSetup.bindInformation, sizeof(BindInformation));
reusableBuffer.moduleSetup.bindInformation.rxUid = receiverIdx; reusableBuffer.moduleSetup.bindInformation.rxUid = receiverIdx;
if (isModuleR9M2(moduleIdx)) { if (isModuleR9MAccess(moduleIdx)) {
#if defined(SIMU) #if defined(SIMU)
reusableBuffer.moduleSetup.pxx2.moduleInformation.information.modelID = 1; reusableBuffer.moduleSetup.pxx2.moduleInformation.information.modelID = 1;
reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant = 2; reusableBuffer.moduleSetup.pxx2.moduleInformation.information.variant = 2;

View file

@ -51,7 +51,7 @@ void menuRadioSpectrumAnalyser(event_t event)
return; return;
} }
if (isModuleR9M2(g_moduleIdx)) { if (isModuleR9MAccess(g_moduleIdx)) {
reusableBuffer.spectrumAnalyser.spanDefault = 20; reusableBuffer.spectrumAnalyser.spanDefault = 20;
reusableBuffer.spectrumAnalyser.spanMax = 40; reusableBuffer.spectrumAnalyser.spanMax = 40;
reusableBuffer.spectrumAnalyser.freqDefault = 890; reusableBuffer.spectrumAnalyser.freqDefault = 890;

View file

@ -156,7 +156,7 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol);
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D8) #define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D8)
#define IS_R9M_OR_XJTD16(x) ((isModuleXJT(x) && g_model.moduleData[x].rfProtocol== MODULE_SUBTYPE_PXX1_ACCST_D16) || isModuleR9M(x)) #define IS_R9M_OR_XJTD16(x) ((isModuleXJT(x) && g_model.moduleData[x].rfProtocol== MODULE_SUBTYPE_PXX1_ACCST_D16) || isModuleR9M(x))
#define FAILSAFE_ROWS(x) ((isModuleXJTVariant(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol)) || MULTIMODULE_HASFAILSAFE(x) || isModuleR9M(x) || isModuleR9M2(x)) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW #define FAILSAFE_ROWS(x) ((isModuleXJTVariant(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol)) || MULTIMODULE_HASFAILSAFE(x) || isModuleR9M(x) || isModuleR9MAccess(x)) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW
#define EXTERNAL_MODULE_OPTION_ROW (isModuleR9M(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW) #define EXTERNAL_MODULE_OPTION_ROW (isModuleR9M(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW)

View file

@ -108,7 +108,7 @@ inline bool isModuleR9M(uint8_t idx)
return g_model.moduleData[idx].type == MODULE_TYPE_R9M_PXX1 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PXX1; return g_model.moduleData[idx].type == MODULE_TYPE_R9M_PXX1 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PXX1;
} }
inline bool isModuleR9M2(uint8_t idx) inline bool isModuleR9MAccess(uint8_t idx)
{ {
return g_model.moduleData[idx].type == MODULE_TYPE_R9M_PXX2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PXX2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PRO_PXX2; return g_model.moduleData[idx].type == MODULE_TYPE_R9M_PXX2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PXX2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PRO_PXX2;
} }
@ -146,7 +146,7 @@ inline bool isModulePXX(uint8_t idx)
inline bool isModulePXX2(uint8_t idx) inline bool isModulePXX2(uint8_t idx)
{ {
return isModuleXJT2(idx) || isModuleR9M2(idx); return isModuleXJT2(idx) || isModuleR9MAccess(idx);
} }
inline bool isModuleRFAccess(uint8_t idx) inline bool isModuleRFAccess(uint8_t idx)
@ -154,7 +154,7 @@ inline bool isModuleRFAccess(uint8_t idx)
if (isModuleXJT2(idx)) { if (isModuleXJT2(idx)) {
return g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS; return g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS;
} }
else if (isModuleR9M2(idx)) { else if (isModuleR9MAccess(idx)) {
return true; return true;
} }
else { else {

View file

@ -263,7 +263,12 @@ void Pxx2Pulses::setupAccessBindFrame(uint8_t module)
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) { for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(destination->candidateReceiversNames[destination->selectedReceiverIndex][i]); Pxx2Transport::addByte(destination->candidateReceiversNames[destination->selectedReceiverIndex][i]);
} }
if (isModuleR9MAccess(module)) {
Pxx2Transport::addByte((destination->lbtMode << 6) + (destination->flexMode << 4) + destination->rxUid); // RX_UID is the slot index (which is unique and never moved) Pxx2Transport::addByte((destination->lbtMode << 6) + (destination->flexMode << 4) + destination->rxUid); // RX_UID is the slot index (which is unique and never moved)
}
else {
Pxx2Transport::addByte(0x00);
}
Pxx2Transport::addByte(g_model.header.modelId[module]); Pxx2Transport::addByte(g_model.header.modelId[module]);
} }
else { else {