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

Split RX_ID display name and RX_ID binary

This commit is contained in:
Bertrand Songis 2019-02-06 15:22:17 +01:00
parent e14d98e399
commit 8d08e6939d
3 changed files with 17 additions and 6 deletions

View file

@ -226,7 +226,7 @@ enum MenuModelSetupItems {
void onPXX2BindMenu(const char * result) void onPXX2BindMenu(const char * result)
{ {
reusableBuffer.modelsetup.pxx2_bind_receiver_index = (result - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[0]) / sizeof(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[0]); reusableBuffer.modelsetup.pxx2_bind_receiver_index = (result - reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]) / sizeof(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[0]);
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_SELECTED; reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_SELECTED;
TRACE("RECEIVER SELECTED : %d", reusableBuffer.modelsetup.pxx2_bind_receiver_index); TRACE("RECEIVER SELECTED : %d", reusableBuffer.modelsetup.pxx2_bind_receiver_index);
} }
@ -1140,7 +1140,7 @@ void menuModelSetup(event_t event)
if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_RECEIVED) { if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_RECEIVED) {
popupMenuItemsCount = min<uint8_t>(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, PXX2_MAX_RECEIVERS_PER_MODULE); popupMenuItemsCount = min<uint8_t>(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count, PXX2_MAX_RECEIVERS_PER_MODULE);
for (uint8_t i=0; i<popupMenuItemsCount; i++) { for (uint8_t i=0; i<popupMenuItemsCount; i++) {
popupMenuItems[i] = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[i]; popupMenuItems[i] = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[i];
} }
POPUP_MENU_START(onPXX2BindMenu); POPUP_MENU_START(onPXX2BindMenu);
} }

View file

@ -1118,7 +1118,8 @@ union ReusableBuffer
char msg[64]; char msg[64];
uint8_t r9mPower; uint8_t r9mPower;
uint8_t pxx2_register_or_bind_step; uint8_t pxx2_register_or_bind_step;
char pxx2_bind_candidate_receivers[PXX2_MAX_RECEIVERS_PER_MODULE][8]; char pxx2_bind_candidate_receivers_ids[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_ID];
char pxx2_bind_candidate_receivers_names[PXX2_MAX_RECEIVERS_PER_MODULE][3*PXX2_LEN_RX_ID+1];
uint8_t pxx2_bind_candidate_receivers_count; uint8_t pxx2_bind_candidate_receivers_count;
uint8_t pxx2_bind_receiver_index; uint8_t pxx2_bind_receiver_index;
} modelsetup; } modelsetup;

View file

@ -92,19 +92,29 @@ void processBindFrame(uint8_t module, uint8_t * frame)
if (frame[3] == 0x00) { if (frame[3] == 0x00) {
bool found = false; bool found = false;
for (uint8_t i=0; i<reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; i++) { for (uint8_t i=0; i<reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; i++) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[i], &frame[4], PXX2_LEN_RX_ID) == 0) { if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[i], &frame[4], PXX2_LEN_RX_ID) == 0) {
found = true; found = true;
break; break;
} }
} }
if (!found && reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count < PXX2_MAX_RECEIVERS_PER_MODULE) { if (!found && reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count < PXX2_MAX_RECEIVERS_PER_MODULE) {
memcpy(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], &frame[4], PXX2_LEN_RX_ID); memcpy(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], &frame[4], PXX2_LEN_RX_ID);
char * c = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count];
for (uint8_t i=0; i<PXX2_LEN_RX_ID; i++) {
uint8_t byte = frame[i];
uint8_t quartet = (byte >> 4);
*c++ = (quartet >= 10 ? quartet + 'A' - 10 : quartet + '0');
quartet = (byte & 0x0f);
*c++ = (quartet >= 10 ? quartet + 'A' - 10 : quartet + '0');
*c++ = ' ';
}
*c = '\0';
++reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; ++reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count;
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_RECEIVED; reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_RX_ID_RECEIVED;
} }
} }
else if (frame[3] == 0x01) { else if (frame[3] == 0x01) {
if (memcmp(g_model.moduleData[module].pxx2.receivers[reusableBuffer.modelsetup.pxx2_bind_receiver_index].rxID, &frame[4], PXX2_LEN_RX_ID) == 0) { if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], &frame[4], PXX2_LEN_RX_ID) == 0) {
reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_OK; reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_OK;
moduleSettings[module].mode = MODULE_MODE_NORMAL; moduleSettings[module].mode = MODULE_MODE_NORMAL;
} }