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:
parent
e14d98e399
commit
8d08e6939d
3 changed files with 17 additions and 6 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue