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 installwhen pulling in new changes - run
lintafter making changes - run
testafter making changes - run
buildto build a portable executable bundle atdist/smpmgr-<git tag>. Refer toportably.pyfor 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==1.8.5: https://python-poetry.org/docs/#installation
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
.venvenvironment manually, usepoetry runandpoetry shell, and refer toenvr-defaultfor 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