Skip to content

iridium-extractor: add generate-sigmf-meta feature #291

iridium-extractor: add generate-sigmf-meta feature

iridium-extractor: add generate-sigmf-meta feature #291

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
jobs:
check-formatting:
name: Check C++ Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gnuradio/clang-format-lint-action@v0.5-4
with:
source: '.'
exclude: './python'
extensions: 'h,hpp,cpp,cc,cc.in'
check-python-formatting:
name: Check Python Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: quentinguidee/pep8-action@v1
with:
arguments: '--max-line-length=120 --ignore E265,E266,E402,E501,E704,E712,E713,E714,E711,E722,E741,W504,W605 --exclude *.yml.py,docs/*,python/bindings/* --filename=*.py,iridium-extractor'
ubuntu:
name: Ubuntu
strategy:
matrix:
os:
- version: ubuntu-20.04
ppa: gnuradio/gnuradio-releases
packages: libsndfile-dev libspdlog-dev pybind11-dev
osmosdr-from-source: True
- version: ubuntu-20.04
ppa: gnuradio/gnuradio-releases-3.9
packages: libsndfile-dev libspdlog-dev pybind11-dev gr-osmosdr
- version: ubuntu-22.04
packages: libsndfile1-dev gr-osmosdr
- version: ubuntu-24.04
packages: gr-osmosdr
runs-on: ${{matrix.os.version}}
steps:
- uses: actions/checkout@v4
- name: Add PPA
if: ${{matrix.os.ppa}}
run: |
sudo add-apt-repository ppa:${{matrix.os.ppa}}
- name: Install GNU Radio
run: |
sudo apt update
sudo apt install gnuradio-dev cmake
- name: Install extra packages
if: ${{matrix.os.packages}}
run: |
sudo apt install ${{matrix.os.packages}}
- name: Build
run: |
cmake -B build
cmake --build build
- name: Install
run: |
cd build
sudo make install
sudo ldconfig
- name: Unit Tests
run: |
cd build
make test
- name: Demod PRBS15 SigMF
run: |
iridium-extractor test-data/prbs15-2M-20dB.sigmf-meta |grep ^RAW > prbs15-2M-20dB.bits
grep "RAW: i-1601421246-t1 0000599.9996 1622000000 N:32.12-80.05 I:00000000000 100% 0.13551 179 0011000000110000111100111000000000000011000000000000101000000000001111000000000010001000000000110011000000001010101000000011111111000000100000001000001100000011000010100000101000111100001111001000100010001011001100110011101010101010100111111111111101000000000000111000000000001001000000000011011000000000101101000000001110111000000010011001000000110101011000001011111101000011100000" prbs15-2M-20dB.bits
- name: Demod with decimation 4
run: |
iridium-extractor -D 4 test-data/prbs15-2M-20dB.sigmf-meta |grep ^RAW > prbs15-2M-20dB-D4.bits
grep "RAW: i-1601421246-t1 0000599.9996 1622000000 N:32.12-80.05 I:00000000000 100% 0.13577 179 0011000000110000111100111000000000000011000000000000101000000000001111000000000010001000000000110011000000001010101000000011111111000000100000001000001100000011000010100000101000111100001111001000100010001011001100110011101010101010100111111111111101000000000000111000000000001001000000000011011000000000101101000000001110111000000010011001000000110101011000001011111101000011100000" prbs15-2M-20dB-D4.bits
- name: Demod with decimation 8
run: |
iridium-extractor -D 8 test-data/prbs15-2M-20dB.sigmf-meta |grep ^RAW > prbs15-2M-20dB-D8.bits
grep "RAW: i-1601421246-t1 0000599.9996 1622000000 N:32.12-80.05 I:00000000000 100% 0.13643 179 0011000000110000111100111000000000000011000000000000101000000000001111000000000010001000000000110011000000001010101000000011111111000000100000001000001100000011000010100000101000111100001111001000100010001011001100110011101010101010100111111111111101000000000000111000000000001001000000000011011000000000101101000000001110111000000010011001000000110101011000001011111101000011100000" prbs15-2M-20dB-D8.bits
- name: Test raw samples
run: |
ln -s prbs15-2M-20dB.sigmf-data test-data/prbs15-2M-20dB.fc32
iridium-extractor --offline -c 1622000000 -r 2000000 -f float test-data/prbs15-2M-20dB.fc32 |grep ^RAW > prbs15-2M-20dB.bits.raw
grep "RAW: prbs15-2M-20dB 0000599.9996 1622000000 N:32.12-80.05 I:00000000000 100% 0.13551 179 0011000000110000111100111000000000000011000000000000101000000000001111000000000010001000000000110011000000001010101000000011111111000000100000001000001100000011000010100000101000111100001111001000100010001011001100110011101010101010100111111111111101000000000000111000000000001001000000000011011000000000101101000000001110111000000010011001000000110101011000001011111101000011100000" prbs15-2M-20dB.bits.raw
- name: Test osmocom_fft names
run: |
ln -s prbs15-2M-20dB.sigmf-data test-data/prbs-f1.622000e+09-s2.000000e+06-t20240523234205.cfile
iridium-extractor --offline test-data/prbs-f1.622000e+09-s2.000000e+06-t20240523234205.cfile |grep ^RAW > prbs15-2M-20dB.bits.offt
grep "RAW: i-1716500525-t1 0000599.9996 1622000000 N:32.12-80.05 I:00000000000 100% 0.13551 179 0011000000110000111100111000000000000011000000000000101000000000001111000000000010001000000000110011000000001010101000000011111111000000100000001000001100000011000010100000101000111100001111001000100010001011001100110011101010101010100111111111111101000000000000111000000000001001000000000011011000000000101101000000001110111000000010011001000000110101011000001011111101000011100000" prbs15-2M-20dB.bits.offt
- name: Test sigmf-meta generation
run: |
ln -s prbs15-2M-20dB.sigmf-data test-data/prbs-f1.622000e+09-s2.000000e+06-t20240524014205+0200.cfile
iridium-extractor --offline --generate-sigmf-meta prbs.sigmf-meta test-data/prbs-f1.622000e+09-s2.000000e+06-t20240524014205+0200.cfile > /dev/null
cmp prbs.sigmf-meta test-data/generated.sigmf-meta
- name: Test SigMF Archive support
run: |
tar cf test-data/prbs15-2M-20dB.sigmf test-data/prbs15-2M-20dB.sigmf-*
iridium-extractor test-data/prbs15-2M-20dB.sigmf |grep ^RAW > prbs15-2M-20dB.bits.archive
cmp prbs15-2M-20dB.bits prbs15-2M-20dB.bits.archive
- name: Open SDR with gr-soapy
run: |
iridium-extractor examples/hackrf-soapy.conf 2>&1 | tee stderr-out
cat stderr-out | grep "RuntimeError: no hackrf device matches"
- name: Install gr-osmosdr from source
if: ${{matrix.os.osmosdr-from-source}}
run: |
git clone https://github.com/osmocom/gr-osmosdr
cd gr-osmosdr
cmake -B build
cmake --build build
cd build
sudo make install
sudo ldconfig
- name: Open SDR with gr-osmosdr
run: |
iridium-extractor examples/hackrf-10msps.conf 2>&1 | tee stderr-out
cat stderr-out | grep "RuntimeError: Failed to use '0' as HackRF device index: not enough devices\|No supported devices found"