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))
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))
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))
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))
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))
def getClass(dev): return preformPsQuery(benches, dev, PsRequest("getClass"))
def getNomPower(dev): return preformPsQuery(benches, dev, PsRequest("getNomPower"))
def getNomCurrent(dev): return preformPsQuery(benches, dev, PsRequest("getNomCurrent"))
def getNomVoltage(dev): return preformPsQuery(benches, dev, PsRequest("getNomVoltage"))
def getType(dev): return preformPsQuery(benches, dev, PsRequest("getType"))
def getSwVersion(dev): return preformPsQuery(benches, dev, PsRequest("getSwVersion"))
def getPartNo(dev): return preformPsQuery(benches, dev, PsRequest("getPartNo"))
def getManufacturer(dev): return preformPsQuery(benches, dev, PsRequest("getManufacturer"))
def getStatus(dev): return preformPsQuery(benches, dev, PsRequest("getStatus"))
def getConf(dev): return preformPsQuery(benches, dev, PsRequest("getConf"))