diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..bcafc15 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,2 @@ +export FLASK_APP=hr50api.py +flask run --host=0.0.0.0 diff --git a/hr50api.py b/hr50api.py new file mode 100644 index 0000000..b84c2fe --- /dev/null +++ b/hr50api.py @@ -0,0 +1,109 @@ +from flask import Flask, jsonify, request +import sys +import getopt +import time +import serial + +app = Flask(__name__) + +serial_port = '/dev/ttyUSB0' +baud = 19200 + +bands = { + '6': '0', + '10': '1', + '12': '2', + '15': '3', + '17': '4', + '20': '5', + '30': '6', + '40': '7', + '60': '8', + '80': '9', + '160': '10' + } + +vlcd = { + 'STA': '-', + 'PTT': '-', + 'BND': '-', + 'VLT': '-', + 'PEP': '-', + 'AVG': '-', + 'SWR': '-', + 'TMP': '-' + } + +keying_methods = { + "off" : "0", + "ptt" : "1", + "cor" : "2", + "qrp" : "3" + } + +def get_serial(port, baud): + try: + ser = serial.Serial(port, baud, timeout=2) + return ser + except serial.serialutil.SerialException as e: + print("The following error has occured while opening the serial connecti on to {} with {} baud:".format(port, baud)) + print(e) + sys.exit(2) + +# sends a command and an optional parameter to the +# Hardrock-50 via the serial interface +def send_command(cmd, param): + ser = get_serial(serial_port, baud) + res = None + try: + command = cmd + param + ';' + ser.write(str.encode(command)) + res = ser.readline().decode("utf-8").rstrip() + except Exception as e: + print("The following error has occured while sending the command {} to t he HR50:".format(port, baud)) + print(e) + ser.close() + return res + +# Executed two commands vie the serial interface, +# parsed the result ad polulates a dict with the +# collected information +def get_info(): + ser = get_serial(serial_port, baud) + try: + ser.write(b'HRRX;') + time.sleep(0.5) + res = ser.readline().decode("utf-8").rstrip().replace(';', '').split(',') + except Exception as e: + print("The following error has occured while sending the command {} to the HR50:".format(port, baud)) + print(e) + ser.close() + return None + if res and len(res) > 3: + vlcd['STA'] = res[0] + vlcd['PTT'] = res[1] + vlcd['BND'] = res[2] + vlcd['TMP'] = res[3] + vlcd['VLT'] = res[4] + ser.write(b'HRMX;') + time.sleep(0.5) + res = ser.readline().decode("utf-8").rstrip().split() + ser.close() + vlcd['PEP'] = res[1][1:] + vlcd['AVG'] = res[2][1:] + if res[3][1:] != "0": + vlcd['SWR'] = res[3][1:2] + "." + res[3][2:3] + else: + vlcd['PTT'] = "ERR" + + +@app.route('/status') +def get_status(): + get_info() + return jsonify(vlcd) + + +@app.route('/tune', methods=['POST']) +def set_tune(): + return '', 204 +