Merge with latest 2.3

This commit is contained in:
Bertrand Songis
2020-03-25 12:33:53 +01:00
34 changed files with 788 additions and 497 deletions
@@ -1345,11 +1345,12 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* Radiomaster TX16S board */
// TX16S is unavailable until finalized
/* Radiomaster TX16S board
firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S);
addOpenTxFrskyOptions(firmware);
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
registerOpenTxFirmware(firmware);
registerOpenTxFirmware(firmware);*/
/* 9XR-Pro */
firmware = new OpenTxFirmware("opentx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
+6 -9
View File
@@ -130,8 +130,6 @@ enum MenuModelSetupItems {
#define MODEL_SETUP_2ND_COLUMN (LCD_W-17*FW-MENUS_SCROLLBAR_WIDTH-1)
#define MODEL_SETUP_3RD_COLUMN (MODEL_SETUP_2ND_COLUMN+6*FW)
#define MODEL_SETUP_BIND_OFS 3*FW-2
#define MODEL_SETUP_RANGE_OFS 7*FW
#define MODEL_SETUP_SET_FAILSAFE_OFS 10*FW-2
void copySelection(char * dst, const char * src, uint8_t size)
@@ -353,7 +351,7 @@ void menuModelSetup(event_t event)
LABEL(InternalModule),
INTERNAL_MODULE_TYPE_ROWS,
MODULE_CHANNELS_ROWS(INTERNAL_MODULE),
IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(isModuleRangeAvailable(INTERNAL_MODULE)? (uint8_t)2 : (uint8_t)1)), // RxNum, Range check and Register buttons
IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(isModuleBindRangeAvailable(INTERNAL_MODULE)? (uint8_t)2 : (uint8_t)1)), // RxNum, Range check and Register buttons
IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), // RxNum for ACCESS
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Failsafe
IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 1), // Range check and Register buttons
@@ -1093,9 +1091,8 @@ void menuModelSetup(event_t event)
}
else {
horzpos_t l_posHorz = menuHorizontalPosition;
coord_t xOffsetBind = MODEL_SETUP_BIND_OFS;
coord_t bindButtonPos = MODEL_SETUP_2ND_COLUMN;
if (!isModuleRxNumAvailable(moduleIdx)) {
xOffsetBind = 0;
lcdDrawText(INDENT_WIDTH, y, STR_RECEIVER);
if (attr) l_posHorz += 1;
}
@@ -1103,8 +1100,8 @@ void menuModelSetup(event_t event)
lcdDrawText(INDENT_WIDTH, y, STR_RECEIVER_NUM);
}
if (isModuleBindRangeAvailable(moduleIdx)) {
if (xOffsetBind)
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
bindButtonPos = lcdNextPos + FW;
if (attr && l_posHorz==0) {
if (s_editMode>0) {
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], getMaxRxNum(moduleIdx));
@@ -1121,8 +1118,8 @@ void menuModelSetup(event_t event)
}
}
}
lcdDrawText(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0);
lcdDrawText(bindButtonPos, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
lcdDrawText(lcdNextPos + FW, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0);
uint8_t newFlag = 0;
#if defined(MULTIMODULE)
if (getMultiBindStatus(moduleIdx) == MULTI_BIND_FINISHED) {
+34 -10
View File
@@ -387,11 +387,11 @@ void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value,
lcdDrawText(x, y, "OK", flags);
}
else {
for (uint8_t i=0; i<16; i++) {
if (value & (1 << i)) {
for (uint8_t i = 0; i < 16; i++) {
if (value & (1u << i)) {
char s[] = "CH__ KO";
strAppendUnsigned(&s[2], i+1, 2);
lcdDrawText(x, flags & DBLSIZE ? y+1 : y, s, flags & ~DBLSIZE);
strAppendUnsigned(&s[2], i + 1, 2);
lcdDrawText(x, flags & DBLSIZE ? y + 1 : y, s, flags & ~DBLSIZE);
break;
}
}
@@ -399,7 +399,7 @@ void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value,
}
else {
if (value == 0) {
lcdDrawText(x, flags & DBLSIZE ? y+1 : y, "Rx OK", flags & ~DBLSIZE);
lcdDrawText(x, flags & DBLSIZE ? y + 1 : y, "Rx OK", flags & ~DBLSIZE);
}
else {
static const char * const RXS_STATUS[] = {
@@ -415,23 +415,47 @@ void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value,
"Rx1 NS",
"Rx2 NS",
};
for (uint8_t i=0; i<DIM(RXS_STATUS); i++) {
if (value & (1<<i)) {
lcdDrawText(x, flags & DBLSIZE ? y+1 : y, RXS_STATUS[i], flags & ~DBLSIZE);
for (uint8_t i = 0; i < DIM(RXS_STATUS); i++) {
if (value & (1u << i)) {
lcdDrawText(x, flags & DBLSIZE ? y + 1 : y, RXS_STATUS[i], flags & ~DBLSIZE);
break;
}
}
}
}
}
else if (telemetrySensor.id >= RB3040_OUTPUT_FIRST_ID && telemetrySensor.id <= RB3040_OUTPUT_LAST_ID) {
if (telemetrySensor.subId == 0) {
if (value == 0) {
lcdDrawText(x, y, "OK", flags);
}
else {
for (uint8_t i = 0; i < 9; i++) {
if (value & (1u << i)) {
if (i < 8) {
char s[] = "CH__ KO";
strAppendUnsigned(&s[2], i + 17, 2);
lcdDrawText(x, flags & DBLSIZE ? y + 1 : y, s, flags & ~DBLSIZE);
break;
}
else {
char s[] = "S.P Ovl";
lcdDrawText(x, flags & DBLSIZE ? y + 1 : y, s, flags & ~DBLSIZE);
break;
}
}
}
}
}
}
}
}
else if (telemetrySensor.unit == UNIT_TEXT) {
lcdDrawSizedText(x, flags & DBLSIZE ? y+1 : y, telemetryItem.text, sizeof(telemetryItem.text), flags & ~DBLSIZE);
lcdDrawSizedText(x, flags & DBLSIZE ? y + 1 : y, telemetryItem.text, sizeof(telemetryItem.text), flags & ~DBLSIZE);
}
else {
if (telemetrySensor.prec > 0) {
flags |= (telemetrySensor.prec==1 ? PREC1 : PREC2);
flags |= (telemetrySensor.prec == 1 ? PREC1 : PREC2);
}
drawValueWithUnit(x, y, value, telemetrySensor.unit == UNIT_CELLS ? UNIT_VOLTS : telemetrySensor.unit, flags);
}
@@ -46,14 +46,18 @@ void onRxOptionsUpdateConfirm(const char * result)
enum {
ITEM_RECEIVER_SETTINGS_PWM_RATE,
ITEM_RECEIVER_SETTINGS_TELEMETRY,
ITEM_RECEIVER_SETTINGS_TELEMETRY_25MW,
ITEM_RECEIVER_SETTINGS_SPORT_FPORT,
ITEM_RECEIVER_SETTINGS_CAPABILITY_NOT_SUPPORTED1,
ITEM_RECEIVER_SETTINGS_CAPABILITY_NOT_SUPPORTED2,
ITEM_RECEIVER_SETTINGS_PINMAP_FIRST
};
#define IS_RECEIVER_CAPABILITY_ENABLED(capability) (reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].receivers[receiverId].information.capabilities & (1 << capability))
#define IF_RECEIVER_CAPABILITY(capability, count) uint8_t(IS_RECEIVER_CAPABILITY_ENABLED(capability) ? count : HIDDEN_ROW)
#define IF_RECEIVER_CAPABILITY(capability, count) uint8_t((reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].receivers[receiverId].information.capabilities & (1 << capability)) ? count : HIDDEN_ROW)
#define CH_ENABLE_SPORT 4
#define CH_ENABLE_SBUS 5
void menuModelReceiverOptions(event_t event)
{
@@ -76,6 +80,7 @@ void menuModelReceiverOptions(event_t event)
SUBMENU_NOTITLE(ITEM_RECEIVER_SETTINGS_PINMAP_FIRST + outputsCount, {
0, // PWM rate
isModuleR9MAccess(g_moduleIdx) && receiverVariant == PXX2_VARIANT_EU && reusableBuffer.hardwareAndSettings.moduleSettings.txPower > 14 /*25mW*/ ? READONLY_ROW : (uint8_t)0, // Telemetry
IF_RECEIVER_CAPABILITY(RECEIVER_CAPABILITY_TELEMETRY_25MW, 0),
IF_RECEIVER_CAPABILITY(RECEIVER_CAPABILITY_FPORT, 0),
uint8_t(reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].receivers[receiverId].information.capabilityNotSupported ? READONLY_ROW : HIDDEN_ROW),
uint8_t(reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].receivers[receiverId].information.capabilityNotSupported ? READONLY_ROW : HIDDEN_ROW),
@@ -139,7 +144,7 @@ void menuModelReceiverOptions(event_t event)
switch (i) {
case ITEM_RECEIVER_SETTINGS_PWM_RATE:
reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, isModuleR9MAccess(g_moduleIdx) ? "6.67ms PWM": "9ms PWM", attr, event);
reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, isModuleR9MAccess(g_moduleIdx) ? "6.67ms PWM": "7ms PWM", attr, event);
if (attr && checkIncDec_Ret) {
reusableBuffer.hardwareAndSettings.receiverSettings.dirty = RECEIVER_SETTINGS_DIRTY;
}
@@ -152,6 +157,13 @@ void menuModelReceiverOptions(event_t event)
}
break;
case ITEM_RECEIVER_SETTINGS_TELEMETRY_25MW:
reusableBuffer.hardwareAndSettings.receiverSettings.telemetry25mw = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.telemetry25mw, RECEIVER_OPTIONS_2ND_COLUMN, y, "25mw Tele", attr, event);
if (attr && checkIncDec_Ret) {
reusableBuffer.hardwareAndSettings.receiverSettings.dirty = RECEIVER_SETTINGS_DIRTY;
}
break;
case ITEM_RECEIVER_SETTINGS_SPORT_FPORT:
reusableBuffer.hardwareAndSettings.receiverSettings.fport = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.fport, RECEIVER_OPTIONS_2ND_COLUMN, y, "F.Port", attr, event);
if (attr && checkIncDec_Ret) {
@@ -174,27 +186,49 @@ void menuModelReceiverOptions(event_t event)
if (pin < reusableBuffer.hardwareAndSettings.receiverSettings.outputsCount) {
uint8_t & mapping = reusableBuffer.hardwareAndSettings.receiverSettings.outputsMapping[pin];
uint8_t channel = g_model.moduleData[g_moduleIdx].channelsStart + mapping;
int32_t channelValue = channelOutputs[channel];
lcdDrawText(0, y, STR_PIN);
lcdDrawNumber(lcdLastRightPos + 1, y, pin + 1);
putsChn(7 * FW, y, channel + 1, attr);
uint8_t channelMax = sentModuleChannels(g_moduleIdx) - 1;
uint8_t selectionMax = channelMax;
if (IS_RECEIVER_CAPABILITY_ENABLED(RECEIVER_CAPABILITY_ENABLE_PWM_CH5_CH6)) {
if (CH_ENABLE_SPORT == pin || CH_ENABLE_SBUS == pin)
selectionMax += 1;
if (CH_ENABLE_SPORT == pin && selectionMax == channel) {
lcdDrawText(7 * FW, y, "S.PORT", attr);
}
else if (CH_ENABLE_SBUS == pin && selectionMax == channel) {
lcdDrawText(7 * FW, y, "SBUS", attr);
}
else {
putsChn(7 * FW, y, channel + 1, attr);
}
}
else {
putsChn(7 * FW, y, channel + 1, attr);
}
// Channel
if (attr) {
mapping = checkIncDec(event, mapping, 0, sentModuleChannels(g_moduleIdx) - 1);
mapping = checkIncDec(event, mapping, 0, selectionMax);
if (checkIncDec_Ret) {
reusableBuffer.hardwareAndSettings.receiverSettings.dirty = RECEIVER_SETTINGS_DIRTY;
}
}
// Bargraph
#if !defined(PCBX7) // X7 LCD doesn't like too many horizontal lines
lcdDrawRect(RECEIVER_OPTIONS_2ND_COLUMN, y + 2, wbar + 1, 4);
#endif
const uint8_t lenChannel = limit<uint8_t>(1, (abs(channelValue) * wbar / 2 + lim / 2) / lim, wbar / 2);
const coord_t xChannel = (channelValue > 0) ? RECEIVER_OPTIONS_2ND_COLUMN + wbar / 2 : RECEIVER_OPTIONS_2ND_COLUMN + wbar / 2 + 1 - lenChannel;
lcdDrawHorizontalLine(xChannel, y + 3, lenChannel, SOLID, 0);
lcdDrawHorizontalLine(xChannel, y + 4, lenChannel, SOLID, 0);
if (channel <= channelMax) {
int32_t channelValue = channelOutputs[channel];
#if !defined(PCBX7) // X7 LCD doesn't like too many horizontal lines
lcdDrawRect(RECEIVER_OPTIONS_2ND_COLUMN, y + 2, wbar + 1, 4);
#endif
auto lenChannel = limit<uint8_t>(1, (abs(channelValue) * wbar / 2 + lim / 2) / lim, wbar / 2);
auto xChannel = (channelValue > 0) ? RECEIVER_OPTIONS_2ND_COLUMN + wbar / 2 : RECEIVER_OPTIONS_2ND_COLUMN + wbar / 2 + 1 - lenChannel;
lcdDrawHorizontalLine(xChannel, y + 3, lenChannel, SOLID, 0);
lcdDrawHorizontalLine(xChannel, y + 4, lenChannel, SOLID, 0);
}
}
break;
}
+19 -14
View File
@@ -96,12 +96,12 @@ void onSdFormatConfirm(const char * result)
void onUpdateConfirmation(const char * result)
{
if (result == STR_OK) {
OtaUpdateInformation * destination = moduleState[EXTERNAL_MODULE].otaUpdateInformation;
Pxx2OtaUpdate otaUpdate(EXTERNAL_MODULE, destination->candidateReceiversNames[destination->selectedReceiverIndex]);
OtaUpdateInformation * destination = moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].otaUpdateInformation;
Pxx2OtaUpdate otaUpdate(reusableBuffer.sdManager.otaUpdateInformation.module, destination->candidateReceiversNames[destination->selectedReceiverIndex]);
otaUpdate.flashFirmware(destination->filename, drawProgressScreen);
}
else {
moduleState[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL;
}
}
@@ -123,13 +123,13 @@ void onUpdateStateChanged()
else {
POPUP_WARNING(STR_OTA_UPDATE_ERROR);
SET_WARNING_INFO(STR_UNSUPPORTED_RX, sizeof(TR_UNSUPPORTED_RX) - 1, 0);
moduleState[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL;
}
}
else {
POPUP_WARNING(STR_OTA_UPDATE_ERROR);
SET_WARNING_INFO(STR_UNKNOWN_RX, sizeof(TR_UNKNOWN_RX) - 1, 0);
moduleState[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL;
}
}
}
@@ -251,10 +251,11 @@ void onSdManagerMenu(const char * result)
}
#endif
#if defined(PXX2)
else if (result == STR_FLASH_RECEIVER_OTA) {
else if (result == STR_FLASH_RECEIVER_OTA_BY_INTERNAL || result == STR_FLASH_RECEIVER_OTA_BY_EXTERNAL) {
memclear(&reusableBuffer.sdManager.otaUpdateInformation, sizeof(OtaUpdateInformation));
getSelectionFullPath(reusableBuffer.sdManager.otaUpdateInformation.filename);
moduleState[EXTERNAL_MODULE].startBind(&reusableBuffer.sdManager.otaUpdateInformation, onUpdateStateChanged);
reusableBuffer.sdManager.otaUpdateInformation.module = result == STR_FLASH_RECEIVER_OTA_BY_INTERNAL ? INTERNAL_MODULE : EXTERNAL_MODULE;
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].startBind(&reusableBuffer.sdManager.otaUpdateInformation, onUpdateStateChanged);
}
#endif
#endif
@@ -279,7 +280,7 @@ void onUpdateReceiverSelection(const char * result)
}
else {
// the user pressed [Exit]
moduleState[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL;
}
}
#endif
@@ -290,8 +291,8 @@ void menuRadioSdManager(event_t _event)
int lastPos = menuVerticalPosition;
#endif
if (moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) {
moduleState[EXTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND && EVT_KEY_MASK(_event) == KEY_EXIT) {
moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode = MODULE_MODE_NORMAL;
CLEAR_POPUP();
killEvents(KEY_EXIT);
_event = 0;
@@ -422,8 +423,12 @@ void menuRadioSdManager(event_t _event)
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE);
}
#if defined(PXX2)
if (information.productFamily == FIRMWARE_FAMILY_RECEIVER)
POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA);
if (information.productFamily == FIRMWARE_FAMILY_RECEIVER) {
if (isReceiverOTAEnabledFromModule(INTERNAL_MODULE, information.productId))
POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA_BY_INTERNAL);
if (isReceiverOTAEnabledFromModule(EXTERNAL_MODULE, information.productId))
POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA_BY_EXTERNAL);
}
#endif
#if defined(BLUETOOTH)
if (information.productFamily == FIRMWARE_FAMILY_BLUETOOTH_CHIP)
@@ -569,10 +574,10 @@ void menuRadioSdManager(event_t _event)
}
#if defined(PXX2)
if (moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) {
if (moduleState[reusableBuffer.sdManager.otaUpdateInformation.module].mode == MODULE_MODE_BIND) {
if (reusableBuffer.sdManager.otaUpdateInformation.step == BIND_INIT) {
if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount > 0) {
if(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount != popupMenuItemsCount) {
if (reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount != popupMenuItemsCount) {
CLEAR_POPUP();
popupMenuItemsCount = min<uint8_t>(reusableBuffer.sdManager.otaUpdateInformation.candidateReceiversCount,PXX2_MAX_RECEIVERS_PER_MODULE);
for (auto rx = 0; rx < popupMenuItemsCount; rx++) {
+2 -2
View File
@@ -314,12 +314,12 @@ const char * FrskyDeviceFirmwareUpdate::doFlashFirmware(const char * filename, P
}
else {
#if defined(PCBHORUS)
information.productId = FIRMWARE_ID_XJT;
information.productId = FIRMWARE_ID_MODULE_XJT;
#endif
}
#if defined(PCBHORUS)
if (module == INTERNAL_MODULE && information.productId == FIRMWARE_ID_XJT) {
if (module == INTERNAL_MODULE && information.productId == FIRMWARE_ID_MODULE_XJT) {
INTERNAL_MODULE_ON();
RTOS_WAIT_MS(1);
intmoduleSerialStart(38400, true, USART_Parity_No, USART_StopBits_1, USART_WordLength_8b);
+37 -5
View File
@@ -24,6 +24,7 @@
#include "dataconstants.h"
#include "definitions.h"
#include "frsky_pxx2.h"
#include "pulses/modules_helpers.h"
#include "ff.h"
#include "popups.h"
@@ -36,12 +37,43 @@ enum FrskyFirmwareProductFamily {
FIRMWARE_FAMILY_POWER_MANAGEMENT_UNIT,
};
enum FrskyFirmwareProductId {
FIRMWARE_ID_NONE,
FIRMWARE_ID_XJT = 0x01,
FIRMWARE_ID_ISRM = 0x02,
enum FrskyFirmwareModuleProductId {
FIRMWARE_ID_MODULE_NONE,
FIRMWARE_ID_MODULE_XJT = 0x01,
FIRMWARE_ID_MODULE_ISRM = 0x02,
};
enum FrskyFirmwareReceiverProductId {
FIRMWARE_ID_RECEIVER_NONE,
FIRMWARE_ID_RECEIVER_ARCHER = 0xC0, // TODO use the right constant
FIRMWARE_ID_RECEIVER_R9MX = 0xF0, // TODO use the right constant
// TODO fill the table
};
inline bool isReceiverOTAEnabledFromModule(uint8_t moduleIdx, uint8_t productId)
{
switch (productId) {
case FIRMWARE_ID_RECEIVER_ARCHER:
return isModuleISRM(moduleIdx);
case FIRMWARE_ID_RECEIVER_R9MX:
return isModuleR9M(moduleIdx);
// TODO add all those OTA receivers here
/*
"R9-MINI-OTA", // this one has OTA (different bootloader)
"R9-MM-OTA", // this one has OTA (different bootloader)
"R9-SLIM+-OTA", // this one has OTA (different bootloader)
"R9SX", // this one has OTA
*/
default:
return false;
}
}
PACK(struct FrSkyFirmwareInformation {
uint32_t fourcc;
uint8_t headerVersion;
@@ -70,7 +102,7 @@ class FrskyDeviceFirmwareUpdate {
};
public:
FrskyDeviceFirmwareUpdate(ModuleIndex module):
explicit FrskyDeviceFirmwareUpdate(ModuleIndex module):
module(module) {
}
+9 -1
View File
@@ -1751,7 +1751,7 @@ const luaR_value_entry opentxConstants[] = {
{ "EVT_VIRTUAL_INC_REPT", EVT_KEY_REPT(KEY_UP) },
#endif
#if defined(NAVIGATION_9X) || defined(NAVIGATION_XLITE)
#if defined(NAVIGATION_9X)
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_LEFT) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_LEFT) },
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_RIGHT) },
@@ -1759,6 +1759,14 @@ const luaR_value_entry opentxConstants[] = {
{ "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(NAVIGATION_XLITE)
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_LEFT) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_LONG(KEY_RIGHT) },
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_SHIFT) },
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_SHIFT) },
{ "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PAGE) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) },
-11
View File
@@ -262,17 +262,6 @@
#include "myeeprom.h"
#include "curves.h"
inline void memclear(void * p, size_t size)
{
memset(p, 0, size);
}
inline bool is_memclear(void * p, size_t size)
{
uint8_t * buf = (uint8_t *)p;
return buf[0] == 0 && memcmp(buf, buf + 1, size - 1) == 0;
}
void memswap(void * a, void * b, uint8_t size);
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || defined(PCBHORUS)
+12
View File
@@ -21,6 +21,7 @@
#ifndef _OPENTX_HELPERS_H_
#define _OPENTX_HELPERS_H_
#include <string.h>
#include "thirdparty/libopenui/src/libopenui_helpers.h"
template<class T>
@@ -37,4 +38,15 @@ inline void SWAP(T & a, T & b)
a = tmp;
}
inline void memclear(void * p, size_t size)
{
memset(p, 0, size);
}
inline bool is_memclear(void * p, size_t size)
{
uint8_t * buf = (uint8_t *)p;
return buf[0] == 0 && memcmp(buf, buf + 1, size - 1) == 0;
}
#endif
+2 -5
View File
@@ -25,6 +25,8 @@
#include "definitions.h"
#include "opentx_helpers.h"
#include "telemetry/telemetry.h"
#include "storage/storage.h"
#if defined(MULTIMODULE)
#include "telemetry/multi.h"
#endif
@@ -471,11 +473,6 @@ inline bool isModuleBindRangeAvailable(uint8_t moduleIdx)
return isModulePXX2(moduleIdx) || isModulePXX1(moduleIdx) || isModuleDSM2(moduleIdx) || isModuleMultimodule(moduleIdx);
}
inline bool isModuleRangeAvailable(uint8_t moduleIdx)
{
return isModuleXJTD16(moduleIdx) || isModuleXJTLR12(moduleIdx);
}
constexpr uint8_t MAX_RXNUM = 63;
inline uint8_t getMaxRxNum(uint8_t idx)
+3
View File
@@ -128,8 +128,10 @@ class ReceiverSettings {
uint8_t receiverId;
uint8_t dirty;
uint8_t telemetryDisabled;
uint8_t telemetry25mw;
uint8_t pwmRate;
uint8_t fport;
uint8_t enablePwmCh5Ch6;
uint8_t outputsCount;
uint8_t outputsMapping[24];
};
@@ -151,6 +153,7 @@ class OtaUpdateInformation: public BindInformation {
public:
char filename[FF_MAX_LFN + 1];
uint32_t address;
uint32_t module;
};
typedef void (* ModuleCallback)();
+12 -1
View File
@@ -224,6 +224,10 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
flag1 |= PXX2_RX_SETTINGS_FLAG1_FASTPWM;
if (reusableBuffer.hardwareAndSettings.receiverSettings.fport)
flag1 |= PXX2_RX_SETTINGS_FLAG1_FPORT;
if (reusableBuffer.hardwareAndSettings.receiverSettings.telemetry25mw)
flag1 |= PXX2_RX_SETTINGS_FLAG1_TELEMETRY_25MW;
if (reusableBuffer.hardwareAndSettings.receiverSettings.enablePwmCh5Ch6)
flag1 |= PXX2_RX_SETTINGS_FLAG1_ENABLE_PWM_CH5_CH6;
Pxx2Transport::addByte(flag1);
uint8_t outputsCount = min<uint8_t>(24, reusableBuffer.hardwareAndSettings.receiverSettings.outputsCount);
for (int i = 0; i < outputsCount; i++) {
@@ -358,6 +362,8 @@ void Pxx2Pulses::sendOtaUpdate(uint8_t module, const char * rxName, uint32_t add
if (module == EXTERNAL_MODULE)
extmoduleSendNextFrame();
else if (module == INTERNAL_MODULE)
intmoduleSendNextFrame();
}
void Pxx2Pulses::setupAuthenticationFrame(uint8_t module, uint8_t mode, const uint8_t * outputMessage)
@@ -467,7 +473,12 @@ const char * Pxx2OtaUpdate::nextStep(uint8_t step, const char * rxName, uint32_t
destination->address = address;
for (uint8_t retry = 0;; retry++) {
extmodulePulsesData.pxx2.sendOtaUpdate(module, rxName, address, (const char *) buffer);
if (module == EXTERNAL_MODULE) {
extmodulePulsesData.pxx2.sendOtaUpdate(module, rxName, address, (const char *) buffer);
}
else if (module == INTERNAL_MODULE) {
intmodulePulsesData.pxx2.sendOtaUpdate(module, rxName, address, (const char *) buffer);
}
if (waitStep(step + 1, 20)) {
return nullptr;
}
+13 -3
View File
@@ -54,6 +54,8 @@
#define PXX2_RX_SETTINGS_FLAG1_READONLY (1 << 6)
#define PXX2_RX_SETTINGS_FLAG1_FASTPWM (1 << 4)
#define PXX2_RX_SETTINGS_FLAG1_FPORT (1 << 3)
#define PXX2_RX_SETTINGS_FLAG1_TELEMETRY_25MW (1 << 2)
#define PXX2_RX_SETTINGS_FLAG1_ENABLE_PWM_CH5_CH6 (1 << 1)
#define PXX2_TX_SETTINGS_FLAG0_WRITE (1 << 6)
#define PXX2_TX_SETTINGS_FLAG1_EXTERNAL_ANTENNA (1 << 3)
@@ -82,7 +84,7 @@ enum PXX2ModuleModelID {
PXX2_MODULE_ISRM_S_X10E,
PXX2_MODULE_XJT_LITE,
PXX2_MODULE_ISRM_S_X10S,
PXX2_MODULE_ISRM_S_X9LITE,
PXX2_MODULE_ISRM_X9LITES,
};
static const char * const PXX2ModulesNames[] = {
@@ -99,7 +101,7 @@ static const char * const PXX2ModulesNames[] = {
"ISRM-S-X10E",
"XJT Lite",
"ISRM-S-X10S",
"ISRM-S-X9Lite"
"ISRM-X9LiteS"
};
inline const char * getPXX2ModuleName(uint8_t modelId)
@@ -141,7 +143,7 @@ static const uint8_t PXX2ModuleOptions[] = {
0b00000101, // ISRM-S-X10E
0b00000001, // XJT_LITE
0b00000101, // ISRM-S-X10S
0b00000101, // ISRM-S-X9LITE
0b00000100, // ISRM-X9LITES
};
inline uint8_t getPXX2ModuleOptions(uint8_t modelId)
@@ -190,6 +192,9 @@ static const char * const PXX2ReceiversNames[] = {
"R9-MINI-OTA", // this one has OTA (different bootloader)
"R9-MM-OTA", // this one has OTA (different bootloader)
"R9-SLIM+-OTA", // this one has OTA (different bootloader)
"Archer-X", // this one has OTA (internal module)
"R9MX", // this one has OTA
"R9SX", // this one has OTA
};
inline const char * getPXX2ReceiverName(uint8_t modelId)
@@ -240,6 +245,9 @@ static const uint8_t PXX2ReceiverOptions[] = {
0b11111111, // R9-MINI+OTA
0b11111111, // R9-MM+OTA
0b11111111, // R9-SLIM+OTA
0b11111111, // ARCHER-X
0b11111111, // R9MX
0b11111111, // R9SX
};
inline uint8_t getPXX2ReceiverOptions(uint8_t modelId)
@@ -257,6 +265,8 @@ inline bool isPXX2ReceiverOptionAvailable(uint8_t modelId, uint8_t option)
enum ReceiverCapabilities {
RECEIVER_CAPABILITY_FPORT,
RECEIVER_CAPABILITY_TELEMETRY_25MW,
RECEIVER_CAPABILITY_ENABLE_PWM_CH5_CH6,
RECEIVER_CAPABILITY_COUNT
};
+3 -3
View File
@@ -148,7 +148,7 @@ void ModelCell::setModelId(uint8_t moduleIdx, uint8_t id)
// getTimerString(timer, 0);
// for (uint8_t i = 0; i < MAX_TIMERS; i++) {
// if (partialmodel.timers[i].mode > 0 && partialmodel.timers[i].persistent) {
// if (partialmodel.timers[i].mode != 0 && partialmodel.timers[i].persistent) {
// getTimerString(timer, partialmodel.timers[i].value);
// break;
// }
@@ -416,7 +416,7 @@ bool ModelsList::load()
#else
// YAML reader
TRACE("YAML modelslist reader");
YamlParser yp; //TODO: move to re-usable buffer
yp.init(get_modelslist_parser_calls(), get_modelslist_iter());
@@ -426,7 +426,7 @@ bool ModelsList::load()
// reached EOF?
if (bytes_read == 0)
break;
if (yp.parse(line, bytes_read) != YamlParser::CONTINUE_PARSING)
break;
}
+11
View File
@@ -150,6 +150,16 @@ enum FrSkyDataState {
#define ESC_RPM_CONS_LAST_ID 0x0B6f
#define ESC_TEMPERATURE_FIRST_ID 0x0B70
#define ESC_TEMPERATURE_LAST_ID 0x0B7f
#define RB3040_OUTPUT_FIRST_ID 0x0B80
#define RB3040_OUTPUT_LAST_ID 0x0B8F
#define RB3040_CH1_2_FIRST_ID 0x0B90
#define RB3040_CH1_2_LAST_ID 0x0B9F
#define RB3040_CH3_4_FIRST_ID 0x0BA0
#define RB3040_CH3_4_LAST_ID 0x0BAF
#define RB3040_CH5_6_FIRST_ID 0x0BB0
#define RB3040_CH5_6_LAST_ID 0x0BBF
#define RB3040_CH7_8_FIRST_ID 0x0BC0
#define RB3040_CH7_8_LAST_ID 0x0BCF
#define X8R_FIRST_ID 0x0c20
#define X8R_LAST_ID 0x0c2F
#define S6R_FIRST_ID 0x0c30
@@ -177,6 +187,7 @@ enum FrSkyDataState {
#define DIY_STREAM_FIRST_ID 0x5000
#define DIY_STREAM_LAST_ID 0x50FF
#define FACT_TEST_ID 0xF000
#define FRAME_LOSS_RATE_ID 0xF010
#define RSSI_ID 0xF101
#define ADC1_ID 0xF102
#define ADC2_ID 0xF103
+6
View File
@@ -86,6 +86,12 @@ void processReceiverSettingsFrame(uint8_t module, const uint8_t * frame)
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_TELEMETRY_DISABLED)
destination->telemetryDisabled = 1;
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_TELEMETRY_25MW)
destination->telemetry25mw = 1;
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_ENABLE_PWM_CH5_CH6)
destination->enablePwmCh5Ch6 = 1;
uint8_t outputsCount = min<uint8_t>(16, frame[0] - 4);
destination->outputsCount = outputsCount;
for (uint8_t pin = 0; pin < outputsCount; pin++) {
+14
View File
@@ -30,6 +30,7 @@ struct FrSkySportSensor {
};
const FrSkySportSensor sportSensors[] = {
{ FRAME_LOSS_RATE_ID, FRAME_LOSS_RATE_ID, 0, ZSTR_FLR, UNIT_PERCENT, 0 },
{ RSSI_ID, RSSI_ID, 0, STR_SENSOR_RSSI, UNIT_DB, 0 },
#if defined(MULTIMODULE)
{ TX_RSSI_ID, TX_RSSI_ID, 0, STR_SENSOR_TX_RSSI , UNIT_DB , 0 },
@@ -84,6 +85,15 @@ const FrSkySportSensor sportSensors[] = {
{ GASSUIT_AVG_FLOW_FIRST_ID, GASSUIT_AVG_FLOW_LAST_ID, 0, STR_SENSOR_GASSUIT_AVG_FLOW, UNIT_MILLILITERS_PER_MINUTE, 0 },
{ SBEC_POWER_FIRST_ID, SBEC_POWER_LAST_ID, 0, STR_SENSOR_SBEC_VOLTAGE, UNIT_VOLTS, 2 },
{ SBEC_POWER_FIRST_ID, SBEC_POWER_LAST_ID, 1, STR_SENSOR_SBEC_CURRENT, UNIT_AMPS, 2 },
{ RB3040_OUTPUT_FIRST_ID, RB3040_OUTPUT_LAST_ID, 0, ZSTR_RB3040_EXTRA_STATE, UNIT_BITFIELD, 0 },
{ RB3040_CH1_2_FIRST_ID, RB3040_CH1_2_LAST_ID, 0, ZSTR_RB3040_CHANNEL1, UNIT_AMPS, 2 },
{ RB3040_CH1_2_FIRST_ID, RB3040_CH1_2_LAST_ID, 1, ZSTR_RB3040_CHANNEL2, UNIT_AMPS, 2 },
{ RB3040_CH3_4_FIRST_ID, RB3040_CH3_4_LAST_ID, 0, ZSTR_RB3040_CHANNEL3, UNIT_AMPS, 2 },
{ RB3040_CH3_4_FIRST_ID, RB3040_CH3_4_LAST_ID, 1, ZSTR_RB3040_CHANNEL4, UNIT_AMPS, 2 },
{ RB3040_CH5_6_FIRST_ID, RB3040_CH5_6_LAST_ID, 0, ZSTR_RB3040_CHANNEL5, UNIT_AMPS, 2 },
{ RB3040_CH5_6_FIRST_ID, RB3040_CH5_6_LAST_ID, 1, ZSTR_RB3040_CHANNEL6, UNIT_AMPS, 2 },
{ RB3040_CH7_8_FIRST_ID, RB3040_CH7_8_LAST_ID, 0, ZSTR_RB3040_CHANNEL7, UNIT_AMPS, 2 },
{ RB3040_CH7_8_FIRST_ID, RB3040_CH7_8_LAST_ID, 1, ZSTR_RB3040_CHANNEL8, UNIT_AMPS, 2 },
{ 0, 0, 0, NULL, UNIT_RAW, 0 } // sentinel
};
@@ -308,6 +318,10 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe
}
#endif
}
else if (dataId >= RB3040_CH1_2_FIRST_ID && dataId <= RB3040_CH7_8_LAST_ID) {
sportProcessTelemetryPacket(dataId, 0, instance, data & 0xffff);
sportProcessTelemetryPacket(dataId, 1, instance, (data >> 16u) & 0xffff);
}
else {
sportProcessTelemetryPacket(dataId, 0, instance, data);
}
+3
View File
@@ -24,6 +24,9 @@
#include "frsky.h"
#include "io/frsky_sport.h"
#include "crossfire.h"
#include "myeeprom.h"
#include "io/frsky_sport.h"
#if defined(MULTIMODULE)
#include "spektrum.h"
#include "flysky_ibus.h"
+1
View File
@@ -22,6 +22,7 @@
#define _TELEMETRY_HOLDERS_H_
#include <inttypes.h>
#include <string.h>
#include "../timers.h"
#define TELEMETRY_AVERAGE_COUNT 3 // we actually average one more reading!
+2
View File
@@ -438,6 +438,8 @@ const char STR_FIRMWARE_UPDATE_SUCCESS[] = TR_FIRMWARE_UPDATE_SUCCESS;
const char STR_WRITING[] = TR_WRITING;
const char STR_FLASH_EXTERNAL_DEVICE[] = TR_FLASH_EXTERNAL_DEVICE;
const char STR_FLASH_RECEIVER_OTA[] = TR_FLASH_RECEIVER_OTA;
const char STR_FLASH_RECEIVER_OTA_BY_EXTERNAL[] = TR_FLASH_RECEIVER_OTA_BY_EXTERNAL;
const char STR_FLASH_RECEIVER_OTA_BY_INTERNAL[] = TR_FLASH_RECEIVER_OTA_BY_INTERNAL;
const char STR_FLASH_BLUETOOTH_MODULE[] = TR_FLASH_BLUETOOTH_MODULE;
const char STR_FLASH_POWER_MANAGEMENT_UNIT[] = TR_FLASH_POWER_MANAGEMENT_UNIT;
const char STR_CONFIRM_FORMAT[] = TR_CONFIRM_FORMAT;
+2
View File
@@ -646,6 +646,8 @@ extern const char STR_VIEW_TEXT[];
extern const char STR_FLASH_BOOTLOADER[];
extern const char STR_FLASH_EXTERNAL_DEVICE[];
extern const char STR_FLASH_RECEIVER_OTA[];
extern const char STR_FLASH_RECEIVER_OTA_BY_EXTERNAL[];
extern const char STR_FLASH_RECEIVER_OTA_BY_INTERNAL[];
extern const char STR_FLASH_BLUETOOTH_MODULE[];
extern const char STR_FLASH_POWER_MANAGEMENT_UNIT[];
extern const char STR_CURRENT_VERSION[];
+12
View File
@@ -831,6 +831,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloaderu"
#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Portem", "Flash S.Portem")
#define TR_FLASH_RECEIVER_OTA "Flash příjímače OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash modulu BT", "Flash modulu Bluetooth")
#define TR_FLASH_POWER_MANAGEMENT_UNIT TR("Flash řízení spotř.", "Flash jednotky řízení spotřeby")
#define TR_CURRENT_VERSION TR("Současná ver. ", "Současná verze: ")
@@ -1175,6 +1177,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1277,3 +1280,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -838,6 +838,8 @@
#define TR_FLASH_BOOTLOADER TR("Flash bootloader","Flash bootloader") //
#define TR_FLASH_EXTERNAL_DEVICE TR("Flash ext. Gerät","Flash externes Gerät")
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetoothmodul")
#define TR_FLASH_POWER_MANAGEMENT_UNIT TR("Flash pwr mngt unit", "Flash power management unit")
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1188,6 +1190,7 @@
#define TR_AUTH_FAILURE "Auth-failure"
// ----------------------------------------------------------------
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1290,3 +1293,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -835,6 +835,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloader"
#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Port", "Flash S.Port device")
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Curr Vers: ", "Current version: ")
@@ -1185,6 +1187,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1287,3 +1290,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
File diff suppressed because it is too large Load Diff
+12
View File
@@ -855,6 +855,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloader"
#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device"
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1198,6 +1200,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1299,3 +1302,12 @@
#define ZSTR_GASSUIT_MAX_FLOW "GMFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -857,6 +857,8 @@
#define TR_FLASH_BOOTLOADER "Flasher BootLoader"
#define TR_FLASH_EXTERNAL_DEVICE TR("Flasher S.Port", "Flasher S.Port externe")
#define TR_FLASH_RECEIVER_OTA "Flasher RX OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash module BT", "Flash module Bluetooth")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flasher pwr mngt unit"
#define TR_CURRENT_VERSION "Version courante :"
@@ -1211,6 +1213,7 @@
#define TR_RTC_CHECK TR("Vérif. RTC", "Vérif. pile RTC")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1313,3 +1316,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -860,6 +860,8 @@
#define TR_FLASH_BOOTLOADER "Prog. bootloader"
#define TR_FLASH_EXTERNAL_DEVICE "Progr. dispositivo Esterno"
#define TR_FLASH_RECEIVER_OTA TR("Prog. RX OTA", INDENT "Prog. ricevente OTA")
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Prog. mod. BT", INDENT "Prog. modulo Bluetooth")
#define TR_FLASH_POWER_MANAGEMENT_UNIT TR("Prog. PMU", "Program. PMU")
#define TR_CURRENT_VERSION TR("Vers. currente ", "Versione corrente: ")
@@ -1210,6 +1212,7 @@
#define TR_RTC_CHECK TR("Controllo RTC", "Controllo voltaggio RTC")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1312,3 +1315,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -842,6 +842,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloader"
#define TR_FLASH_EXTERNAL_DEVICE "Flash extern Apparaat"
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1197,6 +1199,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1299,3 +1302,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -856,6 +856,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloader"
#define TR_FLASH_EXTERNAL_DEVICE "Sflashuj Moduł Zewnętrzny"
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1206,6 +1208,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1308,3 +1311,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -846,6 +846,8 @@
#define TR_FLASH_BOOTLOADER "Flash bootloader"
#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device"
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1195,6 +1197,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1297,3 +1300,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+12
View File
@@ -859,6 +859,8 @@
#define TR_FLASH_BOOTLOADER "Skriv BootLoader"
#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device"
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA"
#define TR_FLASH_RECEIVER_OTA_BY_EXTERNAL "Flash RX by ext. OTA"
#define TR_FLASH_RECEIVER_OTA_BY_INTERNAL "Flash RX by int. OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit"
#define TR_CURRENT_VERSION TR("Current vers. ", "Current version: ")
@@ -1209,6 +1211,7 @@
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define TR_AUTH_FAILURE "Auth-failure"
#define ZSTR_FLR "FLR"
#define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW"
#define ZSTR_RAS "SWR"
@@ -1311,3 +1314,12 @@
#define ZSTR_GASSUIT_AVG_FLOW "GAFl"
#define ZSTR_SBEC_VOLTAGE "BecV"
#define ZSTR_SBEC_CURRENT "BecA"
#define ZSTR_RB3040_EXTRA_STATE "RBES"
#define ZSTR_RB3040_CHANNEL1 "CH1A"
#define ZSTR_RB3040_CHANNEL2 "CH2A"
#define ZSTR_RB3040_CHANNEL3 "CH3A"
#define ZSTR_RB3040_CHANNEL4 "CH4A"
#define ZSTR_RB3040_CHANNEL5 "CH5A"
#define ZSTR_RB3040_CHANNEL6 "CH6A"
#define ZSTR_RB3040_CHANNEL7 "CH7A"
#define ZSTR_RB3040_CHANNEL8 "CH8A"
+1 -1
View File
@@ -4,7 +4,7 @@
set -e
set -x
JOBS=2
JOBS=3
while [ $# -gt 0 ]
do