Store last time frame was received
This commit is contained in:
@@ -288,7 +288,7 @@ void loop(void)
|
||||
* Here we do state handling and similar operations
|
||||
*/
|
||||
#ifdef DEVICE_MODE_RX
|
||||
if (abs(currentMillis - qsp.lastRcFrameReceived) > RX_FAILSAFE_DELAY) {
|
||||
if (abs(currentMillis - qsp.lastFrameReceivedAt[QSP_FRAME_RC_DATA]) > RX_FAILSAFE_DELAY) {
|
||||
qsp.deviceState = DEVICE_STATE_FAILSAFE;
|
||||
} else {
|
||||
qsp.deviceState = DEVICE_STATE_OK;
|
||||
|
||||
9
qsp.cpp
9
qsp.cpp
@@ -194,10 +194,13 @@ void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int p
|
||||
canTransmit = true;
|
||||
#endif
|
||||
|
||||
switch (frameId)
|
||||
{
|
||||
//Store the last timestamp when frame was received
|
||||
if (frameId < QSP_FRAME_COUNT) {
|
||||
qsp->lastFrameReceivedAt[frameId] = millis();
|
||||
}
|
||||
|
||||
switch (frameId) {
|
||||
case QSP_FRAME_RC_DATA:
|
||||
qsp->lastRcFrameReceived = millis();
|
||||
qspDecodeRcDataFrame(qsp, ppm);
|
||||
break;
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
|
||||
#define QSP_FRAME_RC_DATA 0x0
|
||||
#define QSP_FRAME_RX_HEALTH 0x1
|
||||
#define QSP_FRAME_GET_RX_CONFIG 0x2
|
||||
#define QSP_FRAME_RX_CONFIG 0x3
|
||||
#define QSP_FRAME_SET_RX_CONFIG 0x4
|
||||
#define QSP_FRAME_COUNT 0x5
|
||||
|
||||
#define PIN_LED 13
|
||||
|
||||
@@ -48,7 +52,7 @@ struct QspConfiguration_t {
|
||||
uint8_t payload[QSP_PAYLOAD_LENGTH] = {0};
|
||||
uint8_t payloadLength = 0;
|
||||
uint8_t frameToSend = 0;
|
||||
uint32_t lastRcFrameReceived = 0;
|
||||
uint32_t lastFrameReceivedAt[QSP_FRAME_COUNT] = {0};
|
||||
uint8_t deviceState = DEVICE_STATE_OK;
|
||||
void (* hardwareWriteFunction)(uint8_t, QspConfiguration_t*);
|
||||
};
|
||||
Reference in New Issue
Block a user