]> code.octet-stream.net Git - m17rt/blobdiff - m17core/src/encode.rs
fast demod bin
[m17rt] / m17core / src / encode.rs
index 8f1d1da48a7b0ddcea63a13d5fab9209a3ee2dc7..0ba20d78b8d500d11e7bf499bc0e74f4ef1b481c 100644 (file)
@@ -3,7 +3,7 @@ use crate::{
     fec::{self, p_1, p_2, p_3},
     interleave::interleave,
     protocol::{
     fec::{self, p_1, p_2, p_3},
     interleave::interleave,
     protocol::{
-        LsfFrame, PacketFrame, PacketFrameCounter, StreamFrame, LSF_SYNC, PACKET_SYNC, STREAM_SYNC,
+        LSF_SYNC, LsfFrame, PACKET_SYNC, PacketFrame, PacketFrameCounter, STREAM_SYNC, StreamFrame,
     },
     random::random_xor,
 };
     },
     random::random_xor,
 };
@@ -31,11 +31,11 @@ pub(crate) fn encode_packet(frame: &PacketFrame) -> [f32; 192] {
     match frame.counter {
         PacketFrameCounter::Frame { index } => {
             type1[0..25].copy_from_slice(&frame.payload);
     match frame.counter {
         PacketFrameCounter::Frame { index } => {
             type1[0..25].copy_from_slice(&frame.payload);
-            type1[25] = (index as u8) << 3;
+            type1[25] = (index as u8) << 2;
         }
         PacketFrameCounter::FinalFrame { payload_len } => {
             type1[0..payload_len].copy_from_slice(&frame.payload[0..payload_len]);
         }
         PacketFrameCounter::FinalFrame { payload_len } => {
             type1[0..payload_len].copy_from_slice(&frame.payload[0..payload_len]);
-            type1[25] = (payload_len as u8) << 3 | 0x04;
+            type1[25] = ((payload_len as u8) << 2) | 0x80;
         }
     }
     let type3 = fec::encode(&type1, 206, p_3);
         }
     }
     let type3 = fec::encode(&type1, 206, p_3);
@@ -113,7 +113,7 @@ mod tests {
         ]);
         let encoded = encode_lsf(&lsf);
         let decoded = crate::decode::parse_lsf(&encoded);
         ]);
         let encoded = encode_lsf(&lsf);
         let decoded = crate::decode::parse_lsf(&encoded);
-        assert_eq!(decoded, Some(lsf));
+        assert!(matches!(decoded, Some((frame, _)) if frame == lsf));
     }
 
     #[test]
     }
 
     #[test]
@@ -127,7 +127,7 @@ mod tests {
         };
         let encoded = encode_stream(&stream);
         let decoded = crate::decode::parse_stream(&encoded);
         };
         let encoded = encode_stream(&stream);
         let decoded = crate::decode::parse_stream(&encoded);
-        assert_eq!(decoded, Some(stream));
+        assert!(matches!(decoded, Some((frame, _)) if frame == stream));
     }
 
     #[test]
     }
 
     #[test]
@@ -138,7 +138,7 @@ mod tests {
         };
         let encoded = encode_packet(&packet);
         let decoded = crate::decode::parse_packet(&encoded);
         };
         let encoded = encode_packet(&packet);
         let decoded = crate::decode::parse_packet(&encoded);
-        assert_eq!(decoded, Some(packet));
+        assert!(matches!(decoded, Some((frame, _)) if frame == packet));
 
         let packet = PacketFrame {
             payload: [0u8; 25],
 
         let packet = PacketFrame {
             payload: [0u8; 25],
@@ -146,7 +146,7 @@ mod tests {
         };
         let encoded = encode_packet(&packet);
         let decoded = crate::decode::parse_packet(&encoded);
         };
         let encoded = encode_packet(&packet);
         let decoded = crate::decode::parse_packet(&encoded);
-        assert_eq!(decoded, Some(packet));
+        assert!(matches!(decoded, Some((frame, _)) if frame == packet));
     }
 
     #[test]
     }
 
     #[test]