mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 12:25:20 +03:00
Merge pull request #10389 from ImmersionRC/irc-ghst-driver-debug
This commit is contained in:
commit
d89a5c8713
3 changed files with 22 additions and 0 deletions
|
@ -98,4 +98,5 @@ const char * const debugModeNames[DEBUG_COUNT] = {
|
||||||
"RX_TIMING",
|
"RX_TIMING",
|
||||||
"D_LPF",
|
"D_LPF",
|
||||||
"VTX_TRAMP",
|
"VTX_TRAMP",
|
||||||
|
"GHST",
|
||||||
};
|
};
|
||||||
|
|
|
@ -114,6 +114,7 @@ typedef enum {
|
||||||
DEBUG_RX_TIMING,
|
DEBUG_RX_TIMING,
|
||||||
DEBUG_D_LPF,
|
DEBUG_D_LPF,
|
||||||
DEBUG_VTX_TRAMP,
|
DEBUG_VTX_TRAMP,
|
||||||
|
DEBUG_GHST,
|
||||||
DEBUG_COUNT
|
DEBUG_COUNT
|
||||||
} debugType_e;
|
} debugType_e;
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,13 @@ STATIC_UNIT_TESTED ghstFrame_t ghstValidatedFrame; // validated frame, CRC is o
|
||||||
|
|
||||||
STATIC_UNIT_TESTED uint32_t ghstChannelData[GHST_MAX_NUM_CHANNELS];
|
STATIC_UNIT_TESTED uint32_t ghstChannelData[GHST_MAX_NUM_CHANNELS];
|
||||||
|
|
||||||
|
enum {
|
||||||
|
DEBUG_GHST_CRC_ERRORS = 0,
|
||||||
|
DEBUG_GHST_UNKNOWN_FRAMES,
|
||||||
|
DEBUG_GHST_RX_RSSI,
|
||||||
|
DEBUG_GHST_RX_LQ,
|
||||||
|
};
|
||||||
|
|
||||||
static serialPort_t *serialPort;
|
static serialPort_t *serialPort;
|
||||||
static timeUs_t ghstRxFrameStartAtUs = 0;
|
static timeUs_t ghstRxFrameStartAtUs = 0;
|
||||||
static timeUs_t ghstRxFrameEndAtUs = 0;
|
static timeUs_t ghstRxFrameEndAtUs = 0;
|
||||||
|
@ -180,6 +187,7 @@ static bool shouldSendTelemetryFrame(void)
|
||||||
STATIC_UNIT_TESTED uint8_t ghstFrameStatus(rxRuntimeState_t *rxRuntimeState)
|
STATIC_UNIT_TESTED uint8_t ghstFrameStatus(rxRuntimeState_t *rxRuntimeState)
|
||||||
{
|
{
|
||||||
UNUSED(rxRuntimeState);
|
UNUSED(rxRuntimeState);
|
||||||
|
static int16_t crcErrorCount = 0;
|
||||||
|
|
||||||
if (ghstFrameAvailable) {
|
if (ghstFrameAvailable) {
|
||||||
ghstFrameAvailable = false;
|
ghstFrameAvailable = false;
|
||||||
|
@ -191,6 +199,10 @@ STATIC_UNIT_TESTED uint8_t ghstFrameStatus(rxRuntimeState_t *rxRuntimeState)
|
||||||
return RX_FRAME_COMPLETE | RX_FRAME_PROCESSING_REQUIRED; // request callback through ghstProcessFrame to do the decoding work
|
return RX_FRAME_COMPLETE | RX_FRAME_PROCESSING_REQUIRED; // request callback through ghstProcessFrame to do the decoding work
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (crc != ghstValidatedFrame.bytes[fullFrameLength - 1]) {
|
||||||
|
DEBUG_SET(DEBUG_GHST, DEBUG_GHST_CRC_ERRORS, ++crcErrorCount);
|
||||||
|
}
|
||||||
|
|
||||||
return RX_FRAME_DROPPED; // frame was invalid
|
return RX_FRAME_DROPPED; // frame was invalid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,6 +220,8 @@ static bool ghstProcessFrame(const rxRuntimeState_t *rxRuntimeState)
|
||||||
|
|
||||||
UNUSED(rxRuntimeState);
|
UNUSED(rxRuntimeState);
|
||||||
|
|
||||||
|
static int16_t unknownFrameCount = 0;
|
||||||
|
|
||||||
// do we have a telemetry buffer to send?
|
// do we have a telemetry buffer to send?
|
||||||
if (shouldSendTelemetryFrame()) {
|
if (shouldSendTelemetryFrame()) {
|
||||||
ghstTransmittingTelemetry = true;
|
ghstTransmittingTelemetry = true;
|
||||||
|
@ -231,6 +245,9 @@ static bool ghstProcessFrame(const rxRuntimeState_t *rxRuntimeState)
|
||||||
case GHST_UL_RC_CHANS_HS4_RSSI: {
|
case GHST_UL_RC_CHANS_HS4_RSSI: {
|
||||||
const ghstPayloadPulsesRssi_t* const rssiFrame = (ghstPayloadPulsesRssi_t*)&ghstValidatedFrame.frame.payload;
|
const ghstPayloadPulsesRssi_t* const rssiFrame = (ghstPayloadPulsesRssi_t*)&ghstValidatedFrame.frame.payload;
|
||||||
|
|
||||||
|
DEBUG_SET(DEBUG_GHST, DEBUG_GHST_RX_RSSI, -rssiFrame->rssi);
|
||||||
|
DEBUG_SET(DEBUG_GHST, DEBUG_GHST_RX_LQ, rssiFrame->lq);
|
||||||
|
|
||||||
if (rssiSource == RSSI_SOURCE_RX_PROTOCOL) {
|
if (rssiSource == RSSI_SOURCE_RX_PROTOCOL) {
|
||||||
// rssi sent sign-inverted
|
// rssi sent sign-inverted
|
||||||
const uint16_t rssiPercentScaled = scaleRange(-rssiFrame->rssi, GHST_RSSI_DBM_MIN, 0, GHST_RSSI_DBM_MAX, RSSI_MAX_VALUE);
|
const uint16_t rssiPercentScaled = scaleRange(-rssiFrame->rssi, GHST_RSSI_DBM_MIN, 0, GHST_RSSI_DBM_MAX, RSSI_MAX_VALUE);
|
||||||
|
@ -252,6 +269,9 @@ static bool ghstProcessFrame(const rxRuntimeState_t *rxRuntimeState)
|
||||||
case GHST_UL_RC_CHANS_HS4_5TO8: startIdx = 4; break;
|
case GHST_UL_RC_CHANS_HS4_5TO8: startIdx = 4; break;
|
||||||
case GHST_UL_RC_CHANS_HS4_9TO12: startIdx = 8; break;
|
case GHST_UL_RC_CHANS_HS4_9TO12: startIdx = 8; break;
|
||||||
case GHST_UL_RC_CHANS_HS4_13TO16: startIdx = 12; break;
|
case GHST_UL_RC_CHANS_HS4_13TO16: startIdx = 12; break;
|
||||||
|
default:
|
||||||
|
DEBUG_SET(DEBUG_GHST, DEBUG_GHST_UNKNOWN_FRAMES, ++unknownFrameCount);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startIdx > 0)
|
if (startIdx > 0)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue