Skip to content

[ophyd-async] Embedded FastCS connector (fastcs-embed extra) #399

Description

@coretl

Scope

  • ophyd_async.fastcs embedded_fastcs_connector(controller) behind an ophyd-async[fastcs-embed] extra. create_children_from_annotations via DeviceFiller + FastCSSignalBackend/FastCSCommandBackend factories, filled=False.
  • connect_real: start the ControllerRunner (AttrW setpoint cache, native timestamps + severity, ControllerRunner #395), walk the ControllerAPI tree, fill children, check_filled, set_name; idempotent across reconnects. connect_mock never touches the controller.
  • Backend mappings per ADR 0019 table (get/set/callback/setpoint/datakey/command).
  • Enums: un-hinted → introspect at runtime, drop to string datatype retaining choices as metadata; hinted → require duplication (StrictEnum/Subset/Superset) for now, revisit (0019 L149).
  • Table converter IS in scope for the first cut — use it to bring FastCS and ophyd-async Table implementations closer (0019 L153).
  • FastCS gains ConnectionFailedError (raised when the device doesn't respond) → connector converts to NotConnectedError and retries in background; all other errors surfaced unconverted (0019 L163).

⚠️ Investigate (needs @shihab-dls)

0019 L159: is @scan just driving updates into Attrs (→ Signals), or is there more to map? Resolve before finalising the backend surface.

Acceptance

uv run --locked tox -e pre-commit,type-checking,tests green (this work lands in the ophyd-async repo / a coordination branch — see #388 §4; scope here is the FastCS-side stable interface + any FastCS additions).

ADR: 0019
Parent: #388
Blocked by: #392, #395, #413

get_datakey source — folded in from review

get_datakey now reads metadata from attr.meta (units/precision/limits) + python-type/enum choices, not from a removed DataType object.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions