smpmgr
is a CLI application for interacting with device firmware over a
serial (UART or USB), Bluetooth (BLE), or UDP, connection. It can be used as a
reference implementation of the smp and
smpclient libraries when developing your own SMP
application.
The SMP specification can be found here.
You can download a portable executable for Windows or Linux from the latest releases page.
smpmgr
is also distributed by PyPI. If you already have a
Python environment setup, then it is strongly recommended to install smpmgr
with
pipx instead of pip
.
Assumes that you've already setup your development environment.
- activate envr, the environment manager for bash, zsh, and PS:
. ./envr.ps1
- run
poetry install
when pulling in new changes - run
lint
after making changes - run
test
after making changes - run
build
to build a portable executable bundle atdist/smpmgr-<git tag>
. Refer toportably.py
for details. - add library dependencies with
poetry
:poetry add <my_new_dependency>
- add test or other development dependencies using poetry groups:
poetry add -G dev <my_dev_dependency>
poetry install
The venv
should be installed to .venv
.
envr supports bash, zsh, and PS in Linux, MacOS, and Windows. If you are using an unsupported shell, you can activate the
.venv
environment manually, usepoetry run
andpoetry shell
, and refer toenvr-default
for useful aliases.
. ./envr.ps1
To verify the installation, make sure that all of the tests are passing using these envr aliases:
lint
test
The pre-commit hook will run the linters but not the unit tests.
git config core.hooksPath .githooks