From eb9425678ff99d8a5e1a2b2705094544a15efd87 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 6 Nov 2021 15:57:21 +0100 Subject: [PATCH] Fixed registering/binding --- radio/src/gui/colorlcd/access_settings.cpp | 26 ++++++++++++++++------ radio/src/gui/colorlcd/access_settings.h | 3 +++ radio/src/opentx.h | 1 - radio/src/strhelpers.h | 1 + radio/src/telemetry/frsky_pxx2.cpp | 2 +- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/colorlcd/access_settings.cpp b/radio/src/gui/colorlcd/access_settings.cpp index 9dddab5c2..aa544ec46 100644 --- a/radio/src/gui/colorlcd/access_settings.cpp +++ b/radio/src/gui/colorlcd/access_settings.cpp @@ -88,7 +88,7 @@ void BindWaitDialog::checkEvents() removePXX2ReceiverIfEmpty(moduleIdx, receiverIdx); deleteLater(); if (bindInfo.step == BIND_OK) { - new MessageDialog(parent, STR_BIND, STR_BIND_OK); + POPUP_INFORMATION(STR_REG_OK); } else { // TODO: display error??? } @@ -278,17 +278,17 @@ void RegisterDialog::start() void RegisterDialog::checkEvents() { - if (!rxName && reusableBuffer.moduleSetup.pxx2.registerStep >= - REGISTER_RX_NAME_RECEIVED) { + auto& modSetup = getPXX2ModuleSetupBuffer(); + if (!rxName && modSetup.registerStep >= REGISTER_RX_NAME_RECEIVED) { rect_t rect = waiting->getRect(); waiting->deleteLater(); - rxName = new ModelTextEdit(&content->form, rect, - reusableBuffer.moduleSetup.pxx2.registerRxName, + rxName = new ModelTextEdit(&content->form, rect, modSetup.registerRxName, PXX2_LEN_RX_NAME); rect = exitButton->getRect(); auto okButton = new TextButton(&content->form, rect, "OK", [=]() -> int8_t { - reusableBuffer.moduleSetup.pxx2.registerStep = REGISTER_RX_NAME_SELECTED; + auto& modSetup = getPXX2ModuleSetupBuffer(); + modSetup.registerStep = REGISTER_RX_NAME_SELECTED; return 0; }); exitButton->setLeft(left() + rect.w + 10); @@ -296,10 +296,22 @@ void RegisterDialog::checkEvents() FormField::link(rxName, okButton); FormField::link(okButton, exitButton); okButton->setFocus(SET_FOCUS_DEFAULT); - } else if (reusableBuffer.moduleSetup.pxx2.registerStep == REGISTER_OK) { + } else if (modSetup.registerStep == REGISTER_OK) { deleteLater(); POPUP_INFORMATION(STR_REG_OK); } Dialog::checkEvents(); } + +#if defined(HARDWARE_KEYS) +void RegisterDialog::onEvent(event_t event) +{ + TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), + event); + + if (event == EVT_KEY_BREAK(KEY_EXIT)) { + deleteLater(); + } +} +#endif diff --git a/radio/src/gui/colorlcd/access_settings.h b/radio/src/gui/colorlcd/access_settings.h index 2a6422ed3..a685a31fb 100644 --- a/radio/src/gui/colorlcd/access_settings.h +++ b/radio/src/gui/colorlcd/access_settings.h @@ -75,6 +75,9 @@ class RegisterDialog : public Dialog void start(); void checkEvents() override; +#if defined(HARDWARE_KEYS) + void onEvent(event_t event) override; +#endif protected: uint8_t moduleIdx; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 5edf7714e..a428da306 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1163,7 +1163,6 @@ extern ReusableBuffer reusableBuffer; uint8_t zlen(const char *str, uint8_t size); bool zexist(const char *str, uint8_t size); -unsigned int effectiveLen(const char * str, unsigned int size); char * strcat_zchar(char *dest, const char *name, uint8_t size, const char spaceSym = 0, const char *defaultName=nullptr, uint8_t defaultNameSize=0, uint8_t defaultIdx=0); #define strcatFlightmodeName(dest, idx) strcat_zchar(dest, g_model.flightModeData[idx].name, LEN_FLIGHT_MODE_NAME, 0, STR_FM, PSIZE(TR_FM), idx+1) #if defined(EEPROM) diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index ede5a31ee..f8d863fc9 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -51,6 +51,7 @@ int8_t char2zchar(char c); void str2zchar(char *dest, const char *src, int size); int zchar2str(char *dest, const char *src, int size); int strnlen(const char *src, int max_size); +unsigned int effectiveLen(const char * str, unsigned int size); char *strAppend(char *dest, const char *source, int len = 0); char *strAppendUnsigned(char *dest, uint32_t value, uint8_t digits = 0, diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index e9338302e..53e00fabb 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -122,7 +122,7 @@ void processRegisterFrame(uint8_t module, const uint8_t * frame) case 0x00: if (mod.registerStep == REGISTER_INIT) { // RX_NAME follows, we store it for the next step - str2zchar(mod.registerRxName, (const char *)&frame[4], PXX2_LEN_RX_NAME); + memcpy(mod.registerRxName, (const char *)&frame[4], PXX2_LEN_RX_NAME); mod.registerLoopIndex = frame[12]; mod.registerStep = REGISTER_RX_NAME_RECEIVED; #if defined(COLORLCD)