Class: PWN::SDR::Decoder::Flex::Demod
- Inherits:
-
Object
- Object
- PWN::SDR::Decoder::Flex::Demod
- Defined in:
- lib/pwn/sdr/decoder/flex.rb
Overview
Streaming FLEX 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.
33 34 35 36 37 38 |
# File 'lib/pwn/sdr/decoder/flex.rb', line 33 def initialize(rate: 48_000) @rate = rate @buf = [] @inv = nil @carry = [] end |
Instance Method Details
#feed(samples) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/pwn/sdr/decoder/flex.rb', line 40 def feed(samples, &) @buf.concat(samples) max = (@rate * 4).to_i @buf.shift(@buf.length - max) if @buf.length > max return if @buf.length < (@rate * 2) # need ≥1 frame try_lock if @inv.nil? return if @inv.nil? bits = PWN::SDR::Decoder::DSP.nrz_slice(samples: @buf, rate: @rate, baud: 1600, invert: @inv) @buf.clear bits = @carry + bits @carry = Flex.decode_bits(bits: bits, &) end |