Documentation
¶
Overview ¶
Package rouge provides primitives for analyzing PO-32 modems.
Index ¶
Constants ¶
const Version = "0.0.10"
Version is semver.
Variables ¶
var BO = binary.BigEndian
BO denotes an internal representation of PCM data.
var ErrorInvalidBPSKSlice = errors.New("invalid BPSK slice (expected a sine or negated sine wave in <bit window> amplitude points)")
ErrorInvalidBPSKSlice indicates a signal error.
var ErrorInvalidBitLength = errors.New("invalid bit length (expected a multiple of 8)")
ErrorInvalidBitLength indicates a signal error.
var ErrorInvalidBufferSize = errors.New("invalid buffer size (expected a multiple of 4)")
ErrorInvalidBufferSize indicates a configuration error.
Functions ¶
func BytesToUint32s ¶
BytesToUint32s applies BO decoding from byte arrays.
func Uint32sToBytes ¶
Uint32sToBytes applies BO encoding onto unsigned 32-bit integers.
Types ¶
type BPSKDemodulator ¶
type BPSKDemodulator struct {
// contains filtered or unexported fields
}
BPSKDemodulator passes in mono PCM samples from BO 32-bit unsigned signed integers, reads 16-bit signed integers with two's complement, fits onto a binary phase shift signal, and finally outputs bit data in byte chunks, expanding each byte into a BO 32-bit unsigned integer.
func NewBPSKDemodulator ¶
func NewBPSKDemodulator(f *os.File, bitWindow int, innerThreshold float64, outerThreshold float64) *BPSKDemodulator
NewBPSKDemodulator constructs a BPSKDemodulator, given a peak amplitude threshold.
func (*BPSKDemodulator) Decoder ¶
func (o *BPSKDemodulator) Decoder() <-chan Message
Decoder returns signal readers.
func (BPSKDemodulator) NumChannels ¶
func (o BPSKDemodulator) NumChannels() int
NumChannels unspecified.
func (BPSKDemodulator) SampleRate ¶
func (o BPSKDemodulator) SampleRate() int
SampleRate unspecified.
func (BPSKDemodulator) WavCategory ¶
func (o BPSKDemodulator) WavCategory() int
WavCategory unspecified.
type Cursor ¶
type Cursor struct {
InnerThreshold float64
OuterThreshold float64
Position uint64
// contains filtered or unexported fields
}
Cursor seeks to the start of the next peak/valley.
type Demodulator ¶
type Demodulator interface {
// Decode returns a channel for reading Messages.
Decoder() <-chan Message
// SampleRate is Hz.
SampleRate() int
// BitDepth, e.g. 16, 32.
BitDepth() int
// NumChannels, e.g. 1 (mono), 2 (stereo).
NumChannels() int
// WavCategory, e.g. 1 (PCM).
WavCategory() int
}
Demodulator reads signals.
type Message ¶
type Message struct {
// Error indicates an I/O problem.
Error *error
// Done indicates the end of the signal.
Done bool
// Data is all or part of the content.
Data []byte
}
Message encapsulates information.
type Modulator ¶
type Modulator interface {
// Encode returns a channel for writing Messages,
// as well as channel for downstream I/O errors.
Encoder() (<-chan struct{}, chan<- Message, <-chan error)
}
Modulator writes signals.
type RawDemodulator ¶
type RawDemodulator struct {
// contains filtered or unexported fields
}
RawDemodulator passes in PCM samples from BO 32-bit unsigned integers.
func NewRawDemodulator ¶
func NewRawDemodulator(f *os.File) *RawDemodulator
NewRawDemodulator constructs a RawDemodulator.
func (*RawDemodulator) Decoder ¶
func (o *RawDemodulator) Decoder() <-chan Message
Decoder returns signal readers.
func (RawDemodulator) NumChannels ¶
func (o RawDemodulator) NumChannels() int
NumChannels unspecified.
func (RawDemodulator) WavCategory ¶
func (o RawDemodulator) WavCategory() int
WavCategory unspecified.
type RawModulator ¶
type RawModulator struct {
// contains filtered or unexported fields
}
RawModulator passes out PCM samples as BO 32-bit unsigned integers.
func NewRawModulator ¶
func NewRawModulator(f *os.File) *RawModulator
NewRawModulator constructs a RawModulator.
func (*RawModulator) Encoder ¶
func (o *RawModulator) Encoder() (<-chan struct{}, chan<- Message, <-chan error)
Encoder returns signal writers.
type WavDemodulator ¶
type WavDemodulator struct {
// contains filtered or unexported fields
}
WavDemodulator passes in WAV file data.
func NewWavDemodulator ¶
func NewWavDemodulator(f *os.File) (*WavDemodulator, error)
NewWavDemodulator constructs a WavDemodulator.
func (WavDemodulator) BitDepth ¶
func (o WavDemodulator) BitDepth() int
BitDepth queries sensor precision.
func (*WavDemodulator) Decoder ¶
func (o *WavDemodulator) Decoder() <-chan Message
Decoder returns signal readers.
func (WavDemodulator) NumChannels ¶
func (o WavDemodulator) NumChannels() int
NumChannels queries concurrent track count.
func (WavDemodulator) SampleRate ¶
func (o WavDemodulator) SampleRate() int
SampleRate queries time precision.
func (WavDemodulator) WavCategory ¶
func (o WavDemodulator) WavCategory() int
WavCategory queries specific WAVE sub-format.
type WavModulator ¶
type WavModulator struct {
// contains filtered or unexported fields
}
WavModulator passes out WAV file data.
func NewWavModulator ¶
func NewWavModulator(config WavModulatorConfig) *WavModulator
NewWavModulator constructs a WavModulator.
func (*WavModulator) Encoder ¶
func (o *WavModulator) Encoder() (<-chan struct{}, chan<- Message, <-chan error)
Encoder returns signal writers.