Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ body:
- RadioMaster TX16S / TX16S Mark II
- RadioMaster TX16S MK3
- RadioMaster Zorro
- Senduwing H17
- Other (Please specify below)
validations:
required: true
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/build_fw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ jobs:
- t22
- c14
- v12
- h17
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
Expand Down Expand Up @@ -98,6 +99,7 @@ jobs:
- t22
- c14
- v12
- h17
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/companion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
- id: color-4
target: [nb4p, st16, pa01, c14]
- id: color-5
target: [t15pro, tx16smk3, gx15]
target: [t15pro, tx16smk3, gx15, h17]

steps:
- name: Check out the repo
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ jobs:
- tx15;gx15
- t15pro
- v12
- h17
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ jobs:
> If you are using a STM32 F2 based radio, *stop right now*, this release is not for you! EdgeTX v2.11 is the last release series to support these radios. Check [this list](https://hackmd.io/@edgetx/B12oQyQKye) if you are unsure if this affects you. Because of this, EdgeTX v2.11 will continue to be supported alongside 2.12, 3.0, etc., with a focus on bug fixes.

> [!WARNING]
> Radios based on STM32H7 MCUs update differently to older radios. Do **not** use the "Flash via USB" option in EdgeTX Buddy with them (yet). To update radios such as the Flysky PA01 & ST16, Jumper T15 Pro, RM TX15, RM GX15 and RM TX16S MK3, please follow the instructions in the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx/updating-your-stm32h7-radio).
> Radios based on STM32H7 MCUs update differently to older radios. Do **not** use the "Flash via USB" option in EdgeTX Buddy with them (yet). To update radios such as the Flysky PA01 & ST16, Jumper T15 Pro, RM TX15, RM GX15, RM TX16S MK3 and Senduwing H17, please follow the instructions in the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx/updating-your-stm32h7-radio).

> [!NOTE]
> For MacOS users, Companion is now only compiled for MacOS 12 and above. Stay with v2.10.5 or earlier if you need support for an older version of MacOS.
Expand Down
6 changes: 6 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,12 @@
"displayName": "RadioMaster Zorro",
"inherits": "firmware",
"cacheVariables": { "PCB": "X7", "PCBREV": "ZORRO" }
},
{
"name": "h17",
"displayName": "Senduwing H17",
"inherits": "firmware",
"cacheVariables": { "PCB": "H17" }
}
],
"buildPresets": [
Expand Down
8 changes: 5 additions & 3 deletions companion/src/firmwares/boardjson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,11 @@ void BoardJson::afterLoadFixups(Board::Type board, InputsTable * inputs, Switche
{
// TODO json files do not contain gyro defs
// Radio cmake directive IMU is currently used
if (IS_TARANIS_XLITES(board) || IS_FAMILY_HORUS_OR_T16(board) ||
IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) ||
IS_RADIOMASTER_TX16SMK3(board) || IS_FLYSKY_PA01(board)) {
// H17 has no IMU
if ((IS_TARANIS_XLITES(board) || IS_FAMILY_HORUS_OR_T16(board) ||
IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) ||
IS_RADIOMASTER_TX16SMK3(board) || IS_FLYSKY_PA01(board)) &&
!IS_SENDUWING_H17(board)) {
if (getInputIndex(inputs, "TILT_X", Board::LVT_TAG) < 0) {
InputDefn defn;
defn.type = AIT_FLEX;
Expand Down
13 changes: 12 additions & 1 deletion companion/src/firmwares/boards.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x4F78746F;
case BOARD_HELLORADIOSKY_V16:
return 0x4E78746F;
case BOARD_SENDUWING_H17:
return 0x5078746F;
default:
return 0;
}
Expand Down Expand Up @@ -237,6 +239,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_FLYSKY_NB4P:
case BOARD_FLYSKY_ST16:
case BOARD_IFLIGHT_COMMANDO14:
case BOARD_SENDUWING_H17:
case BOARD_FATFISH_F16:
case BOARD_HELLORADIOSKY_V12:
case BOARD_HELLORADIOSKY_V16:
Expand Down Expand Up @@ -305,6 +308,7 @@ int Boards::getFlashSize(Type board)
case BOARD_FLYSKY_NB4P:
case BOARD_FLYSKY_ST16: // 8MB SDRAM
case BOARD_IFLIGHT_COMMANDO14: // 8MB SDRAM
case BOARD_SENDUWING_H17: // 8MB SDRAM
case BOARD_FATFISH_F16:
case BOARD_HELLORADIOSKY_V12: // 8MB SDRAM
case BOARD_HELLORADIOSKY_V16:
Expand Down Expand Up @@ -425,7 +429,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX15(board) ||
IS_JUMPER_T15PRO(board) || IS_FLYSKY_PA01(board) ||
IS_FLYSKY_ST16(board) || IS_RADIOMASTER_TX16SMK3(board) ||
IS_IFLIGHT_C14(board) || IS_RADIOMASTER_GX15(board));
IS_IFLIGHT_C14(board) || IS_RADIOMASTER_GX15(board) ||
IS_SENDUWING_H17(board));

default:
return getBoardJson(board)->getCapability(capability);
Expand Down Expand Up @@ -691,6 +696,8 @@ QString Boards::getBoardName(Board::Type board)
return "iFlight Commando 8";
case BOARD_IFLIGHT_COMMANDO14:
return "iFlight Commando 14";
case BOARD_SENDUWING_H17:
return "Senduwing H17";
case BOARD_FATFISH_F16:
return "Fatfish F16";
case BOARD_HELLORADIOSKY_V16:
Expand Down Expand Up @@ -815,6 +822,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_TX16SMK3:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_IFLIGHT_COMMANDO14:
case BOARD_SENDUWING_H17:
case BOARD_JUMPER_BUMBLEBEE:
case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14:
Expand Down Expand Up @@ -914,6 +922,9 @@ void Boards::getBattRange(Board::Type board, int& vmin, int& vmax, unsigned int&
case BOARD_FLYSKY_PA01:
BR(70, 86, 80)
break;
case BOARD_SENDUWING_H17:
BR(70, 86, 74)
break;
case BOARD_IFLIGHT_COMMANDO8:
BR(30, 42, 32)
break;
Expand Down
8 changes: 7 additions & 1 deletion companion/src/firmwares/boards.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ namespace Board {
BOARD_HELLORADIOSKY_V14LCD,
BOARD_IFLIGHT_COMMANDO14,
BOARD_HELLORADIOSKY_V12,
BOARD_SENDUWING_H17,
BOARD_TYPE_COUNT,
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
};
Expand Down Expand Up @@ -772,6 +773,11 @@ inline bool IS_IFLIGHT_C14(Board::Type board)
return (board == Board::BOARD_IFLIGHT_COMMANDO14);
}

inline bool IS_SENDUWING_H17(Board::Type board)
{
return (board == Board::BOARD_SENDUWING_H17);
}

inline bool IS_FAMILY_PL18(Board::Type board)
{
return IS_FLYSKY_PL18(board) || IS_FLYSKY_PL18EV(board) || IS_FLYSKY_PL18U(board);
Expand Down Expand Up @@ -858,7 +864,7 @@ inline bool IS_FAMILY_HORUS_OR_T16(Board::Type board)
IS_FLYSKY_NV14(board)/*generally*/ || IS_FLYSKY_EL18(board)/*generally*/
|| IS_FAMILY_PL18(board) || IS_FLYSKY_ST16(board)/*generally*/ ||
IS_FLYSKY_PA01(board)/*generally*/ || IS_FLYSKY_NB4P(board)/*generally*/ ||
IS_IFLIGHT_C14(board)/*generally*/;
IS_IFLIGHT_C14(board)/*generally*/ || IS_SENDUWING_H17(board)/*generally*/;
}

inline bool HAS_LARGE_LCD(Board::Type board)
Expand Down
9 changes: 8 additions & 1 deletion companion/src/firmwares/opentx/opentxinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) ||
IS_IFLIGHT_COMMANDO8(board) || IS_RADIOMASTER_BOXER(board) ||
IS_RADIOMASTER_POCKET(board) || IS_JUMPER_T20(board) ||
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) || IS_JUMPER_T15PRO(board) || IS_JUMPER_T22(board);
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) || IS_JUMPER_T15PRO(board) || IS_JUMPER_T22(board) ||
IS_SENDUWING_H17(board);
case HasIntModuleFlySky:
return id.contains("afhds2a") || id.contains("afhds3") ||
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FAMILY_PL18(board);
Expand Down Expand Up @@ -768,6 +769,12 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3);

