X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/8d1ce395337cf7d508500b13c574eaeb401f1e77..3903e719137aba15d30dd58b8d917965ec602400:/m17core/src/decode.rs?ds=sidebyside diff --git a/m17core/src/decode.rs b/m17core/src/decode.rs index 86567d9..d3dd7ba 100755 --- a/m17core/src/decode.rs +++ b/m17core/src/decode.rs @@ -3,8 +3,8 @@ use crate::{ fec::{self, p_1, p_2, p_3}, interleave::interleave, protocol::{ - LsfFrame, PacketFrame, PacketFrameCounter, StreamFrame, BERT_SYNC, LSF_SYNC, PACKET_SYNC, - STREAM_SYNC, + LsfFrame, PacketFrame, PacketFrameCounter, StreamFrame, BERT_SYNC, END_OF_TRANSMISSION, + LSF_SYNC, PACKET_SYNC, PREAMBLE, STREAM_SYNC, }, random::random_xor, }; @@ -33,6 +33,8 @@ pub(crate) enum SyncBurst { Bert, Stream, Packet, + Preamble, + EndOfTransmission, } impl SyncBurst { @@ -42,6 +44,8 @@ impl SyncBurst { Self::Bert => BERT_SYNC, Self::Stream => STREAM_SYNC, Self::Packet => PACKET_SYNC, + Self::Preamble => PREAMBLE, + Self::EndOfTransmission => END_OF_TRANSMISSION, } } } @@ -142,8 +146,6 @@ pub(crate) fn parse_packet(frame: &[f32] /* length 192 */) -> Option packet, None => return None, }; - // TODO: the spec is inconsistent about which bit in packet[25] is EOF - // https://github.com/M17-Project/M17_spec/issues/147 let final_frame = (packet[25] & 0x80) > 0; let number = (packet[25] >> 2) & 0x1f; let counter = if final_frame {