Skip to content

Add on-demand hydrated DDOP snapshots for debugging - #75

Draft
gunicsba wants to merge 3 commits into
AgOpenGPS-Official:developfrom
gunicsba:feature/ddop-hydration-snapshot
Draft

gunicsba wants to merge 3 commits into
AgOpenGPS-Official:developfrom
gunicsba:feature/ddop-hydration-snapshot

Conversation

@gunicsba

Copy link
Copy Markdown
Contributor

@sujandumaru I vibe coded this one based on the comment of yours under the DDOP Editor tool.
I'll try to test this in the coming days.

A VT "Snapshot DDOP" button on the Implement page writes a derived copy of
the connected implement's DDOP with live process data values filled in, so
tools such as AgIsoDDOPGenerator can show element offsets, working widths
and similar values that are not stored in the uploaded pool.

  • Record the latest value per object ID from value commands (clientsMutex)
  • On press, request missing allow-listed values and poll for up to
    requestWaitSeconds without blocking the main loop
  • Replace patched DeviceProcessData objects with DeviceProperty objects
    (same ID/DDI/designator), prefix the Device designator with "SNAP " and
    alter the structure label
  • Write /.SNAP-.iop plus a JSON sidecar next to the
    canonical .ddop; the canonical pool and upload handling are unchanged
  • Add a placeholder button (6000/11210) to AOG_TC.iop and an offline test

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

gunicsba and others added 3 commits September 14, 2026 09:52
A VT "Snapshot DDOP" button on the Implement page writes a derived copy of
the connected implement's DDOP with live process data values filled in, so
tools such as AgIsoDDOPGenerator can show element offsets, working widths
and similar values that are not stored in the uploaded pool.

- Record the latest value per object ID from value commands (clientsMutex)
- On press, request missing allow-listed values and poll for up to
  requestWaitSeconds without blocking the main loop
- Replace patched DeviceProcessData objects with DeviceProperty objects
  (same ID/DDI/designator), prefix the Device designator with "SNAP " and
  alter the structure label
- Write <NAME>/<label>.SNAP-<timestamp>.iop plus a JSON sidecar next to the
  canonical .ddop; the canonical pool and upload handling are unchanged
- Add a placeholder button (6000/11210) to AOG_TC.iop and an offline test

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Drop the configurable allow list and all settings.json changes; objects
  are picked from the pool itself (DeviceProperties, plus on-change
  DeviceProcessData that is not a total, setpoint, work state, section
  control state or actual rate)
- Hardcode the value request wait to 10 seconds
- Write snapshots as <label>.SNAP-<timestamp>.ddop

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Validate IOP workflow built only iop_validator, so ctest reported
  ddop_hydration_snapshot as "Not Run"; build ddop_hydration_test too
- Release builds pass -DAOG_TC_BUILD_TESTS=OFF, like AOG_TC_VALIDATE_IOP
- Wrap target_link_libraries the way cmake-format expects

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant