def __init__(self, bus, addr, conf): I2CRegister.__init__(self, bus, addr, conf) if 'writemask' in self.config.keys(): self.mask = self.config['writemask'] else: self.mask = 0xff self.map_bit_names()
def __init__(self, bus, addr, conf, signed = True): I2CRegister.__init__(self, bus, addr, conf) if signed: self.bits = int(conf['type'][3:]) # type is intX or intXY else: self.bits = int(conf['type'][4:]) # type is uintX or uintXY self.bytes = self.bits/8 self.signed = signed self.config['value_names'] = {} if 'values' in conf.keys(): for value_num,val_name in conf['values'].items(): self.config['value_names'][val_name] = value_num
def process_config(self, config): self.name = config['name'] # multi-byte read/write support try: self.multi = config['protocol']['multi'] except KeyError: self.multi = False try: self.comm_base = config['command']['default'] except KeyError: self.comm_base = 0 self.registers = {} for reg_addr, reg_conf in config['registers'].items(): name = reg_conf['name'] try: reg_type = reg_conf['type'] except KeyError: reg_type = None # Since reg_conf has a type, should we do this parsing in # the generic Register class instead of here? if reg_type in ['int8', 'int16', 'int32']: self.registers[name] = IntegerReg(self, reg_addr, reg_conf) elif reg_type in ['uint8', 'uint16', 'uint32']: self.registers[name] = IntegerReg(self, reg_addr, reg_conf, signed=False) elif reg_type == 'bitfield': self.registers[name] = BitfieldReg(self, reg_addr, reg_conf) elif reg_type == 'string': self.registers[name] = StringReg(self, reg_addr, reg_conf) else: print "WARNING: No type specified for {:#04x}".format(reg_addr) self.registers[name] = I2CRegister(self.bus, reg_addr, reg_conf)
def __init__(self, bus, addr, conf): I2CRegister.__init__(self, bus, addr, conf) self.length = self.config['length']