1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-19 06:15:08 +03:00

Merge branch '2.3.0' into 2.3

# Conflicts:
#	CREDITS.txt
#	radio/src/telemetry/multi.cpp
#	tools/release23/tts.py
#	tools/release23/tts_common.py
This commit is contained in:
Kilrah 2019-09-28 14:16:27 +02:00
commit f56885b54d
30 changed files with 524 additions and 520 deletions

View file

@ -108,7 +108,7 @@ const Multiprotocols multiProtocols {
{MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr}, {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr},
{MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr}, {MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr},
{MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, {MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, STR_MULTI_OPTION},
{MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr}, {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr},
{MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE},

View file

@ -8,24 +8,21 @@ SimulatedUIWidgetX9LITE::SimulatedUIWidgetX9LITE(SimulatorInterface *simulator,
ui(new Ui::SimulatedUIWidgetX9LITE) ui(new Ui::SimulatedUIWidgetX9LITE)
{ {
RadioUiAction * act; RadioUiAction * act;
QPolygon polygon;
ui->setupUi(this); ui->setupUi(this);
// add actions in order of appearance on the help menu // add actions in order of appearance on the help menu
QPoint ctr(70, 91); QPoint ctr(70, 91);
polygon << polyArc(ctr.x(), ctr.y(), 50, -90, 90) << polyArc(ctr.x(), ctr.y(), 22, -90, 90);
act = new RadioUiAction(0, QList<int>() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_MENU_ICN); act = new RadioUiAction(0, QList<int>() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_MENU_ICN);
addRadioWidget(ui->leftbuttons->addArea(polyArc(ctr.x(), ctr.y(), 20), "X9LITE/left_menu.png", act)); addRadioWidget(ui->leftbuttons->addArea(QRect(80, 20, 40, 35), "X9LITE/left_menu.png", act));
act = new RadioUiAction(3, QList<int>() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_PAGE); act = new RadioUiAction(3, QList<int>() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_PAGE);
addRadioWidget(ui->leftbuttons->addArea(polygon, "X9LITE/left_page.png", act)); addRadioWidget(ui->leftbuttons->addArea(QRect(80, 65, 40, 35), "X9LITE/left_page.png", act));
polygon.clear();
polygon << polyArc(ctr.x(), ctr.y(), 50, 90, 270) << polyArc(ctr.x(), ctr.y(), 22, 90, 270);
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); 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);
addRadioWidget(ui->leftbuttons->addArea(polygon, "X9LITE/left_exit.png", act)); addRadioWidget(ui->leftbuttons->addArea(QRect(80, 130, 40, 35), "X9LITE/left_exit.png", act));
m_scrollUpAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Minus << Qt::Key_Equal << Qt::Key_Left, SIMU_STR_HLP_KEYS_GO_LFT, SIMU_STR_HLP_ACT_ROT_LFT); m_scrollUpAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Minus << Qt::Key_Equal << Qt::Key_Left, SIMU_STR_HLP_KEYS_GO_LFT, SIMU_STR_HLP_ACT_ROT_LFT);
m_scrollDnAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Plus << Qt::Key_Right, SIMU_STR_HLP_KEYS_GO_RGT, SIMU_STR_HLP_ACT_ROT_RGT); m_scrollDnAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Plus << Qt::Key_Right, SIMU_STR_HLP_KEYS_GO_RGT, SIMU_STR_HLP_ACT_ROT_RGT);
@ -34,7 +31,7 @@ SimulatedUIWidgetX9LITE::SimulatedUIWidgetX9LITE(SimulatorInterface *simulator,
m_mouseMidClickAction = new RadioUiAction(2, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN); m_mouseMidClickAction = new RadioUiAction(2, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN);
addRadioWidget(ui->rightbuttons->addArea(polyArc(88, 92, 33), "X9LITE/right_ent.png", m_mouseMidClickAction)); addRadioWidget(ui->rightbuttons->addArea(polyArc(88, 92, 33), "X9LITE/right_ent.png", m_mouseMidClickAction));
addRadioWidget(ui->leftbuttons->addArea(QRect(9, 154, 30, 30), "X9LITE/left_scrnshot.png", m_screenshotAction)); addRadioWidget(ui->leftbuttons->addArea(QRect(30, 154, 30, 30), "X9LITE/left_scrnshot.png", m_screenshotAction));
m_backlightColors << QColor(215, 243, 255); // X9LITE Blue m_backlightColors << QColor(215, 243, 255); // X9LITE Blue
m_backlightColors << QColor(166,247,159); m_backlightColors << QColor(166,247,159);
@ -45,10 +42,10 @@ SimulatedUIWidgetX9LITE::SimulatedUIWidgetX9LITE(SimulatorInterface *simulator,
setLcd(ui->lcd); setLcd(ui->lcd);
QString css = "#radioUiWidget {" QString css = "#radioUiWidget {"
"background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1," "background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1,"
"stop:0 rgba(255, 255, 255, 255)," "stop:0 rgba(255, 255, 255, 255),"
"stop:0.757062 rgba(241, 238, 238, 255)," "stop:0.757062 rgba(241, 238, 238, 255),"
"stop:1 rgba(247, 245, 245, 255));" "stop:1 rgba(247, 245, 245, 255));"
"}"; "}";
QTimer * tim = new QTimer(this); QTimer * tim = new QTimer(this);

View file

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>570</width> <width>650</width>
<height>208</height> <height>208</height>
</rect> </rect>
</property> </property>
@ -18,14 +18,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>570</width> <width>603</width>
<height>208</height> <height>235</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>570</width> <width>603</width>
<height>208</height> <height>240</height>
</size> </size>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -60,14 +60,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>157</width> <width>173</width>
<height>186</height> <height>210</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>157</width> <width>173</width>
<height>186</height> <height>210</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
@ -85,14 +85,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>256</width> <width>602</width>
<height>128</height> <height>129</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>424</width> <width>602</width>
<height>128</height> <height>129</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
@ -110,14 +110,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>157</width> <width>174</width>
<height>186</height> <height>210</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>157</width> <width>174</width>
<height>186</height> <height>210</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
@ -135,14 +135,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>256</width> <width>258</width>
<height>48</height> <height>35</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>256</width> <width>258</width>
<height>48</height> <height>35</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
@ -160,14 +160,14 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>256</width> <width>258</width>
<height>10</height> <height>46</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>256</width> <width>258</width>
<height>10</height> <height>46</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">

File diff suppressed because it is too large Load diff

View file

@ -1420,9 +1420,11 @@ void menuModelSetup(event_t event)
} }
else { else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127); CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+23, y, "RSSI(", LEFT); if (pdef->optionsstr == STR_MULTI_RFTUNE) {
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT); lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
lcdDrawText(lcdLastRightPos, y, ")", LEFT); lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
}
} }
} }
} }

View file

@ -774,7 +774,7 @@ void menuModelSetup(event_t event)
} }
} }
else if (isModulePXX2(INTERNAL_MODULE)) { else if (isModulePXX2(INTERNAL_MODULE)) {
g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12, EE_MODEL, isRfProtocolAvailable); g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL, isRfProtocolAvailable);
} }
} }
#else #else
@ -784,7 +784,7 @@ void menuModelSetup(event_t event)
} }
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_ISRM_RF_PROTOCOLS, index, attr); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_ISRM_RF_PROTOCOLS, index, attr);
if (attr) { if (attr) {
index = checkIncDec(event, index, 0, 3, EE_MODEL); index = checkIncDec(event, index, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16 + 1 /* because of --- */, EE_MODEL);
if (checkIncDec_Ret) { if (checkIncDec_Ret) {
memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData));
if (index > 0) { if (index > 0) {
@ -1251,9 +1251,11 @@ void menuModelSetup(event_t event)
} }
else { else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127); CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT); if (pdef->optionsstr == STR_MULTI_RFTUNE) {
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT); lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT);
lcdDrawText(lcdLastRightPos, y, ")", LEFT); lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
}
} }
} }
} }

View file

@ -998,7 +998,7 @@ bool menuModelSetup(event_t event)
} }
} }
else if (isModulePXX2(INTERNAL_MODULE)) { else if (isModulePXX2(INTERNAL_MODULE)) {
g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12, EE_MODEL); g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL);
} }
} }
break; break;
@ -1608,7 +1608,9 @@ bool menuModelSetup(event_t event)
} }
else { else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127); CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
lcdDrawNumber(LCD_W-10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")"); if (pdef->optionsstr == STR_MULTI_RFTUNE) {
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
}
} }
} }
} }

View file

@ -634,7 +634,10 @@ void menuRadioHardware(event_t event)
break; break;
case ITEM_RADIO_BACKUP_EEPROM: case ITEM_RADIO_BACKUP_EEPROM:
lcdDrawText(LCD_W / 2, y, BUTTON(STR_EEBACKUP), attr | CENTERED); if (LCD_W < 212)
lcdDrawText(LCD_W / 2, y, BUTTON(STR_EEBACKUP), attr | CENTERED);
else
lcdDrawText(HW_SETTINGS_COLUMN2, y, BUTTON(STR_EEBACKUP), attr);
if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = EDIT_SELECT_FIELD; s_editMode = EDIT_SELECT_FIELD;
eepromBackup(); eepromBackup();
@ -642,7 +645,10 @@ void menuRadioHardware(event_t event)
break; break;
case ITEM_RADIO_FACTORY_RESET: case ITEM_RADIO_FACTORY_RESET:
lcdDrawText(LCD_W / 2, y, BUTTON(STR_FACTORYRESET), attr | CENTERED); if (LCD_W < 212)
lcdDrawText(LCD_W / 2, y, BUTTON(STR_FACTORYRESET), attr | CENTERED);
else
lcdDrawText(HW_SETTINGS_COLUMN2, y, BUTTON(STR_FACTORYRESET), attr);
if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) { if (attr && event == EVT_KEY_BREAK(KEY_ENTER)) {
s_editMode = EDIT_SELECT_FIELD; s_editMode = EDIT_SELECT_FIELD;
POPUP_CONFIRMATION(STR_CONFIRMRESET, onFactoryResetConfirm); POPUP_CONFIRMATION(STR_CONFIRMRESET, onFactoryResetConfirm);

View file

@ -848,7 +848,7 @@ const mm_protocol_definition multi_protocols[] = {
{MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr}, {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI, nullptr},
{MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr}, {MODULE_SUBTYPE_MULTI_TRAXXAS, 0, false, STR_SUBTYPE_TRAXXAS, nullptr},
{MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, {MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, STR_MULTI_OPTION},
{MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_V911S, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE}, {MODULE_SUBTYPE_MULTI_KF606, 0, false, NO_SUBTYPE, STR_MULTI_RFTUNE},

View file

@ -869,7 +869,10 @@ static void checkRTCBattery()
void checkFailsafe() void checkFailsafe()
{ {
for (int i=0; i<NUM_MODULES; i++) { for (int i=0; i<NUM_MODULES; i++) {
if (isModuleFailsafeAvailable(i)) { if (isModuleMultimodule(i)) {
multiModuleStatus.requiresFailsafeCheck = true;
}
else if (isModuleFailsafeAvailable(i)) {
ModuleData & moduleData = g_model.moduleData[i]; ModuleData & moduleData = g_model.moduleData[i];
if (moduleData.failsafeMode == FAILSAFE_NOT_SET) { if (moduleData.failsafeMode == FAILSAFE_NOT_SET) {
ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR); ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR);

View file

@ -20,6 +20,7 @@
#include "opentx.h" #include "opentx.h"
#if !defined(BOOT)
Fifo<uint8_t, BT_TX_FIFO_SIZE> btTxFifo; Fifo<uint8_t, BT_TX_FIFO_SIZE> btTxFifo;
Fifo<uint8_t, BT_RX_FIFO_SIZE> btRxFifo; Fifo<uint8_t, BT_RX_FIFO_SIZE> btRxFifo;
@ -42,6 +43,7 @@ enum BluetoothWriteState
}; };
volatile uint8_t bluetoothWriteState = BLUETOOTH_WRITE_IDLE; volatile uint8_t bluetoothWriteState = BLUETOOTH_WRITE_IDLE;
#endif
void bluetoothInit(uint32_t baudrate, bool enable) void bluetoothInit(uint32_t baudrate, bool enable)
{ {
@ -65,6 +67,7 @@ void bluetoothInit(uint32_t baudrate, bool enable)
GPIO_Init(BT_BCTS_GPIO, &GPIO_InitStructure); GPIO_Init(BT_BCTS_GPIO, &GPIO_InitStructure);
#endif #endif
#if !defined(BOOT)
GPIO_PinAFConfig(BT_USART_GPIO, BT_TX_GPIO_PinSource, BT_GPIO_AF); GPIO_PinAFConfig(BT_USART_GPIO, BT_TX_GPIO_PinSource, BT_GPIO_AF);
GPIO_PinAFConfig(BT_USART_GPIO, BT_RX_GPIO_PinSource, BT_GPIO_AF); GPIO_PinAFConfig(BT_USART_GPIO, BT_RX_GPIO_PinSource, BT_GPIO_AF);
@ -90,17 +93,17 @@ void bluetoothInit(uint32_t baudrate, bool enable)
bluetoothWriteState = BLUETOOTH_WRITE_IDLE; bluetoothWriteState = BLUETOOTH_WRITE_IDLE;
if (enable) {
GPIO_ResetBits(BT_EN_GPIO, BT_EN_GPIO_PIN);
}
else {
GPIO_SetBits(BT_EN_GPIO, BT_EN_GPIO_PIN);
}
btRxFifo.clear(); btRxFifo.clear();
btTxFifo.clear(); btTxFifo.clear();
#endif
if (enable)
GPIO_ResetBits(BT_EN_GPIO, BT_EN_GPIO_PIN);
else
GPIO_SetBits(BT_EN_GPIO, BT_EN_GPIO_PIN);
} }
#if !defined(BOOT)
void bluetoothDisable() void bluetoothDisable()
{ {
GPIO_SetBits(BT_EN_GPIO, BT_EN_GPIO_PIN); // close bluetooth (recent modules will go to bootloader mode) GPIO_SetBits(BT_EN_GPIO, BT_EN_GPIO_PIN); // close bluetooth (recent modules will go to bootloader mode)
@ -165,3 +168,4 @@ uint8_t bluetoothIsWriting(void)
{ {
return bluetoothWriteState != BLUETOOTH_WRITE_IDLE; return bluetoothWriteState != BLUETOOTH_WRITE_IDLE;
} }
#endif // !BOOT

View file

@ -92,6 +92,13 @@ if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR (PCB STREQUAL X9
) )
endif() endif()
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
set(BOOTLOADER_SRC
${BOOTLOADER_SRC}
../../../../../targets/common/arm/stm32/bluetooth_driver.cpp
)
endif()
if(NOT (PCB STREQUAL X10 OR PCB STREQUAL X12S)) if(NOT (PCB STREQUAL X10 OR PCB STREQUAL X12S))
set(BOOTLOADER_SRC set(BOOTLOADER_SRC
${BOOTLOADER_SRC} ${BOOTLOADER_SRC}

View file

@ -245,6 +245,11 @@ int main()
backlightInit(); backlightInit();
backlightEnable(); backlightEnable();
#if defined(PCBX7) || defined(PCBXLITE)
// we shutdown the bluetooth module now to be sure it will be detected on firmware start
bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, false);
#endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
i2cInit(); i2cInit();
#endif #endif

View file

@ -106,6 +106,7 @@ void rotaryEncoderCheck()
if (g_eeGeneral.backlightMode & e_backlight_mode_keys) { if (g_eeGeneral.backlightMode & e_backlight_mode_keys) {
backlightOn(); backlightOn();
} }
inactivity.counter = 0;
#endif #endif
} }
} }

View file

@ -116,17 +116,18 @@ struct MultiModuleStatus {
uint8_t patch; uint8_t patch;
uint8_t flags; uint8_t flags;
uint8_t requiresFailsafeCheck;
tmr10ms_t lastUpdate; tmr10ms_t lastUpdate;
void getStatusString(char* statusText); void getStatusString(char* statusText);
inline bool isValid() { return (bool)(get_tmr10ms() - lastUpdate < 200); } inline bool isValid() const { return (bool)(get_tmr10ms() - lastUpdate < 200); }
inline bool supportsFailsafe() { return (bool) (flags & 0x20); } inline bool supportsFailsafe() const { return (bool) (flags & 0x20); }
inline bool isWaitingforBind() { return (bool) (flags & 0x10); } inline bool isWaitingforBind() const { return (bool) (flags & 0x10); }
inline bool isBinding() { return (bool) (flags & 0x08); } inline bool isBinding() const { return (bool) (flags & 0x08); }
inline bool protocolValid() { return (bool) (flags & 0x04); } inline bool protocolValid() const { return (bool) (flags & 0x04); }
inline bool serialMode() { return (bool) (flags & 0x02); } inline bool serialMode() const { return (bool) (flags & 0x02); }
inline bool inputDetected() { return (bool) (flags & 0x01); } inline bool inputDetected() const { return (bool) (flags & 0x01); }
}; };
MultiModuleStatus& getMultiModuleStatus(uint8_t module); MultiModuleStatus& getMultiModuleStatus(uint8_t module);

View file

@ -51,9 +51,6 @@
#define LEN_VBEEPMODE TR("\005","\012") #define LEN_VBEEPMODE TR("\005","\012")
#define TR_VBEEPMODE TR("Tichý""Alarm""BezKl""Vše\0", "Tichý\0 ""Jen alarm\0""Bez kláves""Vše\0 ") #define TR_VBEEPMODE TR("Tichý""Alarm""BezKl""Vše\0", "Tichý\0 ""Jen alarm\0""Bez kláves""Vše\0 ")
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "Ne REaREb"
#define LEN_VBLMODE TR("\005", "\007") #define LEN_VBLMODE TR("\005", "\007")
#define TR_VBLMODE TR("Vyp\0 ""Kláv.""Páky\0""Vše\0 ""Zap\0 ", "Vypnuto""Klávesy""Páky\0 ""Vše\0 ""Zapnuto") #define TR_VBLMODE TR("Vyp\0 ""Kláv.""Páky\0""Vše\0 ""Zap\0 ", "Vypnuto""Klávesy""Páky\0 ""Vše\0 ""Zapnuto")
@ -512,7 +509,6 @@
#define TR_MODEL_STILL_POWERED "Model stále spuštěn" #define TR_MODEL_STILL_POWERED "Model stále spuštěn"
#define TR_MODEL_SHUTDOWN "Vypnout ?" #define TR_MODEL_SHUTDOWN "Vypnout ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Zmáčkni enter pro potvrzení" #define TR_PRESS_ENTER_TO_CONFIRM "Zmáčkni enter pro potvrzení"
#define TR_RENAVIG "Navig. RotEnc"
#define TR_THROTTLE_LABEL "Plyn" #define TR_THROTTLE_LABEL "Plyn"
#define TR_THROTTLEREVERSE TR("ReversPlyn", INDENT"Revers plynu") #define TR_THROTTLEREVERSE TR("ReversPlyn", INDENT"Revers plynu")
#define TR_MINUTEBEEP TR("Minuta", "Oznamovat minuty") #define TR_MINUTEBEEP TR("Minuta", "Oznamovat minuty")
@ -563,11 +559,9 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA" #define TR_NODATA CENTER "NO DATA"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%" #define TR_US "us"
#define TR_US "us" #define TR_TMIXMAXMS "Tmix max"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #define TR_FREE_STACK "Free stack"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" >> Reset" #define TR_MENUTORESET TR_ENTER" >> Reset"
#define TR_PPM_TRAINER "TR" #define TR_PPM_TRAINER "TR"
#define TR_CH "CH" #define TR_CH "CH"
@ -667,7 +661,6 @@
#define TR_PITCH_AT_ZERO INDENT "Tón na nule" #define TR_PITCH_AT_ZERO INDENT "Tón na nule"
#define TR_PITCH_AT_MAX INDENT "Tón na maximu" #define TR_PITCH_AT_MAX INDENT "Tón na maximu"
#define TR_REPEAT_AT_ZERO TR(INDENT "Opak. na nule", INDENT "Opakování na nule") #define TR_REPEAT_AT_ZERO TR(INDENT "Opak. na nule", INDENT "Opakování na nule")
#define TR_POWEROFF "\027Vypínám..."
#define TR_SHUTDOWN "Vypínání.." #define TR_SHUTDOWN "Vypínání.."
#define TR_SAVEMODEL "Ukládám nastavení modelu" #define TR_SAVEMODEL "Ukládám nastavení modelu"
#define TR_BATT_CALIB "Kalib. bat." #define TR_BATT_CALIB "Kalib. bat."

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Stumm""Alarm""NoKey""Alle\0" #define TR_VBEEPMODE "Stumm""Alarm""NoKey""Alle\0"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "AUSDGaDGb"
#define LEN_VBLMODE "\005" #define LEN_VBLMODE "\005"
#define TR_VBLMODE "AUS\0 ""Taste""Stks\0""Beide""EIN\0 " // Anpassung #define TR_VBLMODE "AUS\0 ""Taste""Stks\0""Beide""EIN\0 " // Anpassung
@ -514,7 +511,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG TR ("Rol", "Drehgeb. Navig.")
#define TR_THROTTLE_LABEL "Gas-Kontrolle" #define TR_THROTTLE_LABEL "Gas-Kontrolle"
#define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis #define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis
#define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm") #define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm")
@ -567,9 +563,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Keine Daten" #define TR_NODATA CENTER"Keine Daten"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAS\037\146GS%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Freier Stack" #define TR_FREE_STACK "Freier Stack"
#define TR_MENUTORESET TR_ENTER " für Reset" #define TR_MENUTORESET TR_ENTER " für Reset"
@ -669,7 +663,6 @@
#define TR_PITCH_AT_ZERO INDENT "Töne sinken" #define TR_PITCH_AT_ZERO INDENT "Töne sinken"
#define TR_PITCH_AT_MAX INDENT "Töne steigen" #define TR_PITCH_AT_MAX INDENT "Töne steigen"
#define TR_REPEAT_AT_ZERO INDENT "Wiederholrate" #define TR_REPEAT_AT_ZERO INDENT "Wiederholrate"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "Herunterfahren" #define TR_SHUTDOWN "Herunterfahren"
#define TR_SAVEMODEL "Modelleinstellungen speichern" #define TR_SAVEMODEL "Modelleinstellungen speichern"
#define TR_BATT_CALIB TR("AkkuSpgwert", "Akku Kalibrierung") #define TR_BATT_CALIB TR("AkkuSpgwert", "Akku Kalibrierung")

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Quiet""Alarm""NoKey""All\0 " #define TR_VBEEPMODE "Quiet""Alarm""NoKey""All\0 "
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE TR("\004", "\010") #define LEN_VBLMODE TR("\004", "\010")
#define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ") #define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ")
@ -409,7 +406,6 @@
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define TR_POPUPS_ENTER_EXIT TR(TR_EXIT "\010" TR_ENTER, TR_EXIT "\010" "\010" "\010" "\010" TR_ENTER) #define TR_POPUPS_ENTER_EXIT TR(TR_EXIT "\010" TR_ENTER, TR_EXIT "\010" "\010" "\010" "\010" TR_ENTER)
#else #else
#define TR_POPUPS_ENTER_EXIT TR_ENTER "\010" TR_EXIT #define TR_POPUPS_ENTER_EXIT TR_ENTER "\010" TR_EXIT
#endif #endif
@ -510,11 +506,10 @@
#define TR_INACTIVITYALARM INDENT "Inactivity" #define TR_INACTIVITYALARM INDENT "Inactivity"
#define TR_MEMORYWARNING INDENT "Memory low" #define TR_MEMORYWARNING INDENT "Memory low"
#define TR_ALARMWARNING INDENT "Sound off" #define TR_ALARMWARNING INDENT "Sound off"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown") #define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check RSSI on shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse") #define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse")
#define TR_MINUTEBEEP TR("Minute", "Minute call") #define TR_MINUTEBEEP TR("Minute", "Minute call")
@ -567,11 +562,9 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA" #define TR_NODATA CENTER "NO DATA"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%" #define TR_US "us"
#define TR_US "us" #define TR_TMIXMAXMS "Tmix max"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #define TR_FREE_STACK "Free stack"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " to reset" #define TR_MENUTORESET TR_ENTER " to reset"
#define TR_PPM_TRAINER "TR" #define TR_PPM_TRAINER "TR"
#define TR_CH "CH" #define TR_CH "CH"
@ -634,7 +627,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune") #define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry" #define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency") #define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
#define TR_RFPOWER "RF Power" #define TR_RFPOWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value") #define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel") #define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@ -669,7 +662,6 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch zero" #define TR_PITCH_AT_ZERO INDENT "Pitch zero"
#define TR_PITCH_AT_MAX INDENT "Pitch max" #define TR_PITCH_AT_MAX INDENT "Pitch max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat zero" #define TR_REPEAT_AT_ZERO INDENT "Repeat zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "SHUTTING DOWN" #define TR_SHUTDOWN "SHUTTING DOWN"
#define TR_SAVEMODEL "Saving model settings" #define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB TR("Batt. calib", "Battery calibration") #define TR_BATT_CALIB TR("Batt. calib", "Battery calibration")
@ -785,7 +777,6 @@
#define TR_TEMP_CALIB "Temp. Calib" #define TR_TEMP_CALIB "Temp. Calib"
#define TR_TIME "Time" #define TR_TIME "Time"
#define TR_MAXBAUDRATE "Max bauds" #define TR_MAXBAUDRATE "Max bauds"
#define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH "Bluetooth"
#define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_DISC "Discover"
#define TR_BLUETOOTH_INIT "Init" #define TR_BLUETOOTH_INIT "Init"
@ -1085,7 +1076,7 @@
#define TR_BEEP_VOLUME "Beep volume" #define TR_BEEP_VOLUME "Beep volume"
#define TR_WAV_VOLUME "Wav volume" #define TR_WAV_VOLUME "Wav volume"
#define TR_BG_VOLUME TR("Bg volume", "Background Volume") #define TR_BG_VOLUME TR("Bg volume", "Background volume")
#define TR_TOP_BAR "Top bar" #define TR_TOP_BAR "Top bar"
#define TR_FLASH_ERASE "Flash erase..." #define TR_FLASH_ERASE "Flash erase..."

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo " #define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo "
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE "\004" #define LEN_VBLMODE "\004"
#define TR_VBLMODE "OFF ""Keys""Stks""Both""ON\0" #define TR_VBLMODE "OFF ""Keys""Stks""Both""ON\0"
@ -534,7 +531,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("Invert_Acel", INDENT "Invertir Acel.") #define TR_THROTTLEREVERSE TR("Invert_Acel", INDENT "Invertir Acel.")
#define TR_MINUTEBEEP TR("Minuto", "Cada Minuto") #define TR_MINUTEBEEP TR("Minuto", "Cada Minuto")
@ -581,9 +577,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "SIN DATOS" #define TR_NODATA CENTER "SIN DATOS"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER "Resetear" #define TR_MENUTORESET TR_ENTER "Resetear"
@ -692,7 +686,6 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "APAGANDO" #define TR_SHUTDOWN "APAGANDO"
#define TR_SAVEMODEL "Saving model settings" #define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Calib.bateria" #define TR_BATT_CALIB "Calib.bateria"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Äänet""Hälyt""EiNap""Kaikk" #define TR_VBEEPMODE "Äänet""Hälyt""EiNap""Kaikk"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE TR("\004", "\010") #define LEN_VBLMODE TR("\004", "\010")
#define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ") #define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ")
@ -526,7 +523,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Throttle reverse") #define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Throttle reverse")
#define TR_MINUTEBEEP TR("Minute", "Minute call") #define TR_MINUTEBEEP TR("Minute", "Minute call")
@ -573,9 +569,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA" #define TR_NODATA CENTER "NO DATA"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
@ -686,7 +680,6 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "SHUTTING DOWN" #define TR_SHUTDOWN "SHUTTING DOWN"
#define TR_SAVEMODEL "Saving model settings" #define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Battery Calib" #define TR_BATT_CALIB "Battery Calib"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Aucun""Alarm""NoKey""Tout\0" #define TR_VBEEPMODE "Aucun""Alarm""NoKey""Tout\0"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "NonREaREb"
#define LEN_VBLMODE TR("\004", "\011") #define LEN_VBLMODE TR("\004", "\011")
#define TR_VBLMODE TR("OFF\0""Btns""Ctrl""Tous""ON\0","OFF\0 ""Touches\0 ""Controles""Tous\0 ""ON\0 ") #define TR_VBLMODE TR("OFF\0""Btns""Ctrl""Tous""ON\0","OFF\0 ""Touches\0 ""Controles""Tous\0 ""ON\0 ")
@ -532,7 +529,6 @@
#define TR_MODEL_STILL_POWERED TR("Modèle allumé", "Modèle encore allumé") #define TR_MODEL_STILL_POWERED TR("Modèle allumé", "Modèle encore allumé")
#define TR_MODEL_SHUTDOWN "Eteindre ?" #define TR_MODEL_SHUTDOWN "Eteindre ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Presser [Enter] pour confirmer" #define TR_PRESS_ENTER_TO_CONFIRM "Presser [Enter] pour confirmer"
#define TR_RENAVIG "Navig EncRot"
#define TR_THROTTLE_LABEL "Gaz" #define TR_THROTTLE_LABEL "Gaz"
#define TR_THROTTLEREVERSE TR("Inv. gaz", INDENT "Inversion gaz") #define TR_THROTTLEREVERSE TR("Inv. gaz", INDENT "Inversion gaz")
#define TR_MINUTEBEEP TR("Bip min.", "Annonces minutes") #define TR_MINUTEBEEP TR("Bip min.", "Annonces minutes")
@ -583,10 +579,8 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA" #define TR_NODATA CENTER "NO DATA"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAZ\037\146GZ%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" #define TR_TMR1LATMINUS "Tmr1Lat min\037\124us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
@ -689,7 +683,6 @@
#define TR_PITCH_AT_ZERO INDENT "Tonalité zéro" #define TR_PITCH_AT_ZERO INDENT "Tonalité zéro"
#define TR_PITCH_AT_MAX INDENT "Tonalité max" #define TR_PITCH_AT_MAX INDENT "Tonalité max"
#define TR_REPEAT_AT_ZERO TR(INDENT "Interv. zéro", INDENT "Intervalle au zéro") #define TR_REPEAT_AT_ZERO TR(INDENT "Interv. zéro", INDENT "Intervalle au zéro")
#define TR_POWEROFF "\037\120ARRET..."
#define TR_SHUTDOWN "ARRET EN COURS" #define TR_SHUTDOWN "ARRET EN COURS"
#define TR_SAVEMODEL "Sauvegarde modèle..." #define TR_SAVEMODEL "Sauvegarde modèle..."
#define TR_BATT_CALIB "Calib. batt" #define TR_BATT_CALIB "Calib. batt"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE TR("\005", "\010") #define LEN_VBEEPMODE TR("\005", "\010")
#define TR_VBEEPMODE TR("Silen""Avvis""Notst""Tutti","Silente ""Avvisi\0 ""No Tasti""Tutti\0 ") #define TR_VBEEPMODE TR("Silen""Avvis""Notst""Tutti","Silente ""Avvisi\0 ""No Tasti""Tutti\0 ")
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE TR("\005", "\006") #define LEN_VBLMODE TR("\005", "\006")
#define TR_VBLMODE TR("OFF\0 ""Tasti""Stks\0""Tutti""ON\0 ", "Spenta""Tasti\0""Sticks""Tutti\0""Accesa") #define TR_VBLMODE TR("OFF\0 ""Tasti""Stks\0""Tutti""ON\0 ", "Spenta""Tasti\0""Sticks""Tutti\0""Accesa")
@ -533,7 +530,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Navig EncRot "
#define TR_THROTTLE_LABEL "Motore" #define TR_THROTTLE_LABEL "Motore"
#define TR_THROTTLEREVERSE TR("Mot inv.", INDENT "Motore Inverso") #define TR_THROTTLEREVERSE TR("Mot inv.", INDENT "Motore Inverso")
#define TR_MINUTEBEEP "Minuto" #define TR_MINUTEBEEP "Minuto"
@ -584,9 +580,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"DATI ASSENTI" #define TR_NODATA CENTER"DATI ASSENTI"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" x Azzerare" #define TR_MENUTORESET TR_ENTER" x Azzerare"
@ -687,7 +681,6 @@
#define TR_PITCH_AT_ZERO INDENT "Tono a Zero" #define TR_PITCH_AT_ZERO INDENT "Tono a Zero"
#define TR_PITCH_AT_MAX INDENT "Tono al Max" #define TR_PITCH_AT_MAX INDENT "Tono al Max"
#define TR_REPEAT_AT_ZERO INDENT "Ripeti a Zero" #define TR_REPEAT_AT_ZERO INDENT "Ripeti a Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "ARRESTO.." #define TR_SHUTDOWN "ARRESTO.."
#define TR_SAVEMODEL "Salvataggio dati modello" #define TR_SAVEMODEL "Salvataggio dati modello"
#define TR_BATT_CALIB "Calibra batt." #define TR_BATT_CALIB "Calibra batt."

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Stil\0""Alarm""NoKey""Alles" #define TR_VBEEPMODE "Stil\0""Alarm""NoKey""Alles"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "UITREaREb"
#define LEN_VBLMODE TR("\005", "\010") #define LEN_VBLMODE TR("\005", "\010")
#define TR_VBLMODE TR("UIT\0 ""Keys\0""Stick""Beide""AAN\0 ", "UIT\0 ""Toetsen\0""Sticks\0 ""Beide\0 ""AAN\0 ") #define TR_VBLMODE TR("UIT\0 ""Keys\0""Stick""Beide""AAN\0 ", "UIT\0 ""Toetsen\0""Sticks\0 ""Beide\0 ""AAN\0 ")
@ -516,7 +513,6 @@ TR_GYR_VSRCRAW
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Stappenschakelaar"
#define TR_THROTTLE_LABEL "Gas" #define TR_THROTTLE_LABEL "Gas"
#define TR_THROTTLEREVERSE TR("Reverse", INDENT "Omgekeerd") #define TR_THROTTLEREVERSE TR("Reverse", INDENT "Omgekeerd")
#define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm") #define TR_MINUTEBEEP TR("Min-Alarm", "Minuten-Alarm")
@ -569,9 +565,7 @@ TR_GYR_VSRCRAW
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Geen Data" #define TR_NODATA CENTER"Geen Data"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" voor Reset" #define TR_MENUTORESET TR_ENTER" voor Reset"
@ -675,7 +669,6 @@ TR_GYR_VSRCRAW
#define TR_PITCH_AT_ZERO INDENT "Laagste Toon" #define TR_PITCH_AT_ZERO INDENT "Laagste Toon"
#define TR_PITCH_AT_MAX INDENT "Hoogste Toon" #define TR_PITCH_AT_MAX INDENT "Hoogste Toon"
#define TR_REPEAT_AT_ZERO INDENT "Herhalen bij 0" #define TR_REPEAT_AT_ZERO INDENT "Herhalen bij 0"
#define TR_POWEROFF "\027Uitschakelen..."
#define TR_SHUTDOWN "Afsluiten" #define TR_SHUTDOWN "Afsluiten"
#define TR_SAVEMODEL "Bewaar Model-instellingen" #define TR_SAVEMODEL "Bewaar Model-instellingen"
#define TR_BATT_CALIB "Accu Calib" #define TR_BATT_CALIB "Accu Calib"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Cichy""Alarm""BezPr""Wsz.\0" #define TR_VBEEPMODE "Cichy""Alarm""BezPr""Wsz.\0"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE TR("\004", "\010") #define LEN_VBLMODE TR("\004", "\010")
#define TR_VBLMODE TR("Wył\0""Przy""Drąż""Oba\0""Zał\0", "Wyłącz ""Przycisk""Drązki\0 ""Oba\0 ""Włącz ") #define TR_VBLMODE TR("Wył\0""Przy""Drąż""Oba\0""Zał\0", "Wyłącz ""Przycisk""Drązki\0 ""Oba\0 ""Włącz ")
@ -533,7 +530,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Nawigacja potencjometrem"
#define TR_THROTTLE_LABEL "Gaz " #define TR_THROTTLE_LABEL "Gaz "
#define TR_THROTTLEREVERSE TR("OdwrGaz", INDENT "OdwrGaz") #define TR_THROTTLEREVERSE TR("OdwrGaz", INDENT "OdwrGaz")
#define TR_MINUTEBEEP TR("Minuta", "PikCoMinutę") #define TR_MINUTEBEEP TR("Minuta", "PikCoMinutę")
@ -584,9 +580,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "BrakDAN" #define TR_NODATA CENTER "BrakDAN"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "TmixMaks" #define TR_TMIXMAXMS "TmixMaks"
#define TR_FREE_STACK "Wolny stos" #define TR_FREE_STACK "Wolny stos"
#define TR_MENUTORESET TR_ENTER " >> Reset" #define TR_MENUTORESET TR_ENTER " >> Reset"
@ -687,7 +681,6 @@
#define TR_PITCH_AT_ZERO INDENT "Ton przy Zerze" #define TR_PITCH_AT_ZERO INDENT "Ton przy Zerze"
#define TR_PITCH_AT_MAX INDENT "Ton przy Max" #define TR_PITCH_AT_MAX INDENT "Ton przy Max"
#define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze" #define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze"
#define TR_POWEROFF "\027Wyłączanie.."
#define TR_SHUTDOWN "Wyłączanie.." #define TR_SHUTDOWN "Wyłączanie.."
#define TR_SAVEMODEL "Zapisz ustwienia modelu" #define TR_SAVEMODEL "Zapisz ustwienia modelu"
#define TR_BATT_CALIB "Kalib:Baterii" #define TR_BATT_CALIB "Kalib:Baterii"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo " #define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo "
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "No REaREb"
#define LEN_VBLMODE "\004" #define LEN_VBLMODE "\004"
#define TR_VBLMODE "OFF ""Chav""Stks""Tudo""ON\0" #define TR_VBLMODE "OFF ""Chav""Stks""Tudo""ON\0"
@ -519,7 +516,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("Inverte Acel.", INDENT "Inverte Acel.") #define TR_THROTTLEREVERSE TR("Inverte Acel.", INDENT "Inverte Acel.")
#define TR_MINUTEBEEP "Beep Minuto" #define TR_MINUTEBEEP "Beep Minuto"
@ -566,9 +562,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"SEM DADOS" #define TR_NODATA CENTER"SEM DADOS"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" Reinicia" #define TR_MENUTORESET TR_ENTER" Reinicia"
@ -677,7 +671,6 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "DESLIGANDOo" #define TR_SHUTDOWN "DESLIGANDOo"
#define TR_SAVEMODEL "Saving model settings" #define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "CALIBRAR BATT" #define TR_BATT_CALIB "CALIBRAR BATT"

View file

@ -52,9 +52,6 @@
#define LEN_VBEEPMODE "\005" #define LEN_VBEEPMODE "\005"
#define TR_VBEEPMODE "Tyst\0""Alarm""EjKnp""Alla\0" #define TR_VBEEPMODE "Tyst\0""Alarm""EjKnp""Alla\0"
#define LEN_VRENAVIG "\003"
#define TR_VRENAVIG "IngREaREb"
#define LEN_VBLMODE TR("\005", "\010") #define LEN_VBLMODE TR("\005", "\010")
#define TR_VBLMODE TR("Av\0 ""Knapp""Spak\0""Allt\0""På\0 ", "Av\0 ""Knappar\0""Spakar\0 ""Allt\0 ""På\0 ") #define TR_VBLMODE TR("Av\0 ""Knapp""Spak\0""Allt\0""På\0 ", "Av\0 ""Knappar\0""Spakar\0 ""Allt\0 ""På\0 ")
@ -532,7 +529,6 @@
#define TR_MODEL_STILL_POWERED "Model still powered" #define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?" #define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm" #define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnk Navig"
#define TR_THROTTLE_LABEL "Gas" #define TR_THROTTLE_LABEL "Gas"
#define TR_THROTTLEREVERSE TR("Inv.Gas", INDENT "Inverterad Gas") #define TR_THROTTLEREVERSE TR("Inv.Gas", INDENT "Inverterad Gas")
#define TR_MINUTEBEEP "Minutpip" #define TR_MINUTEBEEP "Minutpip"
@ -583,9 +579,7 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "DATA SAKNAS" #define TR_NODATA CENTER "DATA SAKNAS"
#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " Nollar" #define TR_MENUTORESET TR_ENTER " Nollar"
@ -686,7 +680,6 @@
#define TR_PITCH_AT_ZERO INDENT "Ton vid Noll" #define TR_PITCH_AT_ZERO INDENT "Ton vid Noll"
#define TR_PITCH_AT_MAX INDENT "Ton vid Max" #define TR_PITCH_AT_MAX INDENT "Ton vid Max"
#define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll" #define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll"
#define TR_POWEROFF "\027Stänger Av..."
#define TR_SHUTDOWN "STÄNGER AV" #define TR_SHUTDOWN "STÄNGER AV"
#define TR_SAVEMODEL "Spara modellinställn." #define TR_SAVEMODEL "Spara modellinställn."
#define TR_BATT_CALIB "Kalib. Batteri" #define TR_BATT_CALIB "Kalib. Batteri"

77
tools/release23/build-sdcard.sh Executable file
View file

@ -0,0 +1,77 @@
#!/bin/bash
set -e
set -x
workdir=/home/opentx/release23
output=/var/www/html/2.3/release
# Handle opentx.sdcard.version
sdcard_version="2.3V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g')
echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version
echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version
echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version
if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version
then
exit
else
cd ${workdir}
# Copy git sdcard data
rm -Rf ${workdir}/sdcard
cp -r ${workdir}/code/radio/sdcard .
# Get images for Horus
mkdir -p ${workdir}/sdcard/horus/IMAGES
cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/
# Request sound pack generation
if [[ ! -d /tmp/SOUNDS/fr ]];then
${workdir}/code/tools/release23/tts.py en csv files
fi
if [[ ! -d /tmp/SOUNDS/es ]];then
${workdir}/code/tools/release23/tts.py fr csv files
fi
if [[ ! -d /tmp/SOUNDS/it ]];then
${workdir}/code/tools/release23/tts.py es csv files
fi
if [[ ! -d /tmp/SOUNDS/de ]];then
${workdir}/code/tools/release23/tts.py it csv files
fi
if [[ ! -d /tmp/SOUNDS/cz ]];then
${workdir}/code/tools/release23/tts.py de csv files
fi
if [[ ! -d /tmp/SOUNDS/pl ]];then
${workdir}/code/tools/release23/tts.py cz csv files
fi
if [[ ! -d /tmp/SOUNDS/ru ]];then
${workdir}/code/tools/release23/tts.py pt csv files
fi
${workdir}/code/tools/release23/tts.py ru csv psv files
# Create sdcards.zips for supported platforms
mv /tmp/SOUNDS ${workdir}/sdcard/horus/
mkdir ${workdir}/sdcard/taranis-x9/SOUNDS
mkdir ${workdir}/sdcard/taranis-x7/SOUNDS
cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/
cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/
cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/sdcard-horus-${sdcard_version}.zip *
cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/sdcard-taranis-x9-${sdcard_version}.zip *
cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip *
# Create symlinks for other radios
ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-xlite-${sdcard_version}.zip
ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-x9lite-${sdcard_version}.zip
ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-jumper-t12-${sdcard_version}.zip
# remove LUA stuff for 9x platform
rm -Rf ${workdir}/sdcard/taranis-x7/SCRIPTS
rm -Rf ${workdir}/sdcard/taranis-x7/FrSky-utilities
cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-9xarm-${sdcard_version}.zip *
rm -Rf ${workdir}/sdcard
cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}
fi

152
tools/release23/tts.py Executable file
View file

@ -0,0 +1,152 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This script is a modified version to support Linux TTS fiel genration using PicoTTS
# Sound pack maintainers (incomplete list) by language alphabetical order
# Czech : Martin Hotar
# French : Bertrand Songis & André Bernet
# English : Rob Thompson & Martin Hotar
# German : Romolo Manfredini (Some corrections by Peer)
# Italian : Romolo Manfredini
# Portuguese : Romolo Manfredini
# Spanish : Romolo Manfredini (With the help of Jose Moreno)
# from __future__ import print_function
import os
import sys
import subprocess
import zipfile
from gtts import gTTS
from tts_common import *
board = "taranis"
reload(sys)
sys.setdefaultencoding('utf8')
SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util'))
sys.path.append(lib_path)
def generate(str, filename):
if 0:
output = "output.wav"
command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str)
os.system(command.encode('utf-8'))
command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename)
os.system(command.encode('utf-8'))
else:
output = u"output.mp3"
tts = gTTS(text=str, lang=voice[:2])
tts.save(output)
command = "sox --norm %s -r 32000 %s tempo 1.2" % (output, filename)
os.system(command.encode('utf-8'))
command = "rm -f output.mp3"
os.system(command.encode('utf-8'))
################################################################
if __name__ == "__main__":
if "en" in sys.argv:
from tts_en import systemSounds, sounds
directory = "en"
voice = "en-US"
elif "fr" in sys.argv:
from tts_fr import systemSounds, sounds
directory = "fr"
voice = "fr-FR"
elif "it" in sys.argv:
from tts_it import systemSounds, sounds
directory = "it"
voice = "it-IT"
elif "de" in sys.argv:
from tts_de import systemSounds, sounds
directory = "de"
voice = "de-DE"
elif "es" in sys.argv:
from tts_es import systemSounds, sounds
directory = "es"
voice = "es-ES"
elif "cz" in sys.argv:
from tts_cz import systemSounds, sounds
directory = "cz"
voice = "cs-CZ"
elif "ru" in sys.argv:
from tts_ru import systemSounds, sounds
directory = "ru"
voice = "ru-RU"
elif "pt" in sys.argv:
from tts_pt import systemSounds, sounds
directory = "pt"
voice = "pt-PT"
else:
print("which language?")
exit()
if "csv" in sys.argv:
path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
if not os.path.exists(path):
os.makedirs(path)
os.chdir(path)
with open("%s-%s.csv" % (voice, board), "wb") as csvFile:
for s, f in systemSounds:
if s and f:
l = u""
if board in ("sky9x", "taranis"):
l += u"SOUNDS/%s/SYSTEM;" % directory
l += f + u";" + s + u"\n"
csvFile.write(l.encode("utf-8"))
for s, f in sounds:
if s and f:
l = u""
if board in ("sky9x", "taranis"):
l += u"SOUNDS/%s;" % directory
l += f + u";" + s + u"\n"
csvFile.write(l.encode("utf-8"))
if "psv" in sys.argv:
path = "/tmp/SOUNDS/" + directory + "/"
if not os.path.exists(path):
os.makedirs(path)
os.chdir(path)
with open("%s-%s.psv" % (voice, board), "wb") as csvFile:
for s, f in systemSounds:
if s and f:
l = u"SYSTEM|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
csvFile.write(l.encode("windows-1251"))
for s, f in sounds:
if s and f:
l = u"|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
csvFile.write(l.encode("windows-1251"))
if "files" in sys.argv:
path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
if not os.path.exists(path):
os.makedirs(path)
os.chdir(path)
for s, f in systemSounds:
if s and f:
generate(s, f)
os.chdir("..")
for s, f in sounds:
if s and f:
generate(s, f)

View file

@ -0,0 +1,14 @@
NO_ALTERNATE = 1024
PROMPT_CUSTOM_BASE = 256
PROMPT_SYSTEM_BASE = 0
board = "taranis"
import sys
def filename(idx, alternate=0):
ext = ".wav"
if isinstance(idx, int):
result = "%04d%s" % (idx, ext)
elif board in ('sky9x', 'taranis'):
result = idx + ext
return result