diff --git a/radio/src/gui/common/stdlcd/draw_functions.cpp b/radio/src/gui/common/stdlcd/draw_functions.cpp index fe8ac60dc..665a76633 100644 --- a/radio/src/gui/common/stdlcd/draw_functions.cpp +++ b/radio/src/gui/common/stdlcd/draw_functions.cpp @@ -370,11 +370,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; } } @@ -382,7 +382,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[] = { @@ -398,23 +398,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= 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); } diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 458a4901f..93ad67d18 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -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 diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 299553050..bc32da123 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -84,6 +84,15 @@ const FrSkySportSensor sportSensors[] = { { GASSUIT_AVG_FLOW_FIRST_ID, GASSUIT_AVG_FLOW_LAST_ID, 0, ZSTR_GASSUIT_AVG_FLOW, UNIT_MILLILITERS_PER_MINUTE, 0 }, { SBEC_POWER_FIRST_ID, SBEC_POWER_LAST_ID, 0, ZSTR_SBEC_VOLTAGE, UNIT_VOLTS, 2 }, { SBEC_POWER_FIRST_ID, SBEC_POWER_LAST_ID, 1, ZSTR_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 +317,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); } diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index e0f453bb8..dbcab44a5 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1267,3 +1267,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" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index ae3f50756..431ad44b8 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1273,3 +1273,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" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index d50b5a2cd..91715127d 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1271,3 +1271,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" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index c4446e52b..c6943a0f1 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1289,3 +1289,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" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 19f24ff02..f8740cdef 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1279,3 +1279,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" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 3dcde7dcd..115dab994 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1295,3 +1295,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" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 4644bf056..486e7fbf0 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1289,3 +1289,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" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 50d624d2c..9f3173d6c 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1281,3 +1281,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" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 1034c98d9..4e8915ce2 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1288,3 +1288,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" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 6b3aaaf0e..90d3dcb9d 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1277,3 +1277,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" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 663d90be3..8b47e3fda 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1288,3 +1288,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"