From dca6c7266d313dee9d729d9cd0e6e618793c1c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=B3nal=20Murray?= <donal.murray@cern.ch> Date: Mon, 4 May 2020 10:48:52 +0100 Subject: [PATCH] Get hevtestdata working with hevserver changes --- raspberry-dataserver/hevserver.py | 6 +--- raspberry-dataserver/hevtestdata.py | 52 +++++++++++------------------ 2 files changed, 21 insertions(+), 37 deletions(-) diff --git a/raspberry-dataserver/hevserver.py b/raspberry-dataserver/hevserver.py index 2b114550..7c075b3f 100755 --- a/raspberry-dataserver/hevserver.py +++ b/raspberry-dataserver/hevserver.py @@ -152,7 +152,6 @@ class HEVServer(object): values: List[float] = self._values alarms = self._alarms if len(self._alarms) > 0 else None - print(values.getType()) data_type = values.getType().name broadcast_packet = {"type": data_type} @@ -218,6 +217,7 @@ class HEVServer(object): if __name__ == "__main__": tasks = [] # asyncio tasks + loop = asyncio.get_event_loop() try: #parser to allow us to pass arguments to hevserver parser = argparse.ArgumentParser(description='Arguments to run hevserver') @@ -254,7 +254,6 @@ if __name__ == "__main__": # initialise low level interface try: # setup serial device and init server - loop = asyncio.get_event_loop() lli = CommsLLI(loop) comms = lli.main(port_device, 115200) tasks.append(comms) @@ -277,6 +276,3 @@ if __name__ == "__main__": logging.info("Server stopped") except StructError: logging.error("Failed to parse packet") - finally: - loop.close() - diff --git a/raspberry-dataserver/hevtestdata.py b/raspberry-dataserver/hevtestdata.py index 770bbe93..504a855e 100644 --- a/raspberry-dataserver/hevtestdata.py +++ b/raspberry-dataserver/hevtestdata.py @@ -57,7 +57,7 @@ class HEVTestData: self.current_timestamp = 2**32 - 5_000 self._send_message(self.current_timestamp) interval = 50 - for i in range(0, 10_000, interval): + for _ in range(0, 10_000, interval): self.current_timestamp += interval self._send_message(self.current_timestamp) time.sleep(interval / 1_000) @@ -97,24 +97,24 @@ class HEVTestData: def _send_message(self, timestamp): # directly setting private member variables in this edge case payload = CommsCommon.DataFormat() - payload._version = payload._RPI_VERSION - payload._timestamp = timestamp % 2**32 - payload._fsm_state = "IDLE" - payload._pressure_air_supply = abs(math.sin((timestamp/1000) * (math.pi)))* 0 - payload._pressure_air_regulated = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._pressure_o2_supply = abs(math.sin((0.5 + timestamp/1000) * (math.pi))) * 657 - payload._pressure_o2_regulated = abs(math.sin((1.0 + timestamp/1000) * (math.pi))) * 653 - payload._pressure_buffer = abs(math.sin((1.5 + timestamp/1000) * (math.pi))) * 496 - payload._pressure_inhale = abs(math.sin((2.0 + timestamp/1000) * (math.pi))) * 481 - payload._pressure_patient = abs(math.sin((2.5 + timestamp/1000) * (math.pi))) * 772 - payload._temperature_buffer = math.sin((3.0 + timestamp/1000) * (math.pi)) * 1000 - payload._pressure_diff_patient = abs(math.sin((3.5 + timestamp/1000) * (math.pi))) * 61 - payload._readback_valve_air_in = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._readback_valve_o2_in = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._readback_valve_inhale = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._readback_valve_exhale = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._readback_valve_purge = abs(math.sin((timestamp/1000) * (math.pi))) * 0 - payload._readback_mode = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.version = payload._RPI_VERSION + payload.timestamp = timestamp % 2**32 + payload.fsm_state = CommsCommon.BL_STATES.IDLE + payload.pressure_air_supply = abs(math.sin((timestamp/1000) * (math.pi)))* 0 + payload.pressure_air_regulated = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.pressure_o2_supply = abs(math.sin((0.5 + timestamp/1000) * (math.pi))) * 657 + payload.pressure_o2_regulated = abs(math.sin((1.0 + timestamp/1000) * (math.pi))) * 653 + payload.pressure_buffer = abs(math.sin((1.5 + timestamp/1000) * (math.pi))) * 496 + payload.pressure_inhale = abs(math.sin((2.0 + timestamp/1000) * (math.pi))) * 481 + payload.pressure_patient = abs(math.sin((2.5 + timestamp/1000) * (math.pi))) * 772 + payload.temperature_buffer = math.sin((3.0 + timestamp/1000) * (math.pi)) * 1000 + payload.pressure_diff_patient = abs(math.sin((3.5 + timestamp/1000) * (math.pi))) * 61 + payload.readback_valve_air_in = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.readback_valve_o2_in = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.readback_valve_inhale = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.readback_valve_exhale = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.readback_valve_purge = abs(math.sin((timestamp/1000) * (math.pi))) * 0 + payload.readback_mode = abs(math.sin((timestamp/1000) * (math.pi))) * 0 self.payloadrecv = payload # callback to dependants to read the received payload @@ -124,23 +124,11 @@ class HEVTestData: @payloadrecv.setter def payloadrecv(self, payload): - self._payloadrecv.append(payload) - logging.debug(f"Pushed {payload} to FIFO") for callback in self._observers: - # peek at the leftmost item, don't pop until receipt confirmed - callback(self._payloadrecv[0]) + callback(payload) def writePayload(self, payload): logging.info(f"CMD received: {payload}") def bind_to(self, callback): self._observers.append(callback) - - def pop_payloadrecv(self): - # from callback. confirmed receipt, pop value - poppedval = self._payloadrecv.popleft() - logging.debug(f"Popped {poppedval} from FIFO") - if len(self._payloadrecv) > 0: - # purge full queue if Dependant goes down when it comes back up - for callback in self._observers: - callback(self._payloadrecv[0]) -- GitLab