Class: PWN::SDR::Decoder::APT::Demod

Inherits:
Object
  • Object
show all
Defined in:
lib/pwn/sdr/decoder/apt.rb

Overview

Streaming APT demodulator fed by Base.run_native.

Instance Method Summary collapse

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