228 lines
5.0 KiB
C
Executable File
228 lines
5.0 KiB
C
Executable File
#include "Dx.h"
|
|
#include "DxCommon.h"
|
|
#include "DxApi.h"
|
|
#include "DxStorage.h"
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#define __MODULE__ DxComm
|
|
#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
|
#include <kwrap/debug.h>
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define IS_SIGN(x) ((x&DXFLAG_SIGN_MASK)==DXFLAG_SIGN)
|
|
|
|
// Get Capability Flag
|
|
UINT32 Dx_Getcaps(DX_HANDLE DxObject, UINT32 CapID, UINT32 Param1)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
DBG_MSG("CapID %08x\r\n", CapID);
|
|
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
DBG_ERR("DX_NULL_POINTER\r\n");
|
|
return 0;
|
|
}
|
|
if (!pDX->pfGetcaps) {
|
|
DBG_ERR("DX_NOT_SUPPORT Getcaps\r\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
|
|
return pDX->pfGetcaps(CapID, Param1);
|
|
}
|
|
|
|
// Set Config Setting
|
|
UINT32 Dx_Setconfig(DX_HANDLE DxObject, UINT32 CfgID, UINT32 Param1)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
DBG_MSG("CfgID %08x\r\n", CfgID);
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (!pDX->pfSetcfgs) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
return pDX->pfSetcfgs(CfgID, Param1);
|
|
}
|
|
|
|
// Set Init Parameters
|
|
UINT32 Dx_Init(DX_HANDLE DxObject, void *pInitParam, DX_CB pfCallback, UINT32 CurrVer)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (pDX->sign & DXFLAG_OPEN) {
|
|
return DX_ALREADY_OPEN;
|
|
}
|
|
if (pDX->ver != CurrVer) {
|
|
return DX_VER_NOTMATCH;
|
|
}
|
|
if ((pDX->pfOpen == 0)
|
|
|| (pDX->pfClose == 0)) {
|
|
return DX_LACKOF_FUNC;
|
|
}
|
|
pDX->pfCallback = pfCallback;
|
|
if (!pDX->pfInit) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
//pDX->type = TYPE_NULL; //clear
|
|
//pDX->sign = 0; //clear
|
|
return pDX->pfInit(pInitParam);
|
|
}
|
|
|
|
// Common Constructor
|
|
UINT32 Dx_Open(DX_HANDLE DxObject)
|
|
{
|
|
UINT32 r;
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (pDX->sign & DXFLAG_OPEN) {
|
|
return DX_ALREADY_OPEN;
|
|
}
|
|
if (!pDX->pfOpen) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
r = pDX->pfOpen();
|
|
if (r == DX_OK) {
|
|
pDX->sign |= DXFLAG_OPEN;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
// Common Destructor
|
|
UINT32 Dx_Close(DX_HANDLE DxObject)
|
|
{
|
|
UINT32 r;
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (!(pDX->sign & DXFLAG_OPEN)) {
|
|
return DX_NOT_OPEN;
|
|
}
|
|
if (!pDX->pfClose) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
r = pDX->pfClose();
|
|
pDX->sign &= ~DXFLAG_OPEN;
|
|
return r;
|
|
}
|
|
|
|
// General Properties
|
|
UINT32 Dx_GetState(DX_HANDLE DxObject, UINT32 StateID, UINT32 *pOut)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
//if(!(pDX->sign & DXFLAG_OPEN))
|
|
// return DX_NOT_OPEN;
|
|
if (!pDX->pfState) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
*pOut = pDX->pfState(DXGET | StateID, 0);
|
|
|
|
return DX_OK;
|
|
}
|
|
|
|
// General Properties
|
|
UINT32 Dx_SetState(DX_HANDLE DxObject, UINT32 StateID, UINT32 Value)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (!(pDX->sign & DXFLAG_OPEN)) {
|
|
return DX_NOT_OPEN;
|
|
}
|
|
if (!pDX->pfState) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
return pDX->pfState(DXSET | StateID, Value);
|
|
}
|
|
|
|
// General Methods
|
|
UINT32 Dx_Control(DX_HANDLE DxObject, UINT32 CmdID, UINT32 Param1, UINT32 Param2)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
if (!(pDX->sign & DXFLAG_OPEN)) {
|
|
return DX_NOT_OPEN;
|
|
}
|
|
if (!pDX->pfControl) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
return pDX->pfControl(CmdID, Param1, Param2);
|
|
}
|
|
|
|
// General Command Console
|
|
BOOL Dx_Command(DX_HANDLE DxObject, CHAR *pcCmdStr)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
//DX_ASSERT((pDX->sign & DXFLAG_SIGN_MASK) == DXFLAG_SIGN);
|
|
//if(!(pDX->sign & DXFLAG_OPEN))
|
|
// return DX_NOT_OPEN;
|
|
if (!pDX->pfCommand) {
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
return pDX->pfCommand(pcCmdStr);
|
|
}
|
|
|
|
UINT32 Dx_GetInfo(DX_HANDLE DxObject, DX_INFO InfoID, void *pOut)
|
|
{
|
|
DX_OBJECT *pDX = (DX_OBJECT *)DxObject;
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
if (!pDX || !IS_SIGN(pDX->sign)) {
|
|
return DX_NULL_POINTER;
|
|
}
|
|
|
|
switch (InfoID) {
|
|
case DX_INFO_CLASS:
|
|
*(UINT32 *)pOut = pDX->type;
|
|
break;
|
|
case DX_INFO_NAME:
|
|
*(char **)pOut = pDX->name;
|
|
break;
|
|
default:
|
|
return DX_NOT_SUPPORT;
|
|
}
|
|
|
|
return DX_OK;
|
|
}
|
|
|
|
|