diff --git a/module.py b/module.py new file mode 100644 --- /dev/null +++ b/module.py @@ -0,0 +1,92 @@ +from abc import ABCMeta, abstractmethod +import uuid + +class ModuleList(): + + def __init__(self): + self._modules = [] + + def add_module(self, module): + assert isinstance(module, Module), 'invalid module' + if module in self._modules: + raise ValueError('Module %s already in database' % module) + else: + self._modules.append(module) + + def remove_module(self, module): + assert isinstance(Module, module), 'invalid module' + try: + self._module.remove(module) + except ValueError: + raise ValueError('Module %s is not in database' % module) + + def lookup_module(self, uuid): + for module in self._modules: + if module.uuid == uuid: + return module + + def new_module(self, device_type, address, interface): + + if device_type == 0x01: + module = AirSenseModule(device_type, address, interface) + elif device_type == 0x02: + module = RelayDriveModule(device_type, address, interface) + else: + module = UnknownModule(device_type, address, interface) + + self.add_module(module) + + return module + +class Module(metaclass=ABCMeta): + + def __init__(self, device_type, address, interface): + self.device_type = device_type + self.address = address + self.interface = interface + + self.uuid = uuid.uuid1() + print("Created new module! " + str(self.uuid)) + + @abstractmethod + def send_message(self): + pass + + @abstractmethod + def receive_message(self): + pass + +class AirSenseModule(Module): + + def __init__(self, device_type, address, interface): + super(AirSenseModule, self).__init__(device_type, address, interface) + + def send_message(self): + message = None + self.interface.network.send_message(message) + + def receive_message(self): + print("AirSenseModule receive message!") + +class RelayDriveModule(Module): + + def __init__(self, device_type, address, interface): + super(RelayDriveModule, self).__init__(device_type, address, interface) + + def send_message(self): + pass + + def receive_message(self): + print("RelayDriveModule receive message!") + +class UnknownModule(Module): + + def __init__(self, device_type, address, interface): + super(UnknownModule, self).__init__(device_type, address, interface) + + def send_message(self): + pass + + def receive_message(self): + print("UnknownModule receive message!") +