Repository navigation
v1 CLARIOstar: build the configuration from what the reader reports - #1528
Merged
BioCam merged 1 commit intoOct 22, 2026
Merged
Conversation
BioCam
marked this pull request as ready for review
October 22, 2026 13:48
BioCam
force-pushed
the
bmg-clariostar-v1-configuration-per-subsystem
branch
from
October 22, 2026 13:49
2b40afc to
3ea02de
Compare
- Each block of the reader's hardware list (its INIT reply) is decoded on its own: one missing or too short leaves only its fields unknown, with a warning naming it. - A slide position without a whole number is left out of `monochromator_slides`. - The stored parameters are keyed by what each value is, grouped by what the values are for, with units; the eight that can be negative are decoded signed. - The serial number is read from the reader's stored parameters; a link opened by another serial warns. A saved configuration still holds the placeholder. - The fluorescence filter slots are the reader's slides' (each position not "open"); a reader whose slides are missing or of different sizes keeps the defaults. - A reader reporting no linear variable filters refuses fluorescence by wavelength and luminescence: it has no monochromator. Unknown lets the read through. - Setup reads the firmware's build date (REQUEST 09) and the build number (INIT), shown after the firmware version. - The setup summary prints every configuration field, True/False for each yes/no, the serial number after the model; a field not read shows None. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BioCam
force-pushed
the
bmg-clariostar-v1-configuration-per-subsystem
branch
from
October 22, 2026 13:58
3ea02de to
6b3e07b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Problem
When it initializes, the reader answers with a list of its fitted hardware, one block per module (main board, detectors, spectrometer, slides, temperature controller, pumps, stacker, barcode readers, atmospheric control unit). The v1 CLARIOstar decodes these blocks in turn, but stops at the first one it cannot decode: a missing block, a shorter one, or a slide position without a whole number raises, and every field after it stays unknown. A reader whose INIT reply is laid out slightly differently therefore loses unrelated facts - an unexpected slide text leaves
temperature_controllerunknown, so the temperature controller is never built. The stored parameters come back under free-text names ("No. of time-resolved fluorescence meas. channels"), in no order, every value read as unsigned - a slide offset of -5 comes back as 65531 - and four entries missing. And some of what the reader does report goes unused: its serial number is never read, although it is how a reader is selected when several are connected; the filter-slot counts are fixed defaults although the reader names its slides' positions; a reader without linear variable filters (no monochromator) would accept monochromator reads; and the setup summary leaves out most of what the reader reports (pumps, barcode readers, polarization, 1536-well plates, shaking) and its serial number.PR Content
None, with a warning naming it; the others are still decoded. A slide position without a whole number is skipped.request_parametersreturns the stored parameters by keys that describe each stored value -extended_incubator,fluorescence_measurement_channel_count- instead of free-text names.PARAMETER_TABLEis grouped by what the values are for (fitted options, measurement, auto-gain levels, optics, plate transport, pumps, barcode readers, fans and temperature), with each value's unit; the four missing entries are added, and the eight values that can be negative (SIGNED_PARAMETERS, e.g. the slide and transport offsets) are decoded signed. A test pins that no two entries overlap.device_id); a reader opened by another serial logs a warning. A saved configuration still holds the placeholder.09, the reply the firmware gives about itself) and shows them after the firmware version. A reply without a date logs a warning; setup carries on.None; the filter slots say "defaults" when the reader's slides were not used:Nothing changes on the wire, and on a reader that reports everything, nothing changes in what it accepts.
🤖 Generated with Claude Code