import sys
import time
import serial
import numpy as np
from numpy import convolve

# NASTAVITVE
izkoristek_merjene_antene = 1


print("\nMeritev izkoristka antene v1.0\nCH1: referencna antena\nCH2: merjena antena\n\n")
print("Pocakaj, inicializiram ...\n")
rx=serial.Serial("COM5",115200,timeout=3.0)
rx.setRTS(False)	#release /BOOTLOADER
rx.setDTR(False)	#release /RESET
# wait for devices to boot
time.sleep(5)
rx.flushInput()

ch_a = []
ch_b = []

def movingaverage (values, window):
    weights = np.repeat(1.0, window)/window
    sma = np.convolve(values, weights, 'valid')
    return sma[0]

rx.readline()
new_data = rx.readline()
new_data = new_data.decode("utf-8") 
ch_a.append(float(new_data.split(" ")[0]))
ch_b.append(float(new_data.split(" ")[1]))

print("(Ctrl + C - izhod)\n")
try:
    i = 1
    while(True):
        rx.readline()
        new_data = rx.readline()
        rx.flushInput()
        new_data = new_data.decode("utf-8") 
        ch_a.append(float(new_data.split(" ")[0]))
        ch_b.append(float(new_data.split(" ")[1]))
        ch_a_mean = movingaverage(ch_a,i)
        ch_b_mean = movingaverage(ch_b,i)
        ch_b_a_mean = movingaverage(ch_b,i) - movingaverage(ch_a,i)
        sys.stdout.write('\rA: %.3fdB  B: %.3fdB  B/A: %.3fdB   N:%i'%(ch_a_mean,ch_b_mean,ch_b_a_mean,i,))
        sys.stdout.flush()
        i = i + 1
except KeyboardInterrupt:
    pass

izkoristek = (10**(ch_b_a_mean/10)*100)
print("\n\nIzkoristek normiran na referencno anteno: %.2f%%\n"%(izkoristek,))

rx.close()
print("\n (Press any key to exit ...)")
input()
