Skip to content

Commit ebf9a3f

Browse files
3djcphilmozpfeerick
authored
feat: add support for Jumper Bumblebee (#5599)
Co-authored-by: philmoz <phil.a.mitchell@gmail.com> Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
1 parent 6007cfd commit ebf9a3f

35 files changed

+543
-48
lines changed

.github/workflows/actions.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ jobs:
101101
- t12;t12max
102102
- t15;t16;t18
103103
- t8;zorro;pocket;mt12;commando8
104-
- tlite;tpro;tprov2;tpros;lr3pro
104+
- tlite;tpro;tprov2;tpros;bumblebee;lr3pro
105105
- t20;t20v2;t14
106106
- tx12;tx12mk2;boxer
107107
- tx16s

.github/workflows/nightly.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- t12;t12max
2222
- t15,t16;t18
2323
- t8;zorro;pocket;mt12;commando8
24-
- tlite;tpro;tprov2;tpros;lr3pro
24+
- tlite;tpro;tprov2;tpros;bumblebee;lr3pro
2525
- t20;t20v2;t14
2626
- tx12;tx12mk2;boxer
2727
- tx16s

companion/src/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPRO)
306306
set(FLAVOUR tpro)
307307
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPROV2)
308308
set(FLAVOUR tprov2)
309+
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL BUMBLEBEE)
310+
set(FLAVOUR bumblebee)
309311
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20)
310312
set(FLAVOUR t20)
311313
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20V2)

companion/src/companion.qrc

+8
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,14 @@
220220
<file>images/simulator/JumperTPROS/exit.png</file>
221221
<file>images/simulator/JumperTPROS/menu.png</file>
222222
<file>images/simulator/JumperTPROS/page.png</file>
223+
<file>images/simulator/JumperBumblebee/top.png</file>
224+
<file>images/simulator/JumperBumblebee/bottom.png</file>
225+
<file>images/simulator/JumperBumblebee/enter.png</file>
226+
<file>images/simulator/JumperBumblebee/exit.png</file>
227+
<file>images/simulator/JumperBumblebee/left.png</file>
228+
<file>images/simulator/JumperBumblebee/menu.png</file>
229+
<file>images/simulator/JumperBumblebee/page.png</file>
230+
<file>images/simulator/JumperBumblebee/right.png</file>
223231
<file>images/simulator/TX12/left.png</file>
224232
<file>images/simulator/TX12/left-pageup.png</file>
225233
<file>images/simulator/TX12/left-pagedn.png</file>

companion/src/firmwares/boards.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ int Boards::getEEpromSize(Board::Type board)
192192
case BOARD_JUMPER_TLITE_F4:
193193
case BOARD_JUMPER_TPRO:
194194
case BOARD_JUMPER_TPROV2:
195+
case BOARD_JUMPER_BUMBLEBEE:
195196
case BOARD_JUMPER_TPROS:
196197
case BOARD_RADIOMASTER_TX12:
197198
case BOARD_RADIOMASTER_TX12_MK2:
@@ -249,6 +250,7 @@ int Boards::getFlashSize(Type board)
249250
case BOARD_JUMPER_TPRO:
250251
case BOARD_JUMPER_TPROV2:
251252
case BOARD_JUMPER_TPROS:
253+
case BOARD_JUMPER_BUMBLEBEE:
252254
case BOARD_RADIOMASTER_TX12:
253255
case BOARD_RADIOMASTER_TX12_MK2:
254256
case BOARD_RADIOMASTER_ZORRO:
@@ -292,7 +294,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
292294
return 8;
293295
else if (IS_JUMPER_TPROV2(board))
294296
return 6;
295-
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
297+
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board) || IS_JUMPER_BUMBLEBEE(board))
296298
return 4;
297299
else if(IS_RADIOMASTER_ZORRO(board))
298300
return 8;
@@ -543,6 +545,8 @@ QString Boards::getBoardName(Board::Type board)
543545
return "Jumper T-Pro S";
544546
case BOARD_JUMPER_T12MAX:
545547
return "Jumper T12 MAX";
548+
case BOARD_JUMPER_BUMBLEBEE:
549+
return "Jumper Bumblebee";
546550
case BOARD_JUMPER_T14:
547551
return "Jumper T14";
548552
case BOARD_JUMPER_T15:
@@ -693,6 +697,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
693697
case BOARD_JUMPER_T20V2:
694698
case BOARD_JUMPER_TPROS:
695699
case BOARD_JUMPER_T15:
700+
case BOARD_JUMPER_BUMBLEBEE:
696701
case BOARD_FATFISH_F16:
697702
return (int)MODULE_TYPE_CROSSFIRE;
698703

