Skip to main content

Fitterbap python bindings

Project description

Welcome!

Welcome to Fitterbap, the Firmware toolkit to enable reliable best architecture practices! Fitterbap provides common utilities useful for embedded systems that are often not included in an RTOS or the standard C library. Fitterbap includes:

  • A distributed publish-subscribe implementation for easy command, control, and configuration of your designs.
  • A high-reliability data link protocol, suitable for UARTs.
  • Common C macros, including assert and design-by-contract.
  • Host software and UI to accelerate firmware development.
  • And more!

This library is intended for use by software developers producing firmware for embedded devices based upon microcontrollers. Many features of the library use malloc, but it avoids using free. The Fitterbap library is available under the permissive Apache 2.0 license.

As of June 2021, the Fitterbap library API is not yet stable and subject to change without notice.

Getting started

The easiest way to get started is to check out the fitterbap_example_stm32g4. If you want to try distributed PubSub and the comm stack, you can buy the STMicroelectronics Nucleo-G491RE development board. When you first connect the Nucleo board over USB, it shows up as a mass storage device. You can simply copy over the release binaries and start the host UI, which looks like this:

Fitterbap Host Comm UI

Known limitations

  • Comm
    • No native USB reference implementation yet, but can use USB-CDC.
  • PubSub
    • Hard-coded maximum topic lengths.
    • No validation using provided topic metadata.
  • Host
    • Win 10x64 only, no macOS or Linux yet.
    • fbp_fatal not properly implemented for pyfitterbap.

Installation

The Fitterbap library uses CMake to generate the project make files for the C components.

Since Fitterbap is a library primarily targeted at embedded microcontrollers, you will likely want to include compile it into your project. Projects using CMake can use ExternalProject_Add. Other build systems will likely need to include the source files directly. Consider using git subtrees or git submodules.

You will need to manually create the fitterbap/config.h file and implement the platform abstraction layer. See fitterbap/platform.h for details.

Host python

Install 64-bit python 3.8 or newer on your system. Confirm that it is correctly installed:

python3 -VV

On Windows, python 3 is usually installed as python rather than python3.

Then install the pyfitterbap package from pypi:

pip install -U pyfitterbap

You can then run the pyfitterbap communication UI tools using either:

python3 -m pyfitterbap comm_ui

Or

fitterbap comm_ui

Ubuntu

First install the build tools for your system.

sudo apt-get install build-essential cmake doxygen graphviz git

Then compile the Fitterbap library:

cd PROJECT_DIRECTORY
mkdir build && cd $_
cmake ..
cmake --build .
ctest .

You can also build and test the python library:

python3 setup.py build_ext --inplace
python3 -m unittest

To run the host comm UI:

python3 -m pyfitterbap comm_ui

Licenses

The Fitterbap library is available under the permissive Apache 2.0 license. This library includes all third-party dependencies in the third-party directory. The dependencies are built along with this project.
These third-party libraries are provided under their own licenses.

More information

The Fitterbap API is documented using doxygen.

For a history of changes, see the changelog.

Alternatives

Fitterbap is a broad library that implements several distinct features. Here are some other libraries that you can consider.

Full system:

Communication protocols:

PubSub:

Command & control:

Random number generation:

String

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfitterbap-0.4.1.tar.gz (347.7 kB view details)

Uploaded Source

Built Distribution

pyfitterbap-0.4.1-cp39-cp39-win_amd64.whl (196.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

File details

Details for the file pyfitterbap-0.4.1.tar.gz.

File metadata

  • Download URL: pyfitterbap-0.4.1.tar.gz
  • Upload date:
  • Size: 347.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pyfitterbap-0.4.1.tar.gz
Algorithm Hash digest
SHA256 7d6fc9c168fdb8c495a24085206bd3987a913f9ea743663b9212e2663824d153
MD5 c24268adffd52e65b9c900e0ff4c32e0
BLAKE2b-256 c608097f7b2b49deabc2fdb47ae02bd33b5d4d824d7609cc83f0d42b22edaf92

See more details on using hashes here.

File details

Details for the file pyfitterbap-0.4.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyfitterbap-0.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 196.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pyfitterbap-0.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9be9698af136ee2a91c88e854aaa04e5638c9fd3101e1aa32205da6018e3e296
MD5 b6b9846bd414f5c9cec0bdbfdfdfe2c6
BLAKE2b-256 52f56ecdcdeab5be3c6122689c83ecc117acf1fe8eac9e0d1b66cb774c10d4f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page