-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(api): Support 96 channel in the hardware controller #11866
Conversation
Codecov Report
@@ Coverage Diff @@
## edge #11866 +/- ##
==========================================
+ Coverage 74.17% 74.21% +0.04%
==========================================
Files 2165 2167 +2
Lines 59863 60007 +144
Branches 6307 6307
==========================================
+ Hits 44403 44536 +133
- Misses 13972 13983 +11
Partials 1488 1488
Flags with carried forward coverage won't be shown. Click here to find out more.
|
9fc8f6a
to
9ff48be
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lets do it!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, just got two nits/questions
@@ -403,21 +402,43 @@ async def gripper_home_jaw(self) -> None: | |||
self._homed_nodes.add(axis) | |||
|
|||
@staticmethod | |||
def _synthesize_model_name(name: FirmwarePipetteName, model: str) -> "PipetteModel": | |||
return cast("PipetteModel", f"{name.name}_v{model}") | |||
def _lookup_serial_key(pipette_name: FirmwarePipetteName) -> str: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO lookup tables such as this should be in pipette config or the ot3utils. Is there a reason why they have to be here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The real fix is just to return the full serial number from PipetteInformation
, so I would consider both of these functions to be temporary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you leave a comment/todo so we know they are temp?
return lookup_name[pipette_name] | ||
|
||
@staticmethod | ||
def _combine_serial_number(pipette_info: ohc_tool_types.PipetteInformation) -> str: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, we'll use this for gripper as well
Also can be in ot3utils, maybe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I made the change for the gripper as well, but see my answer to your comment above. The serial # is only used for purposes of identifying the instrument and saving calibration, so I think we should just make sure we return the full "serial number" from PipetteInformation
when an instrument is first detected.
…he hardware controller (#11830) * feat(api): change pipette functions based on the tip working volume * feat(api): do not use "pipette name" and "pipette model" to look up pipettes via configurations
79ceb12
to
8439521
Compare
* origin/edge: (34 commits) refactor(app): update desktop robot settings calibration section for OT-3 (#11942) feat(hardware): add CAN message to update motor position from encoders (#11868) ci(monorepo): upgrade windows versions on github workflows (#11940) feat(app): implement useCalibrationTaskList hook (#11894) feat(app, app-shell, app-shell-odd): create node layer for ODD (#11944) refactor(app): Remove recalibrate option from POC and TLC overflow menus [RAUT-93] (#11915) fix(api): home z should home gripper z too (#11950) refactor(shared-data): gripper use force polynomial function (#11946) refactor(api): move `ModuleGeometry` to legacy protocol core module (#11939) refactor(api): deprecate `ModuleContext.geometry` (#11938) chore(usb-bridge): add usb-bridge tests to test-py, add restart to push-ot3 (#11937) Revert "feat(app-shell-odd): create node layer for ODD (#11852)" (#11941) feat(app-shell-odd): create node layer for ODD (#11852) feature(hardware): add a warning style to can_mon and an "estop_released" error id (#11924) fix(hardware): Remove while loop and rely on number_of_messages when parsing motor position response. (#11929) fix(hardware): save can_comm / can_mon logs to read-write location (#11933) feat(api): Support 96 channel in the hardware controller (#11866) refactor(app): revert run a protocol from devices pages (#11909) refactor(app): remove warnings (#11922) refactor(app): remove invalid type warnings for strings from atoms (#11918) ...
Overview
This branch includes work to get the 96 channel supported in the hardware controller. I would like to merge it in after we deliver any updates to the science robot since I did not have a chance to test all pipette types last week in the office.
Changelog
Review requests
Definitely comment if you see anything glaring.
Risk assessment
Medium/High. Modifies configurations for the OT-3 across the pipette models