companion/src/firmwares/boards.h

+7
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ namespace Board {
8585
BOARD_JUMPER_TPROS,
8686
BOARD_RADIOMASTER_POCKET,
8787
BOARD_JUMPER_T20V2,
88+
BOARD_JUMPER_BUMBLEBEE,
8889
BOARD_FATFISH_F16,
8990
BOARD_TYPE_COUNT,
9091
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
@@ -439,6 +440,11 @@ inline bool IS_JUMPER_TPROV2(Board::Type board)
439440
return board == Board::BOARD_JUMPER_TPROV2;
440441
}
441442

443+
inline bool IS_JUMPER_BUMBLEBEE(Board::Type board)
444+
{
445+
return board == Board::BOARD_JUMPER_BUMBLEBEE;
446+
}
447+
442448
inline bool IS_JUMPER_TPROS(Board::Type board)
443449
{
444450
return board == Board::BOARD_JUMPER_TPROS;
@@ -532,6 +538,7 @@ inline bool IS_FAMILY_T12(Board::Type board)
532538
board == Board::BOARD_JUMPER_TPRO ||
533539
board == Board::BOARD_JUMPER_TPROV2 ||
534540
board == Board::BOARD_JUMPER_TPROS ||
541+
board == Board::BOARD_JUMPER_BUMBLEBEE ||
535542
board == Board::BOARD_RADIOMASTER_TX12 ||
536543
board == Board::BOARD_RADIOMASTER_TX12_MK2 ||
537544
board == Board::BOARD_RADIOMASTER_ZORRO ||

companion/src/firmwares/opentx/opentxeeprom.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ inline int MAX_SWITCHES(Board::Type board, int version)
4343
if (IS_TARANIS_X9D(board))
4444
return 9;
4545

46-
if (IS_JUMPER_TPROV2(board))
47-
return 12;
48-
4946
if (IS_JUMPER_TPROV1(board))
50-
return 10;
47+
return 10;
48+
49+
if (IS_JUMPER_TPROV2(board) || IS_JUMPER_BUMBLEBEE(board))
50+
return 14;
5151

5252
if (IS_FAMILY_T12(board))
5353
return 8;

companion/src/firmwares/opentx/opentxinterface.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ const char * OpenTxEepromInterface::getName()
7070
return "EdgeTX for Jumper T-Pro V2";
7171
case BOARD_JUMPER_TPROS:
7272
return "EdgeTX for Jumper T-Pro S";
73+
case BOARD_JUMPER_BUMBLEBEE:
74+
return "EdgeTX for Jumper Bumblebee";
7375
case BOARD_JUMPER_T12MAX:
7476
return "EdgeTX for Jumper T12 MAX";
7577
case BOARD_JUMPER_T14:
@@ -1451,6 +1453,16 @@ void registerOpenTxFirmwares()
14511453
registerOpenTxFirmware(firmware);
14521454
addOpenTxRfOptions(firmware, FLEX);
14531455

1456+
/* Jumper Bumblebee board */
1457+
firmware = new OpenTxFirmware(FIRMWAREID("bumblebee"), QCoreApplication::translate("Firmware", "Jumper Bumblebee"), BOARD_JUMPER_BUMBLEBEE);
1458+
addOpenTxCommonOptions(firmware);
1459+
firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support"));
1460+
firmware->addOption("nogvars", Firmware::tr("Disable Global variables"));
1461+
firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen"));
1462+
addOpenTxFontOptions(firmware);
1463+
registerOpenTxFirmware(firmware);
1464+
addOpenTxRfOptions(firmware, FLEX);
1465+
14541466
/* Jumper T12 board */
14551467
firmware = new OpenTxFirmware(FIRMWAREID("t12"), QCoreApplication::translate("Firmware", "Jumper T12 / T12 Pro"), BOARD_JUMPER_T12);
14561468
addOpenTxCommonOptions(firmware);
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

companion/src/simulation/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ set(${PROJECT_NAME}_SRCS
4444
simulateduiwidgetJumperTLITE.cpp
4545
simulateduiwidgetJumperTPRO.cpp
4646
simulateduiwidgetJumperTPROS.cpp
47+
simulateduiwidgetJumperBumblebee.cpp
4748
simulateduiwidgetLR3PRO.cpp
4849
simulateduiwidgetNV14.cpp
4950
simulateduiwidgetPL18.cpp

companion/src/simulation/simulateduiwidget.h

+13
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ namespace Ui {
117117
class SimulatedUIWidgetJumperTLITE;
118118
class SimulatedUIWidgetJumperTPRO;
119119
class SimulatedUIWidgetJumperTPROS;
120+
class SimulatedUIWidgetJumperBumblebee;
120121
class SimulatedUIWidgetJumperT12max;
121122
class SimulatedUIWidgetJumperT14;
122123
class SimulatedUIWidgetJumperT15;
@@ -319,6 +320,18 @@ class SimulatedUIWidgetJumperTPROS: public SimulatedUIWidget
319320
Ui::SimulatedUIWidgetJumperTPROS * ui;
320321
};
321322

323+
class SimulatedUIWidgetJumperBumblebee: public SimulatedUIWidget
324+
{
325+
Q_OBJECT
326+
327+
public:
328+
explicit SimulatedUIWidgetJumperBumblebee(SimulatorInterface * simulator, QWidget * parent = NULL);
329+
virtual ~SimulatedUIWidgetJumperBumblebee();
330+
331+
private:
332+
Ui::SimulatedUIWidgetJumperBumblebee * ui;
333+
};
334+
322335
class SimulatedUIWidgetJumperT15: public SimulatedUIWidget
323336
{
324337
Q_OBJECT
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include "simulateduiwidget.h"
2+
#include "ui_simulateduiwidgetJumperBumblebee.h"
3+
#include "eeprominterface.h"
4+
5+
// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
6+
7+
SimulatedUIWidgetJumperBumblebee::SimulatedUIWidgetJumperBumblebee(SimulatorInterface *simulator, QWidget * parent):
8+
SimulatedUIWidget(simulator, parent),
9+
ui(new Ui::SimulatedUIWidgetJumperBumblebee)
10+
{
11+
RadioUiAction * act;
12+
13+
ui->setupUi(this);
14+
15+
act = new RadioUiAction(0, QList<int>() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_MENU_ICN);
16+
addRadioWidget(ui->bottombuttons->addArea(QRect(55, 15, 50, 50), "JumperBumblebee/menu.png", act));
17+
18+
act = new RadioUiAction(3, QList<int>() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_PAGE);
19+
addRadioWidget(ui->bottombuttons->addArea(QRect(10, 25, 50, 50), "JumperBumblebee/page.png", act));
20+
21+
act = new RadioUiAction(1, QList<int>() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT);
22+
addRadioWidget(ui->bottombuttons->addArea(QRect(25, 80, 50, 50), "JumperBumblebee/exit.png", act));
23+
24+
m_mouseMidClickAction = new RadioUiAction(2, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN);
25+
addRadioWidget(ui->bottombuttons->addArea(QRect(145, 20, 100, 100), "JumperBumblebee/enter.png", m_mouseMidClickAction));
26+
27+
//addRadioWidget(ui->leftbuttons->addArea(QRect(10, 65, 70, 50), "JumperBumblebee/left_scrnshot.png", m_screenshotAction));
28+
29+
m_backlightColors << QColor(215, 243, 255); // X7 Blue
30+
m_backlightColors << QColor(166,247,159);
31+
m_backlightColors << QColor(247,159,166);
32+
m_backlightColors << QColor(255,195,151);
33+
m_backlightColors << QColor(247,242,159);
34+
35+
if (getCurrentBoard() == Board::BOARD_JUMPER_BUMBLEBEE) {
36+
ui->lcd->setBgDefaultColor(QColor(0, 0, 0));
37+
ui->lcd->setFgDefaultColor(QColor(255, 255, 255));
38+
}
39+
40+
setLcd(ui->lcd);
41+
42+
QString css = "#radioUiWidget {"
43+
"background-color: rgb(167, 167, 167);"
44+
"}";
45+
46+
QTimer * tim = new QTimer(this);
47+
tim->setSingleShot(true);
48+
connect(tim, &QTimer::timeout, [this, css]() {
49+
emit customStyleRequest(css);
50+
});
51+
tim->start(100);
52+
}
53+
54+
SimulatedUIWidgetJumperBumblebee::~SimulatedUIWidgetJumperBumblebee()
55+
{
56+
delete ui;
57+
}

0 commit comments

Comments
 (0)