def __init__(self, opts): super(TaskManager, self).__init__() self.node = cauv.node.Node("task_manager") self.node.subMessage(messaging.AddTaskMessage()) self.node.subMessage(messaging.RemoveTaskMessage()) self.node.subMessage(messaging.SetTaskStateMessage()) self.node.subMessage(messaging.AddConditionMessage()) self.node.subMessage(messaging.RemoveConditionMessage()) self.node.subMessage(messaging.SetConditionStateMessage()) self.node.subMessage(messaging.RequestAIStateMessage()) self.node.subMessage(messaging.ScriptControlMessage()) self.node.subMessage(messaging.AIControlMessage()) self.node.subMessage(messaging.ProcessEndedMessage()) self.node.subMessage(messaging.DetectorFiredMessage()) self.node.subMessage(messaging.ScriptExitMessage()) self.all_paused = not opts.unpaused self.ai_state = AIState(self) #Tasks - list of tasks that (in right conditions) should be called self.tasks = NameDict() self.conditions = NameDict() self.detector_fire_timeouts = collections.defaultdict(int) #currently running task self.last_available_tasks = [] self.last_active_tasks = [] self.mission_name = opts.mission_name if opts.mission_save: self.load_mission(open(opts.mission_save)) self.gui_send_all() self.node.addObserver(self)
def reset_script(ainode): task_id = str(raw_input('Enter task id: ')) ainode.node.send( messaging.ScriptControlMessage(task_id, messaging.ScriptCommand.Reset))
p_TaskTypesMessage = pp.Group(l \ + p_stringVec \ + r).streamline() p_TaskTypesMessage.setParseAction(lambda x: messaging.TaskTypesMessage(*x[0])) p_ConditionTypesMessage = pp.Group(l \ + p_stringstringVecMap \ + r).streamline() p_ConditionTypesMessage.setParseAction(lambda x: messaging.ConditionTypesMessage(*x[0])) p_RequestAIStateMessage = pp.Group(l \ + r).streamline() p_RequestAIStateMessage.setParseAction(lambda x: messaging.RequestAIStateMessage(*x[0])) p_ScriptControlMessage = pp.Group(l \ + p_str + c \ + p_ScriptCommand \ + r).streamline() p_ScriptControlMessage.setParseAction(lambda x: messaging.ScriptControlMessage(*x[0])) p_LightControlMessage = pp.Group(l \ + p_LightID + c \ + p_int \ + r).streamline() p_LightControlMessage.setParseAction(lambda x: messaging.LightControlMessage(*x[0])) p_CuttingDeviceMessage = pp.Group(l \ + p_int \ + r).streamline() p_CuttingDeviceMessage.setParseAction(lambda x: messaging.CuttingDeviceMessage(*x[0])) p_RedHerringBatteryStatusMessage = pp.Group(l \ + p_int \ + r).streamline() p_RedHerringBatteryStatusMessage.setParseAction(lambda x: messaging.RedHerringBatteryStatusMessage(*x[0])) p_SimPositionMessage = pp.Group(l \ + p_float + c \