git-subtree-dir: .stage-pilot git-subtree-split: 2c0510c68add43c50adcdedb30c174e68e730395
2.8 KiB
OpsPro VISIONCFG hardware verification reference
Use this reference when drafting or updating verification evidence for OpsPro VISIONCFG CTSP and migration work.
CTSP hardware verification patterns
- Start with non-destructive probes.
DATEconfirms port/CTSP responsiveness.VISIONCFGread confirms payload shape before any write.
- For
VISIONCFG, always capture:- raw request
- raw response
- parsed value count
- slot interpretation (1..26 legacy/public, 27 ratio, 28..32 reserved for current 32-value contract)
- When write tests are allowed, use this order:
- current 32-value round-trip
- legacy 26-value compatibility write
- invalid ratio reject / no partial write
- reboot persistence
- migration from pure legacy device/state
- After write-based evidence capture, restore baseline values and confirm readback.
Migration verification lessons
Exclude downgrade/re-upgrade drift from pure legacy migration evidence
If a device has already booted a newer firmware that can write a current visioncfg, then later downgrade/re-upgrade behavior is not clean REQ-005 legacy migration evidence. Treat that as a separate compatibility/schema-drift investigation, not as the primary legacy-to-current migration acceptance path.
Pure legacy migration acceptance path
For REQ-005 migration evidence, use a device that has never been updated to the newer firmware revision being tested.
Required sequence:
- Confirm legacy firmware returns 26-value
VISIONCFG. - Write distinctive 26-value legacy test data.
- Capture legacy readback before upgrade.
- Upgrade to target firmware and reboot.
- On first boot, read
VISIONCFGand confirm:- 32 values total
- slots 1..26 exactly match pre-upgrade legacy values
- slot 27 is
10 - slots 28..32 are
-1/-1/-1/-1/-1
- Reboot via CTSP
REBOOTand confirm current readback is unchanged. - Restore baseline current values after evidence capture.
Diagnostic logging for schema issues
When investigating migration failures, instrument _load_vision_config() to log:
sizeof(struct prop_header)sizeof(struct ocv_rect)sizeof(struct _vision_config_rev0)sizeof(struct _vision_config)- header probe
rc,type,revision - current read expected size vs
rc - revision-0 read expected size vs
rc
Interpretation rule:
current revision size mismatch (...)followed byvision config defaultmeans the stored blob was interpreted as current revision but its binary size/layout did not match the current firmware's expected current schema. Do not misclassify that as successful legacy migration.
ABI / struct-layout caution
Do not infer target firmware ABI from PYDEBUG-only fallback definitions or host-side binding builds. For firmware storage compatibility analysis, trust target-firmware definitions and on-device logs first.