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:
commit
47903b0c75
3 changed files with 15 additions and 26 deletions
|
@ -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));
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue