1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-26 01:35:16 +03:00

Add iFlight Commando8

Add iFlight Commando8 ELRS radio
This commit is contained in:
XING 2022-04-26 14:40:08 +08:00 committed by Peter Feerick
parent 7800a6de42
commit 299991bc11
50 changed files with 484 additions and 55 deletions

View file

@ -53,6 +53,7 @@ jobs:
- x9lites - x9lites
- xlite - xlite
- xlites - xlites
- commando8
container: container:
image: ghcr.io/edgetx/edgetx-dev:latest image: ghcr.io/edgetx/edgetx-dev:latest
volumes: volumes:
@ -94,6 +95,7 @@ jobs:
- x9e;x9e-hall - x9e;x9e-hall
- x9lite;x9lites - x9lite;x9lites
- xlite;xlites - xlite;xlites
- commando8
container: container:
image: ghcr.io/edgetx/edgetx-dev:latest image: ghcr.io/edgetx/edgetx-dev:latest
volumes: volumes:

View file

@ -32,6 +32,7 @@ jobs:
- x9d;x9dp;x9dp2019 - x9d;x9dp;x9dp2019
- x9lite;x9lites - x9lite;x9lites
- xlite;xlites - xlite;xlites
- commando8
container: container:
image: ghcr.io/edgetx/edgetx-dev:latest image: ghcr.io/edgetx/edgetx-dev:latest
volumes: volumes:

View file

@ -446,6 +446,11 @@ if(FRSKY_RELEASE)
set(POPUP_LEVEL 3) set(POPUP_LEVEL 3)
endif() endif()
if(IFLIGHT_RELEASE)
add_definitions(-DIFLIGHT_RELEASE)
endif()
if(HARDWARE_TRAINER_MULTI) if(HARDWARE_TRAINER_MULTI)
add_definitions(-DHARDWARE_TRAINER_MULTI) add_definitions(-DHARDWARE_TRAINER_MULTI)
endif() endif()

View file

@ -27,7 +27,7 @@ constexpr coord_t CHANNEL_GAUGE_OFFSET = CHANNEL_VALUE_OFFSET;
constexpr coord_t CHANNEL_BAR_WIDTH = 70; constexpr coord_t CHANNEL_BAR_WIDTH = 70;
constexpr coord_t CHANNEL_PROPERTIES_OFFSET = CHANNEL_GAUGE_OFFSET + CHANNEL_BAR_WIDTH + 2; constexpr coord_t CHANNEL_PROPERTIES_OFFSET = CHANNEL_GAUGE_OFFSET + CHANNEL_BAR_WIDTH + 2;
#if defined(RADIO_T8) #if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP) #define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN) #define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS) #define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS)

View file

@ -279,7 +279,7 @@ void displayBattVoltage()
#define displayVoltageOrAlarm() displayBattVoltage() #define displayVoltageOrAlarm() displayBattVoltage()
#if defined(RADIO_T8) #if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER) #define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP) #define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_PAGEDN) #define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_PAGEDN)

View file

@ -213,7 +213,7 @@ enum {
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SB - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SC - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_3POS : SWITCH_2POS) #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SB - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SC - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_3POS : SWITCH_2POS)
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
#elif defined(RADIO_TX12) #elif defined(RADIO_TX12)
#define SWITCH_TYPE_MAX(sw) (((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) || \ #define SWITCH_TYPE_MAX(sw) (((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) || \

View file

@ -643,6 +643,11 @@ bool isInternalModuleSupported(int moduleType)
bool isInternalModuleAvailable(int moduleType) bool isInternalModuleAvailable(int moduleType)
{ {
#if defined(MUTUALLY_EXCLUSIVE_MODULES)
if (!isModuleNone(EXTERNAL_MODULE))
return false;
#endif
if (moduleType == MODULE_TYPE_NONE) if (moduleType == MODULE_TYPE_NONE)
return true; return true;
@ -681,6 +686,12 @@ bool isInternalModuleAvailable(int moduleType)
bool isExternalModuleAvailable(int moduleType) bool isExternalModuleAvailable(int moduleType)
{ {
#if defined(MUTUALLY_EXCLUSIVE_MODULES)
if (!isModuleNone(INTERNAL_MODULE))
return false;
#endif
#if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML) #if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML)
if (isModuleTypeR9MLite(moduleType) || moduleType == MODULE_TYPE_XJT_LITE_PXX2) if (isModuleTypeR9MLite(moduleType) || moduleType == MODULE_TYPE_XJT_LITE_PXX2)
return false; return false;

View file

@ -63,9 +63,11 @@ const char * writeScreenshot()
return error; return error;
} }
#if defined(RTCLOCK)
char * tmp = strAppend(&filename[sizeof(SCREENSHOTS_PATH)-1], "/screen"); char * tmp = strAppend(&filename[sizeof(SCREENSHOTS_PATH)-1], "/screen");
tmp = strAppendDate(tmp, true); tmp = strAppendDate(tmp, true);
strcpy(tmp, BMP_EXT); strcpy(tmp, BMP_EXT);
#endif
FRESULT result = f_open(&bmpFile, filename, FA_CREATE_ALWAYS | FA_WRITE); FRESULT result = f_open(&bmpFile, filename, FA_CREATE_ALWAYS | FA_WRITE);
if (result != FR_OK) { if (result != FR_OK) {

View file

@ -151,7 +151,7 @@ inline bool IS_KEY_EVT(event_t evt, uint8_t key)
#define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER) #define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER)
#define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN)) #define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN))
#define IS_PREVIOUS_EVENT(event) (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP)) #define IS_PREVIOUS_EVENT(event) (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP))
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER) #define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER)
#define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER) #define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER)
#define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN)) #define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN))

View file

@ -35,6 +35,7 @@ if(PYTHONINTERP_FOUND)
add_lua_export_target(tx12mk2 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_TX12MK2) add_lua_export_target(tx12mk2 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_TX12MK2)
add_lua_export_target(zorro ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_ZORRO) add_lua_export_target(zorro ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_ZORRO)
add_lua_export_target(t8 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T8) add_lua_export_target(t8 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T8)
add_lua_export_target(commando8 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_COMMANDO8)
add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16) add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16)
add_lua_export_target(nv14 ${LUA_INCLUDES} -I${RADIO_SRC_DIR}/targets/nv14 -DPCBNV14) add_lua_export_target(nv14 ${LUA_INCLUDES} -I${RADIO_SRC_DIR}/targets/nv14 -DPCBNV14)
endif() endif()

View file

@ -59,6 +59,8 @@
#include "lua/lua_exports_zorro.inc" #include "lua/lua_exports_zorro.inc"
#elif defined(RADIO_T8) #elif defined(RADIO_T8)
#include "lua/lua_exports_t8.inc" #include "lua/lua_exports_t8.inc"
#elif defined(RADIO_COMMANDO8)
#include "lua/lua_exports_commando8.inc"
#elif defined(PCBX9LITES) #elif defined(PCBX9LITES)
#include "lua/lua_exports_x9lites.inc" #include "lua/lua_exports_x9lites.inc"
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
@ -2704,7 +2706,7 @@ const luaR_value_entry opentxConstants[] = {
{ "ROTENC_LOWSPEED", ROTENC_LOWSPEED }, { "ROTENC_LOWSPEED", ROTENC_LOWSPEED },
{ "ROTENC_MIDSPEED", ROTENC_MIDSPEED }, { "ROTENC_MIDSPEED", ROTENC_MIDSPEED },
{ "ROTENC_HIGHSPEED", ROTENC_HIGHSPEED }, { "ROTENC_HIGHSPEED", ROTENC_HIGHSPEED },
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T8) // key reverted between field nav and value change #elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)// key reverted between field nav and value change
{ "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_PLUS) }, { "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_PLUS) },
{ "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_PLUS) }, { "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_PLUS) },
{ "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_MINUS) }, { "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_MINUS) },
@ -2741,7 +2743,7 @@ const luaR_value_entry opentxConstants[] = {
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D) #elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) #if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_BREAK(KEY_PAGEUP) }, { "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_BREAK(KEY_PAGEUP) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGEDN) }, { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGEDN) },
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) }, { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) },

View file

@ -380,6 +380,12 @@ void generalDefault()
g_eeGeneral.pwrOnSpeed = 1; // 1 second g_eeGeneral.pwrOnSpeed = 1; // 1 second
#endif #endif
#if defined(IFLIGHT_RELEASE)
g_eeGeneral.splashMode = 3;
g_eeGeneral.pwrOnSpeed = 2;
g_eeGeneral.pwrOffSpeed = 2;
#endif
g_eeGeneral.chkSum = 0xFFFF; g_eeGeneral.chkSum = 0xFFFF;
} }

View file

@ -888,7 +888,7 @@ constexpr uint8_t OPENTX_START_NO_CHECKS = 0x04;
#if defined(STATUS_LEDS) #if defined(STATUS_LEDS)
#define LED_ERROR_BEGIN() ledRed() #define LED_ERROR_BEGIN() ledRed()
#if defined(RADIO_T8) #if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
// Because of green backlit logo, green is preferred on this radio // Because of green backlit logo, green is preferred on this radio
#define LED_ERROR_END() ledGreen() #define LED_ERROR_END() ledGreen()
#define LED_BIND() ledBlue() #define LED_BIND() ledBlue()

View file

@ -368,7 +368,7 @@ void OpenTxSim::updateKeysAndSwitches(bool start)
KEY_Down, KEY_EXIT, KEY_Down, KEY_EXIT,
KEY_Right, KEY_TELE, KEY_Right, KEY_TELE,
KEY_Left, KEY_SYS, KEY_Left, KEY_SYS,
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
KEY_Page_Up, KEY_PAGEUP, KEY_Page_Up, KEY_PAGEUP,
KEY_Page_Down, KEY_PAGEDN, KEY_Page_Down, KEY_PAGEDN,
KEY_Return, KEY_ENTER, KEY_Return, KEY_ENTER,

View file

@ -36,6 +36,8 @@
#define DISPLAY_VERSION "-jumper" #define DISPLAY_VERSION "-jumper"
#elif defined(RADIOMASTER_RELEASE) #elif defined(RADIOMASTER_RELEASE)
#define DISPLAY_VERSION "-RM" #define DISPLAY_VERSION "-RM"
#elif defined(IFLIGHT_RELEASE)
#define DISPLAY_VERSION "-IF"
#elif defined(TBS_RELEASE) #elif defined(TBS_RELEASE)
#define DISPLAY_VERSION "-tbs" #define DISPLAY_VERSION "-tbs"
#elif defined(IMRC_RELEASE) #elif defined(IMRC_RELEASE)
@ -61,7 +63,7 @@
const char vers_stamp[] = "FW" TAB ": edgetx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME; const char vers_stamp[] = "FW" TAB ": edgetx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME;
#elif defined(RADIOMASTER_RELEASE) #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; 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) #elif defined(JUMPER_RELEASE) || defined(IFLIGHT_RELEASE)
const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME;
#else #else
#if defined(VERSION_TAG) #if defined(VERSION_TAG)

View file

@ -444,7 +444,7 @@ char getRawSwitchFromIdx(int idx)
#endif #endif
else else
return 'A' + idx; return 'A' + idx;
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_T8) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)
if (idx < 6) if (idx < 6)
return 'A' + idx; return 'A' + idx;
else else

View file

@ -44,6 +44,34 @@ void dacTimerInit()
AUDIO_TIMER->CR1 = TIM_CR1_CEN ; AUDIO_TIMER->CR1 = TIM_CR1_CEN ;
} }
#if defined(AUDIO_MUTE_GPIO_PIN)
static inline void setMutePin(bool enabled)
{
if (enabled) {
#if defined(INVERTED_MUTE_PIN)
GPIO_ResetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#else
GPIO_SetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#endif
} else {
#if defined(INVERTED_MUTE_PIN)
GPIO_SetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#else
GPIO_ResetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#endif
}
}
static inline bool getMutePin(void)
{
#if defined(INVERTED_MUTE_PIN)
return !GPIO_ReadOutputDataBit(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#else
return GPIO_ReadOutputDataBit(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN);
#endif
}
#endif
// Configure DAC0 // Configure DAC0
// Not sure why PB14 has not be allocated to the DAC, although it is an EXTRA function // Not sure why PB14 has not be allocated to the DAC, although it is an EXTRA function
// So maybe it is automatically done // So maybe it is automatically done
@ -60,7 +88,7 @@ void dacInit()
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(AUDIO_MUTE_GPIO, &GPIO_InitStructure); GPIO_Init(AUDIO_MUTE_GPIO, &GPIO_InitStructure);
GPIO_SetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN); setMutePin(true);
#endif #endif
GPIO_InitStructure.GPIO_Pin = AUDIO_OUTPUT_GPIO_PIN; GPIO_InitStructure.GPIO_Pin = AUDIO_OUTPUT_GPIO_PIN;
@ -100,11 +128,11 @@ void audioMute()
} }
else if (now - audioQueue.lastAudioPlayTime > AUDIO_MUTE_DELAY / 10) { else if (now - audioQueue.lastAudioPlayTime > AUDIO_MUTE_DELAY / 10) {
// delay expired, we may mute // delay expired, we may mute
GPIO_SetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN); setMutePin(true);
} }
#else #else
// mute // mute
GPIO_SetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN); setMutePin(true);
#endif #endif
} }
@ -112,15 +140,15 @@ void audioUnmute()
{ {
#if defined(AUDIO_UNMUTE_DELAY) #if defined(AUDIO_UNMUTE_DELAY)
// if muted // if muted
if (GPIO_ReadOutputDataBit(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN)) { if (getMutePin()) {
// ..un-mute // ..un-mute
GPIO_ResetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN); setMutePin(false);
RTOS_WAIT_MS(AUDIO_UNMUTE_DELAY); RTOS_WAIT_MS(AUDIO_UNMUTE_DELAY);
} }
// reset the mute delay // reset the mute delay
audioQueue.lastAudioPlayTime = 0; audioQueue.lastAudioPlayTime = 0;
#else #else
GPIO_ResetBits(AUDIO_MUTE_GPIO, AUDIO_MUTE_GPIO_PIN); setMutePin(false);
#endif #endif
} }
#endif #endif

