Add rssi choice

This commit is contained in:
3djc
2019-04-07 13:17:51 +02:00
parent abe11d1293
commit 8da1418cae
5 changed files with 44 additions and 10 deletions
+8 -7
View File
@@ -335,6 +335,7 @@ PACK(struct FrSkyTelemetryData {
int8_t varioCenterMin;
int8_t varioMin;
int8_t varioMax;
uint8_t rssiSource;
});
#endif
@@ -832,7 +833,7 @@ static inline void check_struct()
CHKSIZE(FrSkyBarData, 6);
CHKSIZE(FrSkyLineData, 4);
CHKTYPE(union FrSkyScreenData, 24);
CHKSIZE(FrSkyTelemetryData, 104);
CHKSIZE(FrSkyTelemetryData, 105);
CHKSIZE(ModelHeader, 12);
CHKSIZE(CurveData, 4);
#elif defined(PCBTARANIS)
@@ -906,25 +907,25 @@ static inline void check_struct()
#if defined(PCBXLITES)
CHKSIZE(RadioData, 860);
CHKSIZE(ModelData, 6054);
CHKSIZE(ModelData, 6055);
#elif defined(PCBXLITE)
CHKSIZE(RadioData, 852);
CHKSIZE(ModelData, 6054);
CHKSIZE(ModelData, 6055);
#elif defined(PCBX7)
CHKSIZE(RadioData, 858);
CHKSIZE(ModelData, 6054);
CHKSIZE(ModelData, 6055);
#elif defined(PCBX9E)
CHKSIZE(RadioData, 960);
CHKSIZE(ModelData, 6549);
CHKSIZE(ModelData, 6550);
#elif defined(PCBX9D) || defined(PCBX9DP)
CHKSIZE(RadioData, 880);
CHKSIZE(ModelData, 6536);
CHKSIZE(ModelData, 6537);
#elif defined(PCBSKY9X)
CHKSIZE(RadioData, 735);
CHKSIZE(ModelData, 5215);
#elif defined(PCBHORUS)
CHKSIZE(RadioData, 855);
CHKSIZE(ModelData, 9721);
CHKSIZE(ModelData, 9722);
#endif
#undef CHKSIZE
+15 -1
View File
@@ -26,6 +26,7 @@ enum MenuModelTelemetryFrskyItems {
ITEM_TELEMETRY_INVERTED_SERIAL,
#endif
ITEM_TELEMETRY_RSSI_LABEL,
ITEM_TELEMETRY_RSSI_SOURCE,
ITEM_TELEMETRY_RSSI_ALARM1,
ITEM_TELEMETRY_RSSI_ALARM2,
ITEM_TELEMETRY_DISABLE_ALARMS,
@@ -57,7 +58,7 @@ enum MenuModelTelemetryFrskyItems {
#define USRDATA_ROWS
#define RSSI_ROWS LABEL(RSSI), 0, 0, 1,
#define RSSI_ROWS LABEL(RSSI), 0, 0, 0, 1,
#define SCREEN_TYPE_ROWS 0
@@ -254,6 +255,19 @@ void menuModelTelemetryFrsky(event_t event)
lcdDrawTextAlignedLeft(y, "RSSI");
break;
case ITEM_TELEMETRY_RSSI_SOURCE: {
lcdDrawTextAlignedLeft(y, STR_SOURCE);
drawSource(TELEM_COL2, y, g_model.frsky.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.frsky.rssiSource - 1) : 0, attr);
if (g_model.frsky.rssiSource) {
TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.frsky.rssiSource];
drawReceiverName(TELEM_COL2 + 5 * FW, y, (sensor->instance >> 7) & 0x01, (sensor->instance >> 5) & 0x03, 0);
}
if (attr) {
g_model.frsky.rssiSource = checkIncDec(event, g_model.frsky.rssiSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL | NO_INCDEC_MARKS, isRssiSensorAvailable);
}
break;
}
case ITEM_TELEMETRY_RSSI_ALARM1:
case ITEM_TELEMETRY_RSSI_ALARM2: {
bool warning = (k==ITEM_TELEMETRY_RSSI_ALARM1);
+1
View File
@@ -72,6 +72,7 @@ bool isCurrentSensor(int sensor);
bool isTelemetryFieldAvailable(int index);
bool isTelemetryFieldComparisonAvailable(int index);
bool isSensorAvailable(int sensor);
bool isRssiSensorAvailable(int sensor);
bool modelHasNotes();
+11
View File
@@ -46,6 +46,17 @@ bool isInputAvailable(int input)
return false;
}
bool isRssiSensorAvailable(int sensor)
{
if (sensor == 0)
return true;
else {
TelemetrySensor &telemSensor = g_model.telemetrySensors[abs(sensor) - 1];
return (telemSensor.isAvailable() && telemSensor.id == RSSI_ID);
}
}
bool isSensorAvailable(int sensor)
{
if (sensor == 0)
+9 -2
View File
@@ -164,8 +164,15 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe
data = SPORT_DATA_U8(packet);
if (data == 0)
telemetryData.rssi.reset();
else
telemetryData.rssi.set(data);
else {
if(g_model.frsky.rssiSource) {
TelemetrySensor * sensor = & g_model.telemetrySensors[g_model.frsky.rssiSource];
if(sensor->instance == instance)
telemetryData.rssi.set(data);
}
else
telemetryData.rssi.set(data);
}
}
else if (dataId == R9_PWR_ID) {
uint32_t r9pwr[] = {100, 200, 500, 1000};