#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xuartlite.h"
#include "xparameters.h"

XUartLite_Config *uart_config;
XUartLite uart;

void uart_init(){

	uart_config = XUartLite_LookupConfig(XPAR_AXI_UARTLITE_0_DEVICE_ID);
	int status = XUartLite_CfgInitialize(&uart, uart_config, uart_config->RegBaseAddr);
	if(status == XST_SUCCESS)
		xil_printf("UART INIT SUCCESSFUL\n");
	else
		xil_printf("UART INIT FAILED\n");

	while(XUartLite_IsSending(&uart));
	XUartLite_ResetFifos(&uart);

	status = XUartLite_SelfTest(&uart);
	if(status == XST_SUCCESS)
		xil_printf("UART SELF TEST SUCCESSFUL\n");
	else
		xil_printf("UART SELF TEST  FAILED\n");

	while(XUartLite_IsSending(&uart));
	XUartLite_ResetFifos(&uart);

}

int main()
{
	int count = 0;
	u8 dataRcvd[11];
	uart_init();

	while(count != 11){
	count = count + XUartLite_Recv(&uart, &dataRcvd[count], 11);
	}

	xil_printf("Reception Complete\n");

	while(XUartLite_IsSending(&uart));
	XUartLite_ResetFifos(&uart);

	for(count = 0; count < 11 ; count++){
	xil_printf("%0c", dataRcvd[count]);
	}

    return 0;
}