View file

@ -146,7 +146,7 @@ static inline uint32_t ticksNow()
#define ROTENC_HIGHSPEED 50 #define ROTENC_HIGHSPEED 50
#define ROTENC_DELAY_MIDSPEED 32 #define ROTENC_DELAY_MIDSPEED 32
#define ROTENC_DELAY_HIGHSPEED 16 #define ROTENC_DELAY_HIGHSPEED 16
#elif defined(RADIO_T8) && defined(__cplusplus) #elif (defined(RADIO_T8) || defined(RADIO_COMMANDO8)) && defined(__cplusplus)
constexpr uint8_t rotencSpeed = 1; constexpr uint8_t rotencSpeed = 1;
#endif #endif

View file

@ -248,7 +248,7 @@ void bootloaderInitApp()
} }
} }
#if defined(RADIO_T8) && !defined(RADIOMASTER_RELEASE) #if (defined(RADIO_T8) || defined(RADIO_COMMANDO8)) && !defined(RADIOMASTER_RELEASE)
// Bind button not pressed // Bind button not pressed
if ((~KEYS_GPIO_REG_BIND & KEYS_GPIO_PIN_BIND) == false) { if ((~KEYS_GPIO_REG_BIND & KEYS_GPIO_PIN_BIND) == false) {
#else #else
@ -551,16 +551,12 @@ int bootloaderMain()
} }
if (state == ST_REBOOT) { if (state == ST_REBOOT) {
lcdClear();
lcdRefresh();
lcdRefreshWait();
#if !defined(SIMU) #if !defined(SIMU)
#if defined(RTC_BACKUP_RAM) #if defined(RTC_BACKUP_RAM)
rtcInit(); rtcInit();
RTC->BKP0R = SOFTRESET_REQUEST; RTC->BKP0R = SOFTRESET_REQUEST;
#endif #endif
blExit();
NVIC_SystemReset(); NVIC_SystemReset();
#else #else
exit(1); exit(1);

View file

@ -92,4 +92,6 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str = nullptr
// Once for each file in a filename list on screen // Once for each file in a filename list on screen
void bootloaderDrawFilename(const char* str, uint8_t line, bool selected); void bootloaderDrawFilename(const char* str, uint8_t line, bool selected);
void blExit();
#endif #endif

View file

@ -118,6 +118,15 @@ extern "C" void PWM_IRQHandler(void)
} }
} }
#if defined(STICK_CHANNEL_CHANGE)
void sticksPwmRead(uint16_t * values)
{
values[0] = timer_capture_values[STICK_PWM_CHANNEL_0];
values[1] = timer_capture_values[STICK_PWM_CHANNEL_1];
values[2] = timer_capture_values[STICK_PWM_CHANNEL_2];
values[3] = timer_capture_values[STICK_PWM_CHANNEL_3];
}
#else
void sticksPwmRead(uint16_t * values) void sticksPwmRead(uint16_t * values)
{ {
values[0] = timer_capture_values[0]; values[0] = timer_capture_values[0];
@ -125,3 +134,4 @@ void sticksPwmRead(uint16_t * values)
values[2] = timer_capture_values[3]; values[2] = timer_capture_values[3];
values[3] = timer_capture_values[2]; values[3] = timer_capture_values[2];
} }
#endif

View file

@ -99,7 +99,7 @@ stm32_hal_adc_channel ADC_MAIN_channels[] = {
{ ADC_CHANNEL_SLIDER2, ADC_SAMPTIME }, { ADC_CHANNEL_SLIDER2, ADC_SAMPTIME },
{ ADC_CHANNEL_BATT, ADC_SAMPTIME } { ADC_CHANNEL_BATT, ADC_SAMPTIME }
#else #else
#if defined(RADIO_T8) || defined(RADIO_TLITE) #if defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_COMMANDO8)
// fake channels to fill unsused POT1/POT2 // fake channels to fill unsused POT1/POT2
{0, 0}, {0, 0},
{0, 0}, {0, 0},

View file

@ -215,3 +215,10 @@ void bootloaderDrawFilename(const char* str, uint8_t line, bool selected)
lcd->drawSolidRect(119, 72 + (line * 25), 278, 26, 2, BL_SELECTED); lcd->drawSolidRect(119, 72 + (line * 25), 278, 26, 2, BL_SELECTED);
} }
} }
void blExit(void)
{
lcdClear();
lcdRefresh();
lcdRefreshWait();
}

View file

@ -237,3 +237,10 @@ void bootloaderDrawFilename(const char* str, uint8_t line, bool selected)
BL_SELECTED); BL_SELECTED);
} }
} }
void blExit(void)
{
lcdClear();
lcdRefresh();
lcdRefreshWait();
}

View file

@ -8,6 +8,7 @@ option(INTERNAL_MODULE_PPM "Support for PPM internal module" OFF)
option(AUTOUPDATE "Auto update internal chips from SD" OFF) option(AUTOUPDATE "Auto update internal chips from SD" OFF)
option(BIND_KEY "Enable bind button" OFF) option(BIND_KEY "Enable bind button" OFF)
set(USE_RTC_CLOCK YES)
set(HARDWARE_EXTERNAL_MODULE YES) set(HARDWARE_EXTERNAL_MODULE YES)
add_definitions(-DPCBFRSKY) add_definitions(-DPCBFRSKY)
@ -261,6 +262,31 @@ elseif(PCB STREQUAL X7)
add_definitions(-DRADIO_T8) add_definitions(-DRADIO_T8)
add_definitions(-DEEPROM_VARIANT=0x4004) add_definitions(-DEEPROM_VARIANT=0x4004)
add_definitions(-DMANUFACTURER_RADIOMASTER) add_definitions(-DMANUFACTURER_RADIOMASTER)
elseif(PCBREV STREQUAL COMMANDO8)
set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES)
set(HARDWARE_EXTERNAL_MODULE YES)
set(FLAVOUR commando8)
set(NAVIGATION_TYPE x7)
set(CPU_TYPE STM32F4)
set(CPU_TYPE_FULL STM32F407xE) # for size report
add_definitions(-DSTM32F407xx)
set(LINKER_SCRIPT targets/taranis/stm32f4_flash.ld)
set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC}
startup_stm32f40_41xxx.s
../../thirdparty/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Libraries/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_flash.c
)
add_definitions(-DSTM32F407xx -DSTM32F40_41xxx)
set(ROTARY_ENCODER NO)
set(LUA_EXPORT lua_export_commando8)
set(BLUETOOTH NO)
set(USE_RTC_CLOCK NO)
add_definitions(-DRADIO_COMMANDO8)
add_definitions(-DSTICKS_PWM)
add_definitions(-DMUTUALLY_EXCLUSIVE_MODULES)
add_definitions(-DEEPROM_VARIANT=0x4008)
add_definitions(-DMANUFACTURER_IFLIGHT)
elseif(PCBREV STREQUAL ACCESS) elseif(PCBREV STREQUAL ACCESS)
set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module") set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES) set(INTERNAL_MODULE_SERIAL YES)
@ -521,7 +547,12 @@ if(SPLASH STREQUAL OFF)
endif() endif()
add_definitions(-DPCBTARANIS) add_definitions(-DPCBTARANIS)
add_definitions(-DAUDIO -DVOICE -DRTCLOCK) add_definitions(-DAUDIO -DVOICE )
if(USE_RTC_CLOCK)
add_definitions(-DRTCLOCK)
endif()
set(SRC set(SRC
${SRC} ${SRC}
@ -557,7 +588,7 @@ set(FIRMWARE_TARGET_SRC
trainer_driver.cpp trainer_driver.cpp
) )
if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES) if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR PCBREV STREQUAL COMMANDO8)
set(FIRMWARE_SRC set(FIRMWARE_SRC
${FIRMWARE_SRC} ${FIRMWARE_SRC}
targets/common/arm/stm32/sticks_pwm_driver.cpp) targets/common/arm/stm32/sticks_pwm_driver.cpp)

