Пример #1
0
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;
}
Пример #3
0
//---------------------------------------------------------------------------
//
// 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;
}
Пример #5
0
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;
}