Esempio n. 1
0
def loadElmgModules(modules_path=u'modules.json', addresses_path=u'addresses.csv'):
    json_data = open(modules_path)
    module_data = json.load(json_data)
    module_names = []
    expanded_module_data = []
    register_paths = {}
    address_map = {}
    type_map = {}

    with open(addresses_path, u'rb') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
        for row in spamreader:
            address_map[str(row[1])] = row[0]
            type_map[str(row[1])] = row[2]

    for module in module_data:
        for instance in range(module[u'instances']):
            new_module_name = '{}_{}'.format(module[u'name'], instance)
            module_names.append(new_module_name)

            # make a copy of the module module
            new_module = {}
            new_module[u'name'] = new_module_name
            new_module[u'instance'] = instance
            new_module[u'registers'] = []
            for register in module[u'registers']:
                if register[u'Sysfs'] != 'N':
                    mod_name = '{}_{}'.format(module[u'name'], instance)
                    sysfs_module_name = '{}.{}'.format(string.lower(address_map[mod_name]), type_map[mod_name])
                    reg = Register(sysfs_module_name, register)
                    register_paths[reg.getPath()] = reg
                    new_module[u'registers'].append(reg)
            expanded_module_data.append(dict(new_module))
            for key, reg in register_paths.iteritems():
                if reg.hasCacheRegister():
                    register_paths[reg.getCacheWriteRegister()].setCacheRegister(True)

    return expanded_module_data, module_names, register_paths