Adding simple FSK Rx Processor. Can be used with New Apps. (#2716)

* Work to allow for unique beacon parsing functions.

* Fixing pull.

* Changes.

* Formatting.

* Fix Copyright

* Update firmware/application/apps/ble_rx_app.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update firmware/baseband/proc_btlerx.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* PR suggestions.

* Fix String.

* FSK Rx Improvements. Works for my custom protocol.

* Fix buffer size.

* Refactor

* Formatting.

* Formatting.

* Fixing compiling, and BLE Rx UI/Performance.

* More improvements.

* Fixing stuck state.

* More stuck parsing fix.

* Combining PR changes.

* Improvements from previous PR.

* Fix dbM calculation relative to device RSSI.

* Formatting.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: TJ <tj.baginski@cognosos.com>
This commit is contained in:
Netro 2025-06-28 19:02:12 -04:00 committed by GitHub
parent 4e276cdc71
commit f90d3fabce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 521 additions and 448 deletions

View file

@ -134,6 +134,7 @@ class Message {
NoaaAptRxConfigure = 77,
NoaaAptRxStatusData = 78,
NoaaAptRxImageData = 79,
FSKPacket = 80,
MAX
};
@ -452,6 +453,17 @@ struct BlePacketData {
uint8_t dataLen;
};
struct FskPacketData {
int8_t real;
int8_t imag;
int max_dB;
uint8_t data[512];
uint16_t dataLen;
uint64_t syncWord;
float power;
float frequency_offset_hz;
};
class BLEPacketMessage : public Message {
public:
constexpr BLEPacketMessage(
@ -463,6 +475,17 @@ class BLEPacketMessage : public Message {
BlePacketData* packet{nullptr};
};
class FSKRxPacketMessage : public Message {
public:
constexpr FSKRxPacketMessage(
FskPacketData* packet)
: Message{ID::FSKPacket},
packet{packet} {
}
FskPacketData* packet{nullptr};
};
class CodedSquelchMessage : public Message {
public:
constexpr CodedSquelchMessage(
@ -1127,24 +1150,27 @@ class FSKConfigureMessage : public Message {
class FSKRxConfigureMessage : public Message {
public:
constexpr FSKRxConfigureMessage(
const fir_taps_real<24> decim_0_filter,
const fir_taps_real<32> decim_1_filter,
const fir_taps_real<32> channel_filter,
const size_t channel_decimation,
const size_t deviation)
const uint8_t samplesPerSymbol,
const uint32_t syncWord,
const uint8_t syncWordLength,
const uint32_t preamble,
const uint8_t preambleLength,
const uint16_t numDataBytes)
: Message{ID::FSKRxConfigure},
decim_0_filter(decim_0_filter),
decim_1_filter(decim_1_filter),
channel_filter(channel_filter),
channel_decimation{channel_decimation},
deviation{deviation} {
samplesPerSymbol(samplesPerSymbol),
syncWord(syncWord),
syncWordLength(syncWordLength),
preamble(preamble),
preambleLength(preambleLength),
numDataBytes(numDataBytes) {
}
const fir_taps_real<24> decim_0_filter;
const fir_taps_real<32> decim_1_filter;
const fir_taps_real<32> channel_filter;
const size_t channel_decimation;
const size_t deviation;
const uint8_t samplesPerSymbol;
const uint32_t syncWord;
const uint8_t syncWordLength;
const uint32_t preamble;
const uint8_t preambleLength;
const uint16_t numDataBytes;
};
class POCSAGConfigureMessage : public Message {