Class: PWN::SDR::Decoder::APT::Demod
- Inherits:
-
Object
- Object
- PWN::SDR::Decoder::APT::Demod
- Defined in:
- lib/pwn/sdr/decoder/apt.rb
Overview
Streaming APT demodulator fed by Base.run_native.
Instance Method Summary collapse
- #feed(samples) ⇒ Object
-
#initialize(rate: 48_000, out_path: nil) ⇒ Demod
constructor
A new instance of Demod.
Constructor Details
#initialize(rate: 48_000, out_path: nil) ⇒ Demod
Returns a new instance of Demod.
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/pwn/sdr/decoder/apt.rb', line 25 def initialize(rate: 48_000, out_path: nil) @rate = rate @carrier = 2400.0 @env_win = (rate / @carrier).round # ≈20 samples per cycle @stamp = Time.now.strftime('%Y%m%d_%H%M%S') @pgm_path = out_path || "/tmp/apt_#{@stamp}.pgm" @rows = [] @word_buf = [] @minv = 1.0 @maxv = 0.0 end |
Instance Method Details
#feed(samples) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/pwn/sdr/decoder/apt.rb', line 37 def feed(samples, &) env = PWN::SDR::Decoder::DSP.envelope(samples: samples, window: @env_win) words = PWN::SDR::Decoder::DSP.resample(samples: env, src_rate: @rate, dst_rate: WORD_RATE) @word_buf.concat(words) extract_lines(&) end |