#include <stdio.h>
//#include "platform.h"
#include "xil_printf.h"
#include "xv_tpg.h"
#include "xvtc.h"

int main()
{
    //init_platform();

    int Status;
    XV_tpg tpg_inst; // Instance of the TPG core
    XVtc	VtcInst; // Instance of the VTC core

    print("--- hdmi-out-test ---\n\r");

    //--( TPG Initialization
    print("TPG Initialization\n\r");
    Status = XV_tpg_Initialize(&tpg_inst, XPAR_XV_TPG_0_DEVICE_ID);
    if(Status!= XST_SUCCESS)
    {
    	xil_printf("TPG configuration failed\r\n");
        return(XST_FAILURE);
    }

    // Set Resolution to 1280x720
    XV_tpg_Set_height(&tpg_inst, 720);
    XV_tpg_Set_width(&tpg_inst, 1280);

    // Set Color Space to RGB
    XV_tpg_Set_colorFormat(&tpg_inst, 0x0);

    //Set pattern to color bar
    XV_tpg_Set_bckgndId(&tpg_inst, XTPG_BKGND_COLOR_BARS);

    //Start the TPG
    XV_tpg_EnableAutoRestart(&tpg_inst);
    XV_tpg_Start(&tpg_inst);
    xil_printf("TPG started!\r\n");
    //--)

    //--( VTC Initialization
    print("VTC Initialization\n\r");
    XVtc_Config *Config;
	XVtc_Timing ti;
	XVtc_Signal si;
	XVtc_HoriOffsets ho;
	XVtc_Polarity po;

	//Initialize the VTC driver so that it's ready to use look up
	//configuration in the config table, then initialize it.
	Config = XVtc_LookupConfig(XPAR_VTC_0_DEVICE_ID);
	if (NULL == Config) {
		return (XST_FAILURE);
	}

	//Initialize the VTC core
	Status = XVtc_CfgInitialize(&VtcInst, Config, Config->BaseAddress);
	if (Status != (XST_SUCCESS)) {
		return (XST_FAILURE);
	}

	//Perform a self-test
	Status = XVtc_SelfTest(&VtcInst);
	if (Status != (XST_SUCCESS)) {
		return (XST_FAILURE);
	}

	//Set our configuration as 1280x720
	XVtc_ConvVideoMode2Timing(&VtcInst, XVTC_VMODE_720P, &ti);
	XVtc_ConvTiming2Signal(&VtcInst, &ti, &si, &ho, &po);
	XVtc_SetGenerator(&VtcInst, &si);

	//Enable the vtc
	XVtc_Enable(&VtcInst);
	xil_printf("VTC enabled!\r\n");
	//--)


    while(1){
    }

    cleanup_platform();
    return 0;
}
