Esempio n. 1
0
def currentLimit(dev):
    if request.method == "GET":
        return preformPsQuery(benches, dev, PsRequest("getCurrentLimit"))
    else:
        if not dev in benches:
            return benchNotfound(dev)

        if not benches[dev].hasPs():
            return benchNoPs(dev)

        data = request.get_json(force=True)
        if not ("currentLimit" in data and "pw" in data):
            return missingKeys("currentLimit", "pw")

        if not benches[dev].validatePw(data["pw"]):
            return wrongPw()

        nomCurrent = benches[dev].waitQuery(PsRequest("getNomCurrent")).res
        voltage = benches[dev].waitQuery(PsRequest("getVoltage")).res
        nomPower = benches[dev].waitQuery(PsRequest("getNomPower")).res

        currentLimit, e = validateFloat("Current limit", data['currentLimit'],
                                        0, nomCurrent)
        if not e:
            return jsonify(currentLimit), 400

        if currentLimit * voltage > nomPower:
            return jsonify("Current can not exceed " +
                           str(nomPower / voltage) +
                           "A at the currently configured voltage (" +
                           str(voltage) + "V)"), 400

        return preformPsQuery(benches, dev,
                              PsRequest("setCurrentLimit", currentLimit))
Esempio n. 2
0
def switch(dev):
    if request.method == "GET":
        return preformPsQuery(benches, dev, PsRequest("getSwitch"))
    else:
        if not dev in benches:
            return benchNotfound(dev)
        data = request.get_json(force=True)
        if not ("switch" in data and "pw" in data):
            return missingKeys("switch", "pw")

        if not benches[dev].validatePw(data["pw"]):
            return wrongPw()

        v, e = validateBool("Switch", data["switch"])
        if not e:
            return jsonify(v), 400

        return preformPsQuery(benches, dev, PsRequest("setSwitch", v))
Esempio n. 3
0
def voltage(dev):
    if request.method == "GET":
        return preformPsQuery(benches, dev, PsRequest("getVoltage"))
    else:
        if not dev in benches:
            return benchNotfound(dev)

        if not benches[dev].hasPs():
            return benchNoPs(dev)

        data = request.get_json(force=True)
        if not ("voltage" in data and "pw" in data):
            return missingKeys("voltage", "pw")

        if not benches[dev].validatePw(data["pw"]):
            return wrongPw()

        nomCurrent = benches[dev].waitQuery(PsRequest("getNomCurrent")).res
        nomVoltage = benches[dev].waitQuery(PsRequest("getNomVoltage")).res
        nomPower = benches[dev].waitQuery(PsRequest("getNomPower")).res
        print(nomVoltage)

        v, e = validateFloat("Voltage", data['voltage'], 0, nomVoltage)
        if not e:
            return jsonify(v), 400

        if nomPower >= nomCurrent * v:
            setCurrent = nomCurrent
        else:
            setCurrent = nomPower / v

        benches[dev].waitQuery(PsRequest("setCurrentLimit", setCurrent))
        return preformPsQuery(benches, dev, PsRequest("setVoltage", v))
Esempio n. 4
0
def overCurrent(dev):
    if request.method == "GET":
        return preformPsQuery(benches, dev, PsRequest("getOverCurrent"))
    else:
        data = request.get_json(force=True)

        if not dev in benches:
            return benchNotFound(dev)
        if not benches[dev].hasPs():
            return benchNoPs()

        if not ("overCurrent" in data and "pw" in data):
            return missingKeys("overCurrent", "pw")

        if not benches[dev].validatePw(data["pw"]):
            return wrongPw()

        nomCurrent = benches[dev].waitQuery(PsRequest("getNomCurrent")).res
        v, e = validateFloat("Over current", data["overCurrent"], 0,
                             nomCurrent)
        if not e:
            return jsonify(v), 400
        return preformPsQuery(benches, dev, PsRequest("setOverCurrent", v))
Esempio n. 5
0
def postQuery(dev):
    if not dev in benches:
        return benchNotFound(dev)
    if not benches[dev].hasPs():
        return benchNoPs()
    data = request.get_json(force=True)
    if not ("hex" in data and "pw" in data):
        return missingKeys("hex", "pw")

    if not benches[dev].validatePw(data["pw"]):
        return wrongPw()

    try:
        bytes = bytearray.fromhex(data["hex"])
    except ValueError:
        return jsonify("hex is not a hexadecimal string"), 400
    if len(bytes) < 3:
        return jsonify("hex must be 3 bytes long (6 chars)"), 400

    return preformPsQuery(benches, dev, PsRequest("query", bytes))
Esempio n. 6
0
def getClass(dev):
    return preformPsQuery(benches, dev, PsRequest("getClass"))
Esempio n. 7
0
def getNomPower(dev):
    return preformPsQuery(benches, dev, PsRequest("getNomPower"))
Esempio n. 8
0
def getNomCurrent(dev):
    return preformPsQuery(benches, dev, PsRequest("getNomCurrent"))
Esempio n. 9
0
def getNomVoltage(dev):
    return preformPsQuery(benches, dev, PsRequest("getNomVoltage"))
Esempio n. 10
0
def getType(dev):
    return preformPsQuery(benches, dev, PsRequest("getType"))
Esempio n. 11
0
def getSwVersion(dev):
    return preformPsQuery(benches, dev, PsRequest("getSwVersion"))
Esempio n. 12
0
def getPartNo(dev):
    return preformPsQuery(benches, dev, PsRequest("getPartNo"))
Esempio n. 13
0
def getManufacturer(dev):
    return preformPsQuery(benches, dev, PsRequest("getManufacturer"))
Esempio n. 14
0
def getStatus(dev):
    return preformPsQuery(benches, dev, PsRequest("getStatus"))
Esempio n. 15
0
def getConf(dev):
    return preformPsQuery(benches, dev, PsRequest("getConf"))