You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TODO.md
+10-8Lines changed: 10 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,18 +4,18 @@ This file tracks the remaining tasks and unresolved issues for the SLMP Python l
4
4
5
5
## 1. Protocol Implementation Gaps
6
6
7
-
-**`G/HG`Extended Specification live coverage expansion**
7
+
-**Extended Specification live coverage expansion**
8
8
The capture-aligned implementation is working on validated paths, but broader
9
-
address-range, transport, and PLC-family coverage is still open.
9
+
address-range, transport, and PLC-family coverage is still open. QnUDV has no
10
+
`HG`; `U0\G10` read-only on the current QnUDV target returned `0xC070` with
11
+
command `0x0401` subcommand `0x0080`.
10
12
11
13
-**Mixed block write root cause**
12
14
The practical fallback is implemented, but the reason some validated PLC
13
15
paths reject the first one-request mixed `1406` write with `0xC05B` is still
14
-
not fully explained.
15
-
16
-
-**`1617` Clear Error operator-visible effect**
17
-
Transport-level acceptance is confirmed, but the operator-visible behavior on
18
-
real hardware still needs better evidence.
16
+
not fully explained. On the current QnUDV target, word-only, bit-only, and
17
+
mixed `1406` block writes returned `0xC059`, so this appears to be block-write
18
+
command support rather than a mixed-only rejection on that target.
19
19
20
20
## 2. Testing & Validation
21
21
@@ -35,8 +35,10 @@ This file tracks the remaining tasks and unresolved issues for the SLMP Python l
35
35
36
36
## 4. Cross-Stack API Alignment
37
37
38
+
-[x]**Validate iQ-F X/Y octal handling on FX5 hardware**: FX5UC-32MT/D returned `X0000-X1777` and `Y0000-Y1777` as `Base8`; `X100` and `Y100` read successfully through iQ-F octal address parsing.
39
+
-[x]**Split iQ-L from iQ-R range rules**: `iq-l` now resolves to its own range family while keeping 4E/iQR communication and iQ-R-style address parsing. `L16HCPU` was live-validated with `SM0-SM4095`, `SD0-SD4095`, `D0-D18431`, `LZ0-LZ1`, `LTN0-LTN1023`, `LSTN0-LSTN31`, and `LCN0-LCN511`.
40
+
-[x]**Resolve Q-series runtime device ranges**: QCPU/LCPU/QnU/QnUDV `ZR` ranges are selected by probing readable addresses, `R` follows the probed `ZR` count capped at `R32767`, QCPU `Z` is selected by probing `Z15`, and LCPU/QnU/QnUDV `Z` is fixed at 20 points.
38
41
-[ ]**Keep helper naming aligned with the managed stacks**: Preserve the shared high-level contract around `open_and_connect`, `read_typed`, `write_typed`, `write_bit_in_word`, `read_named`, and `poll`.
39
42
-[ ]**Review public address helper exposure**: Decide whether the address parse/normalize/format helpers should be elevated into an explicit public utility API so applications do not need private string-parsing copies.
40
43
-[ ]**Keep `plc_family` as the only high-level PLC selector**: Raw `frame_type`, access-profile, and range-family knobs should stay low-level only unless new live evidence forces a public exception.
41
44
-[ ]**Preserve semantic atomicity by default**: Do not silently split reads or writes that callers would reasonably treat as one logical value or one logical block. Protocol-defined boundaries are acceptable, but fallback retries that change semantics should be opt-in and explicitly named.
42
-
-[ ]**Preserve semantic atomicity by default**: Do not silently split reads or writes that callers would reasonably treat as one logical value or one logical block. Protocol-defined boundaries are acceptable, but fallback retries that change semantics should be opt-in and explicitly named.
0 commit comments