Swift Binary Protocol client libraries
Branch: master
Clone or download
tn-exafore Fix test_tcp_logger [EX-476]
* the end time condition was broken (inverted), so previously it
  only worked randomly due to thread delays
* add an assert to verify that the message callback gets called
Latest commit b6c5bba Feb 13, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
c Release 2.4.10 (#650) Feb 14, 2019
docs Release 2.4.10 (#650) Feb 14, 2019
generator Update build config to handle both python 2.7 and 3.x [EX-476] Feb 15, 2019
haskell Release 2.4.10 (#650) Feb 14, 2019
java Release 2.4.10 (#650) Feb 14, 2019
javascript Release 2.4.10 (#650) Feb 14, 2019
latex latex style: use direct version for footer too Feb 8, 2017
proto Release 2.4.10 (#650) Feb 14, 2019
python Fix test_tcp_logger [EX-476] Feb 15, 2019
spec New messages: SBP_MSG_FILEIO_CONFIG_{REQ,RESP} (#644) [ESD-1038] Feb 14, 2019
.gitignore Remove dependency on setuptools_scm [ESD-1038] (#645) Feb 13, 2019
.travis.yml Update build config to handle both python 2.7 and 3.x [EX-476] Feb 15, 2019
CHANGELOG.md Release 2.4.10 (#650) Feb 14, 2019
HOWTO.md Remove dependency on setuptools_scm [ESD-1038] (#645) Feb 13, 2019
LICENSE Project-wide LICENSE under LGPL. Mar 10, 2015
Makefile Update build config to handle both python 2.7 and 3.x [EX-476] Feb 15, 2019
OWNERS.md Owners. Feb 13, 2016
README.md Update build config to handle both python 2.7 and 3.x [EX-476] Feb 15, 2019
VERSIONING.md Revision of @mfine's versioning scheme. Dec 16, 2015
default.nix Remove dependency on setuptools_scm [ESD-1038] (#645) Feb 13, 2019
package-lock.json Release 2.4.10 (#650) Feb 14, 2019
package.json New messages: SBP_MSG_FILEIO_CONFIG_{REQ,RESP} (#644) [ESD-1038] Feb 14, 2019
pre-piksi-multi-launch-updates.md condense feedback from meeting into document Nov 3, 2016
requirements.txt use tox to create and manage venv Jul 11, 2017
tox.ini Update build config to handle both python 2.7 and 3.x [EX-476] Feb 15, 2019

README.md

Specification and Bindings for Swift Binary Protocol

Build status

The Swift Navigation Binary Protocol (SBP) is a fast, simple, and minimal binary protocol for communicating with Swift devices. It is the native binary protocol used by the Piksi GPS receiver to transmit solutions, observations, status and debugging messages, as well as receive messages from the host operating system, such as differential corrections and the almanac.

This project provides language-agnostic specification and documentation for messages used with SBP, a compiler for generating message bindings, and client libraries in a variety of languages. This repository is organized into the following directory structure:

  • docs: Protocol documentation and message definitions.
  • spec: Machine readable protocol specification in YAML.
  • generator: Simple, template-based generator for different languages.
  • python: Python client and examples.
  • c: C client library and examples.
  • haskell: Haskell client and examples.
  • java: Java client library and examples.
  • javascript: JavaScript client library and examples.

Except for the generator, all of the above are generated and should not be modified directly.

Building / installing

Installing from package managers

Some bindings are available on package managers:

Installing development Python versions

To install the Python binding from source (using pip) run the following command:

pip install 'file:///path/to/libsbp#subdirectory=python'

Or via setuptools directly:

cd /path/to/libsbp
cd python
python setup.py

Adding development version as a pip dependency

Run the following command:

pip install git+https://github.com/swift-nav/libsbp@<GIT_REVISION>#egg=sbp&subdirectory=python

Or add this to requirements.txt:

git+https://github.com/swift-nav/libsbp@<GIT_REVISION>#egg=sbp&subdirectory=python

Installing from source

You can build one binding at a time or update all at once:

make python

or

make all

are both valid. To see a list of all valid targets, run make help.

Python version notes:

  1. by default the Python targets make python and make test-python (as well as make all) run tests on all Python versions officially supported by the libsbp Python bindings, currently 2.7, 3.5, and 3.7, skipping any versions not installed. To run tests on just specific Python version(s), specify the TOXENV environment variable, e.g., TOXENV=py27,py35 make python. Travis runs Python tests on all supported versions.
  2. by default the code generators are run on the system's (or virtual env's) default Python interpreter. Currently Python versions 2.7, 3.5, and 3.7 are officially supported, other versions may or may not work. The generated libsbp bindings should be the same on all supported Python versions. To use a different version than your default Python interpreter, specify the GENENV environment variable, e.g., GENENV=py27 make all (you must have that version of Python installed beforehand).
  3. to run both the generator and the Python tests on specific Python versions, specify both envs, e.g., GENENV=py37 TOXENV=py27,py37 make python

SBP Protocol Specification

SBP consists of two pieces: (i) an over-the-wire message framing format and (ii) structured payload definitions. As of Version 1.0, the packet consists of a 6-byte binary header section, a variable-sized payload field, and a 16-bit CRC value. SBP uses the CCITT CRC16 (XMODEM implementation) for error detection.

Please see the docs for a full description of the packet structure and the message types. Developer documentatation for the language-specific sbp libraries is here. Please refer to the changelog for more information about the evolution of the library and its messages.

LICENSE

Copyright © 2015 Swift Navigation

Distributed under LGPLv3.0.