Merge with latest 2.3
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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) },
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)();
|
||||
|
||||
@@ -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
@@ -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
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
+427
-418
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
set -e
|
||||
set -x
|
||||
|
||||
JOBS=2
|
||||
JOBS=3
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
|
||||
Reference in New Issue
Block a user