tell_client.py: added more explicit logging and a catch all error for wait_events, May remove this,
This commit is contained in:
@@ -24,7 +24,7 @@ from aare.common.exception_handler import (
|
||||
TellConnectionException,
|
||||
TellMountFailedException,
|
||||
TellCommandWhileBusyException,
|
||||
ManualMountException
|
||||
ManualMountException, TellCommunicationError
|
||||
)
|
||||
from aare.common.logger_config import setup_logger
|
||||
|
||||
@@ -144,7 +144,7 @@ class TellClient:
|
||||
Returns an exception if the command result doesnt return completed or removed"""
|
||||
self.wait_not_busy(timeout)
|
||||
result = self.get_result(self._last_cmd_id)
|
||||
logger.debug(f"{msg} {result}")
|
||||
logger.debug(f"getting result for command {self._last_cmd_id}: {result}")
|
||||
status = result["status"]
|
||||
if "completed" != status:
|
||||
if "removed" != status:
|
||||
@@ -195,75 +195,79 @@ class TellClient:
|
||||
raise TellCommandWhileBusyException("mount received while robot is busy")
|
||||
|
||||
logger.info(f"loading sample {sample} from segment {segment} - {puck}")
|
||||
|
||||
wait_timeout = timeout + self.estimate_mounting_time(segment)
|
||||
self._last_cmd_id = self.start_cmd(
|
||||
"mount", segment, puck, sample, force, read_dm, auto_unmount
|
||||
)
|
||||
|
||||
wait_timeout = timeout + self.estimate_mounting_time(segment)
|
||||
logger.info("waiting for mount to complete")
|
||||
if wait and segment in "ABCDEF":
|
||||
event, value = self.backend.wait_events(
|
||||
{
|
||||
"state": None,
|
||||
"Motion Task": "dry",
|
||||
"Gripper detection": None,
|
||||
"Motion Sync": "Robot Clear after mount",
|
||||
},
|
||||
timeout=wait_timeout,
|
||||
)
|
||||
logger.info(f"event: {event} occurred with value: {value}")
|
||||
if event is None or event == "state":
|
||||
logger.info(f"event: {event} occurred with value: {value}, checking command completed okay")
|
||||
try:
|
||||
if wait and segment in "ABCDEF":
|
||||
event, value = self.backend.wait_events(
|
||||
{
|
||||
"state": None,
|
||||
"Motion Task": "dry",
|
||||
"Gripper detection": None,
|
||||
"Motion Sync": "Robot Clear after mount",
|
||||
},
|
||||
timeout=wait_timeout,
|
||||
)
|
||||
logger.info(f"event: {event} occurred with value: {value}")
|
||||
if event is None or event == "state":
|
||||
logger.info(f"event: {event} occurred with value: {value}, checking command completed okay")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return value
|
||||
elif (
|
||||
event == TellEventTypeEnum.GIPPER_DETECTION.value
|
||||
and value == TellEventValueEnum.NO_PIN_IN_GRIPPER.value
|
||||
):
|
||||
logger.info(f"{TellEventValueEnum.NO_PIN_IN_GRIPPER.value}")
|
||||
return TellEventValueEnum.NO_PIN_IN_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value and value == TellEventValueEnum.PIN_STILL_IN_GRIPPER.value:
|
||||
logger.info(f"{TellEventValueEnum.PIN_STILL_IN_GRIPPER.value}")
|
||||
return TellEventValueEnum.PIN_STILL_IN_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value and value == TellEventValueEnum.PIN_IS_LOST_GRIPPER.value:
|
||||
logger.info(f"{TellEventValueEnum.PIN_IS_LOST_GRIPPER.value}")
|
||||
return TellEventValueEnum.PIN_IS_LOST_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value:
|
||||
return TellEventTypeEnum.GIPPER_DETECTION
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.DRY.value:
|
||||
logger.info(f"{TellEventValueEnum.DRY.value}")
|
||||
return TellEventValueEnum.DRY
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.COLD.value:
|
||||
logger.info(f"{TellEventValueEnum.COLD.value}")
|
||||
logger.info("As cold, likely robot is cooling from previous mount/dry "
|
||||
"DAQ will block until command is complete")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return TellEventValueEnum.COLD
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.UNKNOWN.value:
|
||||
logger.info(f"{TellEventValueEnum.UNKNOWN.value}")
|
||||
return TellEventValueEnum.UNKNOWN
|
||||
elif event == TellEventTypeEnum.MOTION_SYNC.value and value == TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT.value:
|
||||
logger.info(f"{TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT.value}")
|
||||
return TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT
|
||||
else:
|
||||
logger.info(f"Unexpected event: {event} occurred with value: {value}")
|
||||
logger.info("Checking command completed okay anyway")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return TellEventValueEnum.UNKNOWN
|
||||
elif wait and segment == "X":
|
||||
logger.info("Loading an auxiliary puck")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return value
|
||||
elif (
|
||||
event == TellEventTypeEnum.GIPPER_DETECTION.value
|
||||
and value == TellEventValueEnum.NO_PIN_IN_GRIPPER.value
|
||||
):
|
||||
logger.info(f"{TellEventValueEnum.NO_PIN_IN_GRIPPER.value}")
|
||||
return TellEventValueEnum.NO_PIN_IN_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value and value == TellEventValueEnum.PIN_STILL_IN_GRIPPER.value:
|
||||
logger.info(f"{TellEventValueEnum.PIN_STILL_IN_GRIPPER.value}")
|
||||
return TellEventValueEnum.PIN_STILL_IN_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value and value == TellEventValueEnum.PIN_IS_LOST_GRIPPER.value:
|
||||
logger.info(f"{TellEventValueEnum.PIN_IS_LOST_GRIPPER.value}")
|
||||
return TellEventValueEnum.PIN_IS_LOST_GRIPPER
|
||||
elif event == TellEventTypeEnum.GIPPER_DETECTION.value:
|
||||
return TellEventTypeEnum.GIPPER_DETECTION
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.DRY.value:
|
||||
logger.info(f"{TellEventValueEnum.DRY.value}")
|
||||
return TellEventValueEnum.DRY
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.COLD.value:
|
||||
logger.info(f"{TellEventValueEnum.COLD.value}")
|
||||
logger.info("As cold, likely robot is cooling from previous mount/dry "
|
||||
"DAQ will block until command is complete")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return TellEventValueEnum.COLD
|
||||
elif event == TellEventTypeEnum.MOTION_TASK.value and value == TellEventValueEnum.UNKNOWN.value:
|
||||
logger.info(f"{TellEventValueEnum.UNKNOWN.value}")
|
||||
return TellEventValueEnum.UNKNOWN
|
||||
elif event == TellEventTypeEnum.MOTION_SYNC.value and value == TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT.value:
|
||||
logger.info(f"{TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT.value}")
|
||||
return TellEventValueEnum.ROBOT_CLEAR_AFTER_MOUNT
|
||||
else:
|
||||
logger.info(f"Unexpected event: {event} occurred with value: {value}")
|
||||
logger.info("Checking command completed okay anyway")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
return TellEventValueEnum.UNKNOWN
|
||||
elif wait and segment == "X":
|
||||
logger.info("Loading an auxiliary puck")
|
||||
self.check_command_ok(
|
||||
timeout=wait_timeout, msg=f"Mount {segment}{puck}-{sample}: "
|
||||
)
|
||||
logger.info("post waiting")
|
||||
return TellEventValueEnum.SUCCESS
|
||||
logger.info("post waiting")
|
||||
return TellEventValueEnum.SUCCESS
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Exception occurred: {e}")
|
||||
raise TellCommunicationError(message=f"Mount {segment}{puck}-{sample}", critical=True)
|
||||
|
||||
def unmount(self, force=False, wait=False, timeout=360.0):
|
||||
if self.is_busy():
|
||||
|
||||
Reference in New Issue
Block a user