From 5d3605e846ed7d00c5c9f3a6f8749b60a383ca11 Mon Sep 17 00:00:00 2001 From: FreedomLJS <1776063194@qq.com> Date: Sat, 12 Apr 2025 02:55:19 +0800 Subject: [PATCH 1/2] The first submission of the DRO1 device code originating from DumboRC. --- .github/ISSUE_TEMPLATE/bug-report.yml | 1 + .github/workflows/actions.yml | 2 + .github/workflows/nightly.yml | 1 + companion/src/CMakeLists.txt | 2 + companion/src/firmwares/boardjson.cpp | 2 +- companion/src/firmwares/boards.cpp | 8 + companion/src/firmwares/boards.h | 14 +- .../src/firmwares/opentx/opentxinterface.cpp | 12 +- fw.json | 3 +- radio/src/CMakeLists.txt | 4 + radio/src/audio.cpp | 2 +- radio/src/edgetx.cpp | 2 +- .../src/gui/colorlcd/module/module_setup.cpp | 2 +- radio/src/stamp.cpp | 6 +- radio/src/targets/horus/CMakeLists.txt | 20 ++ radio/src/targets/horus/board.h | 6 +- radio/src/targets/horus/hal.h | 63 +++++- radio/src/targets/horus/lcd_driver.cpp | 2 +- radio/src/targets/horus/tp_gt911.cpp | 188 ++++++++++++++++++ radio/src/targets/horus/usb_descriptor.h | 4 + radio/src/telemetry/frsky.h | 2 +- radio/util/build-firmware.py | 7 +- radio/util/fwoptions.py | 13 ++ radio/util/hw_defs/hal_keys.py | 2 +- radio/util/hw_defs/legacy_names.py | 2 +- radio/util/hw_defs/pot_config.py | 11 + radio/util/hw_defs/switch_config.py | 12 ++ tools/boards.py | 5 + tools/build-common.sh | 3 + tools/build-companion.sh | 2 +- tools/build-dumborc.py | 77 +++++++ tools/generate-hw-defs.sh | 2 +- tools/generate-yaml.sh | 2 +- tools/msys2_fetch_and_build_all.sh | 5 +- 34 files changed, 456 insertions(+), 33 deletions(-) create mode 100644 tools/build-dumborc.py diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index b64a6a505f6..ec8af6c72ec 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -120,6 +120,7 @@ body: - RadioMaster TX12 / TX12MK2 - RadioMaster TX16S / TX16SMK2 - RadioMaster Zorro + - DumboRC DRO1 - Other (Please specify below) validations: required: true diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 3c0474a9d7a..e6a7ed552b0 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -72,6 +72,7 @@ jobs: - mt12 - gx12 - nb4p + - dro1 container: image: ghcr.io/edgetx/edgetx-dev:latest volumes: @@ -118,6 +119,7 @@ jobs: - xlite;xlites - mt12;gx12 - nb4p + - dro1 container: image: ghcr.io/edgetx/edgetx-dev:latest volumes: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 9e6f193cfbe..ed9d5d9aad3 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -36,6 +36,7 @@ jobs: - xlite;xlites - mt12 - nb4p + - dro1 container: image: ghcr.io/edgetx/edgetx-dev:latest volumes: diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index c799b4f3d91..2f292e223b8 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -358,6 +358,8 @@ elseif(PCB STREQUAL PL18 AND PCBREV STREQUAL PL18EV) set(FLAVOUR pl18ev) elseif(PCB STREQUAL PL18) set(FLAVOUR pl18) +elseif(PCB STREQUAL X10 AND PCBREV STREQUAL DRO1) + set(FLAVOUR dro1) else() string(TOLOWER ${PCB} FLAVOUR) endif() diff --git a/companion/src/firmwares/boardjson.cpp b/companion/src/firmwares/boardjson.cpp index 10d52032778..79886e8663d 100644 --- a/companion/src/firmwares/boardjson.cpp +++ b/companion/src/firmwares/boardjson.cpp @@ -119,7 +119,7 @@ void BoardJson::afterLoadFixups(Board::Type board, InputsTable * inputs, Switche } // Flex switches are not listed in json file for these radios - int count = IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_MT12(board) ? 2 : 0; + int count = IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_MT12(board) || IS_DUMBORC_DRO1(board) ? 2 : 0; for (int i = 1; i <= count; i++) { QString tag = QString("FL%1").arg(i); diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index 778a2f50c90..8abccc171cb 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -158,6 +158,8 @@ uint32_t Boards::getFourCC(Type board) case BOARD_FLYSKY_PL18: case BOARD_FLYSKY_PL18EV: return 0x4878746F; + case BOARD_DUMBORC_DRO1: + return 0x4A78746F; default: return 0; } @@ -218,6 +220,7 @@ int Boards::getEEpromSize(Board::Type board) case BOARD_FLYSKY_PL18EV: case BOARD_FATFISH_F16: case BOARD_HELLORADIOSKY_V16: + case BOARD_DUMBORC_DRO1: return 0; default: return 0; @@ -277,6 +280,7 @@ int Boards::getFlashSize(Type board) case BOARD_FLYSKY_PL18EV: case BOARD_FATFISH_F16: case BOARD_HELLORADIOSKY_V16: + case BOARD_DUMBORC_DRO1: return FSIZE_HORUS; case BOARD_UNKNOWN: return FSIZE_MAX; @@ -665,6 +669,8 @@ QString Boards::getBoardName(Board::Type board) return "Fatfish F16"; case BOARD_HELLORADIOSKY_V16: return "HelloRadioSky V16"; + case BOARD_DUMBORC_DRO1: + return "DumboRC DRO1"; default: return CPN_STR_UNKNOWN_ITEM; } @@ -769,6 +775,7 @@ int Boards::getDefaultInternalModules(Board::Type board) case BOARD_JUMPER_TPROV2: case BOARD_FLYSKY_PL18: case BOARD_FLYSKY_PL18EV: + case BOARD_DUMBORC_DRO1: return (int)MODULE_TYPE_MULTIMODULE; case BOARD_BETAFPV_LR3PRO: @@ -840,6 +847,7 @@ void Boards::getBattRange(Board::Type board, int& vmin, int& vmax, unsigned int& case BOARD_JUMPER_T18: case BOARD_JUMPER_T20: case BOARD_JUMPER_T20V2: + case BOARD_DUMBORC_DRO1: BR(67, 83, 66) break; case BOARD_JUMPER_TLITE: diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 5c813177400..455d97d2e40 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -92,6 +92,7 @@ namespace Board { BOARD_FATFISH_F16, BOARD_HELLORADIOSKY_V16, BOARD_RADIOMASTER_MT12, + BOARD_DUMBORC_DRO1, BOARD_TYPE_COUNT, BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1 }; @@ -616,9 +617,20 @@ inline bool IS_HELLORADIOSKY_V16(Board::Type board) return board == Board::BOARD_HELLORADIOSKY_V16; } +inline bool IS_DUMBORC_DRO1(Board::Type board) +{ + return board == Board::BOARD_DUMBORC_DRO1; +} + inline bool IS_FAMILY_T16(Board::Type board) { - return board == Board::BOARD_JUMPER_T15 || board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18 || board == Board::BOARD_FATFISH_F16 || board == Board::BOARD_HELLORADIOSKY_V16; + return board == Board::BOARD_JUMPER_T15 || + board == Board::BOARD_JUMPER_T16 || + board == Board::BOARD_RADIOMASTER_TX16S || + board == Board::BOARD_JUMPER_T18 || + board == Board::BOARD_FATFISH_F16 || + board == Board::BOARD_HELLORADIOSKY_V16 || + board == Board::BOARD_DUMBORC_DRO1; } inline bool IS_FAMILY_T12(Board::Type board) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index cf953ee0627..933fef81a66 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -330,9 +330,9 @@ int OpenTxFirmware::getCapability(::Capability capability) IS_JUMPER_T15(board) || IS_JUMPER_T18(board) || IS_JUMPER_T20(board) || IS_JUMPER_TPRO(board) || IS_RADIOMASTER_BOXER(board) || IS_RADIOMASTER_GX12(board) || IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_POCKET(board) || IS_RADIOMASTER_TX12(board) || IS_RADIOMASTER_TX12_MK2(board) || - IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_ZORRO(board)); + IS_RADIOMASTER_TX16S(board) || IS_RADIOMASTER_ZORRO(board) || IS_DUMBORC_DRO1(board)); case HasSoftwareSerialPower: - return IS_RADIOMASTER_TX16S(board); + return IS_RADIOMASTER_TX16S(board) || IS_DUMBORC_DRO1(board); case HasIntModuleMulti: return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) || IS_RADIOMASTER_TX12(board) || IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board) || @@ -812,6 +812,14 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3); + /* DumboRC DRO1 board */ + firmware = new OpenTxFirmware(FIRMWAREID("dro1"), QCoreApplication::translate("Firmware", "DumboRC DRO1"), Board::BOARD_DUMBORC_DRO1); + addOpenTxCommonOptions(firmware); + firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); + addOpenTxFontOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + Firmware::sortRegisteredFirmwares(); Firmware::setDefaultVariant(Firmware::getFirmwareForFlavour("tx16s")); Firmware::setCurrentVariant(Firmware::getDefaultVariant()); diff --git a/fw.json b/fw.json index 9eac988f363..3043237c9b8 100644 --- a/fw.json +++ b/fw.json @@ -46,7 +46,8 @@ ["RadioMaster TX12MK2", "tx12mk2-"], ["RadioMaster TX16S", "tx16s-"], ["RadioMaster Zorro","zorro-"], - ["RadioMaster GX12", "gx12-"] + ["RadioMaster GX12", "gx12-"], + ["DumboRC DRO1", "dro1-"] ], "changelog": "- Major initial bug fixes" } diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index cb0967f60ba..b6e0b3da68c 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -373,6 +373,10 @@ if(IFLIGHT_RELEASE) add_definitions(-DIFLIGHT_RELEASE) endif() +if(DUMBORC_RELEASE) + add_definitions(-DDUMBORC_RELEASE) +endif() + if(HARDWARE_TRAINER_MULTI) add_definitions(-DHARDWARE_TRAINER_MULTI) endif() diff --git a/radio/src/audio.cpp b/radio/src/audio.cpp index ce299856d9c..3fc86e0a065 100644 --- a/radio/src/audio.cpp +++ b/radio/src/audio.cpp @@ -380,7 +380,7 @@ void audioTask(void * pdata) RTOS_WAIT_TICKS(1); } -#if defined(PCBX12S) || defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) +#if defined(PCBX12S) || defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) // The audio amp needs ~2s to start RTOS_WAIT_MS(1000); // 1s #endif diff --git a/radio/src/edgetx.cpp b/radio/src/edgetx.cpp index 05421d6ae0b..70703bb4316 100644 --- a/radio/src/edgetx.cpp +++ b/radio/src/edgetx.cpp @@ -420,7 +420,7 @@ void generalDefault() g_eeGeneral.pwrOffSpeed = 2; #endif -#if defined(MANUFACTURER_RADIOMASTER) +#if defined(MANUFACTURER_RADIOMASTER) || defined(MANUFACTURER_DUMBORC) g_eeGeneral.audioMuteEnable = 1; #endif diff --git a/radio/src/gui/colorlcd/module/module_setup.cpp b/radio/src/gui/colorlcd/module/module_setup.cpp index d648fa3a056..0c3e2bacd50 100644 --- a/radio/src/gui/colorlcd/module/module_setup.cpp +++ b/radio/src/gui/colorlcd/module/module_setup.cpp @@ -417,7 +417,7 @@ class ModuleWindow : public Window edit->setStep(SBUS_STEPSIZE); new Choice(box, rect_t{}, STR_SBUS_INVERSION_VALUES, 0, 1, GET_SET_DEFAULT(md->sbus.noninverted)); - #if defined(RADIO_TX16S) + #if defined(RADIO_TX16S) || defined(RADIO_DRO1) new StaticText(this, rect_t{}, STR_WARN_5VOLTS); #endif } diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index cfaaf6a51f1..fdf253c95ec 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -42,13 +42,15 @@ #define DISPLAY_VERSION "-tbs" #elif defined(IMRC_RELEASE) #define DISPLAY_VERSION "-imrc" +#elif defined(DUMBORC_RELEASE) +#define DISPLAY_VERSION "-DRO" #else #define DISPLAY_VERSION #endif #if defined(COLORLCD) const char fw_stamp[] = "FW" TAB ": edgetx-" FLAVOUR; - #if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE) + #if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE) || defined(DUMBORC_RELEASE) const char vers_stamp[] = "VERS" TAB ": Factory firmware (" GIT_STR ")"; #else #if defined(VERSION_TAG) @@ -63,7 +65,7 @@ const char vers_stamp[] = "FW" TAB ": edgetx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME; #elif defined(RADIOMASTER_RELEASE) const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": RM Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; -#elif defined(JUMPER_RELEASE) || defined(IFLIGHT_RELEASE) +#elif defined(JUMPER_RELEASE) || defined(IFLIGHT_RELEASE) || defined(DUMBORC_RELEASE) const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; #else #if defined(VERSION_TAG) diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 3ce49285ad2..778c2e10abf 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -150,6 +150,26 @@ if (PCB STREQUAL X10) endif() set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS") set(FLYSKY_GIMBAL ON) + elseif (PCBREV STREQUAL DRO1) + set(FLAVOUR dro1) + add_definitions(-DRADIO_DRO1) + add_definitions(-DRADIO_FAMILY_T16) + +# Uncomment the line below to enable bootloader support for SPI flash +# add_definitions(-DSPI_FLASH) + + unset(INTERNAL_MODULES CACHE) + option(BLUETOOTH "Support for bluetooth module" OFF) + option(INTERNAL_GPS "Support for internal GPS" OFF) + set(SWSERIALPOWER YES) + set(USB_CHARGER YES) + add_definitions(-DMANUFACTURER_DUMBORC) + if (NOT BLUETOOTH) + set(AUX2_SERIAL ON) + endif() + set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS") + set(FLYSKY_GIMBAL OFF) + set(FLEXSW "2" CACHE STRING "Max flex inputs usable as switches") else() set(FLAVOUR x10) set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index eb89df0ed7e..d2cd27905e7 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -146,7 +146,7 @@ enum { #endif // POTS and SLIDERS default configuration -#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define XPOS_CALIB_DEFAULT {0x3, 0xc, 0x15, 0x1e, 0x26} #endif @@ -279,7 +279,7 @@ void telemetryPortInvertedInit(uint32_t baudrate); // Aux serial port driver -#if defined(RADIO_TX16S) || defined(RADIO_F16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_DRO1) #define DEBUG_BAUDRATE 460800 #define LUA_DEFAULT_BAUDRATE 115200 #else @@ -306,7 +306,7 @@ void bluetoothWriteWakeup(); uint8_t bluetoothIsWriting(); void bluetoothDisable(); -#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define BATTERY_DIVIDER 1495 #else #define BATTERY_DIVIDER 1629 diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index a226e297266..a5ec604918e 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -45,7 +45,7 @@ #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_6 // PI.06 #define KEYS_GPIO_REG_TELE GPIOC #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_4 // PC.04 -#elif defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) +#elif defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define KEYS_GPIO_REG_ENTER GPIOI #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 #define KEYS_GPIO_REG_PAGEUP GPIOC @@ -234,6 +234,22 @@ #if defined(PCBX12S) #define SWITCHES_F_INVERTED + #elif defined(RADIO_DRO1) + #undef SWITCHES_GPIO_REG_F + #undef SWITCHES_GPIO_PIN_F + #undef SWITCHES_GPIO_REG_H + #undef SWITCHES_GPIO_PIN_H + #define SWITCHES_GPIO_REG_F_H GPIOH + #define SWITCHES_GPIO_PIN_F_H LL_GPIO_PIN_7 // PH.07 + #define SWITCHES_GPIO_REG_F_L GPIOH + #define SWITCHES_GPIO_PIN_F_L LL_GPIO_PIN_3 // PH.03 + #define SWITCHES_GPIO_REG_H_H GPIOH + #define SWITCHES_GPIO_PIN_H_H LL_GPIO_PIN_8 // PH.08 + #define SWITCHES_GPIO_REG_H_L GPIOG + #define SWITCHES_GPIO_PIN_H_L LL_GPIO_PIN_7 // PG.07 + #define SWITCHES_B_INVERTED + #define SWITCHES_D_INVERTED + #define SWITCHES_G_INVERTED #elif defined(PCBX10) #define SWITCHES_B_INVERTED #define SWITCHES_D_INVERTED @@ -316,6 +332,31 @@ #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_14 // PB.14 #define TRIMS_GPIO_REG_LSU GPIOB #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 // PB.13 +#elif defined(RADIO_DRO1) + #define TRIMS_GPIO_REG_RHL GPIOA + #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_6 // PA.06 + #define TRIMS_GPIO_REG_RHR GPIOC + #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PC.04 + #define TRIMS_GPIO_REG_RVD GPIOG + #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_12 // PG.12 + #define TRIMS_GPIO_REG_RVU GPIOJ + #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_14 // PJ.14 + #define TRIMS_GPIO_REG_LVD GPIOJ + #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_13 // PJ.13 + #define TRIMS_GPIO_REG_LHL GPIOD + #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PD.03 + #define TRIMS_GPIO_REG_LVU GPIOJ + #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_12 // PJ.12 + #define TRIMS_GPIO_REG_LHR GPIOD + #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_7 // PD.07 + #define TRIMS_GPIO_REG_LSU GPIOD + #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 // PD.13 + #define TRIMS_GPIO_REG_LSD GPIOJ + #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_8 // PJ.08 + #define TRIMS_GPIO_REG_RSU GPIOB + #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_14 // PB.14 + #define TRIMS_GPIO_REG_RSD GPIOB + #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_13 // PB.13 #elif defined(PCBX10) #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) #define TRIMS_GPIO_REG_LHL GPIOA @@ -477,7 +518,7 @@ #define ADC_GPIO_PIN_EXT3 ADC_GPIO_PIN_STICK_RH #define ADC_GPIO_PIN_EXT4 ADC_GPIO_PIN_STICK_RV #endif - #if !(defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_T15) || defined(RADIO_V16)) + #if !(defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_T15) || defined(RADIO_V16) || defined(RADIO_DRO1)) #define PWM_STICKS #define PWM_TIMER TIM5 #define PWM_GPIO GPIOA @@ -545,7 +586,7 @@ #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler // VBat divider is /4 on F42x and F43x devices - #if defined(RADIO_TX16S) || defined(RADIO_T15) || defined(RADIO_F16) || defined(RADIO_V16) + #if defined(RADIO_TX16S) || defined(RADIO_T15) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define ADC_VREF_PREC2 660 #elif defined(RADIO_T16) || defined(RADIO_T18) #define ADC_VREF_PREC2 600 @@ -560,7 +601,7 @@ #define ADC_DIRECTION {1,-1,1,-1, 1,1,1, -1,1,1,1, -1,1 } #elif defined(RADIO_T18) #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, -1,1,1,1, -1,1 } -#elif defined(RADIO_TX16S) || defined(RADIO_F16) +#elif defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_DRO1) #define ADC_DIRECTION {1,-1,1,-1, 1,1,1, -1,1,1,1, -1,1 } #elif defined(RADIO_V16) #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, -1,1,1,1, -1,1 } @@ -612,7 +653,7 @@ #if defined(RADIO_T15) #define PCBREV_GPIO GPIO_PIN(GPIOH, 8) // PH.08 #define PCBREV_VALUE() (gpio_read(PCBREV_GPIO) >> 8) -#elif defined(RADIO_V16) +#elif defined(RADIO_V16) || defined(RADIO_DRO1) #define PCBREV_VALUE() {0} #elif defined(PCBX10) #define PCBREV_GPIO_1 GPIO_PIN(GPIOH, 7) // PH.07 @@ -678,7 +719,7 @@ #define AUX_SERIAL_DMA_RX DMA1 #define AUX_SERIAL_DMA_RX_STREAM LL_DMA_STREAM_1 #define AUX_SERIAL_DMA_RX_CHANNEL LL_DMA_CHANNEL_4 - #if defined(RADIO_TX16S) || defined(RADIO_F16) + #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_DRO1) #define AUX_SERIAL_PWR_GPIO GPIO_PIN(GPIOA, 15) // PA.15 #endif #endif @@ -790,7 +831,7 @@ #elif defined(PCBX10) #define LCD_GPIO_NRST GPIO_PIN(GPIOI, 10) // PI.10 #endif -#if defined(PCBX10) && !defined(RADIO_T18) && !defined(RADIO_V16) +#if defined(PCBX10) && !(defined(RADIO_T18) || defined(RADIO_V16) || defined(RADIO_DRO1)) #define LCD_VERTICAL_INVERT #endif #define LTDC_IRQ_PRIO 4 @@ -913,7 +954,7 @@ #endif #if defined(RADIO_FAMILY_T16) -#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define AUDIO_UNMUTE_DELAY 150 // ms #else #define AUDIO_UNMUTE_DELAY 120 // ms @@ -946,7 +987,7 @@ #endif // HARDWARE_TOUCH // First I2C Bus -#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(PCBX12S) || defined(RADIO_T15) || defined(RADIO_V16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(PCBX12S) || defined(RADIO_T15) || defined(RADIO_V16) || defined(RADIO_DRO1) #define I2C_B1 I2C1 #define I2C_B1_SCL_GPIO GPIO_PIN(GPIOB, 8) // PB.08 #define I2C_B1_SDA_GPIO GPIO_PIN(GPIOB, 9) // PB.09 @@ -967,7 +1008,7 @@ #define I2C_B2_SDA_GPIO GPIO_PIN(GPIOB, 11) // PB.11 #define I2C_B2_GPIO_AF LL_GPIO_AF_4 // I2C2 #define I2C_B2_CLK_RATE 400000 - #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) + #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_DRO1) #define I2C_B2_PWR_GPIO GPIO_PIN(GPIOA, 15) // PA.15 #endif #endif @@ -1197,7 +1238,7 @@ #define BT_USART_GPIO GPIOG #define BT_TX_GPIO GPIO_PIN(GPIOG, 14) // PG.14 #define BT_RX_GPIO GPIO_PIN(GPIOG, 9) // PG.09 - #if defined(RADIO_TX16S) + #if defined(RADIO_TX16S) || defined(RADIO_DRO1) #define BT_PWR_GPIO GPIO_PIN(GPIOB, 0) // PB.00 #endif #endif diff --git a/radio/src/targets/horus/lcd_driver.cpp b/radio/src/targets/horus/lcd_driver.cpp index 9659140dff4..d8fef0753c1 100644 --- a/radio/src/targets/horus/lcd_driver.cpp +++ b/radio/src/targets/horus/lcd_driver.cpp @@ -289,7 +289,7 @@ void LCD_Init_LTDC() clkConfig.PLLSAI.PLLSAIN = 192; clkConfig.PLLSAI.PLLSAIR = 3; clkConfig.PLLSAIDivQ = 6; - #if defined(RADIO_TX16S) || defined(RADIO_F16) + #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_DRO1) clkConfig.PLLSAIDivR = RCC_PLLSAIDIVR_8; #else clkConfig.PLLSAIDivR = RCC_PLLSAIDIVR_4; diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index 47bab716a91..cccebf454da 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -229,6 +229,194 @@ const uint8_t TOUCH_GT911_Cfg[] = { 0xFF // 0x80FE Reserved }; +#elif defined (RADIO_DRO1) +const uint8_t TOUCH_GT911_Cfg[] = { + GT911_CFG_NUMBER, // 0x8047 Config version + 0xE0, // 0x8048 X output map : x 480 + 0x01, + 0x10, // 0x804A Y ouptut max : y 272 + 0x01, + GT911_MAX_TP, // 0x804C Touch number + 0xCC, // 0x804D Module switch 1 : 180° rotation + 0x20, // 0x804E Module switch 2 + 0x01, // 0x804F Shake_Count + 0x0A, // 0x8050 Filter + 0x28, // 0x8051 Larger touch + 0x0F, // 0x8052 Noise reduction + 0x5A, // 0x8053 Screen touch level + 0x3C, // 0x8054 Screen touch leave + 0x03, // 0x8055 Low power control + 0x05, // 0x8056 Refresh rate + 0x00, // 0x8057 X threshold + 0x00, // 0x8058 Y threshold + 0x00, // 0x8059 Reserved + 0x00, // 0x805A Reserved + 0x00, // 0x805B Space (top, bottom) + 0x00, // 0x805C Space (left, right) + 0x05, // 0x805D Mini filter + 0x00, // 0x805E Strech R0 + 0x00, // 0x805F Strech R1 + 0x00, // 0x8060 Strech R2 + 0x00, // 0x8061 Strech RM + 0x8A, // 0x8062 Drv groupA num + 0x2A, // 0x8063 Drv groupB num + 0x0C, // 0x8064 Sensor num + 0x32, // 0x8065 FreqA factor + 0x34, // 0x8066 FreqB factor + 0x0C, // 0x8067 Panel bit freq + 0x08, + 0x00, // 0x8069 Reserved + 0x00, + 0x00, // 0x806B Panel tx gain + 0x03, // 0x806C Panel rx gain + 0x02, // 0x806D Panel dump shift + 0x25, // 0x806E Drv frame control + 0x00, // 0x806F Charging level up + 0x00, // 0x8070 Module switch 3 + 0x00, // 0x8071 Gesture distance + 0x00, // 0x8072 Gesture long press time + 0x00, // 0x8073 X/Y slope adjust + 0x00, // 0x8074 Gesture control + 0x00, // 0x8075 Gesture switch 1 + 0x00, // 0x8076 Gesture switch 2 + 0x00, // 0x8077 Gesture refresh rate + 0x00, // 0x8078 Gesture touch level + 0x00, // 0x8079 New green wake up level + 0x28, // 0x807A Freq hopping start + 0x55, // 0x807B Freq hopping end + 0x94, // 0x807C Noise detect time + 0xC5, // 0x807D Hopping flag + 0x02, // 0x807E Hopping flag + 0x07, // 0x807F Noise threshold + 0x00, // 0x8080 Nois min threshold old + 0x00, // 0x8081 Reserved + 0x04, // 0x8082 Hopping sensor group + 0x8D, // 0x8083 Hopping Seg1 normalize + 0x2B, // 0x8084 Hopping Seg1 factor + 0x00, // 0x8085 Main clock adjust + 0x80, // 0x8086 Hopping Seg2 normalize + 0x32, // 0x8087 Hopping Seg2 factor + 0x00, // 0x8088 Reserved + 0x75, // 0x8089 Hopping Seg3 normalize + 0x3A, // 0x808A Hopping Seg3 factor + 0x00, // 0x808B Reserved + 0x6C, // 0x808C Hopping Seg4 normalize + 0x43, // 0x808D Hopping Seg4 factor + 0x00, // 0x808E Reserved + 0x64, // 0x808F Hopping Seg5 normalize + 0x4F, // 0x8090 Hopping Seg5 factor + 0x00, // 0x8091 Reserved + 0x64, // 0x8092 Hopping Seg6 normalize + 0x00, // 0x8093 Key1 + 0x00, // 0x8094 Key2 + 0x00, // 0x8095 Key3 + 0x00, // 0x8096 Key4 + 0x00, // 0x8097 Key area + 0x00, // 0x8098 Key touch level + 0x00, // 0x8099 Key leave level + 0x00, // 0x809A Key sens + 0x00, // 0x809B Key sens + 0x00, // 0x809C Key restrain + 0x00, // 0x809D Key restrain time + 0x00, // 0x809E Large gesture touch + 0x00, // 0x809F Reserved + 0x00, // 0x80A0 Reserved + 0x00, // 0x80A1 Hotknot noise map + 0x00, // 0x80A2 Link threshold + 0x00, // 0x80A3 Pxy threshold + 0x00, // 0x80A4 GHot dump shift + 0x00, // 0x80A5 GHot rx gain + 0x00, // 0x80A6 Freg gain + 0x00, // 0x80A7 Freg gain 1 + 0x00, // 0x80A8 Freg gain 2 + 0x00, // 0x80A9 Freg gain 3 + 0x00, // 0x80AA Reserved + 0x00, // 0x80AB Reserved + 0x00, // 0x80AC Reserved + 0x00, // 0x80AD Reserved + 0x00, // 0x80AE Reserved + 0x00, // 0x80AF Reserved + 0x00, // 0x80B0 Reserved + 0x00, // 0x80B1 Reserved + 0x00, // 0x80B2 Reserved + 0x00, // 0x80B3 Combine dis + 0x00, // 0x80B4 Split set + 0x00, // 0x80B5 Reserved + 0x00, // 0x80B6 Reserved + 0x18, // 0x80B7 Sensor CH0 + 0x16, // 0x80B8 Sensor CH1 + 0x14, // 0x80B9 Sensor CH2 + 0x12, // 0x80BA Sensor CH3 + 0x10, // 0x80BB Sensor CH4 + 0x0E, // 0x80BC Sensor CH5 + 0x0C, // 0x80BD Sensor CH6 + 0x0A, // 0x80BE Sensor CH7 + 0x08, // 0x80BF Sensor CH8 + 0x06, // 0x80C0 Sensor CH9 + 0x04, // 0x80C1 Sensor CH10 + 0x02, // 0x80C2 Sensor CH11 + 0xFF, // 0x80C3 Sensor CH12 + 0xFF, // 0x80C4 Sensor CH13 + 0x00, // 0x80C5 Reserved + 0x00, // 0x80C6 Reserved + 0x00, // 0x80C7 Reserved + 0x00, // 0x80C8 Reserved + 0x00, // 0x80C9 Reserved + 0x00, // 0x80CA Reserved + 0x00, // 0x80CB Reserved + 0x00, // 0x80CC Reserved + 0x00, // 0x80CD Reserved + 0x00, // 0x80CE Reserved + 0x00, // 0x80CF Reserved + 0x00, // 0x80D0 Reserved + 0x00, // 0x80D1 Reserved + 0x00, // 0x80D2 Reserved + 0x00, // 0x80D3 Reserved + 0x00, // 0x80D4 Reserved + 0x24, // 0x80D5 Driver CH0 + 0x22, // 0x80D6 Driver CH1 + 0x21, // 0x80D7 Driver CH2 + 0x20, // 0x80D8 Driver CH3 + 0x1F, // 0x80D9 Driver CH4 + 0x1E, // 0x80DA Driver CH5 + 0x1D, // 0x80DB Driver CH6 + 0x1C, // 0x80DC Driver CH7 + 0x18, // 0x80DD Driver CH8 + 0x16, // 0x80DE Driver CH9 + 0x13, // 0x80DF Driver CH10 + 0x12, // 0x80E0 Driver CH11 + 0x10, // 0x80E1 Driver CH12 + 0x0F, // 0x80E2 Driver CH13 + 0x0A, // 0x80E3 Driver CH14 + 0x08, // 0x80E4 Driver CH15 + 0x06, // 0x80E5 Driver CH16 + 0x04, // 0x80E6 Driver CH17 + 0x02, // 0x80E7 Driver CH18 + 0x00, // 0x80E8 Driver CH19 + 0xFF, // 0x80E9 Driver CH20 + 0xFF, // 0x80EA Driver CH21 + 0xFF, // 0x80EB Driver CH22 + 0xFF, // 0x80EC Driver CH23 + 0xFF, // 0x80ED Driver CH24 + 0xFF, // 0x80EE Driver CH25 + 0x00, // 0x80EF Reserved + 0x00, // 0x80F0 Reserved + 0x00, // 0x80F1 Reserved + 0x00, // 0x80F2 Reserved + 0x00, // 0x80F3 Reserved + 0x00, // 0x80F4 Reserved + 0x00, // 0x80F5 Reserved + 0x00, // 0x80F6 Reserved + 0x00, // 0x80F7 Reserved + 0x00, // 0x80F8 Reserved + 0x00, // 0x80F9 Reserved + 0x00, // 0x80FA Reserved + 0x00, // 0x80FB Reserved + 0x00, // 0x80FC Reserved + 0x00, // 0x80FD Reserved + 0x00 // 0x80FE Reserved +}; + #else //GT911 param table diff --git a/radio/src/targets/horus/usb_descriptor.h b/radio/src/targets/horus/usb_descriptor.h index 0c18dc257b7..b9085a8b419 100644 --- a/radio/src/targets/horus/usb_descriptor.h +++ b/radio/src/targets/horus/usb_descriptor.h @@ -53,4 +53,8 @@ #define USB_NAME "HelloRadioSky V16" #define USB_MANUFACTURER 'H', 'R', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'V', '1', '6', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */ +#elif defined(RADIO_DRO1) + #define USB_NAME "DumboRC DRO1" + #define USB_MANUFACTURER 'D', 'U', 'M', 'B', 'O', 'R', 'C', ' ' /* 8 bytes */ + #define USB_PRODUCT 'D', 'R', 'O', '1', ' ', ' ', ' ', ' ' /* 8 Bytes */ #endif diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 5df512ec47a..112fa9b9e42 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -35,7 +35,7 @@ enum FrSkyDataState { }; #define FRSKY_SPORT_BAUDRATE 57600 -#if defined(RADIO_TX16S) || defined(RADIO_F16) +#if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_DRO1) #define FRSKY_TELEM_MIRROR_BAUDRATE 115200 #else #define FRSKY_TELEM_MIRROR_BAUDRATE FRSKY_SPORT_BAUDRATE diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index dead4cd71d2..ffef0a40171 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -203,7 +203,12 @@ def main(): cmake_options["PCB"] = "X10" cmake_options["PCBREV"] = "V16" firmware_options = options_helloradiosky_v16 - maxsize = 2 * 1024 * 1024 + maxsize = 2 * 1024 * 1024 + elif board_name == "dro1": + cmake_options["PCB"] = "X10" + cmake_options["PCBREV"] = "DRO1" + firmware_options = options_dumborc_dro1 + maxsize = 2 * 1024 * 1024 else: return INVALID_BOARD diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index 2a1d09b8786..f8c6aa5067a 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -352,3 +352,16 @@ "faichoice": ("FAI", "CHOICE", None), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), } + +options_dumborc_dro1 = { + "noheli": ("HELI", "NO", "YES"), + "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"), + "nogvars": ("GVARS", "NO", "YES"), + "faimode": ("FAI", "YES", None), + "faichoice": ("FAI", "CHOICE", None), + "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), + "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), + "bluetooth": ("BLUETOOTH", "YES", "NO"), + "internalgps": ("INTERNAL_GPS", "YES", "NO"), + "externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"), +} diff --git a/radio/util/hw_defs/hal_keys.py b/radio/util/hw_defs/hal_keys.py index 750963d3c2a..54151af59bb 100644 --- a/radio/util/hw_defs/hal_keys.py +++ b/radio/util/hw_defs/hal_keys.py @@ -58,7 +58,7 @@ KEY_LABELS = [ { - "targets": {"boxer", "f16", "mt12", "gx12", "pocket", "tx12", "tx12mk2", "tx16s", "v16", "zorro"}, + "targets": {"boxer", "f16", "mt12", "gx12", "pocket", "tx12", "tx12mk2", "tx16s", "v16", "zorro", "dro1"}, "keys": { "EXIT": { "label": "RTN" } } diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index 3e98eab70e2..0a5b059e975 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -2,7 +2,7 @@ LEGACY_NAMES = [ { - "targets": {"x10", "x10express", "t16", "tx16s", "t18", "f16", "v16"}, + "targets": {"x10", "x10express", "t16", "tx16s", "t18", "f16", "v16", "dro1"}, "inputs": { "LH": { "yaml": "Rud", diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index 53bc2d55175..6f45c2b84c7 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -231,6 +231,17 @@ "pocket": { "P1": {"default": "POT"} }, + "dro1": { + "P1": {"default": "POT_CENTER"}, + "P2": {"default": "NONE"}, + "P3": {"default": "POT_CENTER"}, + "SL1": {"default": "SLIDER"}, + "SL2": {"default": "SLIDER"}, + "EXT1": {"default": "POT"}, + "EXT2": {"default": "POT"}, + "EXT3": {"default": "NONE"}, + "EXT4": {"default": "NONE"} + }, } diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index d7522d323b4..b9e2d787863 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -495,6 +495,18 @@ "SD": { "default": "2POS", "display": [ 1, 0 ] }, "SC": { "default": "3POS", "display": [ 1, 1 ] }, }, + "dro1": { + "SA": {"default": "3POS"}, + "SB": {"default": "3POS"}, + "SC": {"default": "3POS"}, + "SD": {"default": "3POS"}, + "SE": {"default": "3POS"}, + "SF": {"default": "3POS"}, + "SG": {"default": "3POS"}, + "SH": {"default": "3POS"}, + "SI": {"default": "2POS"}, + "SJ": {"default": "2POS"} + }, } diff --git a/tools/boards.py b/tools/boards.py index b8ae44ccbb9..6c9e4053bb0 100755 --- a/tools/boards.py +++ b/tools/boards.py @@ -101,4 +101,9 @@ "PCB": "X7", "PCBREV": "T14", }, + "DRO1": { + "PCB": "X10", + "PCBREV": "DRO1", + "INTERNAL_MODULE_MULTI": "NO" + }, } diff --git a/tools/build-common.sh b/tools/build-common.sh index aac802cf7b9..32ea78fdc1e 100644 --- a/tools/build-common.sh +++ b/tools/build-common.sh @@ -152,6 +152,9 @@ get_target_build_options() { nb4p) BUILD_OPTIONS+="-DPCB=PL18 -DPCBREV=NB4P" ;; + dro1) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=DRO1" + ;; *) echo "Unknown target: $target_name" return 1 diff --git a/tools/build-companion.sh b/tools/build-companion.sh index b06dea441cd..4823acc3719 100755 --- a/tools/build-companion.sh +++ b/tools/build-companion.sh @@ -75,7 +75,7 @@ declare -a simulator_plugins=(x9lite x9lites xlite xlites nv14 el18 pl18 pl18ev x10 x10express x12s - t15 t16 t18 t20 t20v2 tx16s f16 v16) + t15 t16 t18 t20 t20v2 tx16s f16 v16 dro1) for plugin in "${simulator_plugins[@]}" do diff --git a/tools/build-dumborc.py b/tools/build-dumborc.py new file mode 100644 index 00000000000..905662bef37 --- /dev/null +++ b/tools/build-dumborc.py @@ -0,0 +1,77 @@ +#!/usr/bin/python3 + +import argparse +import datetime +import os +from builtins import NotADirectoryError +import shutil +import tempfile + + +boards = { + "DRO1_1": { + "PCB": "X10", + "PCBREV": "DRO1", + "DEFAULT_MODE": "1", + }, + "DRO1_2": { + "PCB": "X10", + "PCBREV": "DRO1", + "DEFAULT_MODE": "2", + } +} + +translations = [ + "EN", +] + + +def timestamp(): + return datetime.datetime.now().strftime("%y%m%d") + + +def build(board, translation, srcdir): + cmake_options = " ".join(["-D%s=%s" % (key, value) for key, value in boards[board].items()]) + cwd = os.getcwd() + if not os.path.exists("output"): + os.mkdir("output") + path = tempfile.mkdtemp() + os.chdir(path) + command = "cmake %s -DTRANSLATIONS=%s -DDUMBORC_RELEASE=YES %s" % (cmake_options, translation, srcdir) + print(command) + os.system(command) + os.system("make firmware -j6") + os.chdir(cwd) + index = 0 + while 1: + suffix = "" if index == 0 else "_%d" % index + filename = "output/firmware_%s_%s_%s%s.bin" % (board.lower(), translation.lower(), timestamp(), suffix) + if not os.path.exists(filename): + shutil.copy("%s/arm-none-eabi/firmware.bin" % path, filename) + break + index += 1 + shutil.rmtree(path) + + +def dir_path(string): + if os.path.isdir(string): + return string + else: + raise NotADirectoryError(string) + + +def main(): + parser = argparse.ArgumentParser(description="Build DumboRC firmware") + parser.add_argument("-b", "--boards", action="append", help="Destination boards", required=True) + parser.add_argument("-t", "--translations", action="append", help="Translations", required=True) + parser.add_argument("srcdir", type=dir_path) + + args = parser.parse_args() + + for board in (boards.keys() if "ALL" in args.boards else args.boards): + for translation in (translations if "ALL" in args.translations else args.translations): + build(board, translation, args.srcdir) + + +if __name__ == "__main__": + main() diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index d2bee0ce781..15a7dc38a49 100755 --- a/tools/generate-hw-defs.sh +++ b/tools/generate-hw-defs.sh @@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" : "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" -: ${FLAVOR:="nv14;el18;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v14;v12"} +: ${FLAVOR:="nv14;el18;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v14;v12;dro1"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} # wipe build directory clean diff --git a/tools/generate-yaml.sh b/tools/generate-yaml.sh index dcdef10b9b1..b0f2d856043 100755 --- a/tools/generate-yaml.sh +++ b/tools/generate-yaml.sh @@ -11,7 +11,7 @@ if [[ -n ${GCC_ARM} ]] ; then export PATH=${GCC_ARM}:$PATH fi -: ${FLAVOR:="t15;tx16s;nv14;pl18;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12"} +: ${FLAVOR:="t15;tx16s;nv14;pl18;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12;dro1"} : ${SRCDIR:=$(dirname "$(pwd)/$0")/..} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DDISABLE_COMPANION=YES -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} diff --git a/tools/msys2_fetch_and_build_all.sh b/tools/msys2_fetch_and_build_all.sh index 56571573cbb..7135efea7b6 100644 --- a/tools/msys2_fetch_and_build_all.sh +++ b/tools/msys2_fetch_and_build_all.sh @@ -9,7 +9,7 @@ # ----------------------------------------------------------------------------- export BRANCH_NAME="main" # main|2.9|... -export RADIO_TYPE="tx16s" # tx16s|x10|x10express|x12s|x9d|x9dp|x9lite|x9lites|x7|x7access|t12|t12max|tx12|tx12mk2|mt12|gx12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t15|t16|t18|nv14|commando8 +export RADIO_TYPE="tx16s" # tx16s|x10|x10express|x12s|x9d|x9dp|x9lite|x9lites|x7|x7access|t12|t12max|tx12|tx12mk2|mt12|gx12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t15|t16|t18|nv14|commando8|dro1 export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES" @@ -123,6 +123,9 @@ case $RADIO_TYPE in commando8) BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=COMMANDO8" ;; + dro1) + BUILD_OPTIONS+=" -DPCB=X10 -DPCBREV=DRO1" + ;; *) echo "Unknown target: $RADIO_TYPE" exit 1 From e450c5e34307811311d894ff1560f64d9de4d5ed Mon Sep 17 00:00:00 2001 From: FreedomLJS <1776063194@qq.com> Date: Mon, 14 Apr 2025 16:41:20 +0800 Subject: [PATCH 2/2] fix: Support for 'Run tests' when radio does not have hardware internal module --- radio/src/tests/module_ports.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/radio/src/tests/module_ports.cpp b/radio/src/tests/module_ports.cpp index e24fcc4048b..6da910b8052 100644 --- a/radio/src/tests/module_ports.cpp +++ b/radio/src/tests/module_ports.cpp @@ -80,6 +80,8 @@ TEST(ports, isPortUsed) } #endif +/* FIX : Valid only if HARDWARE_INTERNAL_MODULE is defined */ +#if defined(HARDWARE_INTERNAL_MODULE) #if defined(INTERNAL_MODULE_PXX1) && defined(HARDWARE_EXTERNAL_MODULE) #include "pulses/pxx1.h" @@ -277,3 +279,4 @@ TEST(ports, isTelemAllowedOnBind) EXPECT_TRUE(isTelemAllowedOnBind(EXTERNAL_MODULE)); } #endif +#endif /* defined(HARDWARE_INTERNAL_MODULE) */