Description
Add a command to query the DAPLink firmware version from the STM32F103 via I2C. This allows the MicroPython driver to detect which firmware features are available (e.g. config zone commands require a specific firmware version).
Note: this issue originally targeted daplink_flash. Since then, the bridge layer has been factored out and all "bridge-level" DAPLink commands (WHO_AM_I, config zone, …) live in daplink_bridge. The version query belongs there too.
Proposed approach
Firmware side (steamicc/DAPLink)
Add a new I2C command FIRMWARE_VERSION (0x02) that returns the version as 3 bytes:
| Command |
Code |
Parameters |
Response |
Description |
| Firmware version |
0x02 |
NONE |
3 bytes |
Returns major, minor, patch as 3 bytes |
The version is defined as a constant in the firmware and incremented with each release. 0x01 is already taken by WHO_AM_I, 0x02 is currently free (see lib/daplink_bridge/daplink_bridge/const.py).
MicroPython side
Add a firmware_version() method to DaplinkBridge:
def firmware_version(self):
"""Return the DAPLink firmware version as a (major, minor, patch) tuple."""
data = self._read_reg(CMD_FIRMWARE_VERSION, 3)
return (data[0], data[1], data[2])
Add the matching constant to daplink_bridge/const.py:
CMD_FIRMWARE_VERSION = const(0x02)
Use cases
- Skip hardware tests that require config zone if firmware is too old
- Display firmware version in diagnostic scripts
- Warn users when a firmware update is needed
Related
Description
Add a command to query the DAPLink firmware version from the STM32F103 via I2C. This allows the MicroPython driver to detect which firmware features are available (e.g. config zone commands require a specific firmware version).
Proposed approach
Firmware side (steamicc/DAPLink)
Add a new I2C command
FIRMWARE_VERSION (0x02)that returns the version as 3 bytes:0x02The version is defined as a constant in the firmware and incremented with each release.
0x01is already taken byWHO_AM_I,0x02is currently free (seelib/daplink_bridge/daplink_bridge/const.py).MicroPython side
Add a
firmware_version()method toDaplinkBridge:Add the matching constant to
daplink_bridge/const.py:Use cases
Related