copy in progress
This commit is contained in:
@@ -562,6 +562,7 @@ The `0x006D` copy path is now confirmed outside the earlier all-suite ordering c
|
|||||||
- Selector `0x006D` dispatches to `H'3015`. Forced decoding shows it sets `F731.7`, loads `F798=H'C8`, sets `F795.6/F795.7`, sets display selector `F732=H'1903`, sets `FB02=H'64`, calls `48FA`, then sets `F76E.6`.
|
- Selector `0x006D` dispatches to `H'3015`. Forced decoding shows it sets `F731.7`, loads `F798=H'C8`, sets `F795.6/F795.7`, sets display selector `F732=H'1903`, sets `FB02=H'64`, calls `48FA`, then sets `F76E.6`.
|
||||||
- The LCD dispatch for these states is now traced: `loc_48FA` reads the high byte at `F732`, so `F732=H'1903/H'1904` selects display page `0x19`, not direct page `0x03/0x04`. `493E[0x19] -> H'930A`; that page's local table at `H'931C` includes `H'9F6A` for `COPY` / `IN PROGRESS` and `H'9FDA` for `COPY` / `COMPLETED`. The low byte at `F733` is the substate selector: `0x03` is in-progress and `0x04` is completed.
|
- The LCD dispatch for these states is now traced: `loc_48FA` reads the high byte at `F732`, so `F732=H'1903/H'1904` selects display page `0x19`, not direct page `0x03/0x04`. `493E[0x19] -> H'930A`; that page's local table at `H'931C` includes `H'9F6A` for `COPY` / `IN PROGRESS` and `H'9FDA` for `COPY` / `COMPLETED`. The low byte at `F733` is the substate selector: `0x03` is in-progress and `0x04` is completed.
|
||||||
- This makes the likely copy handshake: `0x006D` starts copy and sets the `F795.6/F795.7` in-progress flags; `0x006C` is the completion/exit sibling only when those flags are live. Sending `0x006C` alone can therefore blank or clear state instead of displaying `COPY COMPLETED`.
|
- This makes the likely copy handshake: `0x006D` starts copy and sets the `F795.6/F795.7` in-progress flags; `0x006C` is the completion/exit sibling only when those flags are live. Sending `0x006C` alone can therefore blank or clear state instead of displaying `COPY COMPLETED`.
|
||||||
|
- Bench step-through confirmed the sequence model: `006C` alone produced `CONNECT OK -> blank`; `006D` alone produced `CONNECT OK -> COPY IN PROGRESS`; `006D` followed by `006C` after 250 ms produced a brief `COPY IN PROGRESS` then `COPY COMPLETED`; the same after 1.0 s and 1.5 s produced a longer `COPY IN PROGRESS` then `COPY COMPLETED`; after 2.0 s or 2.5 s it fell to `CONNECT:NOT ACT` instead of completing. Repeating `006D` before `006C` also completed successfully in the 2x and 3x repeat tests. This points to an active completion window that can likely be refreshed/restarted by additional in-progress/progress traffic, rather than a stateless command.
|
||||||
- The FRT1 timer path decrements `F797` and `F798`; when either reaches zero, it clears `F731.7`. This matches the observed transient display modes falling back to `CONNECT:NOT ACT`.
|
- The FRT1 timer path decrements `F797` and `F798`; when either reaches zero, it clears `F731.7`. This matches the observed transient display modes falling back to `CONNECT:NOT ACT`.
|
||||||
- The string `COPY IN PROGRESS` is present in the ROM LCD resources, so the `006D` result is not a generic serial artifact.
|
- The string `COPY IN PROGRESS` is present in the ROM LCD resources, so the `006D` result is not a generic serial artifact.
|
||||||
- Manual interpretation: the RCP-TX7 operating manual describes `COPY IN PROGRESS` as the LCD state shown during the multi-camera `COPY TO SLAVES` data-transfer operation over the RS232C command-link system. During that state, all linked RCP units display the message and their buttons/knobs are locked until `COPY COMPLETED`. Therefore selector `0x006D` is best treated as entering a command-link copy/data-transfer state, not as a normal CCU connection ACK.
|
- Manual interpretation: the RCP-TX7 operating manual describes `COPY IN PROGRESS` as the LCD state shown during the multi-camera `COPY TO SLAVES` data-transfer operation over the RS232C command-link system. During that state, all linked RCP units display the message and their buttons/knobs are locked until `COPY COMPLETED`. Therefore selector `0x006D` is best treated as entering a command-link copy/data-transfer state, not as a normal CCU connection ACK.
|
||||||
|
|||||||
53
scenarios/copy-hold-006d-5x-006c.json
Normal file
53
scenarios/copy-hold-006d-5x-006c.json
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-hold-006d-5x-006c",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D every 1 second for five starts/progress ticks, then send 006C.",
|
||||||
|
"Tests whether repeated 006D can hold the copy-in-progress state for a longer transfer before completion."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "repeat",
|
||||||
|
"count": 5,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_progress_006d",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_complete_candidate_006c",
|
||||||
|
"frame": "05 00 6C 00 00 33",
|
||||||
|
"listen": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
51
scenarios/copy-hold-006d-5x-no-complete.json
Normal file
51
scenarios/copy-hold-006d-5x-no-complete.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-hold-006d-5x-no-complete",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D every 1 second five times, then do not send 006C.",
|
||||||
|
"Tests whether the timeout/fallback is measured from the last 006D progress tick."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "repeat",
|
||||||
|
"count": 5,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_progress_006d",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "listen",
|
||||||
|
"seconds": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
53
scenarios/copy-repeat-006d-2x-006c.json
Normal file
53
scenarios/copy-repeat-006d-2x-006c.json
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-repeat-006d-2x-006c",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D twice one second apart, then send 006C.",
|
||||||
|
"Tests whether repeating the in-progress selector extends/resets the completion window or interferes with completion."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d_1",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d_2",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_complete_candidate_006c",
|
||||||
|
"frame": "05 00 6C 00 00 33",
|
||||||
|
"listen": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
59
scenarios/copy-repeat-006d-3x-006c.json
Normal file
59
scenarios/copy-repeat-006d-3x-006c.json
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-repeat-006d-3x-006c",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D three times one second apart, then send 006C.",
|
||||||
|
"Tests whether repeated in-progress selectors can keep the copy state alive longer than the single-start window."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d_1",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d_2",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d_3",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_complete_candidate_006c",
|
||||||
|
"frame": "05 00 6C 00 00 33",
|
||||||
|
"listen": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
47
scenarios/copy-step-006d-006c-1500ms.json
Normal file
47
scenarios/copy-step-006d-006c-1500ms.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-step-006d-006c-1500ms",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D, then send 006C 1.5 seconds later.",
|
||||||
|
"Narrows the working copy-complete window between the known 1.0s success and 2.5s failure."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_complete_candidate_006c",
|
||||||
|
"frame": "05 00 6C 00 00 33",
|
||||||
|
"listen": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
47
scenarios/copy-step-006d-006c-2000ms.json
Normal file
47
scenarios/copy-step-006d-006c-2000ms.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"name": "copy-step-006d-006c-2000ms",
|
||||||
|
"notes": [
|
||||||
|
"Recover to CONNECT OK, send 006D, then send 006C 2.0 seconds later.",
|
||||||
|
"Narrows the copy-complete acceptance window before the known 2.5s failure."
|
||||||
|
],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "power_cycle",
|
||||||
|
"off_seconds": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "wait_ready",
|
||||||
|
"timeout": 10.0,
|
||||||
|
"heartbeats": 2,
|
||||||
|
"require": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "drain",
|
||||||
|
"seconds": 0.25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_1",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "ok_baseline_2",
|
||||||
|
"frame": "04 00 00 80 00 DE",
|
||||||
|
"listen": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_start_006d",
|
||||||
|
"frame": "05 00 6D 00 00 32",
|
||||||
|
"listen": 2.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "copy_complete_candidate_006c",
|
||||||
|
"frame": "05 00 6C 00 00 33",
|
||||||
|
"listen": 10.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user