X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/9058451e46e4d36264282abe381aa9b6fd2c773f..8d1ce395337cf7d508500b13c574eaeb401f1e77:/m17core/src/decode.rs?ds=inline diff --git a/m17core/src/decode.rs b/m17core/src/decode.rs index 76c40d3..86567d9 100755 --- a/m17core/src/decode.rs +++ b/m17core/src/decode.rs @@ -54,17 +54,18 @@ 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; if gain < SYNC_MIN_GAIN { return (f32::MAX, gain, shift); } + 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); } @@ -143,8 +144,8 @@ pub(crate) fn parse_packet(frame: &[f32] /* length 192 */) -> Option 0; - let number = packet[25] >> 3; + let final_frame = (packet[25] & 0x80) > 0; + let number = (packet[25] >> 2) & 0x1f; let counter = if final_frame { PacketFrameCounter::FinalFrame { payload_len: number as usize,