View file

@ -428,3 +428,30 @@ const etx_serial_port_t* auxSerialGetPort(int port_nr)
if (port_nr >= MAX_AUX_SERIAL) return nullptr; if (port_nr >= MAX_AUX_SERIAL) return nullptr;
return serialPorts[port_nr]; return serialPorts[port_nr];
} }
void setMutePin(GPIO_TypeDef* GPIOx,uint16_t Pinx)
{
#if defined(AUDIO_MUTE_PIN_INVERT)
GPIO_ResetBits(GPIOx, Pinx);
#else
GPIO_SetBits(GPIOx, Pinx);
#endif
}
void resetMutePin(GPIO_TypeDef* GPIOx,uint16_t Pinx)
{
#if defined(AUDIO_MUTE_PIN_INVERT)
GPIO_SetBits(GPIOx, Pinx);
#else
GPIO_ResetBits(GPIOx, Pinx);
#endif
}
uint8_t readMutePinLevel(GPIO_TypeDef* GPIOx,uint16_t Pinx)
{
#if defined(AUDIO_MUTE_PIN_INVERT)
return !GPIO_ReadOutputDataBit(GPIOx, Pinx);
#else
return GPIO_ReadOutputDataBit(GPIOx, Pinx);
#endif
}

View file

@ -432,7 +432,7 @@ enum EnumSwitchesPositions
#define STORAGE_NUM_SWITCHES NUM_SWITCHES #define STORAGE_NUM_SWITCHES NUM_SWITCHES
#define DEFAULT_SWITCH_CONFIG (SWITCH_TOGGLE << 14) + (SWITCH_TOGGLE << 12) + (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_TOGGLE << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_TOGGLE << 0) #define DEFAULT_SWITCH_CONFIG (SWITCH_TOGGLE << 14) + (SWITCH_TOGGLE << 12) + (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_TOGGLE << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_TOGGLE << 0)
#define DEFAULT_POTS_CONFIG (POT_WITHOUT_DETENT << 0) + (POT_WITHOUT_DETENT << 2); #define DEFAULT_POTS_CONFIG (POT_WITHOUT_DETENT << 0) + (POT_WITHOUT_DETENT << 2);
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define NUM_SWITCHES 4 #define NUM_SWITCHES 4
#define STORAGE_NUM_SWITCHES 8 #define STORAGE_NUM_SWITCHES 8
#define DEFAULT_SWITCH_CONFIG (SWITCH_2POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_2POS << 0); #define DEFAULT_SWITCH_CONFIG (SWITCH_2POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_2POS << 0);
@ -539,7 +539,7 @@ enum Analogs {
#define NUM_SLIDERS 0 #define NUM_SLIDERS 0
#define STORAGE_NUM_POTS 1 #define STORAGE_NUM_POTS 1
#define STORAGE_NUM_SLIDERS 0 #define STORAGE_NUM_SLIDERS 0
#elif defined(RADIO_T8) || defined(RADIO_TLITE) #elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_COMMANDO8)
#define NUM_POTS 0 #define NUM_POTS 0
#define NUM_SLIDERS 0 #define NUM_SLIDERS 0
#define STORAGE_NUM_POTS 2 #define STORAGE_NUM_POTS 2
@ -649,6 +649,10 @@ extern uint16_t adcValues[NUM_ANALOGS];
#define BATTERY_WARN 35 // 3.5V #define BATTERY_WARN 35 // 3.5V
#define BATTERY_MIN 34 // 3.4V #define BATTERY_MIN 34 // 3.4V
#define BATTERY_MAX 42 // 4.2V #define BATTERY_MAX 42 // 4.2V
#elif defined(RADIO_COMMANDO8)
#define BATTERY_WARN 32 // 3.5V
#define BATTERY_MIN 30 // 3.0V
#define BATTERY_MAX 42 // 4.2V
#else #else
// NI-MH 7.2V // NI-MH 7.2V
#define BATTERY_WARN 65 // 6.5V #define BATTERY_WARN 65 // 6.5V
@ -733,6 +737,10 @@ uint8_t isBacklightEnabled();
#define USB_NAME "Jumper TPro" #define USB_NAME "Jumper TPro"
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'T', '-', 'P', 'R', 'O', ' ', ' ', ' ' /* 8 Bytes */ #define USB_PRODUCT 'T', '-', 'P', 'R', 'O', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_COMMANDO8)
#define USB_NAME "iFlight Commando 8"
#define USB_MANUFACTURER 'i', 'F', 'l', 'i', 'g', 'h', 't', '-' /* 8 bytes */
#define USB_PRODUCT 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'o' /* 8 Bytes */
#else #else
#define USB_NAME "FrSky Taranis" #define USB_NAME "FrSky Taranis"
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */ #define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
@ -903,7 +911,7 @@ void fsLedOn(uint8_t);
#define LCD_CONTRAST_MAX 30 #define LCD_CONTRAST_MAX 30
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) #if defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define LCD_CONTRAST_DEFAULT 20 #define LCD_CONTRAST_DEFAULT 20
#elif defined(RADIO_TPRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TPRO) #elif defined(RADIO_TPRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TPRO) || defined(RADIO_COMMANDO8)
#define LCD_CONTRAST_DEFAULT 25 #define LCD_CONTRAST_DEFAULT 25
#else #else
#define LCD_CONTRAST_DEFAULT 15 #define LCD_CONTRAST_DEFAULT 15

View file

@ -119,3 +119,20 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char *str)
lcdDrawTextAlignedLeft(4 * FH, CENTER "\007Writing complete"); lcdDrawTextAlignedLeft(4 * FH, CENTER "\007Writing complete");
} }
} }
void blExit(void)
{
#if defined(RADIO_COMMANDO8)
lcdClear();
lcdDrawText(2, 22,"Press the power button.");
lcdDrawText(2, 33,"Exit the flashing mode.");
lcdRefresh();
lcdRefreshWait();
while(1);
#else
lcdClear();
lcdRefresh();
lcdRefreshWait();
#endif
}

