Class: PWN::SDR::Decoder::P25::DemodIQ
- Inherits:
-
Object
- Object
- PWN::SDR::Decoder::P25::DemodIQ
- Defined in:
- lib/pwn/sdr/decoder/p25.rb
Overview
Streaming C4FM demod for Base.run_iq — I/Q → NAC/DUID frames.
Constant Summary collapse
- AUDIO_RATE =
48_000
Instance Method Summary collapse
- #feed_iq(samples, rate: nil) ⇒ Object
-
#initialize(rate:) ⇒ DemodIQ
constructor
A new instance of DemodIQ.
Constructor Details
#initialize(rate:) ⇒ DemodIQ
Returns a new instance of DemodIQ.
39 40 41 42 43 |
# File 'lib/pwn/sdr/decoder/p25.rb', line 39 def initialize(rate:) @rate = rate.to_f @dibits = [] @seen_fs = 0 end |
Instance Method Details
#feed_iq(samples, rate: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/pwn/sdr/decoder/p25.rb', line 45 def feed_iq(samples, rate: nil, &) @rate = rate.to_f if rate audio = PWN::SDR::Decoder::DSP.fm_demod_iq(iq: samples) audio = PWN::SDR::Decoder::DSP.resample( samples: audio, src_rate: @rate, dst_rate: AUDIO_RATE ) syms = PWN::SDR::Decoder::DSP.slice_4fsk( samples: audio, rate: AUDIO_RATE, baud: 4800 ) @dibits.concat(syms) scan(&) if block_given? @dibits.shift(@dibits.length - 4096) if @dibits.length > 8192 end |