Class: PWN::SDR::Decoder::POCSAG::Demod
- Inherits:
-
Object
- Object
- PWN::SDR::Decoder::POCSAG::Demod
- Defined in:
- lib/pwn/sdr/decoder/pocsag.rb
Overview
Streaming POCSAG demodulator fed by Base.run_native.
Instance Method Summary collapse
- #feed(samples) ⇒ Object
-
#initialize(rate: 48_000) ⇒ Demod
constructor
A new instance of Demod.
Constructor Details
#initialize(rate: 48_000) ⇒ Demod
Returns a new instance of Demod.
30 31 32 33 34 35 36 |
# File 'lib/pwn/sdr/decoder/pocsag.rb', line 30 def initialize(rate: 48_000) @rate = rate @buf = [] @baud = nil @inv = false @carry_bits = [] end |
Instance Method Details
#feed(samples) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/pwn/sdr/decoder/pocsag.rb', line 38 def feed(samples, &) @buf.concat(samples) max = (@rate * 3.5).to_i @buf.shift(@buf.length - max) if @buf.length > max return if @buf.length < @rate # need ≥1 s to lock try_lock unless @baud return unless @baud bits = PWN::SDR::Decoder::DSP.nrz_slice(samples: @buf, rate: @rate, baud: @baud, invert: @inv) @buf.clear bits = @carry_bits + bits @carry_bits = POCSAG.decode_bits(bits: bits, baud: @baud, &) end |