mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 16:55:36 +03:00
Merge pull request #10582 from dkustec/osd_tx_uplink_power
This commit is contained in:
commit
122f8f29af
8 changed files with 57 additions and 1 deletions
|
@ -1352,6 +1352,9 @@ const clivalue_t valueTable[] = {
|
|||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
{ "osd_link_quality_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_LINK_QUALITY]) },
|
||||
#endif
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
{ "osd_link_tx_power_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_TX_UPLINK_POWER]) },
|
||||
#endif
|
||||
#ifdef USE_RX_RSSI_DBM
|
||||
{ "osd_rssi_dbm_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_RSSI_DBM_VALUE]) },
|
||||
#endif
|
||||
|
|
|
@ -160,6 +160,7 @@ typedef enum {
|
|||
OSD_EFFICIENCY,
|
||||
OSD_TOTAL_FLIGHTS,
|
||||
OSD_UP_DOWN_REFERENCE,
|
||||
OSD_TX_UPLINK_POWER,
|
||||
OSD_ITEM_COUNT // MUST BE LAST
|
||||
} osd_items_e;
|
||||
|
||||
|
|
|
@ -1036,6 +1036,18 @@ static void osdElementLinkQuality(osdElementParms_t *element)
|
|||
}
|
||||
#endif // USE_RX_LINK_QUALITY_INFO
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
static void osdElementTxUplinkPower(osdElementParms_t *element)
|
||||
{
|
||||
const uint16_t osdUplinkTxPowerMw = rxGetUplinkTxPwrMw();
|
||||
if (osdUplinkTxPowerMw < 1000) {
|
||||
tfp_sprintf(element->buff, "%c%3dMW", SYM_RSSI, osdUplinkTxPowerMw);
|
||||
} else {
|
||||
osdPrintFloat(element->buff, SYM_RSSI, osdUplinkTxPowerMw / 1000.0f, "", 1, false, 'W');
|
||||
}
|
||||
}
|
||||
#endif // USE_RX_LINK_UPLINK_POWER
|
||||
|
||||
#ifdef USE_BLACKBOX
|
||||
static void osdElementLogStatus(osdElementParms_t *element)
|
||||
{
|
||||
|
@ -1422,6 +1434,9 @@ static const uint8_t osdElementDisplayOrder[] = {
|
|||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
OSD_LINK_QUALITY,
|
||||
#endif
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
OSD_TX_UPLINK_POWER,
|
||||
#endif
|
||||
#ifdef USE_RX_RSSI_DBM
|
||||
OSD_RSSI_DBM_VALUE,
|
||||
#endif
|
||||
|
@ -1527,6 +1542,9 @@ const osdElementDrawFn osdElementDrawFunction[OSD_ITEM_COUNT] = {
|
|||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
[OSD_LINK_QUALITY] = osdElementLinkQuality,
|
||||
#endif
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
[OSD_TX_UPLINK_POWER] = osdElementTxUplinkPower,
|
||||
#endif
|
||||
#ifdef USE_GPS
|
||||
[OSD_FLIGHT_DIST] = osdElementGpsFlightDistance,
|
||||
#endif
|
||||
|
|
|
@ -70,6 +70,12 @@ static uint8_t telemetryBufLen = 0;
|
|||
|
||||
static timeUs_t lastRcFrameTimeUs = 0;
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
#define CRSF_UPLINK_POWER_LEVEL_MW_ITEMS_COUNT 8
|
||||
// Uplink power levels by uplinkTXPower expressed in mW (250 mW is from ver >=4.00)
|
||||
const uint16_t uplinkTXPowerStatesMw[CRSF_UPLINK_POWER_LEVEL_MW_ITEMS_COUNT] = {0, 10, 25, 100, 500, 1000, 2000, 250};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* CRSF protocol
|
||||
*
|
||||
|
@ -130,7 +136,7 @@ typedef struct crsfPayloadRcChannelsPacked_s crsfPayloadRcChannelsPacked_t;
|
|||
* int8_t Uplink SNR ( db )
|
||||
* uint8_t Diversity active antenna ( enum ant. 1 = 0, ant. 2 )
|
||||
* uint8_t RF Mode ( enum 4fps = 0 , 50fps, 150hz)
|
||||
* uint8_t Uplink TX Power ( enum 0mW = 0, 10mW, 25 mW, 100 mW, 500 mW, 1000 mW, 2000mW )
|
||||
* uint8_t Uplink TX Power ( enum 0mW = 0, 10mW, 25 mW, 100 mW, 500 mW, 1000 mW, 2000mW, 250mW )
|
||||
* uint8_t Downlink RSSI ( dBm * -1 )
|
||||
* uint8_t Downlink package success rate / Link quality ( % )
|
||||
* int8_t Downlink SNR ( db )
|
||||
|
@ -175,6 +181,11 @@ static void handleCrsfLinkStatisticsFrame(const crsfLinkStatistics_t* statsPtr,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
const uint8_t crsfUplinkPowerStatesItemIndex = (stats.uplink_TX_Power < CRSF_UPLINK_POWER_LEVEL_MW_ITEMS_COUNT) ? stats.uplink_TX_Power : 0;
|
||||
rxSetUplinkTxPwrMw(uplinkTXPowerStatesMw[crsfUplinkPowerStatesItemIndex]);
|
||||
#endif
|
||||
|
||||
switch (debugMode) {
|
||||
case DEBUG_CRSF_LINK_STATISTICS_UPLINK:
|
||||
DEBUG_SET(DEBUG_CRSF_LINK_STATISTICS_UPLINK, 0, stats.uplink_RSSI_1);
|
||||
|
|
|
@ -85,6 +85,10 @@ static uint16_t linkQuality = 0;
|
|||
static uint8_t rfMode = 0;
|
||||
#endif
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
static uint16_t uplinkTxPwrMw = 0; //Uplink Tx power in mW
|
||||
#endif
|
||||
|
||||
#define MSP_RSSI_TIMEOUT_US 1500000 // 1.5 sec
|
||||
|
||||
#define RSSI_ADC_DIVISOR (4096 / 1024)
|
||||
|
@ -455,6 +459,13 @@ void setLinkQualityDirect(uint16_t linkqualityValue)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
void rxSetUplinkTxPwrMw(uint16_t uplinkTxPwrMwValue)
|
||||
{
|
||||
uplinkTxPwrMw = uplinkTxPwrMwValue;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool rxUpdateCheck(timeUs_t currentTimeUs, timeDelta_t currentDeltaTimeUs)
|
||||
{
|
||||
bool signalReceived = false;
|
||||
|
@ -881,6 +892,13 @@ uint16_t rxGetLinkQualityPercent(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_RX_LINK_UPLINK_POWER
|
||||
uint16_t rxGetUplinkTxPwrMw(void)
|
||||
{
|
||||
return uplinkTxPwrMw;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint16_t rxGetRefreshRate(void)
|
||||
{
|
||||
return rxRuntimeState.rxRefreshRate;
|
||||
|
|
|
@ -206,6 +206,9 @@ void setRssiDbmDirect(int16_t newRssiDbm, rssiSource_e source);
|
|||
void rxSetRfMode(uint8_t rfModeValue);
|
||||
uint8_t rxGetRfMode(void);
|
||||
|
||||
void rxSetUplinkTxPwrMw(uint16_t uplinkTxPwrMwValue);
|
||||
uint16_t rxGetUplinkTxPwrMw(void);
|
||||
|
||||
void resetAllRxChannelRangeConfigurations(rxChannelRangeConfig_t *rxChannelRangeConfig);
|
||||
|
||||
void suspendRxPwmPpmSignal(void);
|
||||
|
|
|
@ -231,6 +231,7 @@
|
|||
#undef USE_RX_LINK_QUALITY_INFO
|
||||
#undef USE_OSD_PROFILES
|
||||
#undef USE_OSD_STICK_OVERLAY
|
||||
#undef USE_RX_LINK_UPLINK_POWER
|
||||
#endif
|
||||
|
||||
#if defined(USE_GPS_RESCUE)
|
||||
|
|
|
@ -397,4 +397,5 @@
|
|||
#define USE_BATTERY_VOLTAGE_SAG_COMPENSATION
|
||||
#define USE_RX_MSP_OVERRIDE
|
||||
#define USE_SIMPLIFIED_TUNING
|
||||
#define USE_RX_LINK_UPLINK_POWER
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue