diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 18a969f24..d101050c1 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -101,7 +101,7 @@ jobs: - t12;t12max - t15;t16;t18 - t8;zorro;pocket;mt12;commando8 - - tlite;tpro;tprov2;tpros;lr3pro + - tlite;tpro;tprov2;tpros;bumblebee;lr3pro - t20;t20v2;t14 - tx12;tx12mk2;boxer - tx16s diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b834d90e3..22a237b88 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -21,7 +21,7 @@ jobs: - t12;t12max - t15;t16;t18 - t8;zorro;pocket;mt12;commando8 - - tlite;tpro;tprov2;tpros;lr3pro + - tlite;tpro;tprov2;tpros;bumblebee;lr3pro - t20;t20v2;t14 - tx12;tx12mk2;boxer - tx16s diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 6fd2f8d11..f592d0357 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -308,6 +308,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPROV2) set(FLAVOUR tprov2) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPROS) set(FLAVOUR tpros) +elseif(PCB STREQUAL X7 AND PCBREV STREQUAL BUMBLEBEE) + set(FLAVOUR bumblebee) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20) set(FLAVOUR t20) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20V2) diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index aa873dd53..4f406391c 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -220,6 +220,14 @@ images/simulator/JumperTPROS/exit.png images/simulator/JumperTPROS/menu.png images/simulator/JumperTPROS/page.png + images/simulator/JumperBumblebee/top.png + images/simulator/JumperBumblebee/bottom.png + images/simulator/JumperBumblebee/enter.png + images/simulator/JumperBumblebee/exit.png + images/simulator/JumperBumblebee/left.png + images/simulator/JumperBumblebee/menu.png + images/simulator/JumperBumblebee/page.png + images/simulator/JumperBumblebee/right.png images/simulator/TX12/left.png images/simulator/TX12/left-pageup.png images/simulator/TX12/left-pagedn.png diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index 3a46dd32c..40370f90c 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -192,6 +192,7 @@ int Boards::getEEpromSize(Board::Type board) case BOARD_JUMPER_TLITE_F4: case BOARD_JUMPER_TPRO: case BOARD_JUMPER_TPROV2: + case BOARD_JUMPER_BUMBLEBEE: case BOARD_JUMPER_TPROS: case BOARD_RADIOMASTER_TX12: case BOARD_RADIOMASTER_TX12_MK2: @@ -251,6 +252,7 @@ int Boards::getFlashSize(Type board) case BOARD_JUMPER_TPRO: case BOARD_JUMPER_TPROV2: case BOARD_JUMPER_TPROS: + case BOARD_JUMPER_BUMBLEBEE: case BOARD_RADIOMASTER_TX12: case BOARD_RADIOMASTER_TX12_MK2: case BOARD_RADIOMASTER_ZORRO: @@ -299,7 +301,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability) return 8; else if (IS_JUMPER_TPROV2(board)) return 6; - else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board)) + else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board) || IS_JUMPER_BUMBLEBEE(board)) return 4; else if(IS_RADIOMASTER_ZORRO(board)) return 8; @@ -587,6 +589,8 @@ QString Boards::getBoardName(Board::Type board) return "Jumper T-Pro S"; case BOARD_JUMPER_T12MAX: return "Jumper T12 MAX"; + case BOARD_JUMPER_BUMBLEBEE: + return "Jumper Bumblebee"; case BOARD_JUMPER_T14: return "Jumper T14"; case BOARD_JUMPER_T15: @@ -747,6 +751,7 @@ int Boards::getDefaultInternalModules(Board::Type board) case BOARD_JUMPER_T20: case BOARD_JUMPER_T20V2: case BOARD_JUMPER_TPROS: + case BOARD_JUMPER_BUMBLEBEE: case BOARD_FATFISH_F16: case BOARD_HELLORADIOSKY_V16: return (int)MODULE_TYPE_CROSSFIRE; diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 0718867bf..b2e8f1635 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -86,6 +86,7 @@ namespace Board { BOARD_JUMPER_TPROS, BOARD_RADIOMASTER_POCKET, BOARD_JUMPER_T20V2, + BOARD_JUMPER_BUMBLEBEE, BOARD_FATFISH_F16, BOARD_HELLORADIOSKY_V16, BOARD_RADIOMASTER_MT12, @@ -514,6 +515,11 @@ inline bool IS_JUMPER_TPROV2(Board::Type board) return board == Board::BOARD_JUMPER_TPROV2; } +inline bool IS_JUMPER_BUMBLEBEE(Board::Type board) +{ + return board == Board::BOARD_JUMPER_BUMBLEBEE; +} + inline bool IS_JUMPER_TPROS(Board::Type board) { return board == Board::BOARD_JUMPER_TPROS; @@ -616,6 +622,7 @@ inline bool IS_FAMILY_T12(Board::Type board) board == Board::BOARD_JUMPER_TPRO || board == Board::BOARD_JUMPER_TPROV2 || board == Board::BOARD_JUMPER_TPROS || + board == Board::BOARD_JUMPER_BUMBLEBEE || board == Board::BOARD_RADIOMASTER_TX12 || board == Board::BOARD_RADIOMASTER_TX12_MK2 || board == Board::BOARD_RADIOMASTER_ZORRO || diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 2afea1a4c..6c3193012 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -46,11 +46,11 @@ inline int MAX_SWITCHES(Board::Type board, int version) if (IS_TARANIS_X9D(board)) return 9; - if (IS_JUMPER_TPROV2(board)) - return 12; - if (IS_JUMPER_TPROV1(board)) - return 10; + return 10; + + if (IS_JUMPER_TPROV2(board) || IS_JUMPER_BUMBLEBEE(board)) + return 14; if (IS_FAMILY_T12(board)) return 8; diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index c36d432be..2e62ea717 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -71,6 +71,8 @@ const char * OpenTxEepromInterface::getName() return "EdgeTX for Jumper T-Pro V2"; case BOARD_JUMPER_TPROS: return "EdgeTX for Jumper T-Pro S"; + case BOARD_JUMPER_BUMBLEBEE: + return "EdgeTX for Jumper Bumblebee"; case BOARD_JUMPER_T12MAX: return "EdgeTX for Jumper T12 MAX"; case BOARD_JUMPER_T14: @@ -1424,6 +1426,16 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); + /* Jumper Bumblebee board */ + firmware = new OpenTxFirmware(FIRMWAREID("bumblebee"), QCoreApplication::translate("Firmware", "Jumper Bumblebee"), BOARD_JUMPER_BUMBLEBEE); + addOpenTxCommonOptions(firmware); + firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); + firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); + firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); + addOpenTxFontOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + /* Jumper T12 board */ firmware = new OpenTxFirmware(FIRMWAREID("t12"), QCoreApplication::translate("Firmware", "Jumper T12 / T12 Pro"), BOARD_JUMPER_T12); addOpenTxCommonOptions(firmware); diff --git a/companion/src/images/simulator/JumperBumblebee/bottom.png b/companion/src/images/simulator/JumperBumblebee/bottom.png new file mode 100644 index 000000000..aa5a464fc Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/bottom.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/enter.png b/companion/src/images/simulator/JumperBumblebee/enter.png new file mode 100644 index 000000000..2c7ef315d Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/enter.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/exit.png b/companion/src/images/simulator/JumperBumblebee/exit.png new file mode 100644 index 000000000..dfa26cad7 Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/exit.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/left.png b/companion/src/images/simulator/JumperBumblebee/left.png new file mode 100644 index 000000000..7175728bb Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/left.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/menu.png b/companion/src/images/simulator/JumperBumblebee/menu.png new file mode 100644 index 000000000..a6192e94a Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/menu.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/page.png b/companion/src/images/simulator/JumperBumblebee/page.png new file mode 100644 index 000000000..e9028436b Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/page.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/right.png b/companion/src/images/simulator/JumperBumblebee/right.png new file mode 100644 index 000000000..725bb666f Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/right.png differ diff --git a/companion/src/images/simulator/JumperBumblebee/top.png b/companion/src/images/simulator/JumperBumblebee/top.png new file mode 100644 index 000000000..ed0c72018 Binary files /dev/null and b/companion/src/images/simulator/JumperBumblebee/top.png differ diff --git a/companion/src/simulation/CMakeLists.txt b/companion/src/simulation/CMakeLists.txt index 661f4228e..fe809bc3f 100644 --- a/companion/src/simulation/CMakeLists.txt +++ b/companion/src/simulation/CMakeLists.txt @@ -48,6 +48,7 @@ set(${PROJECT_NAME}_SRCS simulateduiwidgetJumperTLITE.cpp simulateduiwidgetJumperTPRO.cpp simulateduiwidgetJumperTPROS.cpp + simulateduiwidgetJumperBumblebee.cpp simulateduiwidgetLR3PRO.cpp simulateduiwidgetMT12.cpp simulateduiwidgetNV14.cpp diff --git a/companion/src/simulation/simulateduiwidget.h b/companion/src/simulation/simulateduiwidget.h index 29df48e06..cbb8b557f 100644 --- a/companion/src/simulation/simulateduiwidget.h +++ b/companion/src/simulation/simulateduiwidget.h @@ -173,6 +173,7 @@ namespace Ui { class SimulatedUIWidgetJumperTLITE; class SimulatedUIWidgetJumperTPRO; class SimulatedUIWidgetJumperTPROS; + class SimulatedUIWidgetJumperBumblebee; class SimulatedUIWidgetJumperT12max; class SimulatedUIWidgetJumperT14; class SimulatedUIWidgetJumperT15; @@ -390,6 +391,18 @@ private: Ui::SimulatedUIWidgetJumperTPROS * ui; }; +class SimulatedUIWidgetJumperBumblebee: public SimulatedUIWidget +{ + Q_OBJECT + +public: + explicit SimulatedUIWidgetJumperBumblebee(SimulatorInterface * simulator, QWidget * parent = NULL); + virtual ~SimulatedUIWidgetJumperBumblebee(); + +private: + Ui::SimulatedUIWidgetJumperBumblebee * ui; +}; + class SimulatedUIWidgetJumperT15: public SimulatedUIWidget { Q_OBJECT diff --git a/companion/src/simulation/simulateduiwidgetJumperBumblebee.cpp b/companion/src/simulation/simulateduiwidgetJumperBumblebee.cpp new file mode 100644 index 000000000..a24e0d698 --- /dev/null +++ b/companion/src/simulation/simulateduiwidgetJumperBumblebee.cpp @@ -0,0 +1,57 @@ +#include "simulateduiwidget.h" +#include "ui_simulateduiwidgetJumperBumblebee.h" +#include "eeprominterface.h" + +// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h + +SimulatedUIWidgetJumperBumblebee::SimulatedUIWidgetJumperBumblebee(SimulatorInterface *simulator, QWidget * parent): + SimulatedUIWidget(simulator, parent), + ui(new Ui::SimulatedUIWidgetJumperBumblebee) +{ + RadioUiAction * act; + + ui->setupUi(this); + + act = new RadioUiAction(KEY_MENU, QList() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_MENU_ICN); + addRadioWidget(ui->bottombuttons->addArea(QRect(55, 15, 50, 50), "JumperBumblebee/menu.png", act)); + + act = new RadioUiAction(KEY_PAGEDN, QList() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_PAGE); + addRadioWidget(ui->bottombuttons->addArea(QRect(10, 25, 50, 50), "JumperBumblebee/page.png", act)); + + act = new RadioUiAction(KEY_EXIT, QList() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT); + addRadioWidget(ui->bottombuttons->addArea(QRect(25, 80, 50, 50), "JumperBumblebee/exit.png", act)); + + m_mouseMidClickAction = new RadioUiAction(KEY_ENTER, QList() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN); + addRadioWidget(ui->bottombuttons->addArea(QRect(145, 20, 100, 100), "JumperBumblebee/enter.png", m_mouseMidClickAction)); + + //addRadioWidget(ui->leftbuttons->addArea(QRect(10, 65, 70, 50), "JumperBumblebee/left_scrnshot.png", m_screenshotAction)); + + m_backlightColors << QColor(215, 243, 255); // X7 Blue + m_backlightColors << QColor(166,247,159); + m_backlightColors << QColor(247,159,166); + m_backlightColors << QColor(255,195,151); + m_backlightColors << QColor(247,242,159); + + if (getCurrentBoard() == Board::BOARD_JUMPER_BUMBLEBEE) { + ui->lcd->setBgDefaultColor(QColor(0, 0, 0)); + ui->lcd->setFgDefaultColor(QColor(255, 255, 255)); + } + + setLcd(ui->lcd); + + QString css = "#radioUiWidget {" + "background-color: rgb(167, 167, 167);" + "}"; + + QTimer * tim = new QTimer(this); + tim->setSingleShot(true); + connect(tim, &QTimer::timeout, [this, css]() { + emit customStyleRequest(css); + }); + tim->start(100); +} + +SimulatedUIWidgetJumperBumblebee::~SimulatedUIWidgetJumperBumblebee() +{ + delete ui; +} diff --git a/companion/src/simulation/simulateduiwidgetJumperBumblebee.ui b/companion/src/simulation/simulateduiwidgetJumperBumblebee.ui new file mode 100644 index 000000000..1c35996cd --- /dev/null +++ b/companion/src/simulation/simulateduiwidgetJumperBumblebee.ui @@ -0,0 +1,196 @@ + + + SimulatedUIWidgetJumperBumblebee + + + + 0 + 0 + 726 + 368 + + + + + 0 + 0 + + + + + 726 + 368 + + + + + 726 + 368 + + + + Jumper Bumblebee Simulator + + + background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 255), stop:0.757062 rgba(241, 238, 238, 255), stop:1 rgba(247, 245, 245, 255)); + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 234 + 368 + + + + + 234 + 368 + + + + background:url(:/images/simulator/JumperBumblebee/left.png); + + + + + + + + 0 + 0 + + + + + 256 + 128 + + + + + 256 + 128 + + + + background-color: rgb(215, 243, 255); + + + + + + + + 0 + 0 + + + + + 236 + 368 + + + + + 236 + 368 + + + + background:url(:/images/simulator/JumperBumblebee/right.png) + + + + + + + + 0 + 0 + + + + + 256 + 97 + + + + + 256 + 97 + + + + background:url(:/images/simulator/JumperBumblebee/top.png) + + + + + + + + 0 + 0 + + + + + 256 + 143 + + + + + 256 + 143 + + + + background:url(:/images/simulator/JumperBumblebee/bottom.png) + + + + + + + + LcdWidget + QWidget +
lcdwidget.h
+ 1 +
+ + ButtonsWidget + QWidget +
buttonswidget.h
+ 1 +
+
+ + +
diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index bcae14c8e..dd605a7dc 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -109,6 +109,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato case Board::BOARD_JUMPER_TPROS: radioUiWidget = new SimulatedUIWidgetJumperTPROS(simulator, this); break; + case Board::BOARD_JUMPER_BUMBLEBEE: + radioUiWidget = new SimulatedUIWidgetJumperBumblebee(simulator, this); + break; case Board::BOARD_JUMPER_T12MAX: radioUiWidget = new SimulatedUIWidgetJumperT12max(simulator, this); break; diff --git a/fw.json b/fw.json index fa60b1bcd..f836ad033 100644 --- a/fw.json +++ b/fw.json @@ -24,6 +24,7 @@ ["HelloRadioSky V14", "v14-"], ["HelloRadioSky V16", "v16-"], ["iFlight Commando 8", "commando8-"], + ["Jumper Bumblebee", "bumblebee-"], ["Jumper T12", "t12-"], ["Jumper T12 MAX", "t12max-"], ["Jumper T14", "t14-"], diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index f575a1097..f20d1f031 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -90,7 +90,7 @@ static inline void check_struct() CHKSIZE(RadioData, 870); #endif -#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) +#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_BUMBLEBEE) CHKSIZE(ModelData, 6354); #elif defined(RADIO_T14) || defined(RADIO_T12MAX) CHKSIZE(ModelData, 6329); diff --git a/radio/src/hal/rotary_encoder.h b/radio/src/hal/rotary_encoder.h index 1b8f5bec8..93f4679c1 100644 --- a/radio/src/hal/rotary_encoder.h +++ b/radio/src/hal/rotary_encoder.h @@ -27,7 +27,7 @@ #define ROTENC_MIDSPEED 5 #define ROTENC_HIGHSPEED 50 -#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_T15) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_T15) || defined(RADIO_BUMBLEBEE) #define ROTARY_ENCODER_GRANULARITY 4 #else #define ROTARY_ENCODER_GRANULARITY 2 diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 201b57d61..76e6392f9 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -436,7 +436,7 @@ void OpenTxSim::updateKeysAndSwitches(bool start) SWITCH_KEY(C, 2, 3); SWITCH_KEY(D, 3, 3); - #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) + #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_BUMBLEBEE) SWITCH_KEY(1, 4, 2); SWITCH_KEY(2, 5, 2); SWITCH_KEY(3, 6, 2); diff --git a/radio/src/storage/yaml/yaml_datastructs.cpp b/radio/src/storage/yaml/yaml_datastructs.cpp index 60670b04b..5c6448896 100644 --- a/radio/src/storage/yaml/yaml_datastructs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs.cpp @@ -41,7 +41,7 @@ #elif defined(PCBPL18) #include "yaml_datastructs_pl18.cpp" #elif defined(PCBX7) - #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) + #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_BUMBLEBEE) #include "yaml_datastructs_tpro.cpp" #elif defined(RADIO_FAMILY_T20) #include "yaml_datastructs_t20.cpp" diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 50804f468..6e11b3339 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -148,6 +148,19 @@ elseif(PCB STREQUAL X7) add_definitions(-DRADIO_TPROS) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + elseif(PCBREV STREQUAL BUMBLEBEE) + set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") + set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) + set(FLAVOUR bumblebee) + set(NAVIGATION_TYPE x7) + set(CPU_TYPE_FULL STM32F407xG) + set(ROTARY_ENCODER YES) + add_definitions(-DFUNCTION_SWITCHES) + add_definitions(-DRADIO_BUMBLEBEE) + add_definitions(-DMANUFACTURER_JUMPER) + set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + set(AUX_SERIAL ON) elseif (PCBREV STREQUAL T14) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 3ffd3265d..fded243dc 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -160,7 +160,7 @@ #define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_14 // PE.14 #define KEYS_GPIO_REG_BIND GPIOD #define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_9 // PD.09 -#elif defined(RADIO_FAMILY_T20) +#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define KEYS_GPIO_REG_PAGEDN GPIOD #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PD.11 #define KEYS_GPIO_REG_MENU GPIOD @@ -268,7 +268,7 @@ #define USE_EXTI15_10_IRQ #define EXTI15_10_IRQ_Priority 5 #endif -#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) +#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.09 @@ -459,6 +459,23 @@ #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 // PD.15 #define TRIMS_GPIO_REG_RHR GPIOE #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_5 // PE.05 +#elif defined(RADIO_BUMBLEBEE) + #define TRIMS_GPIO_REG_LHR GPIOG + #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02 + #define TRIMS_GPIO_REG_LHL GPIOD + #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_13 // PD.13 + #define TRIMS_GPIO_REG_LVD GPIOG + #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_3 // PG.03 + #define TRIMS_GPIO_REG_LVU GPIOD + #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 // PD.14 + #define TRIMS_GPIO_REG_RVD GPIOF + #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_2 // PF.02 + #define TRIMS_GPIO_REG_RHL GPIOE + #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_5 // PE.05 + #define TRIMS_GPIO_REG_RVU GPIOE + #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_6 // PE.06 + #define TRIMS_GPIO_REG_RHR GPIOF + #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PF.01 #elif defined(RADIO_T14) || defined(RADIO_T12MAX) #define TRIMS_GPIO_REG_LHL GPIOE #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03 @@ -630,6 +647,13 @@ #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_0 // PE.00 #define SWITCHES_GPIO_REG_A_L GPIOD #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_11 // PD.11 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_A + #define HARDWARE_SWITCH_A + #define SWITCHES_GPIO_REG_A_L GPIOD + #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_2 // PD.02 + #define SWITCHES_GPIO_REG_A_H GPIOD + #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_1 // PD.01 #elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_A #define HARDWARE_SWITCH_A @@ -696,6 +720,13 @@ #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_5 // PA.05 #define SWITCHES_GPIO_REG_B_H GPIOE #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_15 // PE.15 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_B + #define HARDWARE_SWITCH_B + #define SWITCHES_GPIO_REG_B_H GPIOE + #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_0 // PE.00 + #define SWITCHES_GPIO_REG_B_L GPIOE + #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_1 // PE.01 #elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_B #define HARDWARE_SWITCH_B @@ -817,6 +848,11 @@ #define HARDWARE_SWITCH_C #define SWITCHES_GPIO_REG_C GPIOE #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_8 // PE.08 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_C + #define HARDWARE_SWITCH_C + #define SWITCHES_GPIO_REG_C GPIOD + #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_0 // PD.00 #elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_C #define HARDWARE_SWITCH_C @@ -905,6 +941,11 @@ #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_5 // PA.05 #define SWITCHES_GPIO_REG_D_H GPIOE #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_15 // PE.15 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_D + #define HARDWARE_SWITCH_D + #define SWITCHES_GPIO_REG_D GPIOE + #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_2 // PE.02 #elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_D #define HARDWARE_SWITCH_D @@ -996,16 +1037,21 @@ #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOC #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_5 // PC.05 -#elif defined(RADIO_TPROV2) - #define STORAGE_SWITCH_E - #define HARDWARE_SWITCH_E - #define SWITCHES_GPIO_REG_E GPIOG - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_0 // PG.00 #elif defined(RADIO_TPRO) #define STORAGE_SWITCH_E #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOG #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10 +#elif defined(RADIO_TPROV2) + #define STORAGE_SWITCH_E + #define HARDWARE_SWITCH_E + #define SWITCHES_GPIO_REG_E GPIOG + #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_0 // PG.00 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_E + #define HARDWARE_SWITCH_E + #define SWITCHES_GPIO_REG_E GPIOD + #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03 #elif defined(RADIO_T14) || defined(RADIO_T12MAX) #define STORAGE_SWITCH_E #define HARDWARE_SWITCH_E @@ -1078,16 +1124,21 @@ #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOE #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TPROV2) - #define STORAGE_SWITCH_F - #define HARDWARE_SWITCH_F - #define SWITCHES_GPIO_REG_F GPIOG - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_1 // PG.01 #elif defined(RADIO_TPRO) #define STORAGE_SWITCH_F #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOG #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09 +#elif defined(RADIO_TPROV2) + #define STORAGE_SWITCH_F + #define HARDWARE_SWITCH_F + #define SWITCHES_GPIO_REG_F GPIOG + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_1 // PG.01 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_F + #define HARDWARE_SWITCH_F + #define SWITCHES_GPIO_REG_F GPIOB + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_5 // PB.05 #elif defined(RADIO_T14) || defined(RADIO_T12MAX) #define STORAGE_SWITCH_F #define HARDWARE_SWITCH_F @@ -1153,6 +1204,11 @@ #define HARDWARE_SWITCH_G #define SWITCHES_GPIO_REG_G GPIOG #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_7 // PG.07 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_G + #define HARDWARE_SWITCH_G + #define SWITCHES_GPIO_REG_G GPIOD + #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15// PD.15 - Left trim push #elif defined(RADIO_FAMILY_T20) //TRIM left low #define STORAGE_SWITCH_G @@ -1200,6 +1256,11 @@ #define HARDWARE_SWITCH_H #define SWITCHES_GPIO_REG_H GPIOG #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_6 // PG.06 +#elif defined(RADIO_BUMBLEBEE) + #define STORAGE_SWITCH_H + #define HARDWARE_SWITCH_H + #define SWITCHES_GPIO_REG_H GPIOF + #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_0 // PF.00 - Right trim push #elif defined(RADIO_FAMILY_T20) //TRIM right low #define STORAGE_SWITCH_H @@ -1296,6 +1357,43 @@ #define HARDWARE_SWITCH_O #define SWITCHES_GPIO_REG_O GPIOG #define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_2 // PG.02 +#elif defined(RADIO_BUMBLEBEE) + // SW1 + #define FUNCTION_SWITCH_1 SJ + #define STORAGE_SWITCH_J + #define HARDWARE_SWITCH_J + #define SWITCHES_GPIO_REG_J GPIOE + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_15 // PE.15 + // SW2 + #define FUNCTION_SWITCH_2 SK + #define STORAGE_SWITCH_K + #define HARDWARE_SWITCH_K + #define SWITCHES_GPIO_REG_K GPIOE + #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_14 // PE.14 + // SW3 + #define FUNCTION_SWITCH_3 SL + #define STORAGE_SWITCH_L + #define HARDWARE_SWITCH_L + #define SWITCHES_GPIO_REG_L GPIOE + #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_13 // PE.13 + // SW4 + #define FUNCTION_SWITCH_4 SM + #define STORAGE_SWITCH_M + #define HARDWARE_SWITCH_M + #define SWITCHES_GPIO_REG_M GPIOE + #define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_10 // PE.10 + // SW5 + #define FUNCTION_SWITCH_5 SO + #define STORAGE_SWITCH_O + #define HARDWARE_SWITCH_O + #define SWITCHES_GPIO_REG_O GPIOE + #define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_8 // PE.08 + // SW6 + #define FUNCTION_SWITCH_6 SP + #define STORAGE_SWITCH_P + #define HARDWARE_SWITCH_P + #define SWITCHES_GPIO_REG_P GPIOE + #define SWITCHES_GPIO_PIN_P LL_GPIO_PIN_12 // PE.12 #elif defined(RADIO_TPRO) // SW3 #define FUNCTION_SWITCH_3 SI @@ -1454,7 +1552,7 @@ #endif // ADC -#if !defined(RADIO_FAMILY_T20) +#if !defined(RADIO_FAMILY_T20) && !defined(RADIO_BUMBLEBEE) #define ADC_MAIN ADC1 #define ADC_DMA DMA2 #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 @@ -1716,6 +1814,33 @@ #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 +#elif defined(RADIO_BUMBLEBEE) + #define ADC_MAIN ADC3 + #define ADC_DMA DMA2 + #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 + #define ADC_DMA_STREAM LL_DMA_STREAM_0 + #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn + #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler + #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 + #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 + #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 + #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 + #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC123_IN0 + #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC123_IN1 + #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC123_IN2 + #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC123_IN3 + #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_15 // ADC3_IN15 + #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC3_IN9 + #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_IN14 + #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_5 // PF.05 + #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_3 // PF.03 + #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_4 // PF.04 + #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) + #define ADC_GPIOF_PINS (ADC_GPIO_PIN_POT1, ADC_GPIO_PIN_POT2, ADC_GPIO_PIN_BATT) + #define ADC_EXT ADC1 + #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT } + #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES + #define ADC_VREF_PREC2 300 #elif defined(RADIO_FAMILY_T20) #define ADC_MAIN ADC3 #define ADC_DMA DMA2 @@ -1902,6 +2027,8 @@ #define ADC_DIRECTION {1, -1, 1, -1, 1, 1, 1} #elif defined(RADIO_T12MAX) #define ADC_DIRECTION {-1, 1, -1, 1, 1, 1, 1} +#elif defined(RADIO_BUMBLEBEE) + #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1} #elif defined(RADIO_FAMILY_T20) #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1} #elif defined(RADIO_MT12) @@ -1929,7 +2056,7 @@ #elif defined(RADIO_COMMANDO8) #define PWR_SWITCH_GPIO GPIO_PIN(GPIOD, 11) // PD.11 #define PWR_ON_GPIO GPIO_PIN(GPIOD, 10) // PD.10 -#elif defined(RADIO_FAMILY_T20) +#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define PWR_SWITCH_GPIO GPIO_PIN(GPIOG, 5) // PG.05 #define PWR_ON_GPIO GPIO_PIN(GPIOG, 6) // PG.06 #elif defined(RADIO_V14) || defined(RADIO_V12) @@ -1999,7 +2126,7 @@ #define LED_GREEN_GPIO GPIO_PIN(GPIOB, 1) // PB.01 #define LED_RED_GPIO GPIO_PIN(GPIOC, 5) // PC.05 #define LED_BLUE_GPIO GPIO_PIN(GPIOC, 4) // PC.04 -#elif defined(RADIO_FAMILY_T20) +#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define STATUS_LEDS #define GPIO_LED_GPIO_ON gpio_set #define GPIO_LED_GPIO_OFF gpio_clear @@ -2078,7 +2205,17 @@ #endif #if defined(FUNCTION_SWITCHES) -#if defined(RADIO_FAMILY_T20) +#if defined(RADIO_BUMBLEBEE) + #define GPIO_FSLED_GPIO_ON GPIO_SetBits + #define GPIO_FSLED_GPIO_OFF GPIO_ResetBits + #define FSLED_GPIO GPIOF + #define FSLED_GPIO_PIN_1 GPIO_PIN(FSLED_GPIO, 13) + #define FSLED_GPIO_PIN_2 GPIO_PIN(FSLED_GPIO, 6) + #define FSLED_GPIO_PIN_3 GPIO_PIN(FSLED_GPIO, 7) + #define FSLED_GPIO_PIN_4 GPIO_PIN(FSLED_GPIO, 10) + #define FSLED_GPIO_PIN_5 GPIO_PIN(FSLED_GPIO, 9) + #define FSLED_GPIO_PIN_6 GPIO_PIN(FSLED_GPIO, 8) +#elif defined(RADIO_FAMILY_T20) #define GPIO_FSLED_GPIO_ON GPIO_SetBits #define GPIO_FSLED_GPIO_OFF GPIO_ResetBits #define FSLED_GPIO GPIOF @@ -2147,9 +2284,8 @@ #define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn #define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler #define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_4 -#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) - -#if defined(RADIO_T20V2) +#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE) +#if defined(RADIO_T20V2) || defined(RADIO_BUMBLEBEE) #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04 #define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06 #else @@ -2211,7 +2347,7 @@ #elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOF, 11) // PF.11 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET - #elif defined(RADIO_FAMILY_T20) + #elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET #elif defined(RADIO_LR3PRO) @@ -2295,7 +2431,7 @@ gpio_clear(EXTMODULE_PWR_GPIO); \ gpio_clear(EXTMODULE_RF_SWITCH_GPIO); \ } while (0) - #elif defined(RADIO_FAMILY_T20) + #elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOB, 1) // PB.01 #define EXTERNAL_MODULE_PWR_ON() gpio_set(EXTMODULE_PWR_GPIO) #define EXTERNAL_MODULE_PWR_OFF() gpio_clear(EXTMODULE_PWR_GPIO) @@ -2343,7 +2479,7 @@ #define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3 #define TRAINER_OUT_GPIO GPIO_PIN(GPIOC, 9) // PC.09 #define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH4 -#if defined(RADIO_FAMILY_T20) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOE, 3) // PE.03 #elif defined(RADIO_MT12) #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOD, 14) // PD.14 @@ -2572,7 +2708,7 @@ #define BACKLIGHT_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 // Channel 1, PWM #define BACKLIGHT_CCER TIM_CCER_CC1E #define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR1 -#elif defined(RADIO_T8) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) +#elif defined(RADIO_T8) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_BUMBLEBEE) // No backlight: OLED display #elif defined(RADIO_COMMANDO8) #define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) @@ -2598,10 +2734,10 @@ #endif // LCD driver -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12) +#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE) #define LCD_VERTICAL_INVERT #endif -#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) +#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_BUMBLEBEE) #define LCD_HORIZONTAL_INVERT #define OLED_SCREEN #endif @@ -2641,7 +2777,7 @@ #define LCD_CLK_GPIO GPIO_PIN(GPIOC, 10) // PC.10 #define LCD_A0_GPIO GPIO_PIN(GPIOC, 11) // PC.11 #define LCD_NCS_GPIO GPIO_PIN(GPIOA, 15) // PA.15 -#if defined(RADIO_FAMILY_T20) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) #define LCD_RST_GPIO GPIO_PIN(GPIOA, 14) // PA.14 #else #define LCD_RST_GPIO GPIO_PIN(GPIOD, 12) // PD.12 @@ -2726,7 +2862,7 @@ #endif // SD - SPI2 -#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_BUMBLEBEE) // Using chip, so no detect #else #if defined(PCBXLITE) || defined(PCBX9LITE) @@ -2786,7 +2922,7 @@ #endif // Haptic -#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) +#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE) #define HAPTIC_PWM #define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03 #define HAPTIC_GPIO_AF GPIO_AF1 diff --git a/radio/src/targets/taranis/usb_descriptor.h b/radio/src/targets/taranis/usb_descriptor.h index 8be765b22..1cf001348 100644 --- a/radio/src/targets/taranis/usb_descriptor.h +++ b/radio/src/targets/taranis/usb_descriptor.h @@ -69,6 +69,10 @@ #define USB_NAME "Jumper T-Pro S" #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'T', '-', 'P', 'r', 'o', ' ', 'S', ' ' /* 8 Bytes */ +#elif defined(RADIO_BUMBLEBEE) + #define USB_NAME "Jumper Bumblebee" + #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ + #define USB_PRODUCT 'B', 'u', 'm', 'b', 'l', 'e', 'b', 'e' /* 8 Bytes */ #elif defined(RADIO_T14) #define USB_NAME "Jumper T14" #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index 9932712e0..76f2c70b4 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -431,7 +431,7 @@ LEGACY_NAMES = [ "lr3pro", "nv14", "el18", "t8", "t12", - "tlite", "tlitef4", "tpro", "tprov2", "tpros", + "tlite", "tlitef4", "tpro", "tprov2", "tpros", "bumblebee", "tx12", "tx12mk2", "x7", "x7access", "xlite", "xlites", diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index c28c3a545..2d3159065 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -67,6 +67,10 @@ POT_CONFIG = { "P1": {"default": "POT_CENTER"}, "P2": {"default": "POT_CENTER"} }, + "bumblebee": { + "P1": {"default": "POT_CENTER"}, + "P2": {"default": "POT_CENTER"} + }, "t20": { "P1": {"default": "POT_CENTER"}, "P2": {"default": "POT_CENTER"}, diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index 0cc530e2c..8dd9a8f55 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -221,6 +221,18 @@ SWITCH_CONFIG = { "SD": {"default": "TOGGLE", "display": [1, 1]}, "SF": {"default": "2POS", "display": [1, 2]}, }, + "bumblebee": { + # left side + "SA": {"default": "3POS", "display": [0, 0]}, + "SC": {"default": "TOGGLE", "display": [0, 1]}, + "SE": {"default": "2POS", "display": [0, 2]}, + "SG": {"default": "TOGGLE", "display": [0, 3]}, + # right side + "SB": {"default": "3POS", "display": [1, 0]}, + "SD": {"default": "TOGGLE", "display": [1, 1]}, + "SF": {"default": "2POS", "display": [1, 2]}, + "SH": {"default": "TOGGLE", "display": [1, 3]}, + }, "t20": { # left side "SA": {"default": "2POS", "display": [0, 0]}, diff --git a/tools/build-common.sh b/tools/build-common.sh index 75d4af930..d1c8cd23d 100644 --- a/tools/build-common.sh +++ b/tools/build-common.sh @@ -53,6 +53,9 @@ get_target_build_options() { tpros) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPROS" ;; + bumblebee) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=BUMBLEBEE" + ;; t20) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" ;; diff --git a/tools/build-companion.sh b/tools/build-companion.sh index 70e4f8b27..7b4f939ef 100755 --- a/tools/build-companion.sh +++ b/tools/build-companion.sh @@ -70,7 +70,7 @@ declare -a simulator_plugins=(x9lite x9lites x7 x7access t8 t12 t12max tx12 tx12mk2 zorro commando8 boxer pocket mt12 - tlite tpro tprov2 tpros lr3pro t14 + tlite tpro tprov2 tpros bumblebee lr3pro t14 x9d x9dp x9dp2019 x9e xlite xlites nv14 el18 pl18 pl18ev diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index 86b0ff550..767fa833b 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;t20;t20v2;t14;lr3pro;mt12;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;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v14;v12"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} # wipe build directory clean