Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,7 @@ streams.

> **Release candidate:** `0.1.0rc3` is a USB-first research SDK for firmware
> 0.9.10 or newer with CONFIG schema 6. The current golden firmware for new flashes
> is 0.9.11; deployed 0.9.10 gloves remain supported. Older firmware is rejected
> is 0.9.12; deployed 0.9.10 and 0.9.11 gloves remain supported. Older firmware is rejected
> for both live connections and replay. BLE is experimental and not release-qualified.

This public repository is the sole canonical source for the SDK. Development,
Expand DownExpand Up@@ -57,7 +57,7 @@ oglo doctor
`doctor` measures the attached device and host rather than assuming the nominal
rates. Resolve any reported identity, firmware, loss, or throughput failure before
recording data. Upgrade any live glove that reports firmware older than 0.9.10 or
anything other than schema 6. New flashes should use the current 0.9.11 golden image.
anything other than schema 6. New flashes should use the current 0.9.12 golden image.

## Read one glove

Expand Down
4 changes: 2 additions & 2 deletions docs/01_quickstart.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,8 +17,8 @@ python3 -m pip install \
```

Python 3.10 or newer is required. Supported live gloves run firmware 0.9.10 or
newer with schema 6. The current golden firmware for new flashes is 0.9.11;
deployed 0.9.10 gloves remain supported. `0.1.0rc3` rejects older firmware in both
newer with schema 6. The current golden firmware for new flashes is 0.9.12;
deployed 0.9.10 and 0.9.11 gloves remain supported. `0.1.0rc3` rejects older firmware in both
live connections and recorded episodes.

## Diagnose before collecting data
Expand Down
7 changes: 4 additions & 3 deletions docs/02_data_reference.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -22,8 +22,8 @@ accelerometer/gyroscope at 200 Hz but polls/emits its latest value on a nominal
schedule, so adjacent 500-packet/s records may contain the same physical measurement.

The supported contract is firmware 0.9.10 or newer with schema 6. The current
golden firmware for new flashes is 0.9.11, while deployed 0.9.10 gloves remain
supported. `0.1.0rc3` rejects older firmware in live connections, vector capture,
golden firmware for new flashes is 0.9.12, while deployed 0.9.10 and 0.9.11 gloves
remain supported. `0.1.0rc3` rejects older firmware in live connections, vector capture,
and replay instead of selecting a best-effort decoder.

## Identity and side
Expand DownExpand Up@@ -169,7 +169,8 @@ others cannot.
## Integrity limit of supported firmware

The supported tagged USB frame has a magic and length but no checksum/CRC. Firmware
0.9.11 bounds TinyUSB writes so a stopped host cannot hold the TX path forever, but
0.9.11 and newer bound TinyUSB writes so a stopped host cannot hold the TX path
forever, but
that deadline is not payload integrity. The SDK cannot mathematically prove that
every plausible payload bit is intact. A future protocol
needs framed CRC protection for that guarantee.
10 changes: 6 additions & 4 deletions docs/06_compatibility.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,16 +9,18 @@ physical gloves. They are different claims.
| --- | --- |
| Python | 3.10 or newer |
| Minimum supported firmware | 0.9.10 |
| Current golden firmware for new flashes | 0.9.11 |
| Current golden firmware for new flashes | 0.9.12 |
| CONFIG schema | exactly 6 |
| USB tagged stream | supported and hardware-validated |
| BLE schema-6 notifications | experimental; parser-tested, not release-qualified |
| Firmware older than 0.9.10 | rejected for connect, replay, and vector capture |

`0.1.0rc3` has one firmware floor: 0.9.10. Live devices, checked-in vectors, and
recorded episodes below that floor fail closed. Firmware 0.9.11 keeps schema 6 and
the same SDK wire contract while adding a bounded TinyUSB write path; it is the
current image for new flashes. Deployed 0.9.10 gloves remain compatible.
recorded episodes below that floor fail closed. Firmware 0.9.11 added a bounded
TinyUSB write path and 0.9.12 preserves it while adding signed USB application
update; both keep schema 6 and the identical SDK wire contract, so the SDK has no
upper firmware bound. 0.9.12 is the current image for new flashes. Deployed
0.9.10 and 0.9.11 gloves remain compatible.

## Physical validation for this release candidate

Expand Down
2 changes: 1 addition & 1 deletion src/oglo/_wire.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@

The public contract is documented in `docs/02_data_reference.md` and locked by the
captured vectors under `spec/vectors/`. The implementation was also read back from
the current firmware source (`oglo_rdr02_tia.ino`, FW 0.9.11) rather than inferred
the current firmware source (`oglo_rdr02_tia.ino`, FW 0.9.12) rather than inferred
from prose alone.

There is one supported wire contract: firmware 0.9.10+, schema 6. USB is the tagged
Expand Down
2 changes: 1 addition & 1 deletion tests/test_documentation.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,7 +27,7 @@ def test_current_docs_match_the_release_and_firmware_floor():
assert "pair_id" not in text
assert "allow_unpaired" not in text
assert "allow-unpaired" not in text
assert "0.9.11" in text
assert "0.9.12" in text
assert "oglo-0.1.0rc3-py3-none-any.whl" in text
assert "@v0.1.0rc3" in text

Expand Down