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

XTmrCtr tmr;

void tmr_init(){
	int status =  XTmrCtr_Initialize(&tmr,XPAR_AXI_TIMER_0_DEVICE_ID );

	if(status == XST_SUCCESS)
		xil_printf("TMR INIT SUCCESSUFUL\n");
	else
		xil_printf("TMR INIT FAILED\n");

	status = XTmrCtr_SelfTest(&tmr, 0);

	if(status == XST_SUCCESS)
		xil_printf("TMR SELFTEST SUCCESSUFUL\n");
	else
		xil_printf("TMR SELFTEST FAILED\n");

}


int main()
{
	u32 count1 = 100000000*5; ///timer 0 --> tmrctrno : 0
	u32 count2 = 100000000*8; /// timer 1 --> tmrctrno : 1

    init_platform();
    tmr_init();

    XTmrCtr_Stop(&tmr, 0); ///stop timer 0
    XTmrCtr_Stop(&tmr, 1); /// stop timer 1


    XTmrCtr_SetResetValue(&tmr, 0, count1);
    XTmrCtr_SetResetValue(&tmr, 1, count2);



    XTmrCtr_Reset(&tmr, 0);
    XTmrCtr_Reset(&tmr, 1);

    u32 option1 = XTmrCtr_GetOptions(&tmr, 0);
    XTmrCtr_SetOptions(&tmr, 0, option1 | XTC_DOWN_COUNT_OPTION );

    u32 option2 = XTmrCtr_GetOptions(&tmr, 1);
    XTmrCtr_SetOptions(&tmr, 1, option2 | XTC_DOWN_COUNT_OPTION );




       	XTmrCtr_Start(&tmr, 0);
       	XTmrCtr_Start(&tmr, 1);

    	while(!XTmrCtr_IsExpired(&tmr, 0));
    	xil_printf("Timer 0 Expired\n");

    	while(!XTmrCtr_IsExpired(&tmr, 1));
    	xil_printf("Timer 1 Expired\n");




    cleanup_platform();
    return 0;
}