Skip to content

M17-Project/libm17

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libm17

Overview

Written in C, it has all the components described by the protocol's specification of the stream and packet modes:

  • convolutional encoder with soft Viterbi decoder (utilizing fixed point arithmetic),
  • Golay encoder with soft decoder (fixed point),
  • bit interleaver and randomizer,
  • cyclic redundancy check (CRC) calculation (both LSF and arbitrary input),
  • callsign encoder and decoder

There's no support for any encryption.

Address encoding convention

As per the specification document, the address space is divided into parts. Encodable callsign space is accessed by using the base40 alphabet. If the first character is set to #, the address belongs to the extended hash-address space. The broadcast address is represented by @ALL. Zero-address is invalid and decodes into a null-string. The reserved chunk for application use cannot be accessed using any string.

Legacy Makefile building

  1. Build the shared object libm17.so by running make.
  2. You can install the library object with make install.

Unit tests are available and can be run with make test && make testrun.

Cmake building

  1. Configre the build - run cmake -B build to get default options.
  2. Build the library by running cmake --build build.
  3. At this point tests can be run by doing any of:
    cmake --build build --target test
    ctest --test-dir build
    ./build/unti_tests/unit_tests
  4. Finally, installation is just cmake --install build