Fixed current channel indication and next channel computation
This commit is contained in:
6
.vscode/c_cpp_properties.json
vendored
6
.vscode/c_cpp_properties.json
vendored
@@ -11,12 +11,6 @@
|
||||
"${workspaceRoot}"
|
||||
]
|
||||
},
|
||||
"defines": [
|
||||
"SPI_HAS_NOTUSINGINTERRUPT",
|
||||
"FEATURE_TX_INPUT_SBUS",
|
||||
"DEVICE_MODE_TX",
|
||||
"DEVICE_MODE_RX"
|
||||
],
|
||||
"intelliSenseMode": "msvc-x64",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17",
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
* DEVICE_MODE_TX
|
||||
* DEVICE_MODE_RX
|
||||
*/
|
||||
#define DEVICE_MODE_TX
|
||||
// #define DEVICE_MODE_RX
|
||||
// #define DEVICE_MODE_TX
|
||||
#define DEVICE_MODE_RX
|
||||
|
||||
// #define FEATURE_TX_OLED
|
||||
// #define FORCE_TX_WITHOUT_INPUT
|
||||
@@ -27,7 +27,7 @@
|
||||
*/
|
||||
#define FEATURE_TX_INPUT_SBUS
|
||||
|
||||
// #define DEBUG_SERIAL
|
||||
#define DEBUG_SERIAL
|
||||
// #define DEBUG_PING_PONG
|
||||
// #define DEBUG_LED
|
||||
// #define DEBUG_TX_INPUT_ON_OLED
|
||||
|
||||
@@ -103,7 +103,7 @@ uint8_t getPrevChannel(uint8_t channel) {
|
||||
return (RADIO_CHANNEL_COUNT + channel - RADIO_HOP_OFFSET) % RADIO_CHANNEL_COUNT;
|
||||
}
|
||||
|
||||
void hopFrequency(RadioState_t *radioState, bool forward, uint8_t fromChannel) {
|
||||
void hopFrequency(volatile RadioState_t *radioState, bool forward, uint8_t fromChannel) {
|
||||
radioState->channelEntryMillis = millis();
|
||||
|
||||
if (forward) {
|
||||
@@ -495,7 +495,7 @@ void loop(void)
|
||||
uint8_t size;
|
||||
LoRa.beginPacket();
|
||||
//Prepare packet
|
||||
qspEncodeFrame(&qsp, tmpBuffer, &size);
|
||||
qspEncodeFrame(&qsp, &radioState, tmpBuffer, &size);
|
||||
//Sent it to radio in one SPI transaction
|
||||
LoRa.write(tmpBuffer, size);
|
||||
LoRa.endPacketAsync();
|
||||
|
||||
@@ -189,7 +189,6 @@ void qspDecodeIncomingFrame(
|
||||
qsp->frameId = (incomingByte >> 4) & 0x0f;
|
||||
payloadLength = qspFrameLengths[qsp->frameId];
|
||||
receivedChannel = incomingByte & 0x0f;
|
||||
|
||||
qsp->protocolState = QSP_STATE_FRAME_TYPE_RECEIVED;
|
||||
}
|
||||
else if (qsp->protocolState == QSP_STATE_FRAME_TYPE_RECEIVED)
|
||||
@@ -228,7 +227,7 @@ void qspDecodeIncomingFrame(
|
||||
/**
|
||||
* Encode frame is corrent format and write to hardware
|
||||
*/
|
||||
void qspEncodeFrame(QspConfiguration_t *qsp, uint8_t buffer[], uint8_t *size) {
|
||||
void qspEncodeFrame(QspConfiguration_t *qsp, volatile RadioState_t *radioState, uint8_t buffer[], uint8_t *size) {
|
||||
//Zero CRC
|
||||
qsp->crc = 0;
|
||||
|
||||
@@ -238,7 +237,7 @@ void qspEncodeFrame(QspConfiguration_t *qsp, uint8_t buffer[], uint8_t *size) {
|
||||
//Write frame type and length
|
||||
// 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;
|
||||
uint8_t data = radioState->channel;
|
||||
data |= (qsp->frameToSend << 4) & 0xf0;
|
||||
qspComputeCrc(qsp, data);
|
||||
buffer[1] = data;
|
||||
|
||||
@@ -16,6 +16,6 @@ void qspDecodeIncomingFrame(
|
||||
volatile RadioState_t *radioState
|
||||
);
|
||||
void qspClearPayload(QspConfiguration_t *qsp);
|
||||
void qspEncodeFrame(QspConfiguration_t *qsp, uint8_t buffer[], uint8_t *size);
|
||||
void qspEncodeFrame(QspConfiguration_t *qsp, volatile RadioState_t *radioState, uint8_t buffer[], uint8_t *size);
|
||||
|
||||
void encodePingPayload(QspConfiguration_t *qsp, uint32_t currentMicros);
|
||||
@@ -90,7 +90,7 @@ enum debugConfigFlags {
|
||||
#define RADIO_FREQUENCY_MAX 870000000
|
||||
#define RADIO_FREQUENCY_RANGE (RADIO_FREQUENCY_MAX-RADIO_FREQUENCY_MIN)
|
||||
#define RADIO_CHANNEL_WIDTH 250000
|
||||
#define RADIO_CHANNEL_COUNT (RADIO_FREQUENCY_RANGE/RADIO_CHANNEL_WIDTH) + 1 // 9 channels in 2MHz range
|
||||
#define RADIO_CHANNEL_COUNT 9 // 9 channels in 2MHz range (RADIO_FREQUENCY_RANGE/RADIO_CHANNEL_WIDTH) + 1
|
||||
#define RADIO_HOP_OFFSET 5
|
||||
|
||||
struct RadioState_t {
|
||||
|
||||
Reference in New Issue
Block a user