From b4db11d176cd4a57734eab6cd82fe5179b1846c9 Mon Sep 17 00:00:00 2001 From: shinedday <shinedday@gmail.com> Date: Mon, 9 May 2022 15:50:26 +0200 Subject: [PATCH] Fix : Agent now 1 only 1 execution policy (full cycle) --- agent.py | 3 --- ihm.py | 7 +++++++ scheduler.py | 26 +++++++++++++++++++------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/agent.py b/agent.py index 6164ff5..75c5a11 100644 --- a/agent.py +++ b/agent.py @@ -70,9 +70,6 @@ class Agent(Schedulable): self.on_perceive() - self.publish("cycle_done", "") - self.wait() - self.on_decide() self.on_act() diff --git a/ihm.py b/ihm.py index 2447346..1331b0d 100644 --- a/ihm.py +++ b/ihm.py @@ -118,6 +118,9 @@ class Ihm(MqttClient, SSHClient): if cmd.lower() == "pause": self.client.publish("ihm/pause") + if cmd.lower() == "unpause": + self.client.publish("ihm/unpause") + if cmd.lower() in ["s", "step"]: self.client.publish("ihm/step") @@ -132,6 +135,10 @@ class Ihm(MqttClient, SSHClient): print("Hostname :", client.hostname, " Responded : ", result) + if cmd.lower() == "mode": + self.client.publish("ihm/mode") + + self.client.publish("ihm/step") sleep(2) diff --git a/scheduler.py b/scheduler.py index 9321595..2e00a58 100644 --- a/scheduler.py +++ b/scheduler.py @@ -28,18 +28,33 @@ class Scheduler(Schedulable): self.subscribe("env/action_done", self.update_schedulable) self.subscribe("ihm/step", self.step) self.subscribe("ihm/pause", self.pause) + self.subscribe("ihm/unpause", self.unpause) + self.subscribe("ihm/mode", self.mode) self.agent_waiting = 0 self.schedulable_waiting = 0 print("Init done") + def mode(self, client, userdata, message) -> None: + """ + Function called when the IHM change scheduler mode + """ + self.execution_policy = (1 - self.execution_policy) % 2 + def pause(self, client, userdata, message) -> None: """ - Function called when the IHM pause/unpause the scheduler + Function called when the IHM pause the scheduler """ - self.paused = not self.paused - self.ihm_token += 1 + self.paused = True + self.ihm_token = 0 + + def unpause(self, client, userdata, message) -> None: + """ + Function called when the IHM unpause the scheduler + """ + self.paused = False + self.ihm_token = 1 def step(self, client, userdata, message) -> None: """ @@ -108,10 +123,7 @@ class Scheduler(Schedulable): main part of a cycle : Agent cycle """ self.client.publish("scheduler/agent/wakeup", "") - # Agent doing phase 1 - self.wait_agent() - self.client.publish("scheduler/agent/wakeup", "") - # agent doing phase 2 + # Agent doing cycle self.wait_agent() def last_part(self) -> None: -- GitLab