frame payload lengths is now const. depending on frame type
This commit is contained in:
@@ -13,8 +13,8 @@
|
|||||||
* DEVICE_MODE_TX
|
* DEVICE_MODE_TX
|
||||||
* DEVICE_MODE_RX
|
* DEVICE_MODE_RX
|
||||||
*/
|
*/
|
||||||
#define DEVICE_MODE_TX
|
// #define DEVICE_MODE_TX
|
||||||
// #define DEVICE_MODE_RX
|
#define DEVICE_MODE_RX
|
||||||
|
|
||||||
// #define FEATURE_TX_OLED
|
// #define FEATURE_TX_OLED
|
||||||
// #define FORCE_TX_WITHOUT_INPUT
|
// #define FORCE_TX_WITHOUT_INPUT
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceSta
|
|||||||
|
|
||||||
qsp->payload[5] = flags;
|
qsp->payload[5] = flags;
|
||||||
|
|
||||||
qsp->payloadLength = 6;
|
qsp->payloadLength = qspFrameLengths[QSP_FRAME_RX_HEALTH];
|
||||||
}
|
}
|
||||||
|
|
||||||
void decodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState) {
|
void decodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState) {
|
||||||
@@ -139,7 +139,7 @@ void encodeRcDataPayload(QspConfiguration_t *qsp, volatile int16_t channels[], u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qsp->payloadLength = 9;
|
qsp->payloadLength = qspFrameLengths[QSP_FRAME_RC_DATA];
|
||||||
}
|
}
|
||||||
|
|
||||||
void qspClearPayload(QspConfiguration_t *qsp)
|
void qspClearPayload(QspConfiguration_t *qsp)
|
||||||
@@ -186,7 +186,9 @@ void qspDecodeIncomingFrame(
|
|||||||
qspComputeCrc(qsp, incomingByte);
|
qspComputeCrc(qsp, incomingByte);
|
||||||
|
|
||||||
qsp->frameId = (incomingByte >> 4) & 0x0f;
|
qsp->frameId = (incomingByte >> 4) & 0x0f;
|
||||||
payloadLength = incomingByte & 0x0f;
|
payloadLength = qspFrameLengths[qsp->frameId];
|
||||||
|
//4 bytes are now free to use for something else
|
||||||
|
// payloadLength = incomingByte & 0x0f;
|
||||||
|
|
||||||
qsp->protocolState = QSP_STATE_FRAME_TYPE_RECEIVED;
|
qsp->protocolState = QSP_STATE_FRAME_TYPE_RECEIVED;
|
||||||
}
|
}
|
||||||
@@ -233,7 +235,9 @@ void qspEncodeFrame(QspConfiguration_t *qsp, uint8_t buffer[], uint8_t *size) {
|
|||||||
buffer[0] = CHANNEL_ID;
|
buffer[0] = CHANNEL_ID;
|
||||||
|
|
||||||
//Write frame type and length
|
//Write frame type and length
|
||||||
uint8_t data = qsp->payloadLength & 0x0f;
|
// We are no longer sending payload length, so 4 bits are now free for other usages
|
||||||
|
// uint8_t data = qsp->payloadLength & 0x0f;
|
||||||
|
uint8_t data = 0;
|
||||||
data |= (qsp->frameToSend << 4) & 0xf0;
|
data |= (qsp->frameToSend << 4) & 0xf0;
|
||||||
qspComputeCrc(qsp, data);
|
qspComputeCrc(qsp, data);
|
||||||
buffer[1] = data;
|
buffer[1] = data;
|
||||||
@@ -254,5 +258,5 @@ void encodePingPayload(QspConfiguration_t *qsp, uint32_t currentMicros) {
|
|||||||
qsp->payload[2] = (currentMicros >> 16) & 255;
|
qsp->payload[2] = (currentMicros >> 16) & 255;
|
||||||
qsp->payload[3] = (currentMicros >> 24) & 255;
|
qsp->payload[3] = (currentMicros >> 24) & 255;
|
||||||
|
|
||||||
qsp->payloadLength = 4;
|
qsp->payloadLength = qspFrameLengths[QSP_FRAME_PING];
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,16 @@
|
|||||||
#define QSP_FRAME_PONG 0x6
|
#define QSP_FRAME_PONG 0x6
|
||||||
#define QSP_FRAME_COUNT 0x7
|
#define QSP_FRAME_COUNT 0x7
|
||||||
|
|
||||||
|
static const uint8_t qspFrameLengths[QSP_FRAME_COUNT] = {
|
||||||
|
9, //QSP_FRAME_RC_DATA
|
||||||
|
6, //QSP_FRAME_RX_HEALTH
|
||||||
|
0, //QSP_FRAME_GET_RX_CONFIG -> Not used
|
||||||
|
0, //QSP_FRAME_RX_CONFIG -> Not used
|
||||||
|
0, //QSP_FRAME_SET_RX_CONFIG -> Not used
|
||||||
|
4, //QSP_FRAME_PING
|
||||||
|
4, //QSP_FRAME_PONG
|
||||||
|
};
|
||||||
|
|
||||||
#define RX_ADC_PIN_1 A0
|
#define RX_ADC_PIN_1 A0
|
||||||
#define RX_ADC_PIN_2 A1
|
#define RX_ADC_PIN_2 A1
|
||||||
#define RX_ADC_PIN_3 A2
|
#define RX_ADC_PIN_3 A2
|
||||||
|
|||||||
Reference in New Issue
Block a user