summaryrefslogtreecommitdiffstats
path: root/pywrap/html_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'pywrap/html_server.py')
-rw-r--r--pywrap/html_server.py197
1 files changed, 197 insertions, 0 deletions
diff --git a/pywrap/html_server.py b/pywrap/html_server.py
new file mode 100644
index 0000000..76d132a
--- /dev/null
+++ b/pywrap/html_server.py
@@ -0,0 +1,197 @@
+import pcipywrap
+import json
+from optparse import OptionParser
+
+#import flask elements
+from flask import render_template
+from flask import Flask
+from flask import request
+from flask import url_for
+from flask import redirect
+from flask import send_from_directory
+
+app = Flask(__name__)
+pcilib = 0;
+device = '/dev/fpga0'
+model = 'test_pywrap'
+
+# property json api
+@app.route("/property_info_json")
+def get_property_list_json():
+ branch = request.args.get('branch')
+ if not branch is None:
+ branch = str(branch)
+
+ prop_info = 0
+ try:
+ prop_info = pcilib.get_property_list(branch)
+ return json.dumps(prop_info)
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+@app.route('/get_property_json')
+def get_property_json():
+ prop = request.args.get('prop')
+
+ try:
+ val = pcilib.get_property(str(prop))
+ return json.dumps({'value': val})
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+@app.route('/set_property_json')
+def set_property_json():
+ val = request.args.get('val')
+ prop = request.args.get('prop')
+
+ try:
+ pcilib.set_property(float(val), str(prop))
+ return json.dumps({'status': 'ok'})
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+# register json api
+@app.route("/registers_list_json")
+def get_registers_list_json():
+ reg_list = 0
+ try:
+ reg_list = pcilib.get_registers_list()
+ return json.dumps(reg_list)
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+@app.route('/read_register_json')
+def read_register_json():
+ name = request.args.get('name')
+ bank = request.args.get('bank')
+
+ try:
+ value = pcilib.read_register(str(name), str(bank))
+ return json.dumps({'value': value})
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+@app.route('/write_register_json')
+def write_register_json():
+ val = request.args.get('val')
+ name = request.args.get('name')
+ bank = request.args.get('bank')
+
+ try:
+ pcilib.write_register(float(val), str(name), str(bank))
+ return json.dumps({'status': 'ok'})
+ except Exception as e:
+ return json.dumps({'error': str(e)})
+
+#html api
+@app.route('/set_property')
+def set_property():
+ val = request.args.get('val')
+ prop = request.args.get('prop')
+
+ try:
+ pcilib.set_property(float(val), str(prop))
+ return redirect(url_for('get_property_list', branch=prop))
+ except Exception as e:
+ return str(e)
+
+@app.route('/write_register')
+def write_register():
+ val = request.args.get('val')
+ name = request.args.get('name')
+ bank = request.args.get('bank')
+
+ try:
+ pcilib.write_register(float(val), str(name), str(bank))
+ return redirect(url_for('get_register_info', name=name, bank=bank))
+ except Exception as e:
+ return str(e)
+
+@app.route('/register_info')
+def get_register_info():
+ name = request.args.get('name')
+ bank = request.args.get('bank')
+
+ reg_info = 0
+ value = 0
+ try:
+ reg_info = pcilib.get_register_info(str(name), str(bank))
+ value = pcilib.read_register(str(name), str(bank))
+ except Exception as e:
+ return str(e)
+ return render_template('register_info.html',
+ register=reg_info,
+ value=value)
+
+@app.route("/registers_list")
+def get_registers_list():
+ reg_list = 0
+ try:
+ reg_list = pcilib.get_registers_list()
+ except Exception as e:
+ return str(e)
+
+ return render_template('registers_list.html',
+ registers=reg_list,
+ )
+
+@app.route("/property_info")
+def get_property_list():
+ branch = request.args.get('branch')
+ if not branch is None:
+ branch = str(branch)
+
+ prop_info = 0
+ try:
+ prop_info = pcilib.get_property_list(branch)
+ except Exception as e:
+ return str(e)
+
+ value = -1
+ if (len(prop_info) == 1) and not ('childs' in (prop_info[0])['flags']):
+ try:
+ branch = (prop_info[0])['path']
+ value = pcilib.get_property(branch)
+ except Exception as e:
+ return str(e)
+
+ return render_template('property_info.html',
+ value = value,
+ branch = branch,
+ properties = prop_info,
+ json = json
+ )
+
+@app.route("/")
+def greet():
+ return render_template('base.html',
+ device = device,
+ model = model)
+
+@app.route('/<path:path>')
+def send_file(path):
+ return send_from_directory('static', path)
+
+if __name__ == "__main__":
+ #parce command line options
+ parser = OptionParser()
+ parser.add_option("-p", "--port", action="store",
+ type="int", dest="port", default=5000,
+ help="Set server port (5000)")
+ parser.add_option("-d", "--device", action="store",
+ type="string", dest="device", default=str('/dev/fpga0'),
+ help="FPGA device (/dev/fpga0)")
+ parser.add_option("-m", "--model", action="store",
+ type="string", dest="model", default=None,
+ help="Memory model (autodetected)")
+ opts = parser.parse_args()[0]
+
+ HOST_NAME = '0.0.0.0'
+ PORT_NUMBER = opts.port
+
+ device = opts.device
+ model = opts.model
+
+ pcilib = pcipywrap.Pcipywrap(device, model)
+ pcipywrap.__redirect_logs_to_exeption()
+ app.run(host = HOST_NAME, port = PORT_NUMBER)