Skip to content
Snippets Groups Projects
deviceaccess_measurement.py 1.41 KiB

import dut_measurement
try:
    import deviceaccess
except ImportError:
    print('### WARNING: Could not import module \'deviceaccess\'.' +
          ' Using the DeviceAccessMeasurement will cause exceptions! ###')
import numpy

class DeviceAccessMeasurement(dut_measurement.DutMeasurement):
    def __init__(self, config_data):

        self.deltas = config_data['deltas']

        deviceaccess.setDMapFilePath(config_data['dmap_file'])
        self.device = deviceaccess.Device(config_data['device_alias'])
        self.device.open()

        self.reference_signal_names = config_data['reference_signals']

        self.accessors = {}
        for signal_name, register_path in config_data['signals'].items():
            self.accessors[signal_name] = self.device.getScalarRegisterAccessor(numpy.double, register_path)

    def get_dut_measurements(self, set_name):
        retval = {}

        for name, accessor in self.accessors.items():
            accessor.read()
            retval[name] = accessor[0]
        retval['SET_NAME'] = 'default'
        return retval

    def get_dut_signal_names(self):
        retval = list(self.accessors.keys())
        retval.append('SET_NAME')
        return retval


    def get_dut_reference_signal_names(self):
        return self.reference_signal_names

    def get_dut_max_delta_signals(self):
        return self.deltas

    def get_measurement_set_names(self):
        return ['default']