diff --git a/lewis_emulators/dma4500m/__init__.py b/lewis_emulators/dma4500m/__init__.py deleted file mode 100644 index ba3aaa07..00000000 --- a/lewis_emulators/dma4500m/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .device import SimulatedDMA4500M -from ..lewis_versions import LEWIS_LATEST - -framework_version = LEWIS_LATEST -__all__ = ['SimulatedDMA4500M'] diff --git a/lewis_emulators/dma4500m/device.py b/lewis_emulators/dma4500m/device.py deleted file mode 100644 index dd26b96d..00000000 --- a/lewis_emulators/dma4500m/device.py +++ /dev/null @@ -1,92 +0,0 @@ -from collections import OrderedDict - -from .states import ReadyState, MeasuringState, DoneState - -from lewis.devices import StateMachineDevice - - -class SimulatedDMA4500M(StateMachineDevice): - - def _initialize_data(self): - """ - Initialize all of the device's attributes. - """ - self.connected = True - self.measurement_time = 0 - - self.sample_id = 0 - self.target_temperature = 0.0 - self.actual_temperature = 0.0 - self.density = 0.0 - self.condition = "valid" - - self.data_buffer = "" - self.status = "" - - self.measuring = False - self.last_measurement_successful = False - self.setting_temperature = False - - def reset(self): - self._initialize_data() - - def start(self): - if self.measuring: - return "measurement already started" - else: - self.sample_id += 1 - self.measuring = True - return "measurement started" - - def abort(self): - if not self.measuring: - return "measurement not started" - else: - self.measuring = False - return "measurement aborted" - - def finished(self): - return self.status - - def set_temperature(self, temperature): - if self.measuring: - return "not allowed during measurement" - else: - self.target_temperature = temperature - self.setting_temperature = True - return "accepted" - - def get_data(self): - if not self.data_buffer: - return "no new data" - else: - data = self.data_buffer - self.data_buffer = "" - return data - - def get_raw_data(self): - sample_id = self.sample_id if self.sample_id else "NaN" - return "{0:.6f};{1:.2f};{2:.2f};{3}".format(self.density, - self.actual_temperature, - self.target_temperature, - sample_id) - - def _get_state_handlers(self): - return { - "ready": ReadyState(), - "measuring": MeasuringState(), - "done": DoneState(), - } - - def _get_initial_state(self): - return "ready" - - def _get_transition_handlers(self): - return OrderedDict([ - (("ready", "measuring"), lambda: self.measuring is True), - (("measuring", "ready"), lambda: self.measuring is False and not self.last_measurement_successful), - (("measuring", "done"), lambda: self.measuring is False and self.last_measurement_successful), - (("done", "measuring"), lambda: self.measuring is True), - (("done", "ready"), lambda: self.setting_temperature is True), - (("ready", "ready"), lambda: self.setting_temperature is True), - ]) diff --git a/lewis_emulators/dma4500m/interfaces/__init__.py b/lewis_emulators/dma4500m/interfaces/__init__.py deleted file mode 100644 index 2f725d9a..00000000 --- a/lewis_emulators/dma4500m/interfaces/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .stream_interface import DMA4500MStreamInterface - -__all__ = ['DMA4500MStreamInterface'] diff --git a/lewis_emulators/dma4500m/interfaces/stream_interface.py b/lewis_emulators/dma4500m/interfaces/stream_interface.py deleted file mode 100644 index 85247533..00000000 --- a/lewis_emulators/dma4500m/interfaces/stream_interface.py +++ /dev/null @@ -1,60 +0,0 @@ -from lewis.adapters.stream import StreamInterface -from lewis.core.logging import has_log -from lewis.utils.command_builder import CmdBuilder -from lewis.utils.replies import conditional_reply - -if_connected = conditional_reply("connected") - - -@has_log -class DMA4500MStreamInterface(StreamInterface): - - in_terminator = "\r" - out_terminator = "\r" - - # Commands that we expect via serial during normal operation - def __init__(self): - super(DMA4500MStreamInterface, self).__init__() - self.commands = { - CmdBuilder(self.start).escape("start").eos().build(), - CmdBuilder(self.abort).escape("abort").eos().build(), - CmdBuilder(self.finished).escape("finished").eos().build(), - CmdBuilder(self.set_temperature).escape("set").optional(" ").escape("temperature ").arg(".+").eos().build(), - CmdBuilder(self.get_data).escape("get").optional(" ").escape("data").eos().build(), - CmdBuilder(self.get_raw_data).escape("get").optional(" ").escape("raw").optional(" ").escape("data").eos().build(), - } - - def handle_error(self, request, error): - err_string = "command was: {}, error was: {}: {}\n".format(request, error.__class__.__name__, error) - print(err_string) - self.log.error(err_string) - return err_string - - @if_connected - def start(self): - return self._device.start() - - @if_connected - def abort(self): - return self._device.abort() - - @if_connected - def finished(self): - return self._device.finished() - - @if_connected - def set_temperature(self, temperature_arg): - try: - temperature = float(temperature_arg) - except ValueError: - return "the given temperature could not be parsed" - - return self._device.set_temperature(temperature) - - @if_connected - def get_data(self): - return self._device.get_data() - - @if_connected - def get_raw_data(self): - return self._device.get_raw_data() diff --git a/lewis_emulators/dma4500m/states.py b/lewis_emulators/dma4500m/states.py deleted file mode 100644 index 36b73adb..00000000 --- a/lewis_emulators/dma4500m/states.py +++ /dev/null @@ -1,38 +0,0 @@ -from lewis.core.statemachine import State - - -class ReadyState(State): - def on_entry(self, dt): - self._context.status = "measurement not started" - self._context.actual_temperature = self._context.target_temperature - self._context.setting_temperature = False - - -class MeasuringState(State): - time_elapsed = 0.0 - - def on_entry(self, dt): - self._context.status = "measurement not finished" - self._context.last_measurement_successful = False - self.time_elapsed = 0.0 - - def in_state(self, dt): - self.time_elapsed += dt - if self.time_elapsed > self._context.measurement_time: - self._context.last_measurement_successful = True - self._context.measuring = False - - def on_exit(self, dt): - if not self._context.last_measurement_successful: - self._context.condition = "canceled" - self._context.data_buffer = "data: ---;---;canceled" - else: - self._context.condition = "valid" - self._context.data_buffer = "data: {0:.5f};{1:.2f};{2}".format(self._context.density, - self._context.actual_temperature, - self._context.condition) - - -class DoneState(State): - def on_entry(self, dt): - self._context.status = "measurement finished"