Files
@ 72dd61ca5365
Branch filter:
Location: HydroBot/hydrobot-software/module.py - annotation
72dd61ca5365
2.6 KiB
text/x-python
Started refactoring with the networking and modules
72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 72dd61ca5365 | 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!")
|