RF Parameter Processor Suite
RPPS is a generic signal processor/generator library.
import rpps as rp
mod = rp.mod.load("QPSK")
mod.set_mapping(mod.get_maps()[0])
ecc = rp.coding.load("blk", "hamming.7_4")
scr = rp.scram.load("fdt", "v35")
enc_msg = rp.dobject.StreamData(b"Hello World!")
f_pipe = lambda inp:inp * scr * ecc * mod
r_pipe = lambda syms:syms / mod / ecc / scr
syms = f_pipe(enc_msg) # Encode data with ecc, and mod. Get the symbols
data = r_pipe(syms) # Read the symbols
dec_msg = rp.dobject.StreamData(data)
print(f"{enc_msg.hex == dec_msg.hex}") # Check decoded data is what you encoded
import rpps as rp
sink = rp.serial.File(<format>, <path>)
meta = rp.Meta(Fs=<>, cf=<>)
sweep_time, display = 10, 50 # ms
num_samps = int((sweep_time/1000)*meta.Fs)
nfft, overlap, vbw = 1024, 0.8, 1000
window = "blackman"
fig, ax = plt.subplots()
im = ax
for samps in sink(num_samps):
snips = rp.utils.stft.stft(samps, nfft, overlap, window)
psds = rp.utils.stft.psd(snips, meta.Fs, vbw)
im = rp.viz.rt.Persistent(im, psds)
plt.pause(display/1000)
- Run
python3 -m pip install rpps - In your project,
import rpps as rp
- Serial
- File
- (Linux only) tun/tap
- Socket
- Filters
- Pulse Shaping
- Window functions
- Sample
- Sync
- Frequency
- Phase
- Time
- Mod
- PSK
- QAM
- APSK
- ASK
- FSK
- Coding
- Block
- Repetition
- Hamming
- TPC
- LDPC
- Convolutional
- Viterbi
- Block
- Scram
- fibonacci
- galois
- V.35
- Frame
- HDLC
- PPP
- Viz
- Real-Time (STFT)
- Over-Time
git clone https://github.com/Anonoei/RPPScd RPPSgit branch -c feature/<your feature>python3 builder.py -b -lbuild and install rpps locally- This also installs deps, and dev_deps automatically
- run
python3 tests/dev.py - Check out the
devbranch for latest changes
