#!/usr/bin/python

# Banco di test CM-Panel POE
# https://www.acmesystems.it/banco_cmpanel-poe

import RPi.GPIO as GPIO
import serial
import time
import sys

Failed=False

print("Test RS422")
print("SW1 ON - OFF - OFF - OFF");

data_to_send = bytearray(b'HelloWorld')

serRS422 = serial.Serial('/dev/ttyAMA0', 115200,timeout=0.1)  
serRS422.flushOutput()
serRS422.flushInput()

serUSB = serial.Serial('/dev/ttyUSB0', 115200,timeout=0.1)  
serUSB.flushOutput()
serUSB.flushInput()

# Test from RS422 to ttyUSB0

serRS422.write(data_to_send)
serRS422.flush()  

received_data = serUSB.read(len(data_to_send))

if len(received_data)<len(data_to_send):
	print("Errore RS422->ttyUSB0: trasmessi %d byte ricevuti %d byte" % (len(data_to_send),len(received_data)))
	Failed=True

if received_data!=data_to_send:
	print("Errore RS422->ttyUSB0: caratteri ricevuti diversi da quelli trasmessi")
	Failed=True

# Test from ttyUSB0 to RS422

serUSB.write(data_to_send)
serUSB.flush()  

received_data = serRS422.read(len(data_to_send))

if len(received_data)<len(data_to_send):
	print("Errore ttyUSB0->RS422: trasmessi %d byte ricevuti %d byte" % (len(data_to_send),len(received_data)))
	Failed=True

if received_data!=data_to_send:
	print("Errore ttyUSB0->RS422: caratteri ricevuti diversi da quelli trasmessi")
	Failed=True

serRS422.close()
serUSB.close()
    
if Failed==False:
	print("Test SUCCESS")
	sys.exit(0)    
else:
	print("Test FAILED")    
	sys.exit(1)
