reman3/Rayman_X/cpa/tempgrp/Ctl/Src/Others/CTL_Pub.cpp

191 lines
5.6 KiB
C++

// Global public functions
//
// YB
//////////////////////////////
#include "StdAfx.h"
#include "Others\CTL_Pub.hpp"
//External Modules
#include "CTL_ErO.hpp"
//End of External Modules
long CTL_g_lCurrentId = 10000;
CString CTL_g_csVersion;
CTL_td_p_fn_bControlCanBeDisplayed CTL_g_p_fnDefaultCallBack_ControlCanBeDisplayed = NULL;
CTL_td_p_fn_vCallBackWhenDataHasChanged CTL_g_p_fnDefaultCallBack_DataHasChanged = NULL;
CTL_td_p_fn_vStaticHasBeenClicked CTL_g_p_fnDefaultCallBack_StaticHasBeenClicked = NULL;
CTL_tdp_fn_vGetColor CTL_g_p_fnDefaultCallBack_GetColor = NULL;
#ifndef CTL_WITH_NO_TUT
//For TUT Module
extern CString CTL_g_csCurrentTAG;
extern CString CTL_g_csCurrentSecondaryInfo;
#endif //CTL_WITH_NO_TUT
//******************************************************************************
void CTL_fn_vSetDefaultCallBackFunctionWhenControlMustBeDisplayed(CTL_td_p_fn_bControlCanBeDisplayed _p_fnCallBack)
{
CTL_g_p_fnDefaultCallBack_ControlCanBeDisplayed = _p_fnCallBack;
}
//******************************************************************************
void CTL_fn_vSetDefaultCallBackFunctionWhenDataHasChanged(CTL_td_p_fn_vCallBackWhenDataHasChanged _p_fnCallBack)
{
CTL_g_p_fnDefaultCallBack_DataHasChanged = _p_fnCallBack;
}
//******************************************************************************
void CTL_fn_vSetDefaultCallBackFunctionWhenStaticIsClicked(CTL_td_p_fn_vStaticHasBeenClicked _p_fnDefaultCallBack_StaticHasBeenClicked)
{
CTL_g_p_fnDefaultCallBack_StaticHasBeenClicked = _p_fnDefaultCallBack_StaticHasBeenClicked;
}
//******************************************************************************
void CTL_fn_vSetDefaultCallBackFunctionToGetStaticColor(CTL_tdp_fn_vGetColor _p_fnDefaultCallBack_StaticColor)
{
CTL_g_p_fnDefaultCallBack_GetColor = _p_fnDefaultCallBack_StaticColor;
}
//******************************************************************************
CString CTL_fn_csGetVersion()
{
return CTL_g_csVersion;
}
//******************************************************************************
void CTL_fn_vSetModuleInfo(CString _csTAG,
CString _csSecondaryInfo)
{
#ifndef CTL_WITH_NO_TUT
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Setting Module info for controls registration (TUT)",
"CTL_fn_csSetModuleInfo(...)",
E_ERROR_GRAVITY_INSTABLE,
"You are going to overwrite the actual Module name ! Please call 'CTL_fn_vResetModuleInfo()'");
ERROR_ASSERT( CTL_g_csCurrentTAG.IsEmpty() );
CTL_g_csCurrentTAG = _csTAG;
CTL_g_csCurrentSecondaryInfo = _csSecondaryInfo;
#endif //CTL_WITH_NO_TUT
}
//******************************************************************************
void CTL_fn_vResetModuleInfo()
{
#ifndef CTL_WITH_NO_TUT
CTL_g_csCurrentTAG = "";
CTL_g_csCurrentSecondaryInfo = "";
#endif //CTL_WITH_NO_TUT
}
//******************************************************************************
CString CTL_fn_csGetCurrentTAG()
{
#ifndef CTL_WITH_NO_TUT
return CTL_g_csCurrentTAG;
#endif //CTL_WITH_NO_TUT
return "<< CTL is not using TUT ! >>";
}
//******************************************************************************
CString CTL_fn_csGetCurrentSecondaryInfo()
{
#ifndef CTL_WITH_NO_TUT
return CTL_g_csCurrentSecondaryInfo;
#endif //CTL_WITH_NO_TUT
return "<< CTL is not using TUT ! >>";
}
//**************************************************************************
void CTL_fn_vSetMemory(void *pvDest,
void *pvSource,
char cDataLength)
{
//ANNECY CB
#if 0
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Seting memory to update a motor data",
"CTL_fn_vSetMemory(...)",
E_ERROR_GRAVITY_INSTABLE,
"The source is not a valid pointer : memory has not been updated");
ERROR_ASSERT( pvSource != NULL );
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Seting memory to update a motor data",
"CTL_fn_vSetMemory(...)",
E_ERROR_GRAVITY_INSTABLE,
"The destination is not a valid pointer : memory has not been updated");
ERROR_ASSERT( pvDest != NULL );
#endif
//END
if ( (pvSource != NULL) && (pvDest != NULL) )
{
if (cDataLength == 0)
{
*((char *)pvDest) &=0xf0;
*((char *)pvDest) |= *((char *)pvSource);
}
else
memcpy(pvDest, pvSource, cDataLength);
}
}
//**************************************************************************
void CTL_fn_vGetMemory(void *pvSource,
void *pvDest,
char cDataLength)
{
//ANNECY CB
#if 0
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Geting memory to update a motor data",
"CTL_fn_vGetMemory(...)",
E_ERROR_GRAVITY_INSTABLE,
"The source is not a valid pointer : memory has not been updated");
ERROR_ASSERT( pvSource != NULL );
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Geting memory to update a motor data",
"CTL_fn_vGetMemory(...)",
E_ERROR_GRAVITY_INSTABLE,
"The destination is not a valid pointer : memory has not been updated");
ERROR_ASSERT( pvDest != NULL );
#endif
//END
if ( (pvSource != NULL) && (pvDest != NULL) )
{
if (cDataLength == 0)
{
memcpy(pvDest, pvSource, 1);
*((char *)pvDest) &= 0x0f;
}
else
memcpy(pvDest, pvSource, cDataLength);
}
}
//****************************************************************************
//Returns 'CTL_g_lCurrentId', and adds one to it
//.... Will be improved in future versions ....
long CTL_fn_lGetNextAvailableIDForControl()
{
CTL_g_lCurrentId ++;
return (CTL_g_lCurrentId - 1);
}
//****************************************************************************
//Returns the last returned ID
long CPA_EXPORT CTL_fn_lGetCurrentIDForControl()
{
return (CTL_g_lCurrentId - 1);
}