From 62f8e36d9044be3b490e0870c23d03f1aca031f7 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 22 Feb 2019 12:57:50 +0100 Subject: [PATCH] Transfer (share with Friend) UI part --- radio/src/gui/128x64/model_setup.cpp | 27 ++++++++++++++++++++++++++- radio/src/opentx.h | 5 ++++- radio/src/pulses/pulses.h | 1 + radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 1 + radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 1 + radio/src/translations/nl.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 16 files changed, 44 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 2e69b997f..649422b10 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -87,10 +87,12 @@ enum MenuModelSetupItems { ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_PINMAP, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_TELEM, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL, + ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_SHARE, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NAME, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_PINMAP, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_TELEM, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL, + ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_SHARE, ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER, #endif ITEM_MODEL_EXTERNAL_MODULE_LABEL, @@ -120,10 +122,12 @@ enum MenuModelSetupItems { ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_PINMAP, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_TELEM, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL, + ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_SHARE, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_NAME, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_PINMAP, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_TELEM, ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL, + ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_SHARE, ITEM_MODEL_EXTERNAL_MODULE_PXX2_ADD_RECEIVER, #if defined(PCBSKY9X) && !defined(REVA) ITEM_MODEL_EXTRA_MODULE_LABEL, @@ -399,10 +403,12 @@ void menuModelSetup(event_t event) IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Range IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Telemetry IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Receiver Bind/Delete + IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Transfer IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, (uint8_t)-1), // Receiver Number IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Range IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Telemetry IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 1), // Receiver Bind/Delete + IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Transfer IF_PXX2(INTERNAL_MODULE_ADD_RECEIVER_ROW), LABEL(ExternalModule), @@ -423,10 +429,12 @@ void menuModelSetup(event_t event) IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Range IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Telemetry IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 1), // Receiver Bind/Delete + IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Transfer IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, (uint8_t)-1), // Receiver Number IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Range IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Telemetry IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 1), // Receiver Bind/Delete + IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Transfer IF_EXTERNAL_PXX2(EXTERNAL_MODULE_ADD_RECEIVER_ROW), TRAINER_ROWS @@ -1203,7 +1211,7 @@ void menuModelSetup(event_t event) else { g_model.moduleData[moduleIdx].pxx2.receivers[0].enabled = 0x01; memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[0].channelMapping, DEFAULT_CHANNEL_MAPPING, sizeof(uint64_t)); - menuVerticalPosition = (moduleIdx ? ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL : ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL) + 1; + menuVerticalPosition = (moduleIdx ? ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL : ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL) + 1; } killEvents(event); s_editMode = 0; @@ -1302,6 +1310,23 @@ void menuModelSetup(event_t event) } break; + case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_SHARE: + case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_SHARE: + case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_SHARE: + case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_SHARE: + { + uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k); + uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); + + lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_TRANSFER_BUTTON, attr); + if (event == EVT_KEY_BREAK(KEY_ENTER)) { + moduleSettings[moduleIdx].mode ^= MODULE_MODE_SHARE; + reusableBuffer.moduleSetup.pxx2.shareReceiverIndex = receiverIdx; + } + if (moduleSettings[moduleIdx].mode == MODULE_MODE_NORMAL) + s_editMode = 0; + } + break; #endif #if defined(PCBSKY9X) case ITEM_MODEL_EXTRA_MODULE_BIND: diff --git a/radio/src/opentx.h b/radio/src/opentx.h index e96fe3ca5..9320c228f 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1132,7 +1132,10 @@ union ReusableBuffer char registrationID[PXX2_LEN_REGISTRATION_ID]; char bindCandidateReceiversNames[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME]; uint8_t bindCandidateReceiversCount; - uint8_t bindSelectedReceiverIndex; + union { + uint8_t bindSelectedReceiverIndex; + uint8_t shareReceiverIndex; + }; } pxx2; }; } moduleSetup; diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index 2b298b668..49b73c397 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -76,6 +76,7 @@ enum ModuleSettingsMode MODULE_MODE_BIND, MODULE_MODE_REGISTER, MODULE_MODE_SPECTRUM_ANALYSER, + MODULE_MODE_SHARE }; PACK(struct ModuleSettings { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index c272fa26b..8c44fbceb 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -584,6 +584,7 @@ const char STR_BLCOLOR[] = TR_BLCOLOR; const char STR_TRAINER[] = TR_TRAINER; const char STR_MODULE_BIND[] = TR_MODULE_BIND; +const char STR_TRANSFER_BUTTON[] = TR_TRANSFER_BUTTON; const char STR_REGISTER_BUTTON[] = TR_REGISTER_BUTTON; const char STR_RXADD_BUTTON[] = TR_RXADD_BUTTON; const char STR_BINDING_1_8_TELEM_ON[] = TR_BINDING_CH1_8_TELEM_ON; diff --git a/radio/src/translations.h b/radio/src/translations.h index 9eea8e197..d729e4b9f 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -849,6 +849,7 @@ extern const char STR_EXPONAME[]; extern const char STR_TRAINER[]; extern const char STR_MODULE_BIND[]; +extern const char STR_TRANSFER_BUTTON[]; extern const char STR_REGISTER_BUTTON[]; extern const char STR_RXADD_BUTTON[]; extern const char STR_BINDING_1_8_TELEM_ON[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index fb41acd80..50fb959c8 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -961,6 +961,7 @@ #define TR_BUZZER INDENT"Pípák" #define TR_BYTES "[B]" #define TR_MODULE_BIND BUTTON(TR("Bnd", "Bind")) +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE BUTTON(TR("Rng", "Range")) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 171b5e6e5..b8d2133a6 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -966,6 +966,7 @@ #define TR_BUZZER INDENT "Summer" #define TR_BYTES "Bytes" #define TR_MODULE_BIND BUTTON(TR("Bnd","Bind")) //9XR-Pro +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE BUTTON(TR("Rng", "Range")) //9XR-Pro diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 93bf49ce1..2a2ed3347 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -965,6 +965,7 @@ #define TR_BUZZER INDENT "Buzzer" #define TR_BYTES "bytes" #define TR_MODULE_BIND BUTTON(TR("Bnd", "Bind")) +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON BUTTON("Add") #define TR_MODULE_RANGE BUTTON(TR("Rng", "Range")) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 598dfbdd3..9823a2b02 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -972,6 +972,7 @@ #define TR_BUZZER INDENT"Zumbador" #define TR_BYTES "bytes" #define TR_MODULE_BIND "[Enlace]" +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE "[Limites]" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index e0564376a..1c980dd07 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -964,6 +964,7 @@ #define TR_BUZZER INDENT"Buzzer" #define TR_BYTES "bytes" #define TR_MODULE_BIND "[Bind]" +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE "[Range]" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 64d8b9850..7aa0ff2a0 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -976,6 +976,7 @@ #define TR_BUZZER INDENT "Bipeur" #define TR_BYTES "bytes" #define TR_MODULE_BIND BUTTON(TR("Bnd", "Bind")) +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE BUTTON(TR("Prt", "Port.")) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index e2227a893..9d992cb35 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -966,6 +966,7 @@ #define TR_BUZZER INDENT"Buzzer" #define TR_BYTES "Bytes" #define TR_MODULE_BIND "[Bind]" +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE "[Range]" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 430733f98..489485a53 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -967,6 +967,7 @@ #define TR_BUZZER INDENT "Zoemer" #define TR_BYTES "bytes" #define TR_MODULE_BIND TR("[Bnd]", "[Bind]") +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE TR("[Rng]", "[Range]") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 8c1e425fb..36190abce 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -967,6 +967,7 @@ #define TR_BUZZER INDENT"Brzęczyk" #define TR_BYTES "bajty" #define TR_MODULE_BIND TR("[BND]","[Bind]") +#define TR_TRANSFER_BUTTON BUTTON("Transfert) #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE TR("[Zas]","Zasięg") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8df7999eb..5749eefb8 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -971,6 +971,7 @@ #define TR_BUZZER INDENT"Buzzer" #define TR_BYTES "bytes" #define TR_MODULE_BIND "[Bind]" +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE "[Range]" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 5cb0b44c9..f4706bf14 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -980,6 +980,7 @@ #define TR_BUZZER INDENT"Summer" #define TR_BYTES "byte" #define TR_MODULE_BIND TR("[Bnd]", "[Bind]") +#define TR_TRANSFER_BUTTON BUTTON("Transfer") #define TR_REGISTER_BUTTON BUTTON(TR("Reg", "Register")) #define TR_RXADD_BUTTON "BUTTON(Add)" #define TR_MODULE_RANGE TR("[Tst]", "[Testa]")