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 add_test_condition(self, tm): tm.onAddConditionMessage.func(msg.AddConditionMessage("State")) cond_name = tm.node.messages[-1].conditionId self.assertTrue(cond_name.startswith("State")) tm.onAddTaskMessage.func(msg.AddTaskMessage("test")) task_name = tm.node.messages[-1].taskId self.assertTrue(task_name.startswith("test")) tm.onSetTaskStateMessage.func( msg.SetTaskStateMessage(task_name, [cond_name], {}, {})) condition = tm.conditions[cond_name] self.assertIn(condition, tm.tasks[task_name].conditions) return cond_name, task_name
def test_add_condition(self): tm = self.get_tm() tm.onAddConditionMessage.func(msg.AddConditionMessage("State")) self.assertIn("State", {k.split("_")[0] for k in tm.conditions}) last_msg = tm.node.messages[-1] self.assertTrue(last_msg.conditionId.startswith("State"))
def add_condition(ainode): condition_type = raw_input('Enter condition type: ') ainode.node.send(messaging.AddConditionMessage(condition_type))
+ p_stringParamValueMap + c \ + p_stringParamValueMap + c \ + p_stringParamValueMap + c \ + p_bool \ + r).streamline() p_TaskStateMessage.setParseAction(lambda x: messaging.TaskStateMessage(*x[0])) p_ScriptStateMessage = pp.Group(l \ + p_str + c \ + p_stringParamValueMap + c \ + p_stringVec \ + r).streamline() p_ScriptStateMessage.setParseAction(lambda x: messaging.ScriptStateMessage(*x[0])) p_AddConditionMessage = pp.Group(l \ + p_str \ + r).streamline() p_AddConditionMessage.setParseAction(lambda x: messaging.AddConditionMessage(*x[0])) p_RemoveConditionMessage = pp.Group(l \ + p_str \ + r).streamline() p_RemoveConditionMessage.setParseAction(lambda x: messaging.RemoveConditionMessage(*x[0])) p_SetConditionStateMessage = pp.Group(l \ + p_str + c \ + p_stringParamValueMap \ + r).streamline() p_SetConditionStateMessage.setParseAction(lambda x: messaging.SetConditionStateMessage(*x[0])) p_ConditionRemovedMessage = pp.Group(l \ + p_str \ + r).streamline() p_ConditionRemovedMessage.setParseAction(lambda x: messaging.ConditionRemovedMessage(*x[0])) p_ConditionStateMessage = pp.Group(l \ + p_str + c \