from pyrosapp.models import * class DeviceObj(): ''' Generic object for the communication with all the devices (need inheritance) ''' def __init__(self): ''' The messages and their parameters will be defined in the objects that inherits from this class ''' set_msgs = [] get_msgs = [] do_msgs = [] def set(self, cmd, *args): ''' Send a SET message to the device ''' msg = [msg for msg in self.set_msgs if msg[0] == cmd] if len(msg) == 0: raise ValueError("Invalid message argument %s" % (cmd,)) msg = msg[0] if len(args) not in msg[1]: raise ValueError("Bad number of arguments") for arg in args: if type(arg) != msg[2]: raise TypeError("Bad type of argument: expected %s" % (msg[2],)) print("set ", cmd) def get(self, cmd): ''' Send a GET message to the device ''' if cmd not in self.get_msgs: raise ValueError("Invalid message argument %s" % (cmd,)) print("get ", cmd) def do(self, cmd, *args): ''' Send a DO message to the device ''' msg = [msg for msg in self.do_msgs if msg[0] == cmd] if len(msg) == 0: raise ValueError("Invalid message argument %s" % (cmd,)) msg = msg[0] if len(args) not in msg[1]: raise ValueError("Bad number of arguments") for arg in args: if type(arg) != msg[2]: raise TypeError("Bad type of argument: expected %s" % (msg[2],)) print("do ", cmd)