"""main.py: launches the Flask server and starts the response and."""
#from flask import Flask
#from flask_socketio import SocketIO
from queue import Queue

from feature_detection import FeatureDetection, Cmd, Rslt

import numpy as np

import time

import matplotlib.pyplot as plt

# flask_app = Flask(__name__)
# socketio = SocketIO(flask_app)

command_queue = Queue()
result_queue = Queue()

feature_detection_thread = FeatureDetection(command_queue, result_queue)

feature_detection_thread.start()

data = list(np.load('test/LED3.npy'))

command_queue.put([Cmd.TYPE, 'PPG'])

command_queue.put([Cmd.DATA, data])

time.sleep(1)

syst, dias, inst_HR, avg_HR = list(), list(), [list(), list()], [list(), list()]

while not result_queue.empty():
    result = result_queue.get()
    if result[0] == Rslt.DIAS:
        syst.append(result[1][0])
    elif result[0] == Rslt.SYST:
        dias.append(result[1][0])
    elif result[0] == Rslt.INST_HR:
        inst_HR[0].append(result[1][0])
        inst_HR[1].append(result[1][1])
    elif result[0] == Rslt.AVG_HR:
        avg_HR[0].append(result[1][0])
        avg_HR[1].append(result[1][1])
    result_queue.task_done()

plt.figure()
plt.plot(data[:])
plt.plot(syst, [data[x] for x in syst], 'r+')
plt.plot(dias, [data[x] for x in dias], 'g*')

plt.figure()
plt.plot(inst_HR[0], inst_HR[1])

plt.figure()
plt.plot(avg_HR[0], avg_HR[1])

plt.show()

# ble_thread = BLEThread(command_queue, result_queue)
# flask_thread = ResultThread(socketio, command_queue, result_queue)

# flask_thread.start()
# ble_thread.start()

# init_in_connections(flask_app, socketio, command_queue)

#socketio.run(flask_app)

# command_queue.put((BLECmd.QUIT,))
# result_queue.put((BLEResponse.QUIT,))
# flask_thread.join()
# ble_thread.join()
