def collectPowerData()

in benchmarking/utils/monsoon_power.py [0:0]


def collectPowerData(hash, sample_time, voltage, num_iters, monsoon_map=None):
    serialno = _getSerialno(hash, monsoon_map)
    if serialno is not None:
        getLogger().info(
            "Collecting current from monsoon {} for {}".format(str(serialno), hash)
        )
    # wait till all actions are performed
    sleep(1)
    Mon = HVPM.Monsoon()
    Mon.setup_usb(serialno)
    # Need to sleep to be functional correctly
    sleep(0.2)
    getLogger().info("Setup Vout")
    Mon.setVout(voltage)
    getLogger().info("Setup setPowerupTime")
    Mon.setPowerupTime(60)
    getLogger().info("Setup setPowerUpCurrentLimit")
    Mon.setPowerUpCurrentLimit(14)
    getLogger().info("Setup setRunTimeCurrentLimit")
    Mon.setRunTimeCurrentLimit(14)

    # main channel
    getLogger().info("Setup setVoltageChannel")
    Mon.setVoltageChannel(0)

    engine = sampleEngine.SampleEngine(Mon)
    getLogger().info("Setup enableCSVOutput")
    # we may leak the file content
    f = tempfile.NamedTemporaryFile(delete=False)
    f.close()
    filename = f.name
    engine.enableCSVOutput(filename)
    getLogger().info("Setup ConsoleOutput")
    engine.ConsoleOutput(False)

    sleep(1)
    # 200 us per sample
    num_samples = sample_time / 0.0002
    getLogger().info("startSampling on {}".format(filename))
    engine.startSampling(num_samples)

    engine.disableCSVOutput()
    getLogger().info("Written power data to file: {}".format(filename))

    # retrieve statistics from the power data
    getLogger().info("Reading data from CSV file")
    power_data = _getPowerData(filename)
    getLogger().info(
        "Calculating the benchmark data range from "
        "{} data points".format(len(power_data))
    )
    start_idx, end_idx = _calculatePowerDataRange(power_data)
    getLogger().info("Collecting data from " "{} to {}".format(start_idx, end_idx))
    getLogger().info(
        "Benchmark time: "
        "{} - {} s".format(power_data[start_idx]["time"], power_data[end_idx]["time"])
    )
    data = _retrievePowerData(power_data, start_idx, end_idx, num_iters)
    data["power_data"] = filename
    return data