def test_get_extendio(): extendioes = Profile.get_extendio() extendio = extendioes['instrument'] extendio_2 = extendio['cp2'] assert extendio_2['partno'] == 'CAT9555' assert extendio_2['bus'] == '/dev/i2c-0' assert extendio_2['addr'] == int('0x01', 16) assert extendio_2['switch_channel'] == 'none' bit30 = extendio['bit30'] assert bit30['pin'] == '14' assert bit30['chip'] == 'cp2'
def test_read_profile(jsonfile): classes = globals() XObject.set_classes(classes) parser = ProfileParser() parser.read_profile(jsonfile) boards = Profile.get_boards() boards[power_profile['id']] = power_profile assert len(Profile.get_extendio()) == 1 assert len(Profile.get_busswitch()) == 9 assert len(Profile.get_eeprom()) == 8 assert len(Profile.get_boards()) == 5 assert len(Profile.get_buses()) == 8 assert len(Profile.get_chips()) == 12
def parse_chip_profile(chip_profile, board_name): chipname = chip_profile['id'] extendios = Profile.get_extendio() extendios[board_name] = extendios.setdefault(board_name, OrderedDict()) extendio = extendios[board_name] extendio[chipname] = dict() extendio[chipname]['bus'] = Profile.get_bus_path(chip_profile['bus']) extendio[chipname]['addr'] = int(chip_profile['addr'], 16) extendio[chipname]['partno'] = chip_profile['partno'] extendio[chipname]['switch_channel'] = chip_profile['switch_channel'] chips = Profile.get_chips() chips[chipname] = extendio[chipname] bit_values = 0 bit_dir = 0 dir_value = {'input': 1, 'output': 0} for pin in chip_profile['property']: pinname = pin['id'] extendio[pinname] = dict() extendio[pinname]['pin'] = pin['pin'] extendio[pinname]['chip'] = chipname if 'default' in pin.keys(): bit_values |= (int(pin['default']) << (int(pin['pin']) - 1)) if 'dir' in pin.keys(): bit_dir |= (dir_value[pin['dir']] << (int(pin['pin']) - 1)) value_list = [] dir_list = [] for x in xrange(len(chip_profile['property']) / 8): value_list.append((bit_values >> (x * 8)) & 0xff) dir_list.append((bit_dir >> (x * 8)) & 0xff) initconfig = Profile.get_initconfig() initconfig['extendio'] = initconfig.setdefault('extendio', OrderedDict()) initconfig['extendio'][board_name] = initconfig['extendio'].setdefault( board_name, OrderedDict()) initconfig['extendio'][board_name][chipname] = dict(dir=dir_list, value=value_list)
def _init_extendio(): ret_value = True extendios = Profile.get_extendio() initconfig = Profile.get_initconfig() for board_name, extendio_profile in extendios.iteritems(): for chip_name, bit in initconfig['extendio'][board_name].iteritems(): try: partno = extendio_profile[chip_name]['partno'] if Extendio.chip_dir_set(extendio_profile, chip_name, bit['dir']) is True: ret = Extendio.chip_set(extendio_profile, chip_name, bit['value']) if ret is False: logger.boot( 'error: set the %s board %s chip %s value:%s fail' % (board_name, partno, chip_name, logger.print_list2hex(bit['value']))) ret_value = False else: logger.boot( 'init the %s board extendio chip %s success, value is %s, direction is %s' % (board_name, chip_name, logger.print_list2hex(bit['value']), logger.print_list2hex(bit['dir']))) else: logger.boot( 'error: set the %s board %s chip %s direction:%s fail' % (board_name, partno, chip_name, logger.print_list2hex(bit['dir']))) ret_value = False except Exception: logger.boot("error: %s _init_extendio execute error:\n%s" % (chip_name, traceback.format_exc())) ret_value = False return ret_value