]> code.octet-stream.net Git - m17rt/commitdiff
Reduce the number of samples being moved around for sync burst detection
authorThomas Karpiniec <tom.karpiniec@outlook.com>
Mon, 20 Jan 2025 08:59:28 +0000 (19:59 +1100)
committerThomas Karpiniec <tom.karpiniec@outlook.com>
Mon, 20 Jan 2025 08:59:28 +0000 (19:59 +1100)
m17core/src/decode.rs
m17core/src/modem.rs

index 6c8e02bfdc1431448a50d73c7886d3d89ee625cf..86567d9a6a4d4488228d3d62f61acf7a3090ac68 100755 (executable)
@@ -54,8 +54,8 @@ pub(crate) fn sync_burst_correlation(target: [i8; 8], samples: &[f32]) -> (f32,
     let mut pos_max: f32 = f32::MIN;
     let mut neg_max: f32 = f32::MAX;
     for i in 0..8 {
-        pos_max = pos_max.max(samples[i * 10]);
-        neg_max = neg_max.min(samples[i * 10]);
+        pos_max = pos_max.max(samples[i]);
+        neg_max = neg_max.min(samples[i]);
     }
     let gain = (pos_max - neg_max) / 2.0;
     let shift = pos_max + neg_max;
@@ -65,7 +65,7 @@ pub(crate) fn sync_burst_correlation(target: [i8; 8], samples: &[f32]) -> (f32,
 
     let mut diff = 0.0;
     for i in 0..8 {
-        let sym_diff = (((samples[i * 10] - shift) / gain) - target[i] as f32).abs();
+        let sym_diff = (((samples[i] - shift) / gain) - target[i] as f32).abs();
         if sym_diff > SYNC_BIT_THRESHOLD {
             return (f32::MAX, gain, shift);
         }
index fe57188bb582f0be1fdce265932d8d6dccf36464..b45982668aa1a492d190a4f8cc926c68fbba2e37 100644 (file)
@@ -65,9 +65,9 @@ impl Demodulator for SoftDemodulator {
             return None;
         }
 
-        let mut burst_window = [0f32; 71];
-        for i in 0..71 {
-            let c = (self.rx_cursor + i) % 1920;
+        let mut burst_window = [0f32; 8];
+        for i in 0..8 {
+            let c = (self.rx_cursor + (i * 10)) % 1920;
             burst_window[i] = self.rx_win[c];
         }