54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
from flask import Flask, render_template, request
|
|
from flask_sock import Sock
|
|
import numpy as np
|
|
import numpy.typing as npt
|
|
import json
|
|
|
|
app = Flask(__name__)
|
|
sock = Sock(app)
|
|
|
|
|
|
data: npt.NDArray[np.complex128] = np.array([], dtype=complex)
|
|
|
|
|
|
@app.route("/preprocessed")
|
|
def preprocessed():
|
|
return render_template("preprocessed.html")
|
|
|
|
|
|
subscribers = {}
|
|
|
|
|
|
@sock.route("/data")
|
|
def get_data(sock):
|
|
while True:
|
|
msg = sock.receive()
|
|
subscribers[sock] = list(map(int, msg.split()))
|
|
|
|
|
|
def add_data(new_data):
|
|
global data
|
|
if data.size == 0:
|
|
data = np.expand_dims(new_data, axis=0)
|
|
else:
|
|
data = np.concat([data, np.expand_dims(new_data, axis=0)], axis=0)
|
|
|
|
# Only keep latest 100 entries
|
|
if data.shape[0] > 100:
|
|
data = data[-100:]
|
|
to_remove = []
|
|
for subscriber in subscribers:
|
|
try:
|
|
subcarrier, rx, tx = subscribers[subscriber]
|
|
subscriber.send(new_data.real[subcarrier, rx, tx])
|
|
except Exception as e:
|
|
to_remove.append(subscriber)
|
|
print(e)
|
|
|
|
for subscriber in to_remove:
|
|
del subscribers[subscriber]
|
|
|
|
|
|
def start():
|
|
app.run(debug=True, use_reloader=False)
|