#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 count = 100000000*5;

    init_platform();
    tmr_init();

    XTmrCtr_Stop(&tmr, 0);
    XTmrCtr_SetResetValue(&tmr, 0, count);

    XTmrCtr_Reset(&tmr, 0);

    u32 option = XTmrCtr_GetOptions(&tmr, 0);

    /////////////////NON AUTO RELOAD MODE
    XTmrCtr_SetOptions(&tmr, 0, option | XTC_DOWN_COUNT_OPTION );

    while(1){
    	XTmrCtr_Start(&tmr, 0);
    	while(!XTmrCtr_IsExpired(&tmr, 0));
        XTmrCtr_Stop(&tmr, 0);
        xil_printf("Delay of 5 Sec achieved\n");
        XTmrCtr_Reset(&tmr,0);

    }




  ////////AUTO RELOAD MODE
    /*
    XTmrCtr_SetOptions(&tmr, 0, option | XTC_DOWN_COUNT_OPTION | XTC_AUTO_RELOAD_OPTION);

    while(1){
    XTmrCtr_Start(&tmr, 0);
    while(!XTmrCtr_IsExpired(&tmr, 0));
    XTmrCtr_Stop(&tmr, 0);
    xil_printf("Delay of 5 Sec achieved\n");
    }
*/



    cleanup_platform();
    return 0;
}