iridium-extractor: add generate-sigmf-meta feature #295
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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-t20240524014205+0200.cfile | |
iridium-extractor --offline test-data/prbs-f1.622000e+09-s2.000000e+06-t20240524014205+0200.cfile |grep ^RAW > prbs15-2M-20dB.bits.offt | |
grep "RAW: i-1716507725-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: | | |
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" | |