From e9f28f9ef3853d85804014820953671e3e8810aa Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sat, 26 Sep 2015 14:37:59 -0700 Subject: [PATCH] Provide configuration of symbol unstuffing. --- firmware/application/receiver_model.cpp | 4 ++++ firmware/baseband/packet_builder.cpp | 11 +++++++++-- firmware/baseband/packet_builder.hpp | 6 +++++- firmware/baseband/proc_fsk.cpp | 6 +++++- firmware/common/message.hpp | 2 ++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/firmware/application/receiver_model.cpp b/firmware/application/receiver_model.cpp index 69ac44bf7..54cd30829 100644 --- a/firmware/application/receiver_model.cpp +++ b/firmware/application/receiver_model.cpp @@ -199,6 +199,8 @@ static constexpr FSKConfiguration fsk_configuration_ais = { .access_code = 0b01010101010101010101111110, .access_code_length = 26, .access_code_tolerance = 1, + .unstuffing_pattern = 0b111110, + .unstuffing_length = 6, .packet_length = 256, }; @@ -207,6 +209,8 @@ static constexpr FSKConfiguration fsk_configuration_tpms_a = { .access_code = 0b0101010101010101010101010110, .access_code_length = 28, .access_code_tolerance = 1, + .unstuffing_pattern = 0, + .unstuffing_length = 0, .packet_length = 160, }; diff --git a/firmware/baseband/packet_builder.cpp b/firmware/baseband/packet_builder.cpp index cae20b381..94bc34015 100644 --- a/firmware/baseband/packet_builder.cpp +++ b/firmware/baseband/packet_builder.cpp @@ -21,11 +21,18 @@ #include "packet_builder.hpp" -void PacketBuilder::configure(size_t new_payload_length) { +void PacketBuilder::configure( + uint32_t unstuffing_pattern, + size_t unstuffing_length, + size_t new_payload_length +) { + unstuff.configure(unstuffing_pattern, unstuffing_length); + if( new_payload_length <= payload.size() ) { payload_length = new_payload_length; - reset_state(); } + + reset_state(); } void PacketBuilder::reset_state() { diff --git a/firmware/baseband/packet_builder.hpp b/firmware/baseband/packet_builder.hpp index 7d8bd1c59..dd2bd2026 100644 --- a/firmware/baseband/packet_builder.hpp +++ b/firmware/baseband/packet_builder.hpp @@ -30,7 +30,11 @@ class PacketBuilder { public: - void configure(size_t new_payload_length); + void configure( + uint32_t unstuffing_pattern, + size_t unstuffing_length, + size_t new_payload_length + ); template void execute( diff --git a/firmware/baseband/proc_fsk.cpp b/firmware/baseband/proc_fsk.cpp index 23e9c6886..4217c6f2c 100644 --- a/firmware/baseband/proc_fsk.cpp +++ b/firmware/baseband/proc_fsk.cpp @@ -50,7 +50,11 @@ void FSKProcessor::configure(const FSKConfiguration new_configuration) { new_configuration.access_code_length, new_configuration.access_code_tolerance ); - packet_builder.configure(new_configuration.packet_length); + packet_builder.configure( + new_configuration.unstuffing_pattern, + new_configuration.unstuffing_length, + new_configuration.packet_length + ); } void FSKProcessor::execute(buffer_c8_t buffer) { diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index f5b1c3597..a7993b27f 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -198,6 +198,8 @@ struct FSKConfiguration { uint32_t access_code; size_t access_code_length; size_t access_code_tolerance; + uint32_t unstuffing_pattern; + size_t unstuffing_length; size_t packet_length; };