From a4d7447f724d0c48a41d65f087a5e2edfac5756a Mon Sep 17 00:00:00 2001 From: WismyYao Date: Wed, 2 Mar 2022 09:21:54 +0800 Subject: [PATCH] Meituan customized : rxNum self-growth --- radio/src/gui/128x64/menus.h | 4 ++++ radio/src/gui/128x64/model_select.cpp | 4 ++++ radio/src/gui/128x64/model_setup.cpp | 8 ++++++++ radio/src/gui/128x64/view_main.cpp | 2 +- radio/src/gui/212x64/menu_model.cpp | 2 ++ radio/src/gui/212x64/menus.h | 2 ++ radio/src/gui/480x272/menu_model.cpp | 2 ++ radio/src/gui/480x272/menus.cpp | 2 ++ radio/src/gui/common/stdlcd/model_setup_pxx2.cpp | 6 ++++++ radio/src/pulses/pxx2.cpp | 8 ++++++++ radio/src/targets/taranis/CMakeLists.txt | 5 +++++ tools/build-frsky.py | 2 ++ 12 files changed, 46 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/128x64/menus.h b/radio/src/gui/128x64/menus.h index 6c8ef21b4..d98f908ef 100644 --- a/radio/src/gui/128x64/menus.h +++ b/radio/src/gui/128x64/menus.h @@ -92,7 +92,9 @@ static const MenuHandlerFunc menuTabGeneral[MENU_RADIO_PAGES_COUNT] = { }; enum MenuModelIndexes { +#if !defined(MEITUAN) MENU_MODEL_SELECT, +#endif MENU_MODEL_SETUP, CASE_HELI(MENU_MODEL_HELI) CASE_FLIGHT_MODES(MENU_MODEL_FLIGHT_MODES) @@ -135,7 +137,9 @@ void menuModelTemplates(event_t event); void menuModelGVarOne(event_t event); static const MenuHandlerFunc menuTabModel[] = { +#if !defined(MEITUAN) menuModelSelect, +#endif menuModelSetup, CASE_HELI(menuModelHeli) CASE_FLIGHT_MODES(menuModelFlightModesAll) diff --git a/radio/src/gui/128x64/model_select.cpp b/radio/src/gui/128x64/model_select.cpp index 0a76ed532..0a2d2cca2 100644 --- a/radio/src/gui/128x64/model_select.cpp +++ b/radio/src/gui/128x64/model_select.cpp @@ -80,6 +80,10 @@ void onModelSelectMenu(const char * result) #endif } +#if defined(MEITUAN) + uint8_t MENU_MODEL_SELECT = 0; +#endif + void menuModelSelect(event_t event) { event_t _event_ = event; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 3f9b3100d..0b6ca8fef 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1368,6 +1368,13 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM: { lcdDrawText(INDENT_WIDTH, y, STR_RECEIVER_NUM); +#if defined(MEITUAN) + if (g_model.header.modelId[moduleIdx] == 0) { + lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, "--", attr | LEADING0 | LEFT); + } + else + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], attr | LEADING0 | LEFT, 2); +#else lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], attr | LEADING0 | LEFT, 2); if (attr) { CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], getMaxRxNum(moduleIdx)); @@ -1375,6 +1382,7 @@ void menuModelSetup(event_t event) modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx]; } } +#endif } break; diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index e886a9ef8..909a23700 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -458,7 +458,7 @@ void menuMainView(event_t event) #endif case EVT_KEY_MODEL_MENU: - pushMenu(menuModelSelect); + pushMenu(menuTabModel[0]); killEvents(event); break; diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index 5147bf7a2..cd011d5cf 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -21,7 +21,9 @@ #include "opentx.h" const MenuHandlerFunc menuTabModel[] = { +#if !defined(MEITUAN) menuModelSelect, +#endif menuModelSetup, CASE_HELI(menuModelHeli) CASE_FLIGHT_MODES(menuModelFlightModesAll) diff --git a/radio/src/gui/212x64/menus.h b/radio/src/gui/212x64/menus.h index f39cdc71b..b1cb01da8 100644 --- a/radio/src/gui/212x64/menus.h +++ b/radio/src/gui/212x64/menus.h @@ -81,7 +81,9 @@ void menuGhostModuleConfig(event_t event); extern const MenuHandlerFunc menuTabGeneral[MENU_RADIO_PAGES_COUNT]; enum MenuModelIndexes { +#if !defined(MEITUAN) MENU_MODEL_SELECT, +#endif MENU_MODEL_SETUP, CASE_HELI(MENU_MODEL_HELI) CASE_FLIGHT_MODES(MENU_MODEL_FLIGHT_MODES) diff --git a/radio/src/gui/480x272/menu_model.cpp b/radio/src/gui/480x272/menu_model.cpp index f376e36a2..229928ba2 100644 --- a/radio/src/gui/480x272/menu_model.cpp +++ b/radio/src/gui/480x272/menu_model.cpp @@ -21,7 +21,9 @@ #include "opentx.h" const MenuHandlerFunc menuTabModel[] = { +#if !defined(MEITUAN) menuModelSetup, +#endif CASE_HELI(menuModelHeli) CASE_FLIGHT_MODES(menuModelFlightModesAll) menuModelExposAll, diff --git a/radio/src/gui/480x272/menus.cpp b/radio/src/gui/480x272/menus.cpp index e88c02a25..04df9e35b 100644 --- a/radio/src/gui/480x272/menus.cpp +++ b/radio/src/gui/480x272/menus.cpp @@ -59,8 +59,10 @@ void pushMenu(MenuHandlerFunc newMenu) if (newMenu == menuRadioTools) menuVerticalPositions[0] = 1; #endif +#if !define(MEITUAN) if (newMenu == menuModelSetup) menuVerticalPositions[0] = 0; +#endif } else { menuVerticalPositions[menuLevel] = menuVerticalPosition; diff --git a/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp b/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp index 13ee54942..06ba41958 100644 --- a/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp +++ b/radio/src/gui/common/stdlcd/model_setup_pxx2.cpp @@ -52,6 +52,9 @@ void onPXX2R9MBindModeMenu(const char * result) moduleState[moduleIdx].mode = MODULE_MODE_NORMAL; reusableBuffer.moduleSetup.bindInformation.step = BIND_OK; POPUP_INFORMATION(STR_BIND_OK); +#if defined(MEITUAN) + g_model.header.modelId[moduleIdx] = (g_model.header.modelId[moduleIdx] + 1) % getMaxRxNum(moduleIdx); +#endif #else reusableBuffer.moduleSetup.bindInformation.step = BIND_START; #endif @@ -83,6 +86,9 @@ void onPXX2BindMenu(const char * result) moduleState[moduleIdx].mode = MODULE_MODE_NORMAL; reusableBuffer.moduleSetup.bindInformation.step = BIND_OK; POPUP_INFORMATION(STR_BIND_OK); +#if defined(MEITUAN) + g_model.header.modelId[moduleIdx] = (g_model.header.modelId[moduleIdx] + 1) % getMaxRxNum(moduleIdx); +#endif #else reusableBuffer.moduleSetup.bindInformation.step = BIND_START; #endif diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 8727e6e4a..6cbead848 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -268,6 +268,9 @@ void Pxx2Pulses::setupAccessBindFrame(uint8_t module) moduleState[module].mode = MODULE_MODE_NORMAL; destination->step = BIND_OK; POPUP_INFORMATION(STR_BIND_OK); // TODO rather use the new callback +#if defined(MEITUAN) + g_model.header.modelId[module] = (g_model.header.modelId[module] + 1) % getMaxRxNum(module); +#endif } return; } @@ -291,7 +294,12 @@ void Pxx2Pulses::setupAccessBindFrame(uint8_t module) else { Pxx2Transport::addByte(destination->rxUid); // RX_UID is the slot index (which is unique and never moved) } + +#if defined(MEITUAN) + Pxx2Transport::addByte((g_model.header.modelId[module] + 1) % getMaxRxNum(module)); +#else Pxx2Transport::addByte(g_model.header.modelId[module]); +#endif } else { Pxx2Transport::addByte(0x00); // DATA0 diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 2b7a9f70f..30dc0870d 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -7,6 +7,7 @@ option(GHOST "Ghost TX Module" ON) option(INTERNAL_MODULE_PPM "Support for PPM internal module" OFF) option(AUTOUPDATE "Auto update internal chips from SD" OFF) option(BIND_KEY "Enable bind button" OFF) +option(MEITUAN "Meituan custom software" OFF) set(EXTERNAL_MODULE YES) add_definitions(-DHARDWARE_TRIMS) @@ -551,6 +552,10 @@ if(INTERNAL_MODULE_ELRS) add_definitions(-DINTERNAL_MODULE_ELRS) endif() +if(MEITUAN) + add_definitions(-DMEITUAN) +endif() + if(EXTERNAL_MODULE) set(TARGET_SRC ${TARGET_SRC} diff --git a/tools/build-frsky.py b/tools/build-frsky.py index fc33d2b80..4c200cc8f 100755 --- a/tools/build-frsky.py +++ b/tools/build-frsky.py @@ -33,6 +33,7 @@ boards = { "PPM": "NO", "DSM2": "NO", "SBUS": "NO", + # "MEITUAN":"YES", }, "X9LITE": { "PCB": "X9LITE", @@ -55,6 +56,7 @@ boards = { "DSM2": "NO", "SBUS": "NO", "DEFAULT_MODE": "2", + # "MEITUAN":"YES", }, "X9D+2019": { "PCB": "X9D+",