def do_POST(self): ctype, pdict = parse_header(self.headers['content-type']) if ctype == 'multipart/form-data': postvars = parse_multipart(self.rfile, pdict) elif ctype == 'application/x-www-form-urlencoded': length = int(self.headers['content-length']) postvars = parse_qs(self.rfile.read(length), keep_blank_values=1) else: postvars = {} pathArray = self.path[1:].split("/") if (len(pathArray) == 1): if (pathArray[0] == "hydraulics"): if "state" in postvars: newState = postvars["state"][0] hydraulics_drv.setState(newState) self.send_response(200) if ("oldPlaybackName" in postvars and "newPlaybackName" in postvars): oldName = postvars["oldPlaybackName"][0] newName = postvars["newPlaybackName"][0] hydraulics_playback.renamePlayback(oldName, newName) if ("currentPlayback" in postvars): playback = postvars["currentPlayback"][0] hydraulics_playback.setCurrentPlayback(playback) if ("record" in postvars): doRecord = postvars["record"][0] if doRecord.lower() == "true": recordingFile = hydraulics_playback.getNewRecordingFile( ) hydraulics_drv.startRecording(recordingFile) else: hydraulics_drv.stopRecording() if ("loopback_x" in postvars): loopback_x = postvars["loopback_x"][0] x, y, z = hydraulics_drv.getLoopbackValues() print("loopback_x set to", loopback_x) hydraulics_drv.setLoopbackValues(loopback_x, y, z) if ("loopback_y" in postvars): print postvars loopback_y = postvars["loopback_y"][0] print("loopback_y set to", loopback_y) x, y, z = hydraulics_drv.getLoopbackValues() hydraulics_drv.setLoopbackValues(x, loopback_y, z) if ("loopback_z" in postvars): loopback_z = postvars["loopback_z"][0] print("loopback_z set to", loopback_z) x, y, z = hydraulics_drv.getLoopbackValues() hydraulics_drv.setLoopbackValues(x, y, loopback_z) self.send_response(200) else: self.sendError(404) else: self.sendError(404) def log_message(self, format, *args): # yep, I'm sick of the annoying logging of all requests pass
def getHydraulicsState(): control_x, control_y, control_z = hydraulics_drv.getCurrentInput() pid_x, pid_y, pid_z = hydraulics_drv.getVoltageInput() loopback_x, loopback_y, loopback_z = hydraulics_drv.getLoopbackValues() retObj = {} retObj["x"] = control_x retObj["y"] = control_y retObj["z"] = control_z retObj["pid_x"] = pid_x retObj["pid_y"] = pid_y retObj["pid_z"] = pid_z retObj["playbacks"] = hydraulics_playback.getList() retObj["currentPlayback"] = hydraulics_playback.getCurrentPlayback() retObj["states"] = hydraulics_drv.getAllStates() retObj["currentState"] = hydraulics_drv.getState() retObj["isRecording"] = hydraulics_drv.isRecording() retObj["loopback_x"] = loopback_x retObj["loopback_y"] = loopback_y retObj["loopback_z"] = loopback_z print("Adding currentState to the data {} ({})".format( retObj["currentPlayback"], hydraulics_playback.getCurrentPlayback())) return retObj