View file

@ -118,6 +118,25 @@
#define KEYS_GPIO_PIN_MINUS GPIO_Pin_10 // PE.10 #define KEYS_GPIO_PIN_MINUS GPIO_Pin_10 // PE.10
#define KEYS_GPIO_REG_BIND GPIOA->IDR #define KEYS_GPIO_REG_BIND GPIOA->IDR
#define KEYS_GPIO_PIN_BIND GPIO_Pin_10 // PA.10 #define KEYS_GPIO_PIN_BIND GPIO_Pin_10 // PA.10
#elif defined(RADIO_COMMANDO8)
#define KEYS_GPIO_REG_PAGEUP GPIOE->IDR
#define KEYS_GPIO_PIN_PAGEUP GPIO_Pin_11 // PE.11
#define KEYS_GPIO_REG_PAGEDN GPIOE->IDR
#define KEYS_GPIO_PIN_PAGEDN GPIO_Pin_13 // PE.13
#define KEYS_GPIO_REG_EXIT GPIOD->IDR
#define KEYS_GPIO_PIN_EXIT GPIO_Pin_2 // PD.02
#define KEYS_GPIO_REG_ENTER GPIOE->IDR
#define KEYS_GPIO_PIN_ENTER GPIO_Pin_10 // PE.10
#define KEYS_GPIO_REG_SYS GPIOD->IDR
#define KEYS_GPIO_PIN_SYS GPIO_Pin_1 // PD.01
#define KEYS_GPIO_REG_MDL GPIOD->IDR
#define KEYS_GPIO_PIN_MDL GPIO_Pin_0 // PD.00
#define KEYS_GPIO_REG_PLUS GPIOE->IDR
#define KEYS_GPIO_PIN_PLUS GPIO_Pin_12 // PE.12
#define KEYS_GPIO_REG_MINUS GPIOE->IDR
#define KEYS_GPIO_PIN_MINUS GPIO_Pin_14 // PE.14
#define KEYS_GPIO_REG_BIND GPIOD->IDR
#define KEYS_GPIO_PIN_BIND GPIO_Pin_9 // PD.09
#elif defined(PCBX7) #elif defined(PCBX7)
#define KEYS_GPIO_REG_PAGE GPIOD->IDR #define KEYS_GPIO_REG_PAGE GPIOD->IDR
#define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03 #define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03
@ -285,7 +304,7 @@
#define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02 #define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02
#define TRIMS_GPIO_REG_RHL GPIOE->IDR #define TRIMS_GPIO_REG_RHL GPIOE->IDR
#define TRIMS_GPIO_PIN_RHL GPIO_Pin_4 // PE.04 #define TRIMS_GPIO_PIN_RHL GPIO_Pin_4 // PE.04
#elif defined(PCBX7) #elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
#define TRIMS_GPIO_REG_LHL GPIOD->IDR #define TRIMS_GPIO_REG_LHL GPIOD->IDR
#define TRIMS_GPIO_PIN_LHL GPIO_Pin_15 // PD.15 #define TRIMS_GPIO_PIN_LHL GPIO_Pin_15 // PD.15
#define TRIMS_GPIO_REG_LHR GPIOC->IDR #define TRIMS_GPIO_REG_LHR GPIOC->IDR
@ -302,6 +321,23 @@
#define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02 #define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02
#define TRIMS_GPIO_REG_RHR GPIOE->IDR #define TRIMS_GPIO_REG_RHR GPIOE->IDR
#define TRIMS_GPIO_PIN_RHR GPIO_Pin_4 // PE.04 #define TRIMS_GPIO_PIN_RHR GPIO_Pin_4 // PE.04
#elif defined(PCBX7) && defined(RADIO_COMMANDO8)
#define TRIMS_GPIO_REG_LHL GPIOD->IDR
#define TRIMS_GPIO_PIN_LHL GPIO_Pin_15 // PD.15
#define TRIMS_GPIO_REG_LHR GPIOC->IDR
#define TRIMS_GPIO_PIN_LHR GPIO_Pin_6 // PC.06
#define TRIMS_GPIO_REG_LVD GPIOE->IDR
#define TRIMS_GPIO_PIN_LVD GPIO_Pin_6 // PE.06
#define TRIMS_GPIO_REG_LVU GPIOE->IDR
#define TRIMS_GPIO_PIN_LVU GPIO_Pin_1 // PE.01
#define TRIMS_GPIO_REG_RVD GPIOC->IDR
#define TRIMS_GPIO_PIN_RVD GPIO_Pin_3 // PC.03
#define TRIMS_GPIO_REG_RHL GPIOE->IDR
#define TRIMS_GPIO_PIN_RHL GPIO_Pin_0 // PE.00
#define TRIMS_GPIO_REG_RVU GPIOC->IDR
#define TRIMS_GPIO_PIN_RVU GPIO_Pin_7 // PC.07
#define TRIMS_GPIO_REG_RHR GPIOE->IDR
#define TRIMS_GPIO_PIN_RHR GPIO_Pin_15 // PE.15
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
#define TRIMS_GPIO_REG_LHR GPIOC->IDR #define TRIMS_GPIO_REG_LHR GPIOC->IDR
#define TRIMS_GPIO_PIN_LHR GPIO_Pin_4 // PC.04 #define TRIMS_GPIO_PIN_LHR GPIO_Pin_4 // PC.04
@ -381,6 +417,11 @@
#define HARDWARE_SWITCH_A #define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOE->IDR #define SWITCHES_GPIO_REG_A GPIOE->IDR
#define SWITCHES_GPIO_PIN_A GPIO_Pin_14 // PE.14 #define SWITCHES_GPIO_PIN_A GPIO_Pin_14 // PE.14
#elif defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOE->IDR
#define SWITCHES_GPIO_PIN_A GPIO_Pin_3 // PE.03
#elif defined(RADIO_TPRO) #elif defined(RADIO_TPRO)
#define STORAGE_SWITCH_A #define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A #define HARDWARE_SWITCH_A
@ -425,6 +466,13 @@
#define SWITCHES_GPIO_PIN_B_L GPIO_Pin_7 // PE.07 #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_7 // PE.07
#define SWITCHES_GPIO_REG_B_H GPIOE->IDR #define SWITCHES_GPIO_REG_B_H GPIOE->IDR
#define SWITCHES_GPIO_PIN_B_H GPIO_Pin_13 // PE.13 #define SWITCHES_GPIO_PIN_B_H GPIO_Pin_13 // PE.13
#elif defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_B
#define HARDWARE_SWITCH_B
#define SWITCHES_GPIO_REG_B_L GPIOE->IDR
#define SWITCHES_GPIO_PIN_B_L GPIO_Pin_5 // PE.05
#define SWITCHES_GPIO_REG_B_H GPIOE->IDR
#define SWITCHES_GPIO_PIN_B_H GPIO_Pin_4 // PE.04
#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) #elif defined(RADIO_TLITE) || defined(RADIO_TPRO)
#define STORAGE_SWITCH_B #define STORAGE_SWITCH_B
#define HARDWARE_SWITCH_B #define HARDWARE_SWITCH_B
@ -497,6 +545,13 @@
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_2 // PE.02 #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_2 // PE.02
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR #define SWITCHES_GPIO_REG_C_H GPIOE->IDR
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_1 // PE.01 #define SWITCHES_GPIO_PIN_C_H GPIO_Pin_1 // PE.01
#elif defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C
#define SWITCHES_GPIO_REG_C_L GPIOC->IDR
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_4 // PC.04
#define SWITCHES_GPIO_REG_C_H GPIOA->IDR
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_6 // PA.06
#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) #elif defined(RADIO_TLITE) || defined(RADIO_TPRO)
#define STORAGE_SWITCH_C #define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C #define HARDWARE_SWITCH_C
@ -549,6 +604,11 @@
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOD->IDR #define SWITCHES_GPIO_REG_D GPIOD->IDR
#define SWITCHES_GPIO_PIN_D GPIO_Pin_14 // PD.14 #define SWITCHES_GPIO_PIN_D GPIO_Pin_14 // PD.14
#elif defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOA->IDR
#define SWITCHES_GPIO_PIN_D GPIO_Pin_5 // PA.05
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO)
#define STORAGE_SWITCH_D #define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
@ -559,7 +619,14 @@
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOD->IDR #define SWITCHES_GPIO_REG_D GPIOD->IDR
#define SWITCHES_GPIO_PIN_D GPIO_Pin_14 // PD.14 #define SWITCHES_GPIO_PIN_D GPIO_Pin_14 // PD.14
#elif defined(PCBX7) #elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D_L GPIOE->IDR
#define SWITCHES_GPIO_PIN_D_L GPIO_Pin_1 // PE.01
#define SWITCHES_GPIO_REG_D_H GPIOE->IDR
#define SWITCHES_GPIO_PIN_D_H GPIO_Pin_2 // PE.02
#elif defined(PCBX7) && defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_D #define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D_L GPIOE->IDR #define SWITCHES_GPIO_REG_D_L GPIOE->IDR
@ -681,7 +748,7 @@
#define HARDWARE_SWITCH_F #define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOG->IDR #define SWITCHES_GPIO_REG_F GPIOG->IDR
#define SWITCHES_GPIO_PIN_F GPIO_Pin_6 // PG.06 #define SWITCHES_GPIO_PIN_F GPIO_Pin_6 // PG.06
#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) #elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_COMMANDO8)
// no SWF // no SWF
#define STORAGE_SWITCH_F #define STORAGE_SWITCH_F
#elif defined(RADIO_T12) #elif defined(RADIO_T12)
@ -723,7 +790,7 @@
#define HARDWARE_SWITCH_G #define HARDWARE_SWITCH_G
#define SWITCHES_GPIO_REG_G GPIOG->IDR #define SWITCHES_GPIO_REG_G GPIOG->IDR
#define SWITCHES_GPIO_PIN_G GPIO_Pin_5 // PG.05 #define SWITCHES_GPIO_PIN_G GPIO_Pin_5 // PG.05
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) #elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)
// no SWG // no SWG
#else #else
#define STORAGE_SWITCH_G #define STORAGE_SWITCH_G
@ -746,7 +813,7 @@
#define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14 #define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14
#elif defined(PCBXLITE) || defined(PCBX9LITE) #elif defined(PCBXLITE) || defined(PCBX9LITE)
// no SWH // no SWH
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
// no SWH // no SWH
#elif defined(RADIO_TX12) #elif defined(RADIO_TX12)
@ -789,7 +856,7 @@
#define SWITCHES_GPIO_REG_I GPIOC->IDR #define SWITCHES_GPIO_REG_I GPIOC->IDR
#define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13 #define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13
#define STORAGE_SWITCH_J #define STORAGE_SWITCH_J
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_I #define STORAGE_SWITCH_I
#define STORAGE_SWITCH_J #define STORAGE_SWITCH_J
// no SWI/J // no SWI/J
@ -974,6 +1041,13 @@
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RVD) #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RVD)
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_PAGEUP | KEYS_GPIO_PIN_PAGEDN | SWITCHES_GPIO_PIN_D | TRIMS_GPIO_PIN_LHL) #define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_PAGEUP | KEYS_GPIO_PIN_PAGEDN | SWITCHES_GPIO_PIN_D | TRIMS_GPIO_PIN_LHL)
#define KEYS_GPIOE_PINS (SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_B_L | KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_MINUS | KEYS_GPIO_PIN_MDL | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_A) #define KEYS_GPIOE_PINS (SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_B_L | KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_MINUS | KEYS_GPIO_PIN_MDL | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_A)
#elif defined(RADIO_COMMANDO8)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_D |SWITCHES_GPIO_PIN_C_H)
#define KEYS_GPIOB_PINS (0)
#define KEYS_GPIOC_PINS (SWITCHES_GPIO_PIN_C_L | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RVD)
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_MDL |KEYS_GPIO_PIN_SYS| TRIMS_GPIO_PIN_LHL|KEYS_GPIO_PIN_BIND)
#define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_PAGEUP | KEYS_GPIO_PIN_PAGEDN | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_B_L | KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_MINUS | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_A)
#elif defined(RADIO_X7ACCESS) #elif defined(RADIO_X7ACCESS)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS GPIO_Pin_5 #define KEYS_GPIOA_PINS GPIO_Pin_5
@ -1147,6 +1221,35 @@
#define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT
#define ADC_CHANNEL_BATT ADC_Channel_10 #define ADC_CHANNEL_BATT ADC_Channel_10
#define ADC_VREF_PREC2 300 #define ADC_VREF_PREC2 300
#elif defined(RADIO_COMMANDO8)
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
#define ADC_RCC_APB1Periph RCC_APB1Periph_TIM5
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_2 // PA.02
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_3 // PA.03
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_0 // PA.00
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_1 // PA.01
#define ADC_CHANNEL_STICK_RV ADC_Channel_2 // ADC1_IN2
#define ADC_CHANNEL_STICK_RH ADC_Channel_3 // ADC1_IN3
#define ADC_CHANNEL_STICK_LV ADC_Channel_0 // ADC1_IN0
#define ADC_CHANNEL_STICK_LH ADC_Channel_1 // ADC1_IN1
#define ADC_GPIO_PIN_BATT GPIO_Pin_5 // PC.05
#define ADC_GPIOB_PINS 0
#define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT
#define ADC_CHANNEL_BATT ADC_Channel_15
#define ADC_VREF_PREC2 320
#define ADC_GPIOA_PINS (STICKS_PWM_ENABLED() ? 0 : (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV))
#define PWM_IRQHandler TIM5_IRQHandler
#define PWM_TIMER TIM5
#define PWM_GPIO GPIOA
#define PWM_GPIO_AF GPIO_AF_TIM5
#define PWM_IRQn TIM5_IRQn
#define PWM_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
#define STICK_CHANNEL_CHANGE
#define STICK_PWM_CHANNEL_0 1
#define STICK_PWM_CHANNEL_1 0
#define STICK_PWM_CHANNEL_2 2
#define STICK_PWM_CHANNEL_3 3
#elif defined(RADIO_TLITE) #elif defined(RADIO_TLITE)
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
#define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB1Periph 0
@ -1277,6 +1380,11 @@
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_7 // PA.07 #define PWR_SWITCH_GPIO_PIN GPIO_Pin_7 // PA.07
#define PWR_ON_GPIO GPIOE #define PWR_ON_GPIO GPIOE
#define PWR_ON_GPIO_PIN GPIO_Pin_9 // PE.09 #define PWR_ON_GPIO_PIN GPIO_Pin_9 // PE.09
#elif defined(RADIO_COMMANDO8)
#define PWR_SWITCH_GPIO GPIOD
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_11 // PD.11
#define PWR_ON_GPIO GPIOD
#define PWR_ON_GPIO_PIN GPIO_Pin_10 // PD.10
#else #else
#define PWR_SWITCH_GPIO GPIOD #define PWR_SWITCH_GPIO GPIOD
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_1 // PD.01 #define PWR_SWITCH_GPIO_PIN GPIO_Pin_1 // PD.01
@ -1326,6 +1434,16 @@
#define LED_BLUE_GPIO_PIN GPIO_Pin_5 // PC.05 #define LED_BLUE_GPIO_PIN GPIO_Pin_5 // PC.05
#define LED_GREEN_GPIO GPIOB #define LED_GREEN_GPIO GPIOB
#define LED_GREEN_GPIO_PIN GPIO_Pin_1 // PB.01 #define LED_GREEN_GPIO_PIN GPIO_Pin_1 // PB.01
#elif defined(RADIO_COMMANDO8)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON GPIO_SetBits
#define GPIO_LED_GPIO_OFF GPIO_ResetBits
#define LED_RED_GPIO GPIOC
#define LED_RED_GPIO_PIN GPIO_Pin_2 // PC.02
#define LED_BLUE_GPIO GPIOC
#define LED_BLUE_GPIO_PIN GPIO_Pin_1 // PC.01
#define LED_GREEN_GPIO GPIOC
#define LED_GREEN_GPIO_PIN GPIO_Pin_0 // PC.00
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define STATUS_LEDS #define STATUS_LEDS
#define GPIO_LED_GPIO_ON GPIO_SetBits #define GPIO_LED_GPIO_ON GPIO_SetBits
@ -1544,6 +1662,26 @@
#define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_11 // PF.11 #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_11 // PF.11
#define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN); #define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN);
#endif #endif
#elif defined(RADIO_COMMANDO8)
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA1)
#define INTMODULE_RCC_APB1Periph (RCC_APB1Periph_USART3 | RCC_APB1Periph_TIM2)
#define INTMODULE_RCC_APB2Periph 0
#define INTMODULE_PWR_GPIO GPIOE
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PE.08
#define INTMODULE_GPIO GPIOB
#define INTMODULE_TX_GPIO_PIN GPIO_Pin_10 // PB.10
#define INTMODULE_RX_GPIO_PIN GPIO_Pin_11 // PB.11
#define INTMODULE_GPIO_PinSource_TX GPIO_PinSource10
#define INTMODULE_GPIO_PinSource_RX GPIO_PinSource11
#define INTMODULE_USART USART3
#define INTMODULE_GPIO_AF GPIO_AF_USART3
#define INTMODULE_GPIO_AF_LL LL_GPIO_AF_7
#define INTMODULE_USART_IRQn USART3_IRQn
#define INTMODULE_USART_IRQHandler USART3_IRQHandler
// DMA1_Stream3 is already used by SDIO
#define INTMODULE_DMA NULL
#define INTMODULE_DMA_CHANNEL 0
#define INTMODULE_DMA_STREAM 0
#else #else
#define INTMODULE_PULSES #define INTMODULE_PULSES
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
@ -1621,10 +1759,19 @@
#else #else
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
#define EXTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM8 #define EXTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM8
#if defined(RADIO_COMMANDO8)
#define EXTMODULE_RF_SWITCH_GPIO GPIOE //Antenna switching port
#define EXTMODULE_RF_SWITCH_GPIO_PIN GPIO_Pin_7 //Antenna switching pin //PE.07
#define EXTMODULE_PWR_GPIO GPIOE //External tuner power port //PE.02
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_2 //External tuner power pin
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
#else
#define EXTMODULE_PWR_GPIO GPIOD #define EXTMODULE_PWR_GPIO GPIOD
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08 #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) #define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) #define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
#endif
#define IS_EXTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) == Bit_SET) #define IS_EXTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) == Bit_SET)
#define EXTMODULE_TX_GPIO GPIOA #define EXTMODULE_TX_GPIO GPIOA
#define EXTMODULE_TX_GPIO_PIN GPIO_Pin_7 #define EXTMODULE_TX_GPIO_PIN GPIO_Pin_7
@ -1787,7 +1934,7 @@
#define TELEMETRY_EXTI_IRQn EXTI9_5_IRQn #define TELEMETRY_EXTI_IRQn EXTI9_5_IRQn
#define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising #define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising
#if defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_TPRO) #if defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO)
#define TELEMETRY_EXTI_REUSE_INTERRUPT_ROTARY_ENCODER #define TELEMETRY_EXTI_REUSE_INTERRUPT_ROTARY_ENCODER
#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) #elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019)
#define TELEMETRY_EXTI_IRQHandler EXTI9_5_IRQHandler #define TELEMETRY_EXTI_IRQHandler EXTI9_5_IRQHandler
@ -2056,6 +2203,19 @@
#define BACKLIGHT_RCC_AHB1Periph 0 #define BACKLIGHT_RCC_AHB1Periph 0
#define BACKLIGHT_RCC_APB1Periph 0 #define BACKLIGHT_RCC_APB1Periph 0
#define BACKLIGHT_RCC_APB2Periph 0 #define BACKLIGHT_RCC_APB2Periph 0
#elif defined(RADIO_COMMANDO8)
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
#define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4
#define BACKLIGHT_RCC_APB2Periph 0
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define BACKLIGHT_TIMER TIM4
#define BACKLIGHT_GPIO GPIOD
#define BACKLIGHT_GPIO_PIN GPIO_Pin_13 // PD.13
#define BACKLIGHT_GPIO_PinSource GPIO_PinSource13
#define BACKLIGHT_GPIO_AF GPIO_AF_TIM4
#define BACKLIGHT_CCMR1 TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 // Channel2, PWM
#define BACKLIGHT_CCER TIM_CCER_CC2E
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR2
#elif defined(PCBX7) #elif defined(PCBX7)
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
#define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4 #define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4
@ -2083,7 +2243,7 @@
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0 #define KEYS_BACKLIGHT_RCC_AHB1Periph 0
// LCD driver // LCD driver
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_TPRO) #if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO)
#define LCD_VERTICAL_INVERT #define LCD_VERTICAL_INVERT
#endif #endif
#if defined(PCBX9E) #if defined(PCBX9E)
@ -2231,8 +2391,10 @@
#define SD_GPIO_PRESENT_GPIO GPIOD #define SD_GPIO_PRESENT_GPIO GPIOD
#if defined(PCBXLITE) || defined(PCBX9LITE) #if defined(PCBXLITE) || defined(PCBX9LITE)
#define SD_GPIO_PRESENT_GPIO_PIN GPIO_Pin_10 // PD.10 #define SD_GPIO_PRESENT_GPIO_PIN GPIO_Pin_10 // PD.10
#elif defined(RADIO_COMMANDO8)
#define SD_GPIO_PRESENT_GPIO_PIN GPIO_Pin_8 // PD.08
#else #else
#define SD_GPIO_PRESENT_GPIO_PIN GPIO_Pin_9 // PD.09 #define SD_GPIO_PRESENT_GPIO_PIN GPIO_Pin_9 // PD.09
#endif #endif
#define SD_GPIO GPIOB #define SD_GPIO GPIOB
#define SD_GPIO_PIN_CS GPIO_Pin_12 // PB.12 #define SD_GPIO_PIN_CS GPIO_Pin_12 // PB.12
@ -2286,6 +2448,12 @@
#else #else
#define AUDIO_UNMUTE_DELAY 150 // ms #define AUDIO_UNMUTE_DELAY 150 // ms
#endif #endif
#elif defined(RADIO_COMMANDO8)
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#define AUDIO_MUTE_GPIO GPIOB
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_1 // PB.01
#define AUDIO_MUTE_DELAY 500 // ms
#define INVERTED_MUTE_PIN
#else #else
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1) #define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#endif #endif
@ -2406,7 +2574,7 @@
#define BT_USART_IRQn USART3_IRQn #define BT_USART_IRQn USART3_IRQn
// #define BT_DMA_Stream_RX DMA1_Stream1 // #define BT_DMA_Stream_RX DMA1_Stream1
// #define BT_DMA_Channel_RX DMA_Channel_4 // #define BT_DMA_Channel_RX DMA_Channel_4
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_T8) || defined(RADIO_ZORRO) #elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_ZORRO)
#define STORAGE_BLUETOOTH #define STORAGE_BLUETOOTH
#define BT_RCC_AHB1Periph 0 #define BT_RCC_AHB1Periph 0
#define BT_RCC_APB1Periph 0 #define BT_RCC_APB1Periph 0

