tEplKernel EplCfmuAddInstance(tEplCfmCbEventCnProgress pfnCbEventCnProgress_p, tEplCfmCbEventCnResult pfnCbEventCnResult_p) { tEplKernel Ret = kEplSuccessful; unsigned int uiSubindex; tEplVarParam VarParam; EPL_MEMSET(&EplCfmuInstance_g, 0, sizeof(EplCfmuInstance_g)); EplCfmuInstance_g.m_pfnCbEventCnProgress = pfnCbEventCnProgress_p; EplCfmuInstance_g.m_pfnCbEventCnResult = pfnCbEventCnResult_p; // link domain with 4 zero-bytes to object 0x1F22 CFM_ConciseDcfList_ADOM VarParam.m_pData = &EplCfmuInstance_g.m_le_dwDomainSizeNull; VarParam.m_Size = sizeof (EplCfmuInstance_g.m_le_dwDomainSizeNull); VarParam.m_uiIndex = 0x1F22; for (uiSubindex = 1; uiSubindex <= EPL_NMT_MAX_NODE_ID; uiSubindex++) { VarParam.m_uiSubindex = uiSubindex; VarParam.m_ValidFlag = kVarValidAll; Ret = EplObdDefineVar(&VarParam); if ((Ret != kEplSuccessful) && (Ret != kEplObdIndexNotExist) && (Ret != kEplObdSubindexNotExist)) { goto Exit; } } Ret = kEplSuccessful; Exit: return Ret; }
static tEplKernel EplErrorHandlerkLinkErrorCounter( tEplErrorHandlerkErrorCounter* pErrorCounter_p, unsigned int uiIndex_p) { tEplKernel Ret = kEplSuccessful; tEplVarParam VarParam; VarParam.m_pData = &pErrorCounter_p->m_dwCumulativeCnt; VarParam.m_Size = sizeof(DWORD); VarParam.m_uiIndex = uiIndex_p; VarParam.m_uiSubindex = 0x01; VarParam.m_ValidFlag = kVarValidAll; Ret = EplObdDefineVar(&VarParam); if (Ret != kEplSuccessful) { goto Exit; } VarParam.m_pData = &pErrorCounter_p->m_dwThresholdCnt; VarParam.m_Size = sizeof(DWORD); VarParam.m_uiIndex = uiIndex_p; VarParam.m_uiSubindex = 0x02; VarParam.m_ValidFlag = kVarValidAll; Ret = EplObdDefineVar(&VarParam); if (Ret != kEplSuccessful) { goto Exit; } VarParam.m_pData = &pErrorCounter_p->m_dwThreshold; VarParam.m_Size = sizeof(DWORD); VarParam.m_uiIndex = uiIndex_p; VarParam.m_uiSubindex = 0x03; VarParam.m_ValidFlag = kVarValidAll; Ret = EplObdDefineVar(&VarParam); if (Ret != kEplSuccessful) { goto Exit; } Exit: return Ret; }
//--------------------------------------------------------------------------- // // Function: EplObduCalDefineVar() // // Description: Function encapsulate access of function EplObdDefineVar // // Parameters: pEplVarParam_p = varentry // // Return: tEplKernel = errorcode // // State: // //--------------------------------------------------------------------------- tEplKernel EplObduCalDefineVar(tEplVarParam *pVarParam_p) { tEplKernel Ret; #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0) Ret = EplObdDefineVar(pVarParam_p); #else Ret = kEplSuccessful; #endif return Ret; }
static tEplKernel EplErrorHandlerkLinkArray( DWORD* pdwValue_p, unsigned int uiValueCount_p, unsigned int uiIndex_p) { tEplKernel Ret = kEplSuccessful; tEplVarParam VarParam; tEplObdSize EntrySize; BYTE bIndexEntries; EntrySize = (tEplObdSize) sizeof(bIndexEntries); Ret = EplObdReadEntry ( uiIndex_p, 0x00, (void GENERIC*) &bIndexEntries, &EntrySize ); if ((Ret != kEplSuccessful) || (bIndexEntries == 0x00)) { // Object doesn't exist or invalid entry number Ret = kEplObdIndexNotExist; goto Exit; } if (bIndexEntries < uiValueCount_p) { uiValueCount_p = bIndexEntries; } VarParam.m_Size = sizeof(DWORD); VarParam.m_uiIndex = uiIndex_p; VarParam.m_ValidFlag = kVarValidAll; for (VarParam.m_uiSubindex = 0x01; VarParam.m_uiSubindex <= uiValueCount_p; VarParam.m_uiSubindex++) { VarParam.m_pData = pdwValue_p; Ret = EplObdDefineVar(&VarParam); if (Ret != kEplSuccessful) { goto Exit; } pdwValue_p++; } Exit: return Ret; }
tEplKernel EplCfmuDelInstance(void) { tEplKernel Ret = kEplSuccessful; unsigned int uiNodeId; tEplVarParam VarParam; BYTE* pbBuffer; tEplCfmuNodeInfo* pNodeInfo; // free domain for object 0x1F22 CFM_ConciseDcfList_ADOM VarParam.m_pData = NULL; VarParam.m_Size = 0; VarParam.m_uiIndex = 0x1F22; for (uiNodeId = 1; uiNodeId <= EPL_NMT_MAX_NODE_ID; uiNodeId++) { pNodeInfo = EPL_CFMU_GET_NODEINFO(uiNodeId); if (pNodeInfo != NULL) { if (pNodeInfo->m_SdoComConHdl != ~0) { Ret = EplSdoComSdoAbort(pNodeInfo->m_SdoComConHdl, EPL_SDOAC_DATA_NOT_TRANSF_DUE_DEVICE_STATE); } pbBuffer = pNodeInfo->m_pbObdBufferConciseDcf; if (pbBuffer != NULL) { VarParam.m_uiSubindex = uiNodeId; VarParam.m_ValidFlag = kVarValidAll; Ret = EplObdDefineVar(&VarParam); // ignore return code, because buffer has to be freed anyway EPL_FREE(pbBuffer); pNodeInfo->m_pbObdBufferConciseDcf = NULL; } EPL_FREE(pNodeInfo); EPL_CFMU_GET_NODEINFO(uiNodeId) = NULL; } } Ret = kEplSuccessful; //Exit: return Ret; }