/*-----------------------------------------------------------------------------*/
/* PRF_fn_vInitProfileModule*/
/* Must be called once at the beginning of the program*/
/*-----------------------------------------------------------------------------*/
void PRF_fn_vInitProfileModule ()
{
    unsigned long i;
	short sTimerHandle;
 
	/* create the timer that will be used to compute time*/
	sTimerHandle = TMR_fn_wCreateTimer(C_wTimerFrequencyHigh);
 
	if (Erm_M_uwCheckError(Tmr,C_ucErmDefaultChannel))
	{
		Erm_M_ClearLastError(C_ucErmDefaultChannel);
		assert(0);
	}
 
	/* get the CPU frequency*/
	TMR_fn_wGetTimerFrequency(sTimerHandle,&ulTimerFrequency);
	ulTimerFrequency /= 1000000;
 
	/* no more need of the timer*/
	TMR_fn_wDestroyTimer(sTimerHandle);
 
	/* get the screen frequency*/
/*
	ulMonitorFrequency = TMR_fn_ulMonitorFrequency();
	ulMonitorFrequency /= 100;
*/
    ulMonitorFrequency = 60;
 
	/* print result*/
	printf ("monitor frequency : %i Hz, CPU frequency : %i Mhz\n",ulMonitorFrequency,ulTimerFrequency);
	/* clear all arrays*/
    for (i = 0 ; i < PRF_C_lMaxNbFunction ; i ++)
	{
        PRF_g_a_stFunctionInformation[i].szFunctionName      = 0;
		PRF_g_a_stFunctionInformation[i].ulHistorySize		 = 0;
		PRF_g_a_stFunctionInformation[i].ulUserDataSize		 = 0;
		PRF_g_a_stFunctionInformation[i].p_stFrameHistory    = NULL;
		PRF_g_a_stFunctionInformation[i].p_stUserDataSummary = NULL;
	}
 
    for (i = 0 ; i < PRF_C_lMaxNbVariable ; i ++)
	{
        PRF_g_a_stVariableInformation[i].szVariableName		 = 0;
		PRF_g_a_stVariableInformation[i].ulHistorySize		 = 0;
		PRF_g_a_stVariableInformation[i].ulUserDataSize		 = 0;
		PRF_g_a_stVariableInformation[i].p_stFrameHistory    = NULL;
		PRF_g_a_stVariableInformation[i].p_stUserDataSummary = NULL;
	}
 
    for (i = 0 ; i < PRF_C_lMaxNbVariable ; i ++)
        PRF_g_a_stVariableInformation[i].szVariableName = 0;
 
	memset (a_lIndependantVariable		, 0 , sizeof(long) * PRF_C_lMaxNbIndependantVariable);
	memset (a_szIndependantVariableName , 0 , sizeof(char*) * PRF_C_lMaxNbIndependantVariable);
 
	memset (a_fFloatIndependantVariable      , 0 , sizeof(float) * PRF_C_lMaxNbFloatIndependantVariable);
	memset (a_szFloatIndependantVariableName , 0 , sizeof(char*) * PRF_C_lMaxNbFloatIndependantVariable);
 
	PRF_g_bModuleInitialized = TRUE;
}

void PRF_fn_vUpdateMonitorFrequency( unsigned long _ulFrequency )
{
    ulMonitorFrequency = _ulFrequency;
    PRF_fn_vSetIndependantVariable( PRF_C_ulIdpMonitorFrequency, _ulFrequency );
}
