Skip to content

Commit

Permalink
Merge pull request #6948 from iNavFlight/avs-osd-hide-crsf-rfmd
Browse files Browse the repository at this point in the history
Updated CRSF LQ formatting
  • Loading branch information
avsaase committed May 11, 2021
2 parents 0eed666 + 8e69fbe commit 27373fb
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/main/drivers/osd_symbols.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#define SYM_AH_MI 0x09 // 009 Ah/mi
#define SYM_MAH_MI_0 0x0A // 010 mAh/mi left
#define SYM_MAH_MI_1 0x0B // 010 mAh/mi left
// 0x0C // 012 -
#define SYM_LQ 0x0C // 012 LQ

#define SYM_TEMP_F 0x0D // 013 °F
#define SYM_TEMP_C 0x0E // 014 °C
Expand Down
2 changes: 1 addition & 1 deletion src/main/fc/settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ tables:
values: ["AUTO", "ON", "OFF"]
- name: osd_crsf_lq_format
enum: osd_crsf_lq_format_e
values: ["TYPE1", "TYPE2"]
values: ["TYPE1", "TYPE2", "TYPE3"]
- name: off_on
values: ["OFF", "ON"]
- name: djiOsdTempSource
Expand Down
40 changes: 22 additions & 18 deletions src/main/io/osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ static bool osdDisplayHasCanvas;

#define AH_MAX_PITCH_DEFAULT 20 // Specify default maximum AHI pitch value displayed (degrees)

PG_REGISTER_WITH_RESET_TEMPLATE(osdConfig_t, osdConfig, PG_OSD_CONFIG, 1);
PG_REGISTER_WITH_RESET_TEMPLATE(osdConfig_t, osdConfig, PG_OSD_CONFIG, 2);
PG_REGISTER_WITH_RESET_FN(osdLayoutsConfig_t, osdLayoutsConfig, PG_OSD_LAYOUTS_CONFIG, 0);

static int digitCount(int32_t value)
Expand Down Expand Up @@ -539,11 +539,17 @@ static uint16_t osdGetCrsfLQ(void)
{
int16_t statsLQ = rxLinkStatistics.uplinkLQ;
int16_t scaledLQ = scaleRange(constrain(statsLQ, 0, 100), 0, 100, 170, 300);
if (rxLinkStatistics.rfMode == 2) {
return scaledLQ;
} else {
return statsLQ;
int16_t displayedLQ;
switch (osdConfig()->crsf_lq_format) {
case OSD_CRSF_LQ_TYPE1:
case OSD_CRSF_LQ_TYPE2:
displayedLQ = statsLQ;
break;
case OSD_CRSF_LQ_TYPE3:
displayedLQ = rxLinkStatistics.rfMode >= 2 ? scaledLQ : statsLQ;
break;
}
return displayedLQ;
}

static int16_t osdGetCrsfdBm(void)
Expand Down Expand Up @@ -1860,21 +1866,19 @@ static bool osdDrawSingleElement(uint8_t item)
}
case OSD_CRSF_LQ:
{
buff[0] = SYM_BLANK;
buff[0] = SYM_LQ;
int16_t statsLQ = rxLinkStatistics.uplinkLQ;
int16_t scaledLQ = scaleRange(constrain(statsLQ, 0, 100), 0, 100, 170, 300);
if (rxLinkStatistics.rfMode == 2) {
if (osdConfig()->crsf_lq_format == OSD_CRSF_LQ_TYPE1) {
tfp_sprintf(buff, "%5d%s", scaledLQ, "%");
} else {
tfp_sprintf(buff, "%d:%3d%s", rxLinkStatistics.rfMode, rxLinkStatistics.uplinkLQ, "%");
}
} else {
if (osdConfig()->crsf_lq_format == OSD_CRSF_LQ_TYPE1) {
tfp_sprintf(buff, "%5d%s", rxLinkStatistics.uplinkLQ, "%");
} else {
tfp_sprintf(buff, "%d:%3d%s", rxLinkStatistics.rfMode, rxLinkStatistics.uplinkLQ, "%");
}
switch (osdConfig()->crsf_lq_format) {
case OSD_CRSF_LQ_TYPE1:
tfp_sprintf(buff+1, "%3d", rxLinkStatistics.uplinkLQ);
break;
case OSD_CRSF_LQ_TYPE2:
tfp_sprintf(buff+1, "%d:%3d", rxLinkStatistics.rfMode, rxLinkStatistics.uplinkLQ);
break;
case OSD_CRSF_LQ_TYPE3:
tfp_sprintf(buff+1, "%3d", rxLinkStatistics.rfMode >= 2 ? scaledLQ : rxLinkStatistics.uplinkLQ);
break;
}
if (!failsafeIsReceivingRxData()){
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
Expand Down
1 change: 1 addition & 0 deletions src/main/io/osd.h
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ typedef enum {
typedef enum {
OSD_CRSF_LQ_TYPE1,
OSD_CRSF_LQ_TYPE2,
OSD_CRSF_LQ_TYPE3
} osd_crsf_lq_format_e;

typedef struct osdLayoutsConfig_s {
Expand Down

0 comments on commit 27373fb

Please sign in to comment.