diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 751196d1c..8621869c6 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -139,6 +139,8 @@ enum FrSkyDataState { #define A4_LAST_ID 0x091F #define AIR_SPEED_FIRST_ID 0x0A00 #define AIR_SPEED_LAST_ID 0x0A0F +#define FUEL_QTY_FIRST_ID 0x0A10 +#define FUEL_QTY_LAST_ID 0x0A1F #define RBOX_BATT1_FIRST_ID 0x0B00 #define RBOX_BATT1_LAST_ID 0x0B0F #define RBOX_BATT2_FIRST_ID 0x0B10 @@ -152,9 +154,9 @@ enum FrSkyDataState { #define ESC_POWER_FIRST_ID 0x0B50 #define ESC_POWER_LAST_ID 0x0B5F #define ESC_RPM_CONS_FIRST_ID 0x0B60 -#define ESC_RPM_CONS_LAST_ID 0x0B6f +#define ESC_RPM_CONS_LAST_ID 0x0B6F #define ESC_TEMPERATURE_FIRST_ID 0x0B70 -#define ESC_TEMPERATURE_LAST_ID 0x0B7f +#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 @@ -165,10 +167,10 @@ enum FrSkyDataState { #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 -#define S6R_LAST_ID 0x0c3F +#define X8R_FIRST_ID 0x0C20 +#define X8R_LAST_ID 0x0C2F +#define S6R_FIRST_ID 0x0C30 +#define S6R_LAST_ID 0x0C3F #define GASSUIT_TEMP1_FIRST_ID 0x0D00 #define GASSUIT_TEMP1_LAST_ID 0x0D0F #define GASSUIT_TEMP2_FIRST_ID 0x0D10 @@ -182,15 +184,17 @@ enum FrSkyDataState { #define GASSUIT_FLOW_FIRST_ID 0x0D50 #define GASSUIT_FLOW_LAST_ID 0x0D5F #define GASSUIT_MAX_FLOW_FIRST_ID 0x0D60 -#define GASSUIT_MAX_FLOW_LAST_ID 0x0D6f +#define GASSUIT_MAX_FLOW_LAST_ID 0x0D6F #define GASSUIT_AVG_FLOW_FIRST_ID 0x0D70 -#define GASSUIT_AVG_FLOW_LAST_ID 0x0D7f +#define GASSUIT_AVG_FLOW_LAST_ID 0x0D7F #define SBEC_POWER_FIRST_ID 0x0E50 #define SBEC_POWER_LAST_ID 0x0E5F #define DIY_FIRST_ID 0x5100 #define DIY_LAST_ID 0x52FF #define DIY_STREAM_FIRST_ID 0x5000 #define DIY_STREAM_LAST_ID 0x50FF +#define SERVO_FIRST_ID 0x6800 +#define SERVO_LAST_ID 0x680F #define FACT_TEST_ID 0xF000 #define VALID_FRAME_RATE_ID 0xF010 #define RSSI_ID 0xF101 @@ -202,8 +206,6 @@ enum FrSkyDataState { #define R9_PWR_ID 0xF107 #define SP2UART_A_ID 0xFD00 #define SP2UART_B_ID 0xFD01 -#define FUEL_QTY_FIRST_ID 0x0A10 -#define FUEL_QTY_LAST_ID 0x0A1F #if defined(MULTIMODULE) // Virtual IDs, value can be changed to anything only used for display diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 6fa6ad13d..3790736fd 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -94,7 +94,11 @@ const FrSkySportSensor sportSensors[] = { { 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 + { SERVO_FIRST_ID, SERVO_LAST_ID, 0, ZSTR_SERVO_CURRENT, UNIT_AMPS, 1 }, + { SERVO_FIRST_ID, SERVO_LAST_ID, 1, ZSTR_SERVO_VOLTAGE, UNIT_VOLTS, 1 }, + { SERVO_FIRST_ID, SERVO_LAST_ID, 2, ZSTR_SERVO_TEMPERATURE, UNIT_CELSIUS, 0 }, + { SERVO_FIRST_ID, SERVO_LAST_ID, 3, ZSTR_SERVO_STATUS, UNIT_TEXT, 0 }, + { 0, 0, 0, nullptr, UNIT_RAW, 0 } // sentinel }; const FrSkySportSensor * getFrSkySportSensor(uint16_t id, uint8_t subId=0) @@ -110,13 +114,13 @@ const FrSkySportSensor * getFrSkySportSensor(uint16_t id, uint8_t subId=0) bool checkSportPacket(const uint8_t * packet) { short crc = 0; - for (int i=1; i> 8; // 0-1FF - crc &= 0x00ff; // 0-FF + crc += crc >> 8u; // 0-1FF + crc &= 0x00FFu; // 0-FF } // TRACE("crc: 0x%02x", crc); - return (crc == 0x00ff); + return crc == 0x00FF; } #define SPORT_DATA_U8(packet) (packet[4]) @@ -137,15 +141,15 @@ void sportProcessTelemetryPacket(uint16_t id, uint8_t subId, uint8_t instance, u precision = sensor->prec; } if (unit == UNIT_CELLS) { - uint8_t cellsCount = (data & 0xF0) >> 4; - uint8_t cellIndex = (data & 0x0F); + uint8_t cellsCount = (data & 0xF0u) >> 4u; + uint8_t cellIndex = (data & 0x0Fu); if (cellIndex >= MAX_CELLS) return; - uint32_t mask = (cellsCount << 24) + (cellIndex << 16); - setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0x000FFF00) >> 8) / 5), unit, precision); - if (cellIndex+1 < cellsCount) { - mask += (1 << 16); - setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0xFFF00000) >> 20) / 5), unit, precision); + uint32_t mask = (cellsCount << 24u) + (cellIndex << 16u); + setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0x000FFF00u) >> 8u) / 5), unit, precision); + if (cellIndex + 1 < cellsCount) { + mask += (1 << 16u); + setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0xFFF00000u) >> 20u) / 5), unit, precision); } } else { @@ -219,7 +223,7 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe } #if defined(MULTIMODULE) if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE) { - sportProcessTelemetryPacket(TX_RSSI_ID, 0, instance, packet[5] >> 1, UNIT_DB); + sportProcessTelemetryPacket(TX_RSSI_ID, 0, instance, packet[5] >> 1u, UNIT_DB); sportProcessTelemetryPacket(TX_LQI_ID, 0, instance, packet[7], UNIT_RAW); } #endif @@ -263,40 +267,40 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe if (dataId >= GPS_LONG_LATI_FIRST_ID && dataId <= GPS_LONG_LATI_LAST_ID) { int32_t value = (data & 0x3fffffff); - if (data & (1 << 30)) + if (data & (1 << 30u)) value = -value; value = (value * 5) / 3; // min/10000 => deg/1000000 - if (data & (1 << 31)) + if (data & (1 << 31u)) sportProcessTelemetryPacket(dataId, 0, instance, value, UNIT_GPS_LONGITUDE); else sportProcessTelemetryPacket(dataId, 0, instance, value, UNIT_GPS_LATITUDE); } else if (dataId >= RBOX_BATT1_FIRST_ID && dataId <= RBOX_BATT2_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, data & 0xffff); - sportProcessTelemetryPacket(dataId, 1, instance, data >> 16); + sportProcessTelemetryPacket(dataId, 0, instance, data & 0xFFFFu); + sportProcessTelemetryPacket(dataId, 1, instance, data >> 16u); } else if (dataId >= RBOX_CNSP_FIRST_ID && dataId <= RBOX_CNSP_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, data & 0xffff); - sportProcessTelemetryPacket(dataId, 1, instance, data >> 16); + sportProcessTelemetryPacket(dataId, 0, instance, data & 0xFFFFu); + sportProcessTelemetryPacket(dataId, 1, instance, data >> 16u); } else if (dataId >= RBOX_STATE_FIRST_ID && dataId <= RBOX_STATE_LAST_ID) { bool static isRB10 = false; uint16_t newServosState; - if (servosState == 0 && (data & 0xff00) == 0xff00) { + if (servosState == 0 && (data & 0xFF00u) == 0xFF00u) { isRB10 = true; } if (isRB10) { - newServosState = data & 0x00ff; // 8ch only RB10 + newServosState = data & 0x00FFu; // 8ch only RB10 } else { - newServosState = data & 0xffff; + newServosState = data & 0xFFFFu; } if (newServosState != 0 && servosState == 0) { audioEvent(AU_SERVO_KO); } - uint16_t newRboxState = data >> 16; - if ((newRboxState & 0x07) && (rboxState & 0x07) == 0) { + uint16_t newRboxState = data >> 16u; + if ((newRboxState & 0x07u) && (rboxState & 0x07u) == 0) { audioEvent(AU_RX_OVERLOAD); } servosState = newServosState; @@ -305,19 +309,19 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe sportProcessTelemetryPacket(dataId, 1, instance, rboxState); } else if (dataId >= ESC_POWER_FIRST_ID && dataId <= ESC_POWER_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, data & 0xffff); - sportProcessTelemetryPacket(dataId, 1, instance, data >> 16); + sportProcessTelemetryPacket(dataId, 0, instance, data & 0xFFFFu); + sportProcessTelemetryPacket(dataId, 1, instance, data >> 16u); } else if (dataId >= ESC_RPM_CONS_FIRST_ID && dataId <= ESC_RPM_CONS_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, 100 * (data & 0xffff)); - sportProcessTelemetryPacket(dataId, 1, instance, data >> 16); + sportProcessTelemetryPacket(dataId, 0, instance, 100 * (data & 0xFFFFu)); + sportProcessTelemetryPacket(dataId, 1, instance, data >> 16u); } else if (dataId >= ESC_TEMPERATURE_FIRST_ID && dataId <= ESC_TEMPERATURE_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, data & 0x00ff); + sportProcessTelemetryPacket(dataId, 0, instance, data & 0x00FFu); } else if (dataId >= SBEC_POWER_FIRST_ID && dataId <= SBEC_POWER_LAST_ID) { - sportProcessTelemetryPacket(dataId, 0, instance, (data & 0xffff) / 10); - sportProcessTelemetryPacket(dataId, 1, instance, (data >> 16) / 10); + sportProcessTelemetryPacket(dataId, 0, instance, (data & 0xFFFFu) / 10); + sportProcessTelemetryPacket(dataId, 1, instance, (data >> 16u) / 10); } else if (dataId >= DIY_STREAM_FIRST_ID && dataId <= DIY_STREAM_LAST_ID) { #if defined(LUA) @@ -334,8 +338,19 @@ 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); + sportProcessTelemetryPacket(dataId, 0, instance, data & 0xFFFFu); + sportProcessTelemetryPacket(dataId, 1, instance, (data >> 16u) & 0xFFFFu); + } + else if (dataId >= SERVO_FIRST_ID && dataId <= SERVO_LAST_ID) { + sportProcessTelemetryPacket(dataId, 0, instance, data & 0xFFu); + sportProcessTelemetryPacket(dataId, 1, instance, (data >> 8u) & 0xFFu); + sportProcessTelemetryPacket(dataId, 2, instance, (data >> 16u) & 0xFFu); + uint8_t newServosState = data >> 24u; + setTelemetryText(PROTOCOL_TELEMETRY_FRSKY_SPORT, dataId, 3, instance, newServosState ? "STALL" : "OK"); + if (newServosState != 0 && servosState == 0) { + audioEvent(AU_SERVO_KO); + servosState = newServosState; + } } else { sportProcessTelemetryPacket(dataId, 0, instance, data); diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index e78846845..6599db749 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -97,6 +97,7 @@ PACK(struct CellValue }); int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec); +int setTelemetryText(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, const char * text); void delTelemetryIndex(uint8_t index); int availableTelemetryIndex(); int lastUsedTelemetryIndex(); diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index 9cebabd3c..d14c4dafa 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -78,21 +78,27 @@ uint32_t getDistFromEarthAxis(int32_t latitude) return 139*(((uint32_t)10000000 - ((angle2*(uint32_t)123370)/81) + (angle4/25))/12500); } +void TelemetryItem::setValue(const TelemetrySensor & sensor, const char * val, uint32_t, uint32_t) +{ + strncpy(text, val, sizeof(text)); + setFresh(); +} + void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32_t unit, uint32_t prec) { int32_t newVal = val; - if(prec == 255) { + if (prec == 255) { prec = sensor.prec; } if (unit == UNIT_CELLS) { - uint32_t data = uint32_t(newVal); - uint8_t cellsCount = (data >> 24); - uint8_t cellIndex = ((data >> 16) & 0x0F); + auto data = uint32_t(newVal); + uint8_t cellsCount = (data >> 24u); + uint8_t cellIndex = ((data >> 16u) & 0x0Fu); if (cellIndex >= MAX_CELLS) return; - uint16_t cellValue = (data & 0xFFFF); + uint16_t cellValue = (data & 0xFFFFu); if (cellsCount == 0) { cellsCount = (cellIndex >= cells.count ? cellIndex + 1 : cells.count); if (cellsCount != cells.count) { @@ -178,18 +184,18 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 } else if (unit == UNIT_DATETIME_DAY_MONTH) { auto data = uint32_t(newVal); - datetime.month = data >> 8; - datetime.day = data & 0xFF; + datetime.month = data >> 8u; + datetime.day = data & 0xFFu; return; } else if (unit == UNIT_DATETIME_HOUR_MIN) { auto data = uint32_t(newVal); - datetime.hour = (data & 0xFF); - datetime.min = data >> 8; + datetime.hour = (data & 0xFFu); + datetime.min = data >> 8u; return; } else if (unit == UNIT_DATETIME_SEC) { - datetime.sec = newVal & 0xFF; + datetime.sec = newVal & 0xFFu; newVal = 0; } else if (unit == UNIT_RPMS) { @@ -198,8 +204,6 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 } } else if (unit == UNIT_TEXT) { - *((uint32_t*)&text[prec]) = newVal; - setFresh(); return; } else { @@ -495,7 +499,8 @@ int lastUsedTelemetryIndex() return -1; } -int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) +template +int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, T value, uint32_t unit = 0, uint32_t prec = 0) { bool sensorFound = false; @@ -518,41 +523,50 @@ int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, ui case PROTOCOL_TELEMETRY_FRSKY_SPORT: frskySportSetDefault(index, id, subId, instance); break; + case PROTOCOL_TELEMETRY_FRSKY_D: frskyDSetDefault(index, id); break; + #if defined(CROSSFIRE) case PROTOCOL_TELEMETRY_CROSSFIRE: crossfireSetDefault(index, id, instance); break; #endif + #if defined(GHOST) case PROTOCOL_TELEMETRY_GHOST: ghostSetDefault(index, id, instance); break; #endif + #if defined(MULTIMODULE) || defined(AFHDS3) case PROTOCOL_TELEMETRY_FLYSKY_IBUS: flySkySetDefault(index,id, subId, instance); break; #endif + #if defined(MULTIMODULE) case PROTOCOL_TELEMETRY_SPEKTRUM: spektrumSetDefault(index, id, subId, instance); break; + case PROTOCOL_TELEMETRY_HITEC: hitecSetDefault(index, id, subId, instance); break; + case PROTOCOL_TELEMETRY_HOTT: hottSetDefault(index, id, subId, instance); break; #endif + #if defined(LUA) case PROTOCOL_TELEMETRY_LUA: // Sensor will be initialized by calling function // This drops the first value return index; #endif + default: return index; } @@ -563,7 +577,16 @@ int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, ui POPUP_WARNING(STR_TELEMETRYFULL); return -1; } +} +int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) +{ + return setTelemetryValue(protocol, id, subId, instance, value, unit, prec); +} + +int setTelemetryText(TelemetryProtocol protocol, uint16_t id, uint8_t subId, uint8_t instance, const char * text) +{ + return setTelemetryValue(protocol, id, subId, instance, text); } void TelemetrySensor::init(const char * label, uint8_t unit, uint8_t prec) diff --git a/radio/src/telemetry/telemetry_sensors.h b/radio/src/telemetry/telemetry_sensors.h index 6ca1c0c97..e2fbcd498 100644 --- a/radio/src/telemetry/telemetry_sensors.h +++ b/radio/src/telemetry/telemetry_sensors.h @@ -91,6 +91,8 @@ class TelemetryItem void eval(const TelemetrySensor & sensor); void per10ms(const TelemetrySensor & sensor); + void setValue(const TelemetrySensor & sensor, const char * newVal, uint32_t unit=UNIT_TEXT, uint32_t prec=0); + void setValue(const TelemetrySensor & sensor, int32_t newVal, uint32_t unit, uint32_t prec=0); inline bool isAvailable() diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index a01ed39d7..3c8e32fa7 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1355,4 +1355,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 92d73d56c..686df1b24 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1362,4 +1362,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index f976fad51..7042a6df7 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1359,4 +1359,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index a9af085b2..deec63071 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1358,4 +1358,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index bdd39aeb4..c870988ef 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1366,4 +1366,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 20a2eede9..717c7af1e 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1383,4 +1383,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 5cd184b65..59486d1e5 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1376,4 +1376,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" \ No newline at end of file diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 255ffa0bc..3804872f2 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1368,4 +1368,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index b807f86af..ff2bd6b1c 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1375,4 +1375,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 27e6d676a..ee63e6fa8 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1364,4 +1364,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index c4db808f7..e5f063e21 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1375,4 +1375,8 @@ #define ZSTR_VTX_FREQ "VFrq" #define ZSTR_VTX_PWR "VPwr" #define ZSTR_VTX_CHAN "VChn" -#define ZSTR_VTX_BAND "VBan" \ No newline at end of file +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS"