Skip to content

Add Tecan Infinite state and control APIs - #1220

Merged
rickwierenga merged 3 commits into
PyLabRobot:mainfrom
hazlamshamin:feat/tecan-infinite-state-readback
Aug 28, 2026
Merged

Add Tecan Infinite state and control APIs#1220
rickwierenga merged 3 commits into
PyLabRobot:mainfrom
hazlamshamin:feat/tecan-infinite-state-readback

Conversation

@hazlamshamin

Copy link
Copy Markdown
Contributor

Summary

Expose the Infinite 200 PRO reader-reported transport, plate sensor, temperature, shaking, and instrument state. State-changing calls check device readback and avoid automatic reinitialization when a lost response leaves the hardware state unknown.

  • Treat timed BY#T... frames as valid busy responses during tray movement, then confirm the reported IN or OUT position.
  • Add temperature control, timed shaking, plate-state queries, instrument-status queries, typed results, and device-response errors.
  • Keep automatic transport recovery for read-only measurement operations, but disable it for tray movement, shaking, and other control commands whose hardware state can become uncertain.

Verification

  • make test — 2,411 passed and 1 skipped.
  • python -m pytest pylabrobot/legacy/plate_reading/tecan — 83 passed with two existing Spark warnings.
  • Targeted Ruff lint, import-order, and formatting checks — passed for all three changed files.
  • git diff --check — passed.
  • Physical Infinite 200 PRO — verified tray movement, IN and OUT readback, FREE and TAKEN plate-sensor states, temperature targets of 0.0, 32.0, and 42.0 °C, and linear and orbital shaking from 1.0 to 6.0 mm.
  • Physical absorbance, fluorescence, and luminescence measurements were not repeated because their command paths did not change. Their existing command tests passed.
  • Repository-wide make lint, make format-check, and make typecheck report existing errors in unchanged files. The changed files pass the applicable targeted checks.

hazlamshamin added 2 commits August 26, 2026 17:09
Expose reader-reported tray, plate sensor, temperature, shaking, and
instrument states through the Infinite 200 PRO backend.

Confirm state-changing commands with device readback. Do not
reinitialize the reader when a lost response leaves tray movement or
shaking state unknown.

Treat timed busy frames as valid reader responses and confirm the final
transport position.
@hazlamshamin
hazlamshamin force-pushed the feat/tecan-infinite-state-readback branch from 6a9d519 to 368f7c8 Compare August 26, 2026 11:18
Comment on lines +636 to +640

async def get_temperature_status(self) -> TecanInfiniteTemperatureStatus:
"""Read whether plate-temperature control is on or off."""

return await self._get_temperature_status()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you name the methods that read data off the device request_ per PLR convention? after that this will be ready to merge

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done as requested

@rickwierenga
rickwierenga merged commit 3b5537c into PyLabRobot:main Aug 28, 2026
21 checks passed
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.

2 participants