Exemple #1
0
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'
Exemple #2
0
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
Exemple #3
0
    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)
Exemple #4
0
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