]> code.octet-stream.net Git - m17rt/blobdiff - m17core/src/decode.rs
Implementing soundmodem tx path
[m17rt] / m17core / src / decode.rs
index 7ec222495806ac03830bf5e2b4a7c43ab7f2aa30..76c40d37cb99a60a44cbc69f667604ed90baa839 100755 (executable)
@@ -94,7 +94,7 @@ pub(crate) fn parse_lsf(frame: &[f32] /* length 192 */) -> Option<LsfFrame> {
         None => return None,
     };
     debug!("full lsf: {:?}", lsf.0);
         None => return None,
     };
     debug!("full lsf: {:?}", lsf.0);
-    let crc = lsf.crc();
+    let crc = lsf.check_crc();
     debug!("recv crc: {:04X}", crc);
     debug!("destination: {:?}", lsf.destination());
     debug!("source: {:?}", lsf.source());
     debug!("recv crc: {:04X}", crc);
     debug!("destination: {:?}", lsf.destination());
     debug!("source: {:?}", lsf.source());
@@ -141,8 +141,10 @@ pub(crate) fn parse_packet(frame: &[f32] /* length 192 */) -> Option<PacketFrame
         Some(packet) => packet,
         None => return None,
     };
         Some(packet) => packet,
         None => return None,
     };
-    let final_frame = (packet[25] & 0x80) > 0;
-    let number = (packet[25] >> 2) & 0x01f;
+    // 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] & 0x04) > 0;
+    let number = packet[25] >> 3;
     let counter = if final_frame {
         PacketFrameCounter::FinalFrame {
             payload_len: number as usize,
     let counter = if final_frame {
         PacketFrameCounter::FinalFrame {
             payload_len: number as usize,