#!/usr/bin/python

import serial
import string
import time
import io
import bluetooth
import subprocess as sp
import os
import signal


#optional lines. Check if Bluetooth is paired or not
hcitool_con = sp.getoutput("hcitool con")
print(hcitool_con)

#Configure serial data stream to Bluetooth
subpro = sp.Popen('sudo rfcomm watch hci0', stdout=sp.PIPE, shell=True, preexec_fn=os.setsid) 
#os.killpg(os.getpgid(pro.pid), signal.SIGTERM)

output = " "
conn_status = False

#Open GNSS serial port
ser_uart = serial.Serial('/dev/ttyS0', 115200, 8, 'N')


while True:

    if conn_status == False:
        
        try:
            #Open Bluetooth serial port
            ser_rf = serial.Serial('/dev/rfcomm0')

            ser_rf.isOpen()
            print('Connected')
            time.sleep(2)
            output = " "
            conn_status = True
        except:
            print('Not connected')
            ser_uart.flushInput()
        
            time.sleep(2)
            conn_status = False

    
    if conn_status == True:
        print("----")
        
        
        #while (output != "") & (conn_status == True):
        while (conn_status == True):
            
            try:

                #Read GNSS serial port and forward it to Bluetooth serial port

                output = ser_uart.readline()
                ser_rf.write(output)
                #ser_uart.close()
                #print(output)
            
                #time.sleep(2)
                #ser_uart.flushInput()
            except:
                ser_rf.close()
                print("ex")
                conn_status = False
            #output = " "
