1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 22:35:23 +03:00

Merge pull request #6899 from AndersHoglund/srxl_tidy

Spektrum SRXL Telemetry tidying.
This commit is contained in:
Michael Keller 2018-10-11 00:39:37 +13:00 committed by GitHub
commit 47903b0c75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 26 deletions

View file

@ -150,24 +150,15 @@ static uint8_t spektrumFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig)
} }
#if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL) #if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL)
if (srxlEnabled) { if (srxlEnabled && (spekFrame[2] & 0x80) == 0) {
if (telemetryBufLen) {
if ((spekFrame[2] & 0x80) == 0) {
telemetryFrameRequestedUs = currentTimeUs; telemetryFrameRequestedUs = currentTimeUs;
}
}
else {
// Trigger tm data collection if buffer is empty.
srxlCollectTelemetryNow();
}
} }
#endif #endif
result = RX_FRAME_COMPLETE; result = RX_FRAME_COMPLETE;
} }
#if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL) #if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL)
if (telemetryFrameRequestedUs && cmpTimeUs(currentTimeUs, telemetryFrameRequestedUs) >= SPEKTRUM_TELEMETRY_FRAME_DELAY_US) { if (telemetryBufLen && telemetryFrameRequestedUs && cmpTimeUs(currentTimeUs, telemetryFrameRequestedUs) >= SPEKTRUM_TELEMETRY_FRAME_DELAY_US) {
telemetryFrameRequestedUs = 0; telemetryFrameRequestedUs = 0;
result = (result & ~RX_FRAME_PENDING) | RX_FRAME_PROCESSING_REQUIRED; result = (result & ~RX_FRAME_PENDING) | RX_FRAME_PROCESSING_REQUIRED;
@ -324,13 +315,20 @@ static bool spektrumProcessFrame(const rxRuntimeConfig_t *rxRuntimeConfig)
if (telemetryBufLen > 0) { if (telemetryBufLen > 0) {
serialWriteBuf(serialPort, telemetryBuf, telemetryBufLen); serialWriteBuf(serialPort, telemetryBuf, telemetryBufLen);
telemetryBufLen = 0; // reset telemetry buffer telemetryBufLen = 0; // reset telemetry buffer
srxlCollectTelemetryNow();
} }
return true; return true;
} }
bool srxlTelemetryBufferEmpty()
{
if (telemetryBufLen == 0) {
return true;
} else {
return false;
}
}
void srxlRxWriteTelemetryData(const void *data, int len) void srxlRxWriteTelemetryData(const void *data, int len)
{ {
len = MIN(len, (int)sizeof(telemetryBuf)); len = MIN(len, (int)sizeof(telemetryBuf));

View file

@ -51,5 +51,6 @@ extern uint8_t rssi_channel; // Stores the RX RSSI channel.
void spektrumBind(rxConfig_t *rxConfig); void spektrumBind(rxConfig_t *rxConfig);
bool spektrumInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig); bool spektrumInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
bool srxlTelemetryBufferEmpty();
void srxlRxWriteTelemetryData(const void *data, int len); void srxlRxWriteTelemetryData(const void *data, int len);
bool srxlRxIsActive(void); bool srxlRxIsActive(void);

View file

@ -76,13 +76,6 @@
static bool srxlTelemetryEnabled; static bool srxlTelemetryEnabled;
static uint8_t srxlFrame[SRXL_FRAME_SIZE_MAX]; static uint8_t srxlFrame[SRXL_FRAME_SIZE_MAX];
static bool srxlTelemetryNow = false;
void srxlCollectTelemetryNow(void)
{
srxlTelemetryNow = true;
}
static void srxlInitializeFrame(sbuf_t *dst) static void srxlInitializeFrame(sbuf_t *dst)
{ {
@ -517,11 +510,8 @@ bool checkSrxlTelemetryState(void)
*/ */
void handleSrxlTelemetry(timeUs_t currentTimeUs) void handleSrxlTelemetry(timeUs_t currentTimeUs)
{ {
if (!srxlTelemetryNow) { if (srxlTelemetryBufferEmpty()) {
return; processSrxl(currentTimeUs);
} }
srxlTelemetryNow = false;
processSrxl(currentTimeUs);
} }
#endif #endif