diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 5352cb71c..bf46f7dd6 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -283,7 +283,7 @@ void menuModelSetup(event_t event) POT_WARN_ITEMS(), // Pot warning NUM_STICKS + NUM_POTS + NUM_SLIDERS + NUM_ROTARY_ENCODERS - 1, // Center beeps 0, // Global functions - 4, // Registration ID + PXX2_LEN_REGISTRATION_ID - 1, // Registration ID LABEL(InternalModule), INTERNAL_MODULE_MODE_ROWS, IF_INTERNAL_MODULE_ON((uint8_t)0), // Model Number @@ -1013,12 +1013,11 @@ void menuModelSetup(event_t event) #if defined(PCBTARANIS) case ITEM_MODEL_REGISTRATION_ID: { - lcdDrawTextAlignedLeft(y, "Regis. ID"); - for(uint8_t pos=0; pos0) { @@ -1071,8 +1069,7 @@ void menuModelSetup(event_t event) } s_editMode = 0; } - } - break; + break; case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_NUMBER: case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_NUMBER: @@ -1086,7 +1083,7 @@ void menuModelSetup(event_t event) case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_RANGE: case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_RANGE: { - //TODO have a proper channel assignement screen, section bellow is just for tests + // TODO have a proper channel assignement screen, section bellow is just for tests uint8_t useUpperChannels; uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k); diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 5e6b68a0b..c1b913480 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1096,6 +1096,7 @@ void opentxResume(); #else #define SD_SCREEN_FILE_LENGTH 64 #endif + union ReusableBuffer { // ARM 334 bytes @@ -1116,8 +1117,10 @@ union ReusableBuffer struct { char msg[64]; uint8_t r9mPower; - char pxx2_candidate_receivers[5][8]; - uint8_t pxx2_candidate_receivers_count; + uint8_t pxx2_register_or_bind_step; + char pxx2_bind_candidate_receivers[5][8]; + uint8_t pxx2_bind_candidate_receivers_count; + uint8_t pxx2_bind_receiver_index; } modelsetup; // 103 bytes diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index a46c85051..f313ccad8 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -57,11 +57,9 @@ void Pxx2Pulses::setupChannelsFrame(uint8_t module) void Pxx2Pulses::setupRegisterFrame(uint8_t module) { - unsigned counter = moduleSettings[module].counter; - addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER); - if (counter == REGISTER_COUNTER_ID_RECEIVED) { + if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == REGISTER_COUNTER_ID_RECEIVED) { Pxx2Transport::addByte(0x01); for (uint8_t i=0; i { public: diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 2f60affff..acff000b1 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -76,12 +76,13 @@ void processRegisterFrame(uint8_t module, uint8_t * frame) { if (frame[3] == 0x00) { // RX_ID follows, we discard it for now - moduleSettings[module].counter = REGISTER_COUNTER_ID_RECEIVED; + reusableBuffer.modelsetup.pxx2_register_or_bind_step = REGISTER_COUNTER_ID_RECEIVED; } else if (frame[3] == 0x01) { // PASSWORD follows, we check it is good if (memcmp(&frame[4], g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0) { - moduleSettings[module].counter = REGISTER_COUNTER_PASSWORD_RECEIVED; + reusableBuffer.modelsetup.pxx2_register_or_bind_step = REGISTER_OK; + moduleSettings[module].mode = MODULE_MODE_NORMAL; } } } @@ -90,15 +91,22 @@ void processBindFrame(uint8_t module, uint8_t * frame) { if (frame[3] == 0x00) { bool found = false; - for (uint8_t i=0; i