import funciones_aux as fa

def leer(N):
	#comunicacion puerto serie con el sensor
	
	import serial
	N = int(N)
	sensor = serial.Serial('/dev/ttyACM0')
	
		
	sensor.write("\x16T\r")
	a = sensor.read(N)
	sensor.close()
	
	return a
	"""
	#Para los test
	import random
	num = random.randrange(10000000,99999999)
	return str(num)
	"""
def datos_pasillo(pasillo, alt):
	#funcion que guarda los datos del pasillo (altura)
	pasillo = str(pasillo)
	alt = str(alt)
	archivo = 'Docs/datospasillo/'+pasillo+'.txt'
	if(fa.checkfile(archivo)):
		return True
	else:
		
		nombre = 'Docs/datospasillo/'+pasillo+'.txt'
		fa.crear_fichero(nombre, 'inicio', alt)
		return False

def crear_buffer(pasillo, pos, lectura):
	#funcion que crea y actualiza el buffer segun lo que entra en posicion
	pasillo = str(pasillo)
	nombre = 'Docs/buffer/'+pasillo+'.txt'

	if (pos == 'inicio'):
		texto = pasillo+'\n'+'1\t'+'2'+'\n'+lectura
	else:
		texto = pasillo+'\n'+pos[0]+'\t'+pos[1]+'\n'+lectura
	import funciones_aux
	fa.crear_fichero(nombre, 'inicio', texto)

def avance(pasillo, lectura):
	#funcion que hace avanzar el buffer despues de la lectura
	#tenemos que meter lectura la menos como hueco vacio
	pasillo = str(pasillo)
	lectura = str(lectura)
	nombre = 'Docs/buffer/'+pasillo+'.txt'
	nombre2 = 'Docs/datospasillo/'+pasillo+'.txt'
	altura_max = fa.lectura_fichero(nombre2, 'ninguno')
	#corregimos el error de la funcion lectura_fichero()
	altura_max = altura_max[0][0]
	
	buffer_vec = fa.lectura_fichero(nombre, '\t')
	buffer_vec = buffer_vec[1]

	buffer_vec[1] = int(buffer_vec[1])
	buffer_vec[1] = str(buffer_vec[1])

	buffer_vec = fa.mov(buffer_vec, altura_max, 'avance')
	crear_buffer(pasillo, buffer_vec, lectura)
	

def retroceso(pasillo, lectura):
	pasillo = str(pasillo)
	nombre = 'Docs/buffer/'+pasillo+'.txt'
	nombre2 = 'Docs/datospasillo/'+pasillo+'.txt'
	altura_max = fa.lectura_fichero(nombre2, 'ninguno')
	#corregimos el error de la funcion lectura_fichero()
	altura_max = altura_max[0][0]
	buffer_vec = fa.lectura_fichero(nombre, '\t')
	
	buffer_vec = buffer_vec[1]

	buffer_vec[1] = int(buffer_vec[1])
	buffer_vec[1] = str(buffer_vec[1])

	

	buffer_vec = fa.mov(buffer_vec, altura_max, 'retroceso')
	crear_buffer(pasillo, buffer_vec, lectura)
	

def save_lectura(lectura, pasillo):
	pasillo =  str(pasillo)
	lectura = str(lectura)
	nombre_hojalecturas = 'Docs/inventario/'+pasillo+'.txt'
	nombre_buffer = 'Docs/buffer/'+pasillo+'.txt'
	
	buffer_vec = fa.lectura_fichero(nombre_buffer, '\t')
	buffer_vec = buffer_vec[1]

	buffer_vec[1] = int(buffer_vec[1])
	buffer_vec[1] = str(buffer_vec[1])

	

	texto = pasillo+'\t'+buffer_vec[0]+'\t'+buffer_vec[1]+'\t'+lectura+'\n'
	fa.crear_fichero(nombre_hojalecturas, 'final', texto)

def save_lectura2(lectura, pasillo):
	#para guardar las lecturas en una altura sobre la maxima
	pasillo =  str(pasillo)
	lectura = str(lectura)
	nombre_hojalecturas = 'Docs/inventario/'+pasillo+'.txt'
	nombre_buffer = 'Docs/buffer/'+pasillo+'.txt'
	
	buffer_vec = fa.lectura_fichero(nombre_buffer, '\t')
	buffer_vec = buffer_vec[1]

	buffer_vec[1] = int(buffer_vec[1])
	buffer_vec[1] = str(buffer_vec[1])

	aux = buffer_vec[1]
	aux = int(aux) + 1
	buff_aux = [str(buffer_vec[0]), str(aux)]

	texto = pasillo+'\t'+buff_aux[0]+'\t'+buff_aux[1]+'\t'+lectura+'\n'
	fa.crear_fichero(nombre_hojalecturas, 'final', texto)

def ultima(lectura,pasillo):
	#esta funcion guarda la ultima lectura para comparar luego si esta repetida
	pasillo = str(pasillo)
	lectura = str(lectura)
	nombre = 'Docs/repetidas/'+pasillo+'.txt'
	texto = lectura+'\n'
	fa.crear_fichero(nombre, 'final', texto)
	"""AHORA TENGO QUE CREAR UNA FUNCION QUE HAGA:
	1. SI ESTA EN LA PRIMERA POSICION NO HAGA NADA (ESTA DEBE ESTAR INCLUIDE EN SAVE_LECTURA)
	2. SI NO ESTA EN LA PRIMERA POSICION LO COMPARE CON LA LECTURA ANTERIOR Y ESTA NO SEA REPETIDA
	3. SI ESTA REPETIDA SACAR UN AVISO.
	"""


def lectura_normal(N, pasillo):
	lectura  = leer(N)
	save_lectura(lectura, pasillo)
	avance(pasillo, lectura)


"""
VOY A QUITAR EL HUECO PARA QUE SE HAGA AUTOMATICO CON EL BOTON DE PASO
LUEGO OTRA FUNCION IRA RECORRIENDO Y EN LAS POSICIONES CONSECUTIVAS VACIAS PONDRA HUECO
"""
def lectura_hueco(N, pasillo):
	save_lectura('hueco vacio', pasillo)
	avance(pasillo, 'hueco')

def lectura_multiple(N, pasillo):
	lectura = leer(N)
	save_lectura(lectura, pasillo)

def lectura_sobrealtura(N, pasillo, alt_max):
	pasillo = str(pasillo)
	nombre_buffer = 'Docs/buffer/'+pasillo+'.txt'
	
	buffer_vec = fa.lectura_fichero(nombre_buffer, '\t')
	buffer_vec = buffer_vec[1]

	if(buffer_vec[1] == str(alt_max)):
		lectura = leer(N)
		
		save_lectura2(lectura, pasillo)
		return True
	else:
		return False
"""TENGO QUE HACER OTRA FUNCION QUE RECORRA TODO EL INVENTARIO Y PONGA HUECO
A LAS POSICIONES CONSECUTIVAS QUE NO SE HAN RELLENADO"""


	




