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

Custom popup for receiver registration

This commit is contained in:
Bertrand Songis 2019-02-14 17:09:15 +01:00
parent f83ed1b355
commit 6d4e908de0
21 changed files with 160 additions and 220 deletions

View file

@ -79,14 +79,14 @@ void processRegisterFrame(uint8_t module, uint8_t * frame)
if (frame[3] == 0x00) {
// RX_NAME follows, we store it for the next step
memcpy(reusableBuffer.modelsetup.pxx2_register_rx_id, &frame[4], PXX2_LEN_RX_NAME);
reusableBuffer.modelsetup.pxx2_register_step = REGISTER_COUNTER_ID_RECEIVED;
memcpy(reusableBuffer.modelSetup.pxx2.registerRxName, &frame[4], PXX2_LEN_RX_NAME);
reusableBuffer.modelSetup.pxx2.registerStep = REGISTER_COUNTER_ID_RECEIVED;
}
else if (frame[3] == 0x01) {
// RX_NAME + PASSWORD follow, we check they are good
if (memcmp(&frame[4], reusableBuffer.modelsetup.pxx2_register_rx_id, PXX2_LEN_RX_NAME) == 0 &&
if (memcmp(&frame[4], reusableBuffer.modelSetup.pxx2.registerRxName, PXX2_LEN_RX_NAME) == 0 &&
memcmp(&frame[12], g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0) {
reusableBuffer.modelsetup.pxx2_register_step = REGISTER_OK;
reusableBuffer.modelSetup.pxx2.registerStep = REGISTER_OK;
moduleSettings[module].mode = MODULE_MODE_NORMAL;
POPUP_INFORMATION(STR_REG_OK);
}
@ -101,15 +101,15 @@ void processBindFrame(uint8_t module, uint8_t * frame)
if (frame[3] == 0x00) {
bool found = false;
for (uint8_t i=0; i<reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count; i++) {
if (memcmp(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[i], &frame[4], PXX2_LEN_RX_NAME) == 0) {
for (uint8_t i=0; i<reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount; i++) {
if (memcmp(reusableBuffer.modelSetup.pxx2.bindCandidateReceiversIds[i], &frame[4], PXX2_LEN_RX_NAME) == 0) {
found = true;
break;
}
}
if (!found && reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count < PXX2_MAX_RECEIVERS_PER_MODULE) {
memcpy(reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_ids[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count], &frame[4], PXX2_LEN_RX_NAME);
char * c = reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_names[reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count];
if (!found && reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount < PXX2_MAX_RECEIVERS_PER_MODULE) {
memcpy(reusableBuffer.modelSetup.pxx2.bindCandidateReceiversIds[reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount], &frame[4], PXX2_LEN_RX_NAME);
char * c = reusableBuffer.modelSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.modelSetup.pxx2.bindCandidateReceiversCount];
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
uint8_t byte = frame[4 + i];
uint8_t quartet = (byte >> 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;
}
}
}