View file

@ -184,7 +184,7 @@ uint32_t switchState(uint8_t index)
switch (index) { switch (index) {
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) #if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)
ADD_2POS_CASE(A); ADD_2POS_CASE(A);
ADD_3POS_CASE(B, 1); ADD_3POS_CASE(B, 1);
ADD_3POS_CASE(C, 2); ADD_3POS_CASE(C, 2);
@ -236,7 +236,7 @@ uint32_t switchState(uint8_t index)
ADD_3POS_CASE(F, 5); ADD_3POS_CASE(F, 5);
ADD_2POS_CASE(I); ADD_2POS_CASE(I);
ADD_2POS_CASE(J); ADD_2POS_CASE(J);
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
ADD_2POS_CASE(D); ADD_2POS_CASE(D);
#elif defined(RADIO_TLITE) #elif defined(RADIO_TLITE)
// Only 4 switches // Only 4 switches

View file

@ -27,7 +27,7 @@
#include "opentx.h" #include "opentx.h"
#endif #endif
#if defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_TPRO) #if defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO)
#define LCD_CONTRAST_OFFSET -10 #define LCD_CONTRAST_OFFSET -10
#else #else
#define LCD_CONTRAST_OFFSET 160 #define LCD_CONTRAST_OFFSET 160

View file

@ -224,7 +224,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -242,7 +242,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -226,7 +226,7 @@
#define TR_VKEYS "Exit","Enter","Ned","Op","Højre","Venstre" #define TR_VKEYS "Exit","Enter","Ned","Op","Højre","Venstre"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -227,7 +227,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -224,7 +224,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -224,7 +224,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -242,7 +242,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -245,7 +245,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -228,7 +228,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -227,7 +227,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -224,7 +224,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -221,7 +221,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -244,7 +244,7 @@
#define TR_VKEYS "Exit","Enter","Down","Up","Right","Left" #define TR_VKEYS "Exit","Enter","Down","Up","Right","Left"
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2)
#define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "Exit","Enter","PGUP","PGDN","SYS","MDL","TELE"
#elif defined(RADIO_T8) #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","UP","DOWN"
#elif defined(RADIO_ZORRO) #elif defined(RADIO_ZORRO)
#define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE" #define TR_VKEYS "RTN","ENTER","PGUP","PGDN","SYS","MDL","TELE"