/* Senduwing H17 board */
firmware = new OpenTxFirmware(FIRMWAREID("h17"), Firmware::tr("Senduwing H17"), BOARD_SENDUWING_H17);
addOpenTxFrskyOptions(firmware);
addOpenTxRfOptions(firmware, FLEX);
registerOpenTxFirmware(firmware);

Firmware::sortRegisteredFirmwares();
Firmware::setDefaultVariant(Firmware::getFirmwareForFlavour("tx16s"));
Firmware::setCurrentVariant(Firmware::getDefaultVariant());
Expand Down
1 change: 1 addition & 0 deletions docs/building/compilation-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Selects the radio target.
| `T15PRO` | Jumper T15 Pro |
| `ST16` | Siyi ST16 |
| `PA01` | FrSky PA01 |
| `H17` | Senduwing H17 |

### `PCBREV`

Expand Down
3 changes: 2 additions & 1 deletion fw.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@
["RadioMaster TX15", "tx15-"],
["RadioMaster TX16S / TX16S Mark II", "tx16s-"],
["RadioMaster TX16S MK3", "tx16smk3-"],
["RadioMaster Zorro","zorro-"]
["RadioMaster Zorro","zorro-"],
["Senduwing H17", "h17-"]
],
"changelog": "- Major initial bug fixes"
}
4 changes: 3 additions & 1 deletion radio/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
include(CMakeForceCompiler)
include(Bitmaps)

set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 GX15 TX16SMK3 T22 V12)
set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 GX15 TX16SMK3 T22 V12 H17)
set(RADIO_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)
set(TTS_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)

Expand Down Expand Up @@ -107,6 +107,8 @@ elseif(PCB STREQUAL GX15)
include(targets/gx15/CMakeLists.txt)
elseif(PCB STREQUAL TX16SMK3)
include(targets/tx16smk3/CMakeLists.txt)
elseif(PCB STREQUAL H17)
include(targets/h17/CMakeLists.txt)
elseif(PCB STREQUAL T22)
include(targets/t22/CMakeLists.txt)
elseif(PCB STREQUAL STM32H7S78_DK)
Expand Down
Loading