else\r
{\r
if( sentResponseThisLoop == FALSE ) {\r
- dspPDidRef.dspPDid[i].PDidTxCounter = 0;\r
- /*AutoSar DCM 8.10.5 */\r
- DslInternal_ResponseOnOneDataByPeriodicId(dspPDidRef.dspPDid[i].PeriodicDid);\r
- sentResponseThisLoop = TRUE;\r
+ if (E_OK == DslInternal_ResponseOnOneDataByPeriodicId(dspPDidRef.dspPDid[i].PeriodicDid)){\r
+ dspPDidRef.dspPDid[i].PDidTxCounter = 0;\r
+ /*AutoSar DCM 8.10.5 */\r
+ sentResponseThisLoop = TRUE;\r
+ }\r
}\r
else {\r
/* Don't do anything - PDid will be sent next loop */\r
//lint -e{715, 838, 818} Symbol not referenced, responseCode not used, txData should be const\r
static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x04(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
+ // 1. Only consider Negative Response 0x10\r
+\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
+ Dem_DTCKindType DtcType = 0;\r
+ Dem_DTCOriginType DtcOrigin = 0;\r
+ uint32 DtcNumber = 0;\r
+ uint8 RecordNumber = 0;\r
+ uint8 SizeOfTxBuf = pduTxData->SduLength;\r
+ uint8 AvailableBufSize = 0;\r
+ uint8 RecNumOffset = 0;\r
+ uint16 index = 0;\r
+ uint16 EventIndex =0;\r
+ uint16 FFIdNumber = 0;\r
+ Dem_ReturnGetFreezeFrameDataByDTCType GetFFbyDtcReturnCode = DEM_GET_FFDATABYDTC_OK;\r
+ Dem_ReturnGetStatusOfDTCType GetStatusOfDtc = DEM_STATUS_OK;\r
+ Dem_EventStatusExtendedType DtcStatus = 0;\r
+ Dem_EventParameterType *pEventParaTemp = NULL;\r
+\r
+ // Now let's assume DTC has 3 bytes.\r
+ DtcNumber = (((uint32)pduRxData->SduDataPtr[2])<<16) +\r
+ (((uint32)pduRxData->SduDataPtr[3])<<8) +\r
+ ((uint32)pduRxData->SduDataPtr[4]);\r
+\r
+ RecordNumber = pduRxData->SduDataPtr[5];\r
+\r
+ for (EventIndex = 0; DEM_Config.ConfigSet->EventParameter[EventIndex].Arc_EOL != TRUE; EventIndex++){\r
+ // search each event linked to this DTC\r
+ if (DEM_Config.ConfigSet->EventParameter[EventIndex].DTCClassRef->DTC == DtcNumber){\r
+ pEventParaTemp = (Dem_EventParameterType *)(&DEM_Config.ConfigSet->EventParameter[EventIndex]);\r
+ }\r
+ else {\r
+ pEventParaTemp = NULL;\r
+ }\r
+\r
+ if (pEventParaTemp != NULL) {\r
+ DtcType = pEventParaTemp->DTCClassRef->DTCKind;\r
+ //DtcOrigin = pEventParaTemp->EventClass->EventDestination[?];\r
+ // now use DEM_DTC_ORIGIN_PRIMARY_MEMORY as default.\r
+ DtcOrigin = DEM_DTC_ORIGIN_PRIMARY_MEMORY;\r
+ pduTxData->SduDataPtr[6 + RecNumOffset] = RecordNumber;\r
+\r
+ // get Dids' number\r
+ for (index = 0; pEventParaTemp->FreezeFrameClassRef[index] != NULL; index++){\r
+ if (pEventParaTemp->FreezeFrameClassRef[index]->FFRecordNumber == RecordNumber) {\r
+ // Calculate the Number of Dids in FF\r
+ for (FFIdNumber = 0; pEventParaTemp->FreezeFrameClassRef[index]->FFIdClassRef[FFIdNumber]->Arc_EOL != FALSE; FFIdNumber++) {\r
+ ;\r
+ }\r
+ }\r
+ }\r
+ pduTxData->SduDataPtr[7 + RecNumOffset] = FFIdNumber;\r
\r
- // TODO: Not supported yet\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ // get FF data\r
+ AvailableBufSize = SizeOfTxBuf - 7 - RecNumOffset;\r
+ GetFFbyDtcReturnCode = Dem_GetFreezeFrameDataByDTC(DtcNumber, DtcType, DtcOrigin,\r
+ RecordNumber, &pduTxData->SduDataPtr[8 + RecNumOffset], &AvailableBufSize);\r
+ if (GetFFbyDtcReturnCode != DEM_GET_FFDATABYDTC_OK){\r
+ break;\r
+ }\r
+ RecNumOffset = RecNumOffset + AvailableBufSize;\r
+ pduTxData->SduLength = 8 + RecNumOffset;\r
+ }\r
+ }\r
+\r
+ // Negative response\r
+ switch (GetFFbyDtcReturnCode) {\r
+ case DEM_GET_FFDATABYDTC_OK:\r
+ break;\r
+ default:\r
+ responseCode = DCM_E_GENERALREJECT;\r
+ return responseCode;\r
+ }\r
\r
+ GetStatusOfDtc = Dem_GetStatusOfDTC(DtcNumber, DtcType, DtcOrigin, &DtcStatus); /** @req DEM212 */\r
+ switch (GetStatusOfDtc) {\r
+ case DEM_STATUS_OK:\r
+ break;\r
+ default:\r
+ responseCode = DCM_E_GENERALREJECT;\r
+ return responseCode;\r
+ }\r
+\r
+\r
+ // Positive response\r
+ // See ISO 14229(2006) Table 254\r
+ pduTxData->SduDataPtr[0] = 0x59; // positive response\r
+ pduTxData->SduDataPtr[1] = 0x04; // subid\r
+ pduTxData->SduDataPtr[2] = pduRxData->SduDataPtr[2]; // DTC\r
+ pduTxData->SduDataPtr[3] = pduRxData->SduDataPtr[3];\r
+ pduTxData->SduDataPtr[4] = pduRxData->SduDataPtr[4];\r
+ pduTxData->SduDataPtr[5] = (uint8)DtcStatus; //status\r
return responseCode;\r
}\r
\r
dspDid++;\r
}\r
\r
- if (!dspDid->Arc_EOL) {\r
+ if (!dspDid->Arc_EOL && (!dspDid->DspDidInfoRef->DspDidDynamicllyDefined)) {\r
didFound = TRUE;\r
*didPtr = dspDid;\r
}\r
\r
if (result == E_OK) {\r
if (didLen == writeDidLen) { /** @req DCM473 */\r
- result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], (uint8)didLen, &errorCode); /** @req DCM395 */\r
- if ((result != E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) {\r
+ result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], (uint8)didLen, &responseCode); /** @req DCM395 */\r
+ if( result != E_OK && responseCode == DCM_E_POSITIVERESPONSE ) {\r
responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
}\r
}\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
break;\r
}\r
- if(pduRxData->SduDataPtr[1] != DCM_PERIODICTRANSMIT_STOPSENDING_MODE)\r
+ if((pduRxData->SduDataPtr[1] != DCM_PERIODICTRANSMIT_STOPSENDING_MODE) && responseCode == DCM_E_POSITIVERESPONSE)\r
{\r
PdidNumber = pduRxData->SduLength - 2;\r
if(1 == PdidNumber)\r
pduTxData->SduLength = 1;\r
}\r
}\r
- else if((PdidNumber + PdidBufferNr) <= DCM_LIMITNUMBER_PERIODDATA) /*UDS_REQ_0x2A_6*/\r
+ else if(((PdidNumber + PdidBufferNr) <= DCM_LIMITNUMBER_PERIODDATA) && (responseCode == DCM_E_POSITIVERESPONSE)) /*UDS_REQ_0x2A_6*/\r
{ \r
for(i = 0;(i < PdidNumber)&&(responseCode == DCM_E_POSITIVERESPONSE);i++)\r
{\r
static Dcm_NegativeResponseCodeType CleardynamicallyDid(uint16 DDIdentifier,const PduInfoType *pduRxData, PduInfoType * pduTxData)\r
{\r
/*UDS_REQ_0x2C_5*/\r
- uint8 i;\r
+ sint8 i, j;\r
uint8 ClearCount;\r
uint8 position;\r
uint8 ClearNum = 0;\r
}\r
else\r
{\r
- for(i = 1;i < DCM_MAX_DDD_NUMBER;i++)\r
- {\r
- if(0 == dspDDD[i].DynamicallyDid)\r
- {\r
- ClearNum = i - 1;\r
- DDid->DynamicallyDid = dspDDD[ClearNum].DynamicallyDid;\r
- dspDDD[ClearNum].DynamicallyDid = 0;\r
- for(ClearCount = 0;ClearCount < DCM_MAX_DDDSOURCE_NUMBER;ClearCount++)\r
- {\r
- /*DCM647*/\r
- DDid->DDDSource[ClearCount].DDDTpyeID = dspDDD[ClearNum].DDDSource[ClearCount].DDDTpyeID;\r
- DDid->DDDSource[ClearCount].formatOrPosition = dspDDD[ClearNum].DDDSource[ClearCount].formatOrPosition;\r
- DDid->DDDSource[ClearCount].SourceAddressOrDid = dspDDD[ClearNum].DDDSource[ClearCount].SourceAddressOrDid;\r
- DDid->DDDSource[ClearCount].Size = dspDDD[ClearNum].DDDSource[ClearCount].Size;\r
- dspDDD[ClearNum].DDDSource[ClearCount].DDDTpyeID = 0;\r
- dspDDD[ClearNum].DDDSource[ClearCount].formatOrPosition = 0;\r
- dspDDD[ClearNum].DDDSource[ClearCount].SourceAddressOrDid = 0;\r
- dspDDD[ClearNum].DDDSource[ClearCount].Size = 0;\r
- } \r
- } \r
+ memset(DDid, 0, sizeof(Dcm_DspDDDType));\r
+ for(i = DCM_MAX_DDD_NUMBER - 1;i >= 0 ;i--) { /* find the first DDDid from bottom */\r
+ if (0 != dspDDD[i].DynamicallyDid) {\r
+ for (j = 0; j <DCM_MAX_DDD_NUMBER; j++) { /* find the first empty slot from top */\r
+ if (j >= i) {\r
+ /* Rearrange finished */\r
+ pduTxData->SduDataPtr[1] = DCM_DDD_SUBFUNCTION_CLEAR;\r
+ pduTxData->SduLength = 2;\r
+ return responseCode;\r
+ }\r
+ else if (0 == dspDDD[j].DynamicallyDid) { /* find, exchange */\r
+ memcpy(&dspDDD[j], &dspDDD[i], sizeof(Dcm_DspDDDType));\r
+ memset(&dspDDD[i], 0, sizeof(Dcm_DspDDDType));\r
+ }\r
+ }\r
+ }\r
}\r
}\r
- } \r
+ }\r
+ else{\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE; /* DDDid not found */\r
+ }\r
+ }\r
+ else if (pduRxData->SduDataPtr[1] == 0x03 && pduRxData->SduLength == 2){\r
+ /* clear all */\r
+ memset(dspDDD, 0, (sizeof(Dcm_DspDDDType) * DCM_MAX_DDD_NUMBER));\r
}\r
else\r
{\r
static Dcm_NegativeResponseCodeType DspIOControlReturnControlToECU(const Dcm_DspDidType *DidPtr,const PduInfoType *pduRxData,PduInfoType *pduTxData)\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidReturnControlToEcu == TRUE)\r
+ if(pduRxData->SduLength > 4)\r
{\r
- if(pduRxData->SduLength > 4)\r
+ if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
{\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
+ if(((DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidReturnControlToEcu->DspDidControlOptionRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
{\r
- if(((DidPtr->DspDidControlRecordSize->DspDidControlRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
+ if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
{\r
- if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
- {\r
- DidPtr->DspDidReturnControlToEcuFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
- \r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ DidPtr->DspDidReturnControlToEcuFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
+\r
}\r
else\r
{\r
}\r
else\r
{\r
- if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
- {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
+ {\r
\r
- if(DidPtr->DspDidControlRecordSize != NULL)\r
- {\r
- DidPtr->DspDidReturnControlToEcuFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ if(DidPtr->DspDidControlRecordSize != NULL)\r
+ {\r
+ DidPtr->DspDidReturnControlToEcuFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidReturnControlToEcu->DspDidControlStatusRecordSize + 4;\r
}\r
else\r
{\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
}\r
}\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ else\r
+ {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
}\r
if(responseCode == DCM_E_POSITIVERESPONSE)\r
{\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidReturnControlToEcu->DspDidControlStatusRecordSize + 4;\r
pduTxData->SduDataPtr[3] = DCM_RETURN_CONTROL_TO_ECU;\r
}\r
\r
static Dcm_NegativeResponseCodeType DspIOControlResetToDefault(const Dcm_DspDidType *DidPtr,const PduInfoType *pduRxData,PduInfoType *pduTxData)\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidResetToDefault == TRUE)\r
+ if(pduRxData->SduLength > 4)\r
{\r
- if(pduRxData->SduLength > 4)\r
+ if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
{\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
+ if(((DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidResetToDefault->DspDidControlOptionRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
{\r
- if(((DidPtr->DspDidControlRecordSize->DspDidControlRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
+ if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
{\r
- if(DidPtr->DspDidReturnControlToEcuFnc != NULL)\r
- {\r
- DidPtr->DspDidResetToDeaultFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ DidPtr->DspDidResetToDefaultFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
}\r
else\r
{\r
}\r
else\r
{\r
- if(DidPtr->DspDidResetToDeaultFnc != NULL)\r
- {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if(DidPtr->DspDidResetToDefaultFnc != NULL)\r
+ {\r
\r
- if(DidPtr->DspDidControlRecordSize != NULL)\r
- {\r
- DidPtr->DspDidResetToDeaultFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ if(DidPtr->DspDidControlRecordSize != NULL)\r
+ {\r
+ DidPtr->DspDidResetToDefaultFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidResetToDefault->DspDidControlStatusRecordSize + 4;\r
}\r
else\r
{\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
}\r
}\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ else\r
+ {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
}\r
if(responseCode == DCM_E_POSITIVERESPONSE)\r
{\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize+4;\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidResetToDefault->DspDidControlStatusRecordSize+4;\r
pduTxData->SduDataPtr[3] = DCM_RESET_TO_DEFAULT;\r
}\r
return responseCode;\r
static Dcm_NegativeResponseCodeType DspIOControlFreezeCurrentState(const Dcm_DspDidType *DidPtr,const PduInfoType *pduRxData,PduInfoType *pduTxData)\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidFreezeCurrentState == TRUE)\r
+ if(pduRxData->SduLength > 4)\r
{\r
- if(pduRxData->SduLength > 4)\r
+ if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
{\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
+ if(((DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidFreezeCurrentState->DspDidControlOptionRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
{\r
- if(((DidPtr->DspDidControlRecordSize->DspDidControlRecordSize + 7) >> 3) == (pduRxData->SduLength - 4))\r
+ if(DidPtr->DspDidFreezeCurrentStateFnc != NULL)\r
{\r
- if(DidPtr->DspDidFreezeCurrentStateFnc != NULL)\r
- {\r
- DidPtr->DspDidFreezeCurrentStateFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ DidPtr->DspDidFreezeCurrentStateFnc(NULL,&pduRxData->SduDataPtr[4],&pduTxData->SduDataPtr[4],&responseCode);\r
}\r
else\r
{\r
}\r
else\r
{\r
- if(DidPtr->DspDidFreezeCurrentStateFnc != NULL)\r
- {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if(DidPtr->DspDidFreezeCurrentStateFnc != NULL)\r
+ {\r
\r
- if(DidPtr->DspDidControlRecordSize != 0)\r
- {\r
- DidPtr->DspDidFreezeCurrentStateFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ if(DidPtr->DspDidControlRecordSize != 0)\r
+ {\r
+ DidPtr->DspDidFreezeCurrentStateFnc(NULL,NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidFreezeCurrentState->DspDidControlStatusRecordSize + 4;\r
}\r
else\r
{\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
}\r
}\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ else\r
+ {\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
}\r
if(responseCode == DCM_E_POSITIVERESPONSE)\r
{\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidFreezeCurrentState->DspDidControlStatusRecordSize + 4;\r
pduTxData->SduDataPtr[3] = DCM_FREEZE_CURRENT_STATE;\r
}\r
\r
static Dcm_NegativeResponseCodeType DspIOControlShortTeamAdjustment(const Dcm_DspDidType *DidPtr,const PduInfoType *pduRxData,PduInfoType *pduTxData)\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
- uint8 didControlOptionRecordSize = DidPtr->DspDidControlRecordSize->DspDidControlOptionRecordSize;\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidShortTermAdjustment == TRUE)\r
+ uint8 didControlOptionRecordSize = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidShortTermAdjustment->DspDidControlOptionRecordSize;\r
+ if(pduRxData->SduLength > 4)\r
{\r
- if(pduRxData->SduLength > 4)\r
+ if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
{\r
- if(DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl != NULL)\r
+ if(((((DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidShortTermAdjustment->DspDidControlEnableMaskRecordSize + 7)) >> 3) + (didControlOptionRecordSize)) == (pduRxData->SduLength - 4))\r
{\r
- if(((((DidPtr->DspDidControlRecordSize->DspDidControlRecordSize + 7)) >> 3) + (didControlOptionRecordSize)) == (pduRxData->SduLength - 4))\r
+ if(DidPtr->DspDidShortTermAdjustmentFnc != NULL)\r
{\r
- if(DidPtr->DspDidShortTermAdjustmentFnc != NULL)\r
- {\r
- DidPtr->DspDidShortTermAdjustmentFnc(&pduRxData->SduDataPtr[4],&pduRxData->SduDataPtr[4 + didControlOptionRecordSize],&pduTxData->SduDataPtr[4],&responseCode);\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ DidPtr->DspDidShortTermAdjustmentFnc(&pduRxData->SduDataPtr[4],&pduRxData->SduDataPtr[4 + didControlOptionRecordSize],&pduTxData->SduDataPtr[4],&responseCode);\r
}\r
- else if((didControlOptionRecordSize) == (pduRxData->SduLength - 4))\r
+ else\r
{\r
- if(DidPtr->DspDidShortTermAdjustmentFnc != NULL)\r
- {\r
- DidPtr->DspDidShortTermAdjustmentFnc(&pduRxData->SduDataPtr[4],NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
- }\r
- else\r
- {\r
- responseCode = DCM_E_REQUESTOUTOFRANGE;\r
- }\r
+ responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+ }\r
+ }\r
+ else if((didControlOptionRecordSize) == (pduRxData->SduLength - 4))\r
+ {\r
+ if(DidPtr->DspDidShortTermAdjustmentFnc != NULL)\r
+ {\r
+ DidPtr->DspDidShortTermAdjustmentFnc(&pduRxData->SduDataPtr[4],NULL,&pduTxData->SduDataPtr[4],&responseCode);\r
}\r
else\r
{\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
}\r
}\r
- else \r
+ else\r
{\r
responseCode = DCM_E_REQUESTOUTOFRANGE;\r
}\r
}\r
if(responseCode == DCM_E_POSITIVERESPONSE)\r
{\r
- pduTxData->SduLength = DidPtr->DspDidControlRecordSize->DspDidControlStatusRecordSize + 4;\r
+ pduTxData->SduLength = DidPtr->DspDidInfoRef->DspDidAccess.DspDidControl->DspDidShortTermAdjustment->DspDidControlStatusRecordSize + 4;\r
pduTxData->SduDataPtr[3] = DCM_SHORT_TERM_ADJUSTMENT;\r
}\r
\r