Skip to content

Commit 068acbb

Browse files
committed
Release v0.1.8: Add parallel device flashing support
- Add parallel flashing for multiple IP addresses (ProcessPoolExecutor) - Add sequential flashing for multiple USB serials (avoid driver conflicts) - Support multiple values in --ip and --serial parameters - Add test-flash.yml CI workflow with comprehensive flashing tests - Unified device output format for single/multiple devices - Add 500ms delay after flash for proper device release
1 parent 251171d commit 068acbb

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

.github/workflows/test-flash.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,18 @@ jobs:
6868
exit 1
6969
fi
7070
71+
- name: Test 2.1 — Flash without mcu (auto-detect target)
72+
run: |
73+
. .venv/bin/activate
74+
serial=$(sed -n '1p' serials.txt)
75+
bmlab-flash .github/workflows/fw.hex --serial $serial | tee flash-serial2.txt
76+
77+
if ! grep -q "Success" flash-serial2.txt; then
78+
echo "Test 2.1 failed: flash not successful"
79+
cat flash-serial2.txt
80+
exit 1
81+
fi
82+
7183
- name: Test 3 — Flash multiple by serial
7284
run: |
7385
. .venv/bin/activate

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.1.8] - 2026-01-07
9+
10+
### Added
11+
- **Parallel device flashing** - Multiple devices can now be flashed simultaneously
12+
- `--ip` parameter now accepts multiple IP addresses for parallel network flashing
13+
- `--serial` parameter now accepts multiple serial numbers for sequential USB flashing
14+
- Uses `ProcessPoolExecutor` for true parallel execution (separate processes per device)
15+
- Each device gets isolated pylink state, preventing conflicts
16+
- Real-time progress reporting with ✓/✗ indicators per device
17+
- Summary report showing success/failure counts
18+
- Example: `bmlab-flash firmware.bin --ip 192.168.1.100 192.168.1.101 192.168.1.102`
19+
- Example: `bmlab-flash firmware.bin --serial 123456 789012 345678`
20+
21+
### Changed
22+
- **Smart execution strategy based on connection type**:
23+
- Network devices (--ip): Parallel flashing using ProcessPoolExecutor
24+
- USB devices (--serial): Sequential flashing to avoid USB driver conflicts
25+
- Auto-detection still works for single device scenarios
26+
- **Unified device output format** - Same format for single or multiple devices
27+
- Added 500ms delay after each flash operation for proper device release
28+
29+
### Added (Testing)
30+
- New CI workflow `test-flash.yml` for testing parallel flashing functionality
31+
- Tests for single device flashing (USB serial and network IP)
32+
- Tests for multiple device flashing (2 and 3 devices in parallel)
33+
- Tests for auto-detection and MCU parameter handling
34+
835
## [0.1.7] - 2026-01-06
936

1037
### Fixed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "bmlab-toolkit"
7-
version = "0.1.7"
7+
version = "0.1.8"
88
description = "CI/CD toolkit for flashing and testing embedded devices"
99
readme = "README.md"
1010
requires-python = ">=3.8"

0 commit comments

Comments
 (0)