mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
Add endpoints GET /devices/audio and GET /devices/serial
This commit is contained in:
parent
3b5131d63e
commit
760585f9a6
2 changed files with 32 additions and 1 deletions
19
modem/serial_ports.py
Normal file
19
modem/serial_ports.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import serial.tools.list_ports
|
||||||
|
import crcengine
|
||||||
|
|
||||||
|
def get_ports():
|
||||||
|
crc_algorithm = crcengine.new("crc16-ccitt-false") # load crc8 library
|
||||||
|
|
||||||
|
serial_devices = []
|
||||||
|
ports = serial.tools.list_ports.comports()
|
||||||
|
print(ports)
|
||||||
|
for port, desc, hwid in ports:
|
||||||
|
# calculate hex of hwid if we have unique names
|
||||||
|
crc_hwid = crc_algorithm(bytes(hwid, encoding="utf-8"))
|
||||||
|
crc_hwid = crc_hwid.to_bytes(2, byteorder="big")
|
||||||
|
crc_hwid = crc_hwid.hex()
|
||||||
|
description = f"{desc} [{crc_hwid}]"
|
||||||
|
serial_devices.append(
|
||||||
|
{"port": str(port), "description": str(description)}
|
||||||
|
)
|
||||||
|
return serial_devices
|
|
@ -1,8 +1,9 @@
|
||||||
from flask import Flask, request, jsonify
|
from flask import Flask, request, jsonify
|
||||||
from flask_sock import Sock
|
from flask_sock import Sock
|
||||||
import os
|
import os
|
||||||
import json
|
import serial_ports
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
import audio
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
sock = Sock(app)
|
sock = Sock(app)
|
||||||
|
@ -55,6 +56,17 @@ def config():
|
||||||
elif request.method == 'GET':
|
elif request.method == 'GET':
|
||||||
return api_response(app.config_manager.read())
|
return api_response(app.config_manager.read())
|
||||||
|
|
||||||
|
@app.route('/devices/audio', methods=['GET'])
|
||||||
|
def get_audio_devices():
|
||||||
|
dev_in, dev_out = audio.get_audio_devices()
|
||||||
|
devices = { 'in': dev_in, 'out': dev_out }
|
||||||
|
return api_response(devices)
|
||||||
|
|
||||||
|
@app.route('/devices/serial', methods=['GET'])
|
||||||
|
def get_serial_devices():
|
||||||
|
devices = serial_ports.get_ports()
|
||||||
|
return api_response(devices)
|
||||||
|
|
||||||
# Event websocket
|
# Event websocket
|
||||||
@sock.route('/events')
|
@sock.route('/events')
|
||||||
def echo(sock):
|
def echo(sock):
|
||||||
|
|
Loading…
Reference in a new issue