//--------------------------------------------------------------------------- // // Function: EplObduCalWriteEntryFromLe() // // Description: Function encapsulate access of function EplObdWriteEntryFromLe // // Parameters: uiIndex_p = Index of the OD entry // uiSubIndex_p = Subindex of the OD Entry // pSrcData_p = Pointer to the data to write // Size_p = Size of the data in Byte // // Return: tEplKernel = Errorcode // // // State: // //--------------------------------------------------------------------------- tEplKernel EplObduCalWriteEntryFromLe(unsigned int uiIndex_p, unsigned int uiSubIndex_p, void *pSrcData_p, tEplObdSize Size_p) { tEplKernel Ret; #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0) Ret = EplObdWriteEntryFromLe(uiIndex_p, uiSubIndex_p, pSrcData_p, Size_p); #else Ret = kEplSuccessful; #endif return Ret; }
static tEplKernel EplObdCdcProcess(tEplObdCdcInfo* pCdcInfo_p) { tEplKernel Ret = kEplSuccessful; DWORD dwEntriesRemaining; unsigned int uiObjectIndex; unsigned int uiObjectSubIndex; size_t iCurDataSize; Ret = EplObdCdcLoadNextBuffer(pCdcInfo_p, sizeof (DWORD)); if (Ret != kEplSuccessful) { goto Exit; } dwEntriesRemaining = AmiGetDwordFromLe(pCdcInfo_p->m_pbCurBuffer); if (dwEntriesRemaining == 0) { Ret = EplEventuPostError(kEplEventSourceObdu, kEplObdNoConfigData, 0, NULL); goto Exit; } for ( ; dwEntriesRemaining != 0; dwEntriesRemaining--) { Ret = EplObdCdcLoadNextBuffer(pCdcInfo_p, EPL_CDC_OFFSET_DATA); if (Ret != kEplSuccessful) { goto Exit; } uiObjectIndex = AmiGetWordFromLe(&pCdcInfo_p->m_pbCurBuffer[EPL_CDC_OFFSET_INDEX]); uiObjectSubIndex = AmiGetByteFromLe(&pCdcInfo_p->m_pbCurBuffer[EPL_CDC_OFFSET_SUBINDEX]); iCurDataSize = (size_t) AmiGetDwordFromLe(&pCdcInfo_p->m_pbCurBuffer[EPL_CDC_OFFSET_SIZE]); EPL_DBGLVL_OBD_TRACE("%s: Reading object 0x%04X/%u with size %u from CDC\n", __func__, uiObjectIndex, uiObjectSubIndex, iCurDataSize); Ret = EplObdCdcLoadNextBuffer(pCdcInfo_p, iCurDataSize); if (Ret != kEplSuccessful) { EPL_DBGLVL_OBD_TRACE("%s: Reading the corresponding data from CDC failed with 0x%02X\n", __func__, Ret); goto Exit; } Ret = EplObdWriteEntryFromLe(uiObjectIndex, uiObjectSubIndex, pCdcInfo_p->m_pbCurBuffer, (tEplObdSize) iCurDataSize); if (Ret != kEplSuccessful) { tEplEventObdError ObdError; ObdError.m_uiIndex = uiObjectIndex; ObdError.m_uiSubIndex = uiObjectSubIndex; EPL_DBGLVL_OBD_TRACE("%s: Writing object 0x%04X/%u to local OBD failed with 0x%02X\n", __func__, uiObjectIndex, uiObjectSubIndex, Ret); Ret = EplEventuPostError(kEplEventSourceObdu, Ret, sizeof (ObdError), &ObdError); if (Ret != kEplSuccessful) { goto Exit; } } } Exit: return Ret; }