View file

@ -321,3 +321,13 @@ options_radiomaster_tx16s = {
"internalgps": ("INTERNAL_GPS", "YES", "NO"), "internalgps": ("INTERNAL_GPS", "YES", "NO"),
"externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"), "externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"),
} }
options_commando8_t8 = {
"noheli": ("HELI", "NO", "YES"),
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
"lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"),
"nogvars": ("GVARS", "NO", "YES"),
"faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
}

View file

@ -66,4 +66,8 @@ boards = {
"PCB": "X7", "PCB": "X7",
"PCBREV": "TX12", "PCBREV": "TX12",
}, },
"COMMANDO8": {
"PCB": "X7",
"PCBREV": "COMMANDO8",
},
} }

View file

@ -167,6 +167,9 @@ do
nv14) nv14)
BUILD_OPTIONS+="-DPCB=NV14" BUILD_OPTIONS+="-DPCB=NV14"
;; ;;
commando8)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=COMMANDO8"
;;
esac esac
cmake ${BUILD_OPTIONS} "${SRCDIR}" cmake ${BUILD_OPTIONS} "${SRCDIR}"

73
tools/build-iflight.py Normal file
View file

@ -0,0 +1,73 @@
#!/usr/bin/python3
import argparse
import datetime
import os
from builtins import NotADirectoryError
import shutil
import tempfile
boards = {
"COMMANDO8": {
"PCB": "X7",
"PCBREV": "COMMANDO8",
"DEFAULT_MODE": "1",
"IFLIGHT_RELEASE": "YES",
}
}
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 -DIFLIGHT_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/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 iFlight 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()

View file

@ -136,6 +136,9 @@ do
nv14) nv14)
BUILD_OPTIONS+="-DPCB=NV14" BUILD_OPTIONS+="-DPCB=NV14"
;; ;;
commando8)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=COMMANDO8"
;;
esac esac
cmake ${BUILD_OPTIONS} "${SRCDIR}" cmake ${BUILD_OPTIONS} "${SRCDIR}"

View file

@ -98,6 +98,9 @@ do
nv14) nv14)
BUILD_OPTIONS+="-DPCB=NV14" BUILD_OPTIONS+="-DPCB=NV14"
;; ;;
commando8)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=COMMANDO8"
;;
esac esac
cmake ${BUILD_OPTIONS} "${SRCDIR}" cmake ${BUILD_OPTIONS} "${SRCDIR}"