diff --git a/crossbow.ino b/crossbow.ino index e5adc07..0e0bc26 100644 --- a/crossbow.ino +++ b/crossbow.ino @@ -279,7 +279,7 @@ void loop(void) if (txDeviceState.readPacket) { int incomingByte = LoRa.read(); if (incomingByte > -1) { - qspDecodeIncomingFrame(&qsp, incomingByte, ppm, &rxDeviceState); + qspDecodeIncomingFrame(&qsp, incomingByte, ppm, &rxDeviceState, &txDeviceState); } else { txDeviceState.rssi = getRadioRssi(); txDeviceState.snr = getRadioSnr(); @@ -428,7 +428,7 @@ void loop(void) display.setCursor(54, 48); display.setTextSize(2); - display.print(rxDeviceState.roundtrip); + display.print(txDeviceState.roundtrip); display.display(); } @@ -461,7 +461,7 @@ void onReceive(int packetSize) while (incomingByte = LoRa.read(), incomingByte > -1) { - qspDecodeIncomingFrame(&qsp, incomingByte, ppm, &rxDeviceState); + qspDecodeIncomingFrame(&qsp, incomingByte, ppm, &rxDeviceState, &txDeviceState); } rxDeviceState.rssi = getRadioRssi(); diff --git a/qsp.cpp b/qsp.cpp index 8f37fae..c584b60 100644 --- a/qsp.cpp +++ b/qsp.cpp @@ -143,8 +143,13 @@ void qspClearPayload(QspConfiguration_t *qsp) qsp->payloadLength = 0; } -void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int ppm[], RxDeviceState_t *rxDeviceState) -{ +void qspDecodeIncomingFrame( + QspConfiguration_t *qsp, + uint8_t incomingByte, + int ppm[], + RxDeviceState_t *rxDeviceState, + TxDeviceState_t *txDeviceState +) { static uint8_t frameId; static uint8_t payloadLength; static uint8_t receivedPayload; @@ -228,12 +233,12 @@ void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int p break; case QSP_FRAME_PONG: - rxDeviceState->roundtrip = qsp->payload[0]; - rxDeviceState->roundtrip += (uint32_t) qsp->payload[1] << 8; - rxDeviceState->roundtrip += (uint32_t) qsp->payload[2] << 16; - rxDeviceState->roundtrip += (uint32_t) qsp->payload[3] << 24; + txDeviceState->roundtrip = qsp->payload[0]; + txDeviceState->roundtrip += (uint32_t) qsp->payload[1] << 8; + txDeviceState->roundtrip += (uint32_t) qsp->payload[2] << 16; + txDeviceState->roundtrip += (uint32_t) qsp->payload[3] << 24; - rxDeviceState->roundtrip = (micros() - rxDeviceState->roundtrip) / 1000; + txDeviceState->roundtrip = (micros() - txDeviceState->roundtrip) / 1000; break; diff --git a/qsp.h b/qsp.h index 92abe68..b801ae0 100644 --- a/qsp.h +++ b/qsp.h @@ -9,7 +9,13 @@ uint8_t get10bitLowShift(uint8_t channel); void qspComputeCrc(QspConfiguration_t *qsp, uint8_t dataByte); void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState); void encodeRcDataPayload(QspConfiguration_t *qsp, PPMReader *ppmSource, uint8_t noOfChannels); -void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int ppm[], RxDeviceState_t *rxDeviceState); +void qspDecodeIncomingFrame( + QspConfiguration_t *qsp, + uint8_t incomingByte, + int ppm[], + RxDeviceState_t *rxDeviceState, + TxDeviceState_t *txDeviceState +); void qspClearPayload(QspConfiguration_t *qsp); void qspEncodeFrame(QspConfiguration_t *qsp); diff --git a/variables.h b/variables.h index a189862..6df3a2d 100644 --- a/variables.h +++ b/variables.h @@ -98,6 +98,5 @@ struct RxDeviceState_t { uint8_t rxVoltage = 0; uint8_t a1Voltage = 0; uint8_t a2Voltage = 0; - uint32_t roundtrip = 0; uint8_t flags = 0; }; \ No newline at end of file