\r
\r
\r
+/*\r
+ * General requirements\r
+ */\r
+/** @req DCM054.Partially */ /** @req DCM055.Partially */ /** @req DCM110 */ /** @req DCM107 */ /** @req DCM332 */\r
+/** @req DCM012 */ /** @req DCM044 */ /** @req DCM364 */ /** @req DCM041 */\r
+/** @req DCM042 */ /** @req DCM049 */\r
+/** @req DCM033 */\r
+/** @req DCM171 */\r
+\r
#include <string.h>\r
#include "Dcm.h"\r
#include "Dcm_Internal.h"\r
* Procedure: Dcm_Init\r
* Reentrant: No\r
*/\r
-void Dcm_Init(void)\r
+void Dcm_Init(void) /** @req DCM037 */\r
{\r
if ((DCM_Config.Dsl == NULL) || (DCM_Config.Dsd == NULL) || (DCM_Config.Dsp == NULL)) {\r
#if (DCM_DEV_ERROR_DETECT == STD_ON)\r
\r
\r
\r
+/*\r
+ * General requirements\r
+ */\r
+\r
+\r
#include <string.h>\r
#include "Dcm.h"\r
#include "Dcm_Internal.h"\r
static void createAndSendNcr(Dcm_NegativeResponseCodeType responseCode)\r
{\r
if (!((msgData.addrType == DCM_PROTOCOL_FUNCTIONAL_ADDR_TYPE)\r
- && ((responseCode == DCM_E_SERVICENOTSUPPORTED) || (responseCode == DCM_E_SUBFUNCTIONNOTSUPPORTED) || (responseCode == DCM_E_REQUESTOUTOFRANGE)))) { /** @req DCM001 **/\r
+ && ((responseCode == DCM_E_SERVICENOTSUPPORTED) || (responseCode == DCM_E_SUBFUNCTIONNOTSUPPORTED) || (responseCode == DCM_E_REQUESTOUTOFRANGE)))) { /** @req DCM001 */\r
msgData.pduTxData->SduDataPtr[0] = SID_NEGATIVE_RESPONSE;\r
msgData.pduTxData->SduDataPtr[1] = currentSid;\r
msgData.pduTxData->SduDataPtr[2] = responseCode;\r
msgData.pduTxData->SduLength = 3;\r
- DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_READY); /** @req DCM114 **/ /** @req DCM232.1 **/\r
+ DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_READY); /** @req DCM114 */ /** @req DCM232.Ncr */\r
}\r
else {\r
DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_SUPPRESSED);\r
\r
static void selectServiceFunction(uint8 sid)\r
{\r
- switch (sid) /** @req DCM221 **/\r
+ switch (sid) /** @req DCM221 */\r
{\r
case SID_DIAGNOSTIC_SESSION_CONTROL:\r
DspUdsDiagnosticSessionControl(msgData.pduRxData, msgData.pduTxData);\r
Std_ReturnType result;\r
const Dcm_DsdServiceType *sidConfPtr = NULL;\r
\r
- currentSid = msgData.pduRxData->SduDataPtr[0]; /** @req DCM198 **/\r
+ currentSid = msgData.pduRxData->SduDataPtr[0]; /** @req DCM198 */\r
\r
- /** @req DCM178 **/\r
- if (DCM_RESPOND_ALL_REQUEST || ((currentSid & 0x7F) < 0x40)) { /** @req DCM084 **/\r
- if (lookupSid(currentSid, &sidConfPtr)) { /** @req DCM192 **/ /** @req DCM193 **/ /** @req DCM196 **/\r
+ /** @req DCM178 */\r
+ if (DCM_RESPOND_ALL_REQUEST || ((currentSid & 0x7F) < 0x40)) { /** @req DCM084 */\r
+ if (lookupSid(currentSid, &sidConfPtr)) { /** @req DCM192 */ /** @req DCM193 */ /** @req DCM196 */\r
// SID found!\r
- if (DspCheckSessionLevel(sidConfPtr->DsdSidTabSessionLevelRef)) { /** @req DCM211 **/\r
- if (DspCheckSecurityLevel(sidConfPtr->DsdSidTabSecurityLevelRef)) { /** @req DCM217 **/\r
- if (DCM_REQUEST_INDICATION_ENABLED) { /** @req DCM218 **/\r
+ if (DspCheckSessionLevel(sidConfPtr->DsdSidTabSessionLevelRef)) { /** @req DCM211 */\r
+ if (DspCheckSecurityLevel(sidConfPtr->DsdSidTabSecurityLevelRef)) { /** @req DCM217 */\r
+ if (DCM_REQUEST_INDICATION_ENABLED) { /** @req DCM218 */\r
result = askApplicationForServicePermission(msgData.pduRxData->SduDataPtr, msgData.pduRxData->SduLength);\r
}\r
if (!DCM_REQUEST_INDICATION_ENABLED || result == E_OK) {\r
// Yes! All conditions met!\r
// Check if response shall be suppressed\r
- if (sidConfPtr->DsdSidTabSubfuncAvail && (msgData.pduRxData->SduDataPtr[1] & SUPPRESS_POS_RESP_BIT)) { /** @req DCM204 **/\r
- suppressPosRspMsg = TRUE; /** @req DCM202 **/\r
- msgData.pduRxData->SduDataPtr[1] &= ~SUPPRESS_POS_RESP_BIT; /** @req DCM201 **/\r
+ if (sidConfPtr->DsdSidTabSubfuncAvail && (msgData.pduRxData->SduDataPtr[1] & SUPPRESS_POS_RESP_BIT)) { /** @req DCM204 */\r
+ suppressPosRspMsg = TRUE; /** @req DCM202 */\r
+ msgData.pduRxData->SduDataPtr[1] &= ~SUPPRESS_POS_RESP_BIT; /** @req DCM201 */\r
}\r
else\r
{\r
- suppressPosRspMsg = FALSE; /** @req DCM202 **/\r
+ suppressPosRspMsg = FALSE; /** @req DCM202 */\r
}\r
selectServiceFunction(currentSid);\r
}\r
else {\r
if (result == E_REQUEST_ENV_NOK) {\r
- createAndSendNcr(DCM_E_CONDITIONSNOTCORRECT); /** @req DCM463 **/\r
+ createAndSendNcr(DCM_E_CONDITIONSNOTCORRECT); /** @req DCM463 */\r
}\r
else {\r
- // Do not send any response /** @req DCM462 **/\r
+ // Do not send any response /** @req DCM462 */\r
DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_SUPPRESSED);\r
}\r
}\r
}\r
else {\r
- createAndSendNcr(DCM_E_SECUTITYACCESSDENIED); /** @req DCM217 **/\r
+ createAndSendNcr(DCM_E_SECUTITYACCESSDENIED); /** @req DCM217 */\r
}\r
}\r
else {\r
- createAndSendNcr(DCM_E_SERVICENOTSUPPORTEDINACTIVESESSION); /** @req DCM211 **/\r
+ createAndSendNcr(DCM_E_SERVICENOTSUPPORTEDINACTIVESESSION); /** @req DCM211 */\r
}\r
}\r
else {\r
- createAndSendNcr(DCM_E_SERVICENOTSUPPORTED); /** @req DCM197 **/\r
+ createAndSendNcr(DCM_E_SERVICENOTSUPPORTED); /** @req DCM197 */\r
}\r
}\r
else {\r
void DsdDspProcessingDone(Dcm_NegativeResponseCodeType responseCode)\r
{\r
if (responseCode == DCM_E_POSITIVERESPONSE) {\r
- if (!suppressPosRspMsg) { /** @req DCM200 **/ /** @req DCM231 **/\r
- /** @req DCM222 **/\r
- msgData.pduTxData->SduDataPtr[0] = currentSid | SID_RESPONSE_BIT; /** @req DCM223 **/ /** @req DCM224 **/\r
- DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_READY); /** @req DCM114 **/ /** @req DCM225 **/ /** @req DCM232.2 **/\r
+ if (!suppressPosRspMsg) { /** @req DCM200 */ /** @req DCM231 */\r
+ /** @req DCM222 */\r
+ msgData.pduTxData->SduDataPtr[0] = currentSid | SID_RESPONSE_BIT; /** @req DCM223 */ /** @req DCM224 */\r
+ DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_READY); /** @req DCM114 */ /** @req DCM225 */ /** @req DCM232.Ok */\r
}\r
else {\r
- DspDcmConfirmation(msgData.txPduId); /** @req DCM236 **/ /** @req DCM240 **/\r
+ DspDcmConfirmation(msgData.txPduId); /** @req DCM236 */ /** @req DCM240 */\r
DslDsdProcessingDone(msgData.rxPduId, DSD_TX_RESPONSE_SUPPRESSED);\r
}\r
}\r
else {\r
- createAndSendNcr(responseCode); /** @req DCM228 **/\r
+ createAndSendNcr(responseCode); /** @req DCM228 */\r
}\r
\r
}\r
\r
void DsdDataConfirmation(PduIdType confirmPduId, NotifResultType result)\r
{\r
- DspDcmConfirmation(confirmPduId); /** @req DCM236 **/\r
+ DspDcmConfirmation(confirmPduId); /** @req DCM236 */\r
}\r
\r
\r
* for more details.\r
* -------------------------------- Arctic Core ------------------------------*/\r
\r
+/*\r
+ * General requirements\r
+ */\r
+/** @req DCM030 */\r
+\r
+\r
#include <string.h>\r
#include "Mcu.h"\r
#include "Dcm.h"\r
\r
//\r
// This function reset/stars the session (S3) timer. See requirement\r
-// @DCM141 when that action should be taken.\r
+// DCM141 when that action should be taken.\r
//\r
static inline void startS3SessionTimer(Dcm_DslRunTimeProtocolParametersType *runtime, const Dcm_DslProtocolRowType *protocolRow) {\r
const Dcm_DslProtocolTimingRowType *timeParams;\r
\r
//\r
// This function reset/stars the session (S3) timer. See requirement\r
-// @DCM141 when that action should be taken.\r
+// DCM141 when that action should be taken.\r
//\r
static inline void stopS3SessionTimer(Dcm_DslRunTimeProtocolParametersType *runtime) {\r
runtime->S3ServerTimeoutCount = 0;\r
// - - - - - - - - - - -\r
\r
//\r
-// This function implements the requirement @DCM139 when\r
+// This function implements the requirement DCM139 when\r
// transition from one session to another.\r
//\r
static void changeDiagnosticSession(Dcm_DslRunTimeProtocolParametersType *runtime,\r
Dcm_SesCtrlType newSession) {\r
\r
- /** @req DCM139 **/\r
+ /** @req DCM139 */\r
\r
switch (runtime->sessionControl) {\r
case DCM_DEFAULT_SESSION: // "default".\r
\r
default:\r
// TODO: Log this error.\r
- DEBUG(DEBUG_MEDIUM, "Old session invalid")\r
+ DEBUG(DEBUG_MEDIUM, "Old session invalid");\r
break;\r
}\r
\r
\r
default:\r
// TODO: Log this error.\r
- DEBUG(DEBUG_MEDIUM, "New session invalid")\r
+ DEBUG(DEBUG_MEDIUM, "New session invalid");\r
break;\r
}\r
}\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
activeProtocol = DcmDslRunTimeData.activeProtocol;\r
runtime = activeProtocol->DslRunTimeProtocolParameters;\r
- startS3SessionTimer(runtime, activeProtocol); // @DCM141\r
+ startS3SessionTimer(runtime, activeProtocol); /** @req DCM141 */\r
}\r
\r
// - - - - - - - - - - -\r
\r
-void DslGetCurrentServiceTable(const Dcm_DsdServiceTableType **currentServiceTable) {\r
+void DslGetCurrentServiceTable(const Dcm_DsdServiceTableType **currentServiceTable) { /** @req DCM195 */\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
activeProtocol = DcmDslRunTimeData.activeProtocol;\r
if (activeProtocol != NULL) {\r
\r
// - - - - - - - - - - -\r
\r
-Std_ReturnType DslGetActiveProtocol(Dcm_ProtocolType *protocolId) { /** @req DCM340 **/\r
+Std_ReturnType DslGetActiveProtocol(Dcm_ProtocolType *protocolId) { /** @req DCM340 */\r
Std_ReturnType ret = E_NOT_OK;\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
activeProtocol = DcmDslRunTimeData.activeProtocol;\r
\r
// - - - - - - - - - - -\r
\r
-void DslSetSecurityLevel(Dcm_SecLevelType secLevel) { /** @req DCM020 **/\r
+void DslSetSecurityLevel(Dcm_SecLevelType secLevel) { /** @req DCM020 */\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
activeProtocol = DcmDslRunTimeData.activeProtocol;\r
\r
// - - - - - - - - - - -\r
\r
-Std_ReturnType DslGetSecurityLevel(Dcm_SecLevelType *secLevel) { /** @req DCM020 **//** @req DCM338 **/\r
+Std_ReturnType DslGetSecurityLevel(Dcm_SecLevelType *secLevel) { /** @req DCM020 *//** @req DCM338 */\r
Std_ReturnType ret = E_NOT_OK;\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
\r
// - - - - - - - - - - -\r
\r
-void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrl) { /** @req DCM022 **/\r
+void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrl) { /** @req DCM022 */\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
activeProtocol = DcmDslRunTimeData.activeProtocol;\r
\r
// - - - - - - - - - - -\r
\r
-Std_ReturnType DslGetSesCtrlType(Dcm_SesCtrlType *sesCtrlType) { /** @req DCM022 **//** @req DCM339 **/\r
+Std_ReturnType DslGetSesCtrlType(Dcm_SesCtrlType *sesCtrlType) { /** @req DCM022 *//** @req DCM339 */\r
Std_ReturnType ret = E_NOT_OK;\r
const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
imask_t state = McuE_EnterCriticalSection();\r
switch (responseResult) {\r
case DSD_TX_RESPONSE_READY:\r
- runtime->externalTxBufferStatus = DSD_PENDING_RESPONSE_SIGNALED; /** @req DCM114 **/\r
+ runtime->externalTxBufferStatus = DSD_PENDING_RESPONSE_SIGNALED; /** @req DCM114 */\r
break;\r
- case DSD_TX_RESPONSE_SUPPRESSED:\r
+ case DSD_TX_RESPONSE_SUPPRESSED: /** @req DCM238 */\r
DEBUG( DEBUG_MEDIUM, "DslDsdProcessingDone called with DSD_TX_RESPONSE_SUPPRESSED.\n");\r
releaseExternalRxTxBuffersHelper(rxPduIdRef);\r
break;\r
const Dcm_DslProtocolRowType *protocolRow = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
\r
- /** @req DCM119 **/\r
+ /** @req DCM119 */\r
imask_t state = McuE_EnterCriticalSection();\r
if (findRxPduIdParentConfigurationLeafs(protocol->DslRunTimeProtocolParameters->diagReqestRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
if (runtime->localTxBuffer.status == NOT_IN_USE) {\r
runtime->localTxBuffer.PduInfo.SduDataPtr = runtime->localTxBuffer.buffer;\r
runtime->localTxBuffer.PduInfo.SduLength = 3;\r
runtime->localTxBuffer.status = DCM_TRANSMIT_SIGNALED; // In the DslProvideTxBuffer 'callback' this state signals it is the local buffer we are interested in sending.\r
- PduR_DcmTransmit(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, &(runtime->localTxBuffer.PduInfo));/** @req DCM115, the P2ServerMin has not been implemented. **/\r
+ PduR_DcmTransmit(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, &(runtime->localTxBuffer.PduInfo));/** @req DCM115.Partially */ /* The P2ServerMin has not been implemented. */\r
}\r
}\r
McuE_ExitCriticalSection(state);\r
uint16 i;\r
\r
for (i = 0; !DCM_Config.Dsl->DslCallbackDCMRequestService[i].Arc_EOL; i++) {\r
- if (DCM_Config.Dsl->DslCallbackDCMRequestService[i].StartProtocol\r
- != NULL) {\r
- ret = DCM_Config.Dsl->DslCallbackDCMRequestService[i]. StartProtocol(\r
- protocolId);\r
- if (ret != E_OK) { // qqq: eqvivalent to DCM_E_OK?\r
+ if (DCM_Config.Dsl->DslCallbackDCMRequestService[i].StartProtocol != NULL) {\r
+ ret = DCM_Config.Dsl->DslCallbackDCMRequestService[i]. StartProtocol(protocolId);\r
+ if (ret != E_OK) {\r
break;\r
}\r
}\r
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
// Implements 'void Dcm_Init(void)' for DSL.\r
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
-void DslInit(void) { /** @req DCM037 - for DSL submodule. **/\r
+void DslInit(void) {\r
const Dcm_DslProtocolRowType *listEntry = NULL;\r
Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
\r
runtime->externalTxBufferStatus = DCM_IDLE;\r
runtime->localRxBuffer.status = DCM_IDLE;\r
runtime->localTxBuffer.status = DCM_IDLE;\r
- runtime->securityLevel = DCM_SEC_LEV_LOCKED; /** @req DCM033 **/\r
- runtime->sessionControl = DCM_DEFAULT_SESSION;\r
+ runtime->securityLevel = DCM_SEC_LEV_LOCKED; /** @req DCM033 */\r
+ runtime->sessionControl = DCM_DEFAULT_SESSION; /** @req DCM034 */\r
listEntry->DslProtocolRxBufferID->externalBufferRuntimeData->status = BUFFER_AVAILABLE;\r
listEntry->DslProtocolRxBufferID->externalBufferRuntimeData->status = BUFFER_AVAILABLE;\r
listEntry++;\r
if (runtime->sessionControl != DCM_DEFAULT_SESSION) { // Timeout if tester present is lost.\r
DECREMENT(runtime->S3ServerTimeoutCount);\r
if (runtime->S3ServerTimeoutCount == 0) {\r
- changeDiagnosticSession(runtime, DCM_DEFAULT_SESSION); /** @req DCM140 **/\r
+ changeDiagnosticSession(runtime, DCM_DEFAULT_SESSION); /** @req DCM140 */\r
}\r
}\r
switch (runtime->externalTxBufferStatus) { // #### TX buffer state. ####\r
if (DCM_Config.Dsl->DslDiagResp != NULL) {\r
if (DCM_Config.Dsl->DslDiagResp->DslDiagRespForceRespPendEn == TRUE) {\r
if (runtime->responsePendingCount != 0) {\r
- sendResponse(protocolRowEntry, DCM_E_RESPONSEPENDING); /** @req DCM024 **/\r
+ sendResponse(protocolRowEntry, DCM_E_RESPONSEPENDING); /** @req DCM024 */\r
DECREMENT( runtime->responsePendingCount );\r
} else {\r
- sendResponse(protocolRowEntry, DCM_E_GENERALREJECT); /** @req DCM120 **/\r
+ sendResponse(protocolRowEntry, DCM_E_GENERALREJECT); /** @req DCM120 */\r
releaseExternalRxTxBuffers(protocolRowEntry, runtime);\r
}\r
} else {\r
const uint32 txPduId = mainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
DEBUG( DEBUG_MEDIUM, "runtime->externalTxBufferStatus enter state DCM_TRANSMIT_SIGNALED.\n" );\r
runtime->externalTxBufferStatus = DCM_TRANSMIT_SIGNALED;\r
- PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 **//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+ PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
} else {\r
DEBUG( DEBUG_MEDIUM, "***** WARNING, THIS IS UNEXPECTED !!! ********.\n" );\r
const uint32 txPduId = protocolRowEntry->DslConnection->DslMainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
DEBUG( DEBUG_MEDIUM, "runtime->externalTxBufferStatus enter state DSD_PENDING_RESPONSE_SIGNALED.\n", txPduId);\r
runtime->externalTxBufferStatus = DCM_TRANSMIT_SIGNALED;\r
DEBUG( DEBUG_MEDIUM, "Calling PduR_DcmTransmit with txPduId = %d from DslMain\n", txPduId);\r
- PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 **//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+ PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
}\r
}\r
break;\r
// received a FF or a single frame and needs to obtain a buffer from the\r
// receiver so that received data can be forwarded.\r
\r
-BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId, /** @req DCM094 **/\r
+BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId,\r
PduLengthType tpSduLength, const PduInfoType **pduInfoPtr) {\r
BufReq_ReturnType ret = BUFREQ_NOT_OK;\r
const Dcm_DslProtocolRxType *protocolRx = NULL;\r
imask_t state = McuE_EnterCriticalSection();\r
if (findRxPduIdParentConfigurationLeafs(dcmRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
const Dcm_DslBufferType *externalRxBuffer = protocolRow->DslProtocolRxBufferID;\r
- if (externalRxBuffer->pduInfo.SduLength >= tpSduLength) { /** @req DCM443 **/\r
+ if (externalRxBuffer->pduInfo.SduLength >= tpSduLength) { /** @req DCM443 */\r
if ((runtime->externalRxBufferStatus == NOT_IN_USE) && (externalRxBuffer->externalBufferRuntimeData->status == BUFFER_AVAILABLE)) {\r
DEBUG( DEBUG_MEDIUM, "External buffer available!\n");\r
// ### EXTERNAL BUFFER IS AVAILABLE; GRAB IT AND REMEBER THAT WE OWN IT! ###\r
runtime->diagnosticRequestFromTester.SduDataPtr = externalRxBuffer->pduInfo.SduDataPtr;\r
runtime->diagnosticRequestFromTester.SduLength = tpSduLength;\r
*pduInfoPtr = &(runtime->diagnosticRequestFromTester);\r
- runtime->externalRxBufferStatus = PROVIDED_TO_PDUR; /** @req DCM342 **/\r
+ runtime->externalRxBufferStatus = PROVIDED_TO_PDUR; /** @req DCM342 */\r
ret = BUFREQ_OK;\r
} else {\r
DEBUG( DEBUG_MEDIUM, "Local buffer available!\n");\r
// The buffer is in use by the PduR, we can not help this because then\r
// we would have two different Rx-indications with same PduId but we\r
// will not know which buffer the indication should free.\r
- ret = BUFREQ_BUSY; /** @req DCM445 **/\r
+ ret = BUFREQ_BUSY; /** @req DCM445 */\r
}\r
}\r
} else {\r
- ret = BUFREQ_OVFL; /** @req DCM444 **/\r
+ ret = BUFREQ_OVFL; /** @req DCM444 */\r
}\r
if (ret == BUFREQ_OK) {\r
- stopS3SessionTimer(runtime); /** @req DCM141 **/\r
+ stopS3SessionTimer(runtime); /** @req DCM141 */\r
}\r
}\r
McuE_ExitCriticalSection(state);\r
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
// This function is called called by the PduR typically when CanTp has\r
// received the diagnostic request, copied it to the provided buffer and need to indicate\r
-// this to the DCM (DSL) module via propritary API.\r
+// this to the DCM (DSL) module via proprietary API.\r
\r
-void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result) { /** @req DCM093 **/\r
+void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result) {\r
const Dcm_DslProtocolRxType *protocolRx = NULL;\r
const Dcm_DslMainConnectionType *mainConnection = NULL;\r
const Dcm_DslConnectionType *connection = NULL;\r
Std_ReturnType higherLayerResp;\r
imask_t state;\r
\r
- /** @req DCM345, this needs to be verified when connection to CanIf works. **/\r
+ /** @req DCM345, this needs to be verified when connection to CanIf works. */\r
\r
if (findRxPduIdParentConfigurationLeafs(dcmRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
timeParams = protocolRow->DslProtocolTimeLimit;\r
// the Concurrent "Test Present" functionality.\r
state = McuE_EnterCriticalSection();\r
if (runtime->externalRxBufferStatus == PROVIDED_TO_PDUR) {\r
- if ( result == NTFRSLT_OK ) { /** @req DCM111 **/\r
+ if ( result == NTFRSLT_OK ) { /** @req DCM111 */\r
if (isTesterPresentCommand(&(protocolRow->DslProtocolRxBufferID->pduInfo))) {\r
- startS3SessionTimer(runtime, protocolRow); /** @req DCM141 **//** @req DCM112 **//** @req DCM113 **/\r
+ startS3SessionTimer(runtime, protocolRow); /** @req DCM141 *//** @req DCM112 *//** @req DCM113 */\r
runtime->externalRxBufferStatus = NOT_IN_USE;\r
protocolRow->DslProtocolRxBufferID->externalBufferRuntimeData->status = BUFFER_AVAILABLE;\r
} else {\r
if (runtime->protocolStarted == FALSE) {\r
- higherLayerResp = StartProtocolHelper(protocolRow->DslProtocolID); /** @req DCM036 **/\r
+ higherLayerResp = StartProtocolHelper(protocolRow->DslProtocolID); /** @req DCM036 */\r
if (higherLayerResp == E_OK) {\r
runtime->protocolStarted = TRUE;\r
DcmDslRunTimeData.activeProtocol = protocolRow;\r
}\r
if (runtime->protocolStarted == TRUE) {\r
if (runtime->diagnosticActiveComM == FALSE) {\r
- ComM_DCM_ActivateDiagnostic(); /* @DCM163 */\r
+ ComM_DCM_ActivateDiagnostic(); /** @req DCM163 */\r
runtime->diagnosticActiveComM = TRUE;\r
}\r
timeParams = protocolRow->DslProtocolTimeLimit;\r
runtime->stateTimeoutCount = DCM_CONVERT_MS_TO_MAIN_CYCLES(timeParams->TimStrP2ServerMax); /* See 9.2.2. */\r
- runtime->externalRxBufferStatus = PROVIDED_TO_DSD; /** @req DCM241 **/\r
+ runtime->externalRxBufferStatus = PROVIDED_TO_DSD; /** @req DCM241 */\r
if (runtime->externalTxBufferStatus == NOT_IN_USE) {\r
DEBUG( DEBUG_MEDIUM, "External Tx buffer available, we can pass it to DSD.\n");\r
} else {\r
DEBUG( DEBUG_MEDIUM, "External buffer not available, a response is being transmitted?\n");\r
}\r
- runtime->externalTxBufferStatus = PROVIDED_TO_DSD; /** @req DCM241 **/\r
+ runtime->externalTxBufferStatus = PROVIDED_TO_DSD; /** @req DCM241 */\r
runtime->responsePendingCount = DCM_Config.Dsl->DslDiagResp->DslDiagRespMaxNumRespPend;\r
runtime->diagnosticResponseFromDsd.SduDataPtr = protocolRow->DslProtocolTxBufferID->pduInfo.SduDataPtr;\r
runtime->diagnosticResponseFromDsd.SduLength = protocolRow->DslProtocolTxBufferID->pduInfo.SduLength;\r
dcmRxPduId);\r
}\r
}\r
- } else { /** @req DCM344 **/\r
+ } else { /** @req DCM344 */\r
// The indication was not equal to NTFRSLT_OK, release the resources and no forward to DSD.\r
runtime->externalRxBufferStatus = NOT_IN_USE;\r
protocolRow->DslProtocolRxBufferID->externalBufferRuntimeData->status = BUFFER_AVAILABLE;\r
if (runtime->localRxBuffer.status == PROVIDED_TO_PDUR) {\r
if ( result == NTFRSLT_OK ) { // Make sure that the data in buffer is valid.\r
if (isTesterPresentCommand(&(runtime->localRxBuffer.PduInfo))) {\r
- startS3SessionTimer(runtime, protocolRow); /** @req DCM141 **//** @req DCM112 **//** @req DCM113 **/\r
+ startS3SessionTimer(runtime, protocolRow); /** @req DCM141 *//** @req DCM112 *//** @req DCM113 */\r
}\r
}\r
runtime->localRxBuffer.status = NOT_IN_USE;\r
// it has detected that the pending request has been answered by DSD\r
// (or any other module?).\r
\r
-BufReq_ReturnType DslProvideTxBuffer(PduIdType dcmTxPduId, const PduInfoType **pduInfoPtr, PduLengthType length) { /** @req DCM092 **/\r
+BufReq_ReturnType DslProvideTxBuffer(PduIdType dcmTxPduId, const PduInfoType **pduInfoPtr, PduLengthType length) {\r
BufReq_ReturnType ret = BUFREQ_NOT_OK;\r
const Dcm_DslProtocolTxType *protocolTx = NULL;\r
const Dcm_DslMainConnectionType *mainConnection = NULL;\r
if (findTxPduIdParentConfigurationLeafs(dcmTxPduId, &protocolTx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
switch (runtime->externalTxBufferStatus) { // ### EXTERNAL TX BUFFER ###\r
case DCM_TRANSMIT_SIGNALED: {\r
- /** @req DCM346 - length verification is already done if this state is reached. **/\r
+ /** @req DCM346 */ /* Length verification is already done if this state is reached. */\r
*pduInfoPtr = &(protocolRow->DslProtocolTxBufferID->pduInfo);\r
- runtime->externalTxBufferStatus = PROVIDED_TO_PDUR; /** @req DCM349 **/\r
+ runtime->externalTxBufferStatus = PROVIDED_TO_PDUR; /** @req DCM349 */\r
ret = BUFREQ_OK;\r
break;\r
}\r
state = McuE_EnterCriticalSection();\r
switch (runtime->externalTxBufferStatus) { // ### EXTERNAL TX BUFFER ###\r
case PROVIDED_TO_PDUR: {\r
- ComM_DCM_InactivateDiagnostic();\r
- startS3SessionTimer(runtime, protocolRow); // @DCM141\r
- releaseExternalRxTxBuffers(protocolRow, runtime); /** @req DCM118 **//** @req DCM353 **//** @req DCM354 **/\r
+ ComM_DCM_InactivateDiagnostic(); /** @req DCM164 */\r
+ startS3SessionTimer(runtime, protocolRow); /** @req DCM141 */\r
+ releaseExternalRxTxBuffers(protocolRow, runtime); /** @req DCM118 *//** @req DCM353 *//** @req DCM354 */\r
externalBufferReleased = TRUE;\r
DEBUG( DEBUG_MEDIUM, "Released external buffer OK!\n");\r
- DsdDataConfirmation(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, result); /** @req DCM117 **//** @req DCM235 **/\r
+ DsdDataConfirmation(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, result); /** @req DCM117 *//** @req DCM235 */\r
break;\r
}\r
default:\r
\r
\r
\r
+/*\r
+ * General requirements\r
+ */\r
+/** @req DCM273 */ /** @req DCM272 */\r
+/** @req DCM039 */ /** @req DCM038 */ /** @req DCM269 */\r
+/** @req DCM271 */ /** @req DCM274 */ /** @req DCM275 */ /** @req DCM424 */\r
+/** @req DCM007 */\r
+\r
#include <string.h>\r
#include "Dcm.h"\r
#include "Dcm_Internal.h"\r
\r
void DspUdsDiagnosticSessionControl(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- // @req DCM250 **/\r
+ /** @req DCM250 */\r
const Dcm_DspSessionRowType *sessionRow = DCM_Config.Dsp->DspSession->DspSessionRow;\r
Dcm_SesCtrlType reqSessionType;\r
Std_ReturnType result;\r
if (!sessionRow->Arc_EOL) {\r
result = askApplicationForSessionPermission(reqSessionType);\r
if (result == E_OK) {\r
- DslSetSesCtrlType(reqSessionType); /** @req DCM311 **/\r
+ DslSetSesCtrlType(reqSessionType); /** @req DCM311 */\r
// Create positive response\r
- /** @req DCM039.2 **/\r
pduTxData->SduDataPtr[1] = reqSessionType;\r
pduTxData->SduLength = 2;\r
- DsdDspProcessingDone(DCM_E_POSITIVERESPONSE); /** @req DCM269.2 **/\r
+ DsdDspProcessingDone(DCM_E_POSITIVERESPONSE);\r
}\r
else {\r
// TODO: Add handling of special case of E_FORCE_RCRRP (Dcm138)\r
- DsdDspProcessingDone(DCM_E_CONDITIONSNOTCORRECT); /** @req DCM308 **/\r
+ DsdDspProcessingDone(DCM_E_CONDITIONSNOTCORRECT); /** @req DCM308 */\r
}\r
}\r
else {\r
- DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED); /** @req DCM307 **/\r
+ DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED); /** @req DCM307 */\r
}\r
}\r
else {\r
// Wrong length\r
- DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT); /** @req DCM272.1 **/\r
+ DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT);\r
}\r
}\r
\r
\r
void DspUdsEcuReset(const PduInfoType *pduRxData, PduIdType txPduId, PduInfoType *pduTxData)\r
{\r
- // @req DCM260 **/\r
+ /** @req DCM260 */\r
uint8 reqResetType;\r
\r
if (pduRxData->SduLength == 2) {\r
dspUdsEcuResetData.resetPduId = txPduId;\r
\r
// Create positive response\r
- /** @req DCM039.1 **/\r
pduTxData->SduDataPtr[1] = reqResetType;\r
pduTxData->SduLength = 2;\r
- DsdDspProcessingDone(DCM_E_POSITIVERESPONSE); /** @req DCM269.3 **/\r
+ DsdDspProcessingDone(DCM_E_POSITIVERESPONSE);\r
break;\r
\r
default:\r
- DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED); /** @req DCM273.3 **/\r
+ DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED);\r
break;\r
}\r
}\r
else {\r
// Wrong length\r
- DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT); /** @req DCM272.3 **/\r
+ DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT);\r
}\r
}\r
\r
\r
void DspUdsClearDiagnosticInformation(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
+ /** @req DCM247 */\r
uint32 dtc;\r
Dem_ReturnClearDTCType result;\r
\r
if (pduRxData->SduLength == 4) {\r
dtc = BYTES_TO_DTC(pduRxData->SduDataPtr[1], pduRxData->SduDataPtr[2], pduRxData->SduDataPtr[3]);\r
\r
- result = Dem_ClearDTC(dtc, DEM_DTC_KIND_ALL_DTCS, DEM_DTC_ORIGIN_PRIMARY_MEMORY);\r
+ result = Dem_ClearDTC(dtc, DEM_DTC_KIND_ALL_DTCS, DEM_DTC_ORIGIN_PRIMARY_MEMORY); /** @req DCM005 */\r
\r
switch (result)\r
{\r
case DEM_CLEAR_OK:\r
// Create positive response\r
- /** @req DCM039.1 **/\r
pduTxData->SduLength = 1;\r
- DsdDspProcessingDone(DCM_E_POSITIVERESPONSE); /** @req DCM269.4 **/\r
+ DsdDspProcessingDone(DCM_E_POSITIVERESPONSE);\r
break;\r
\r
default:\r
}\r
else {\r
// Wrong length\r
- DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT); /** @req DCM272.1 **/\r
+ DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT);\r
}\r
}\r
\r
Dem_ReturnSetDTCFilterType setDtcFilterResult;\r
\r
// Setup the DTC filter\r
- switch (pduRxData->SduDataPtr[1]) /** @reg DCM293 **/\r
+ switch (pduRxData->SduDataPtr[1]) /** @reg DCM293 */\r
{\r
case 0x01: // reportNumberOfDTCByStatusMask\r
setDtcFilterResult = Dem_SetDTCFilter(pduRxData->SduDataPtr[2], DEM_DTC_KIND_ALL_DTCS, DEM_DTC_ORIGIN_PRIMARY_MEMORY, DEM_FILTER_WITH_SEVERITY_NO, VALUE_IS_NOT_USED, DEM_FILTER_FOR_FDC_NO);\r
uint8 dtcStatusMask;\r
TxDataType *txData = (TxDataType*)pduTxData->SduDataPtr;\r
\r
- /** @reg DCM376 **/\r
+ /** @reg DCM376 */\r
Dem_GetNumberOfFilteredDtc(&numberOfFilteredDtc);\r
Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
\r
// Create positive response (ISO 14229-1 table 251)\r
- /** @req DCM039.0x19 **/\r
- txData->reportType = pduRxData->SduDataPtr[1]; // reportType\r
+ txData->reportType = pduRxData->SduDataPtr[1]; // reportType\r
txData->dtcStatusAvailabilityMask = dtcStatusMask; // DTCStatusAvailabilityMask\r
txData->dtcFormatIdentifier = Dem_GetTranslationType(); // DTCFormatIdentifier\r
txData->dtcCountHighByte = (numberOfFilteredDtc >> 8); // DTCCount high byte\r
} TxDataType;\r
\r
// Setup the DTC filter\r
- switch (pduRxData->SduDataPtr[1]) /** @reg DCM378 **/\r
+ switch (pduRxData->SduDataPtr[1]) /** @reg DCM378 */\r
{\r
case 0x02: // reportDTCByStatusMask\r
setDtcFilterResult = Dem_SetDTCFilter(pduRxData->SduDataPtr[2], DEM_DTC_KIND_ALL_DTCS, DEM_DTC_ORIGIN_PRIMARY_MEMORY, DEM_FILTER_WITH_SEVERITY_NO, VALUE_IS_NOT_USED, DEM_FILTER_FOR_FDC_NO);\r
Dem_EventStatusExtendedType dtcStatus;\r
uint16 nrOfDtcs = 0;\r
\r
- /** @reg DCM377 **/\r
+ /** @reg DCM377 */\r
Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
\r
// Create positive response (ISO 14229-1 table 252)\r
- /** @req DCM039.0x19 **/\r
txData->reportType = pduRxData->SduDataPtr[1];\r
txData->dtcStatusAvailabilityMask = dtcStatusMask;\r
\r
- if (dtcStatusMask != 0x00) { /** @req DCM008 **/\r
+ if (dtcStatusMask != 0x00) { /** @req DCM008 */\r
getNextFilteredDtcResult = Dem_GetNextFilteredDTC(&dtc, &dtcStatus);\r
while (getNextFilteredDtcResult == DEM_FILTERED_OK) {\r
txData->dtcAndStatusRecord[nrOfDtcs].dtcHighByte = DTC_HIGH_BYTE(dtc);\r
uint8 endRecNum;\r
\r
// Switch on sub function\r
- switch (pduRxData->SduDataPtr[1]) /** @reg DCM378 **/\r
+ switch (pduRxData->SduDataPtr[1]) /** @reg DCM378 */\r
{\r
case 0x06: // reportDTCExtendedDataRecordByDTCNumber\r
dtcOrigin = DEM_DTC_ORIGIN_PRIMARY_MEMORY;\r
Dem_EventStatusExtendedType statusOfDtc;\r
\r
dtc = BYTES_TO_DTC(pduRxData->SduDataPtr[2], pduRxData->SduDataPtr[3], pduRxData->SduDataPtr[4]);\r
- getStatusOfDtcResult = Dem_GetStatusOfDTC(dtc, DEM_DTC_KIND_ALL_DTCS, dtcOrigin, &statusOfDtc); /** @req DCM295 **/ /** @req DCM475 **/\r
+ getStatusOfDtcResult = Dem_GetStatusOfDTC(dtc, DEM_DTC_KIND_ALL_DTCS, dtcOrigin, &statusOfDtc); /** @req DCM295 */ /** @req DCM475 */\r
if (getStatusOfDtcResult == DEM_STATUS_OK) {\r
Dem_ReturnGetExtendedDataRecordByDTCType getExtendedDataRecordByDtcResult;\r
uint16 recNum;\r
uint8 recLength;\r
uint16 txIndex = 6;\r
\r
- /** @req DCM297 **/ /** @req DCM474 **/ /** @req DCM386 **/\r
+ /** @req DCM297 */ /** @req DCM474 */ /** @req DCM386 */\r
pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1]; // Sub function\r
pduTxData->SduDataPtr[2] = DTC_HIGH_BYTE(dtc); // DTC high byte\r
pduTxData->SduDataPtr[3] = DTC_MID_BYTE(dtc); // DTC mid byte\r
pduTxData->SduDataPtr[5] = statusOfDtc; // DTC status\r
for (recNum = startRecNum; recNum <= endRecNum; recNum++) {\r
recLength = pduTxData->SduLength - txIndex -1; // Calculate what's left in buffer\r
- /** @req DCM296 **/ /** @req DCM476 **/ /** @req DCM382 **/\r
+ /** @req DCM296 */ /** @req DCM476 */ /** @req DCM382 */\r
getExtendedDataRecordByDtcResult = Dem_GetExtendedDataRecordByDTC(dtc, DEM_DTC_KIND_ALL_DTCS, dtcOrigin, recNum, &pduTxData->SduDataPtr[txIndex+1], &recLength);\r
if (getExtendedDataRecordByDtcResult == DEM_RECORD_OK) {\r
pduTxData->SduDataPtr[txIndex++] = recNum;\r
/* Instead of calling Dem_GetSizeOfExtendedDataRecordByDTC() the result from Dem_GetExtendedDataRecordByDTC() is used */\r
- /** @req DCM478 **/ /** @req DCM479 **/ /** @req DCM480 **/\r
+ /** @req DCM478 */ /** @req DCM479 */ /** @req DCM480 */\r
txIndex += recLength;\r
}\r
else {\r
\r
void DspUdsReadDtcInformation(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- /** @reg DCM248 **/\r
+ /** @reg DCM248 */\r
// Sub function number 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15\r
const uint8 sduLength[0x16] = {0, 3, 3, 6, 6, 3, 6, 4, 4, 5, 2, 2, 2, 2, 2, 3, 6, 3, 3, 3, 2, 2};\r
\r
}\r
else {\r
// Wrong length\r
- responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT; /** @req DCM272.0x19 **/\r
+ responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
}\r
}\r
else {\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
\r
- if ((didPtr->DspDidInfoRef->DspDidAccess.DspDidRead != NULL) && (didPtr->DspDidConditionCheckReadFnc != NULL) && (didPtr->DspDidReadDataFnc != NULL)) { /** @req DCM433 **/\r
- if (DspCheckSessionLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidRead->DspDidReadSessionRef)) { /** @req DCM434 **/\r
- if (DspCheckSecurityLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidRead->DspDidReadSecurityLevelRef)) { /** @req DCM435 **/\r
+ if ((didPtr->DspDidInfoRef->DspDidAccess.DspDidRead != NULL) && (didPtr->DspDidConditionCheckReadFnc != NULL) && (didPtr->DspDidReadDataFnc != NULL)) { /** @req DCM433 */\r
+ if (DspCheckSessionLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidRead->DspDidReadSessionRef)) { /** @req DCM434 */\r
+ if (DspCheckSecurityLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidRead->DspDidReadSecurityLevelRef)) { /** @req DCM435 */\r
Std_ReturnType result;\r
Dcm_NegativeResponseCodeType errorCode;\r
result = didPtr->DspDidConditionCheckReadFnc(&errorCode);\r
- if ((result == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) { /** @req DCM439 **/\r
+ if ((result == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) { /** @req DCM439 */\r
uint16 didLen;\r
result = E_NOT_OK;\r
- if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM436 **/\r
+ if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM436 */\r
didLen = didPtr->DspDidSize;\r
result = E_OK;\r
}\r
(*txPos)++;\r
pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 0) & 0xFF;\r
(*txPos)++;\r
- result = didPtr->DspDidReadDataFnc(&pduTxData->SduDataPtr[*txPos]); /** @req DCM437 **/\r
+ result = didPtr->DspDidReadDataFnc(&pduTxData->SduDataPtr[*txPos]); /** @req DCM437 */\r
*txPos += didLen;\r
\r
if (result != E_OK) {\r
}\r
\r
if (responseCode == DCM_E_POSITIVERESPONSE) {\r
- // Recurse trough the rest of the dids. /** @req DCM440 **/\r
+ // Recurse trough the rest of the dids. /** @req DCM440 */\r
uint16 i;\r
for (i=0; (!didPtr->DspDidRef[i]->Arc_EOL) && (responseCode == DCM_E_POSITIVERESPONSE); i++) {\r
responseCode = readDidData(didPtr->DspDidRef[i], pduTxData, txPos);\r
\r
void DspUdsReadDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- /** @req DCM253 **/\r
+ /** @req DCM253 */\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
uint8 nrOfDids;\r
uint16 didNr;\r
\r
for (i = 0; (i < nrOfDids) && (responseCode == DCM_E_POSITIVERESPONSE); i++) {\r
didNr = (pduRxData->SduDataPtr[1+i*2] << 8) + pduRxData->SduDataPtr[2+i*2];\r
- if (lookupDid(didNr, &didPtr)) { /** @req DCM438 **/\r
+ if (lookupDid(didNr, &didPtr)) { /** @req DCM438 */\r
responseCode = readDidData(didPtr, pduTxData, &txPos);\r
}\r
else { // DID not found\r
(*txPos)++;\r
pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 0) & 0xFF;\r
(*txPos)++;\r
- result = didPtr->DspDidGetScalingInfoFnc(&pduTxData->SduDataPtr[*txPos], &errorCode); /** @req DCM394 **/\r
+ result = didPtr->DspDidGetScalingInfoFnc(&pduTxData->SduDataPtr[*txPos], &errorCode); /** @req DCM394 */\r
*txPos += scalingInfoLen;\r
\r
if ((result != E_OK) || (errorCode != DCM_E_POSITIVERESPONSE)) {\r
\r
void DspUdsReadScalingDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- /** @req DCM258 **/\r
+ /** @req DCM258 */\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
uint16 didNr;\r
const Dcm_DspDidType *didPtr = NULL;\r
{\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
\r
- if ((didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite != NULL) && (didPtr->DspDidConditionCheckWriteFnc != NULL) && (didPtr->DspDidWriteDataFnc != NULL)) { /** @req DCM468 **/\r
- if (DspCheckSessionLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite->DspDidWriteSessionRef)) { /** @req DCM469 **/\r
- if (DspCheckSecurityLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite->DspDidWriteSecurityLevelRef)) { /** @req DCM470 **/\r
+ if ((didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite != NULL) && (didPtr->DspDidConditionCheckWriteFnc != NULL) && (didPtr->DspDidWriteDataFnc != NULL)) { /** @req DCM468 */\r
+ if (DspCheckSessionLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite->DspDidWriteSessionRef)) { /** @req DCM469 */\r
+ if (DspCheckSecurityLevel(didPtr->DspDidInfoRef->DspDidAccess.DspDidWrite->DspDidWriteSecurityLevelRef)) { /** @req DCM470 */\r
Std_ReturnType result;\r
Dcm_NegativeResponseCodeType errorCode;\r
- result = didPtr->DspDidConditionCheckWriteFnc(&errorCode); /** @req DCM471 **/\r
+ result = didPtr->DspDidConditionCheckWriteFnc(&errorCode); /** @req DCM471 */\r
if ((result == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) {\r
uint16 didLen;\r
result = E_NOT_OK;\r
- if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM472 **/\r
+ if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM472 */\r
didLen = didPtr->DspDidSize;\r
result = E_OK;\r
}\r
}\r
\r
if (result == E_OK) {\r
- if (didLen == writeDidLen) { /** @req DCM473 **/\r
- result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], didLen, &errorCode); /** @req DCM395 **/\r
+ if (didLen == writeDidLen) { /** @req DCM473 */\r
+ result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], didLen, &errorCode); /** @req DCM395 */\r
if ((result != E_OK) || (errorCode != DCM_E_POSITIVERESPONSE)) {\r
responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
}\r
\r
void DspUdsWriteDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- /** @req DCM255 **/\r
+ /** @req DCM255 */\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
uint16 didNr;\r
const Dcm_DspDidType *didPtr = NULL;\r
\r
didDataLength = pduRxData->SduLength - 3;\r
didNr = (pduRxData->SduDataPtr[1] << 8) + pduRxData->SduDataPtr[2];\r
- if (lookupDid(didNr, &didPtr)) { /** @req DCM467 **/\r
+ if (lookupDid(didNr, &didPtr)) { /** @req DCM467 */\r
responseCode = writeDidData(didPtr, pduRxData, didDataLength);\r
}\r
else { // DID not found\r
\r
void DspUdsSecurityAccess(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
- /** @req DCM252 **/\r
+ /** @req DCM252 */\r
Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
\r
// Check sub function range (0x01 to 0x42)\r
}\r
if (!securityRow->Arc_EOL) {\r
// Check length\r
- if (pduRxData->SduLength == (2 + securityRow->DspSecurityADRSize)) { /** @req DCM321.1 **/\r
+ if (pduRxData->SduLength == (2 + securityRow->DspSecurityADRSize)) { /** @req DCM321.RequestSeed */\r
Dcm_SecLevelType activeSecLevel;\r
Dcm_GetSecurityLevel(&activeSecLevel);\r
- if (requestedSecurityLevel == activeSecLevel) { /** @req DCM323 **/\r
+ if (requestedSecurityLevel == activeSecLevel) { /** @req DCM323 */\r
pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
// If same level set the seed to zeroes\r
memset(&pduTxData->SduDataPtr[2], 0, securityRow->DspSecuritySeedSize);\r
}\r
else {\r
// New security level ask for seed\r
- getSeedResult = securityRow->GetSeed(&pduRxData->SduDataPtr[2], &pduTxData->SduDataPtr[2], &getSeedErrorCode);\r
+ getSeedResult = securityRow->GetSeed(&pduRxData->SduDataPtr[2], &pduTxData->SduDataPtr[2], &getSeedErrorCode); /** @req DCM324.RequestSeed */\r
if ((getSeedResult == E_OK) && (getSeedErrorCode == E_OK)) {\r
// Everything ok add sub function to tx message and send it.\r
pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
else {\r
// sendKey message\r
if (dspUdsSecurityAccesData.reqInProgress) {\r
- if (pduRxData->SduLength == (2 + dspUdsSecurityAccesData.reqSecLevelRef->DspSecurityKeySize)) { /** @req DCM321 **/\r
+ if (pduRxData->SduLength == (2 + dspUdsSecurityAccesData.reqSecLevelRef->DspSecurityKeySize)) { /** @req DCM321.SendKey */\r
if (requestedSecurityLevel == dspUdsSecurityAccesData.reqSecLevel) {\r
Std_ReturnType compareKeyResult;\r
- compareKeyResult = dspUdsSecurityAccesData.reqSecLevelRef->CompareKey(&pduRxData->SduDataPtr[2]);\r
+ compareKeyResult = dspUdsSecurityAccesData.reqSecLevelRef->CompareKey(&pduRxData->SduDataPtr[2]); /** @req DCM324.SendKey */\r
if (compareKeyResult == E_OK) {\r
// Request accepted\r
// Kill timer\r
- DslSetSecurityLevel(dspUdsSecurityAccesData.reqSecLevelRef->DspSecurityLevel);\r
+ DslSetSecurityLevel(dspUdsSecurityAccesData.reqSecLevelRef->DspSecurityLevel); /** @req DCM325 */\r
dspUdsSecurityAccesData.reqInProgress = FALSE;\r
pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
pduTxData->SduLength = 2;\r
\r
void DspUdsTesterPresent(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
+ /** @req DCM251 */\r
if (pduRxData->SduLength == 2) {\r
switch (pduRxData->SduDataPtr[1])\r
{\r
case ZERO_SUB_FUNCTION:\r
DslResetSessionTimeoutTimer();\r
// Create positive response\r
- /** @req DCM039.1 **/\r
pduTxData->SduDataPtr[1] = ZERO_SUB_FUNCTION;\r
pduTxData->SduLength = 2;\r
- DsdDspProcessingDone(DCM_E_POSITIVERESPONSE); /** @req DCM269.1 **/\r
+ DsdDspProcessingDone(DCM_E_POSITIVERESPONSE);\r
break;\r
\r
default:\r
- DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED); /** @req DCM273.1 **/\r
+ DsdDspProcessingDone(DCM_E_SUBFUNCTIONNOTSUPPORTED);\r
break;\r
}\r
}\r
else {\r
// Wrong length\r
- DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT); /** @req DCM272.1 **/\r
+ DsdDspProcessingDone(DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT);\r
}\r
}\r
\r
\r
void DspUdsControlDtcSetting(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
{\r
+ /** @req DCM249 */\r
Dem_ReturnControlDTCStorageType resultCode;\r
\r
if (pduRxData->SduLength == 2) {\r
switch (pduRxData->SduDataPtr[1])\r
{\r
- case 0x01: // ON /** @req DCM249.1 **/\r
- resultCode = Dem_EnableDTCStorage(DEM_DTC_GROUP_ALL_DTCS, DEM_DTC_KIND_ALL_DTCS); /** @req DCM304 **/\r
+ case 0x01: // ON\r
+ resultCode = Dem_EnableDTCStorage(DEM_DTC_GROUP_ALL_DTCS, DEM_DTC_KIND_ALL_DTCS); /** @req DCM304 */\r
if (resultCode == DEM_CONTROL_DTC_STORAGE_OK) {\r
pduTxData->SduDataPtr[1] = 0x01;\r
pduTxData->SduLength = 2;\r
}\r
break;\r
\r
- case 0x02: // OFF /** @req DCM249.2 **/\r
- resultCode = Dem_DisableDTCStorage(DEM_DTC_GROUP_ALL_DTCS, DEM_DTC_KIND_ALL_DTCS); /** @req DCM406 **/\r
+ case 0x02: // OFF\r
+ resultCode = Dem_DisableDTCStorage(DEM_DTC_GROUP_ALL_DTCS, DEM_DTC_KIND_ALL_DTCS); /** @req DCM406 */\r
if (resultCode == DEM_CONTROL_DTC_STORAGE_OK) {\r
pduTxData->SduDataPtr[1] = 0x02;\r
pduTxData->SduLength = 2;\r
#ifndef DCM_LCFG_H_\r
#define DCM_LCFG_H_\r
\r
+/*\r
+ * General requirements\r
+ */\r
+/** @req DCM075 */ /** @req DCM076 */\r
+\r
+\r
#include "ComStack_Types.h"\r
#include "Dcm_Types.h"\r
\r
\r
// 10.2.44\r
typedef struct {\r
- Dcm_SesCtrlType DspSessionLevel; // (1)\r
- uint16 DspSessionP2ServerMax; // (1)\r
- uint16 DspSessionP2StarServerMax; // (1)\r
- boolean Arc_EOL;\r
-} Dcm_DspSessionRowType;\r
+ Dcm_SesCtrlType DspSessionLevel; // (1)\r
+ uint16 DspSessionP2ServerMax; // (1)\r
+ uint16 DspSessionP2StarServerMax; // (1)\r
+ boolean Arc_EOL;\r
+} Dcm_DspSessionRowType; /** @req DCM072 */\r
\r
// 10.2.42\r
typedef struct {\r
- Dcm_SecLevelType DspSecurityLevel; // (1)\r
- uint16 DspSecurityDelayTimeOnBoot; // (1)\r
- uint8 DspSecurityNumAttDelay; // (1)\r
- uint16 DspSecurityDelayTime; // (1)\r
- uint8 DspSecurityNumAttLock; // (1)\r
- uint8 DspSecurityADRSize; // (0..1)\r
- uint8 DspSecuritySeedSize; // (1)\r
- uint8 DspSecurityKeySize; // (1)\r
- Dcm_CallbackGetSeedFncType GetSeed;\r
- Dcm_CallbackCompareKeyFncType CompareKey;\r
- boolean Arc_EOL;\r
-} Dcm_DspSecurityRowType;\r
+ Dcm_SecLevelType DspSecurityLevel; // (1)\r
+ uint16 DspSecurityDelayTimeOnBoot; // (1)\r
+ uint8 DspSecurityNumAttDelay; // (1)\r
+ uint16 DspSecurityDelayTime; // (1)\r
+ uint8 DspSecurityNumAttLock; // (1)\r
+ uint8 DspSecurityADRSize; // (0..1)\r
+ uint8 DspSecuritySeedSize; // (1)\r
+ uint8 DspSecurityKeySize; // (1)\r
+ Dcm_CallbackGetSeedFncType GetSeed;\r
+ Dcm_CallbackCompareKeyFncType CompareKey;\r
+ boolean Arc_EOL;\r
+} Dcm_DspSecurityRowType; /** @req DCM073 */\r
\r
// 10.2.23\r
typedef struct {\r
- uint8 DspDidControlRecordSize; // (1)\r
- uint8 DspDidControlOptionRecordSize; // (1)\r
- uint8 DspDidControlStatusRecordSize; // (1)\r
+ uint8 DspDidControlRecordSize; // (1)\r
+ uint8 DspDidControlOptionRecordSize; // (1)\r
+ uint8 DspDidControlStatusRecordSize; // (1)\r
} Dcm_DspDidControlRecordSizesType;\r
\r
// 10.2.26\r
typedef struct {\r
- const Dcm_DspSessionRowType **DspDidControlSessionRef; // (1..*)\r
- const Dcm_DspSecurityRowType **DspDidControlSecurityLevelRef; // (1..*)\r
- const Dcm_DspDidControlRecordSizesType *DspDidFreezeCurrentState; // (0..1)\r
- const Dcm_DspDidControlRecordSizesType *DspDidResetToDefault; // (0..1)\r
- const Dcm_DspDidControlRecordSizesType *DspDidReturnControlToEcu; // (0..1)\r
- const Dcm_DspDidControlRecordSizesType *DspDidShortTermAdjustment; // (0..1)\r
-} Dcm_DspDidControlType;\r
+ const Dcm_DspSessionRowType **DspDidControlSessionRef; // (1..*) /** @req DCM621 */\r
+ const Dcm_DspSecurityRowType **DspDidControlSecurityLevelRef; // (1..*) /** @req DCM620 */\r
+ const Dcm_DspDidControlRecordSizesType *DspDidFreezeCurrentState; // (0..1) /** @req DCM624 */\r
+ const Dcm_DspDidControlRecordSizesType *DspDidResetToDefault; // (0..1) /** @req DCM623 */\r
+ const Dcm_DspDidControlRecordSizesType *DspDidReturnControlToEcu; // (0..1) /** @req DCM622 */\r
+ const Dcm_DspDidControlRecordSizesType *DspDidShortTermAdjustment; // (0..1) /** @req DCM625 */\r
+} Dcm_DspDidControlType; /** @req DCM619 */\r
\r
// 10.2.27\r
typedef struct {\r
- const Dcm_DspSessionRowType **DspDidReadSessionRef; // (1..*)\r
- const Dcm_DspSecurityRowType **DspDidReadSecurityLevelRef; // (1..*)\r
-} Dcm_DspDidReadType;\r
+ const Dcm_DspSessionRowType **DspDidReadSessionRef; // (1..*) /** @req DCM615 */\r
+ const Dcm_DspSecurityRowType **DspDidReadSecurityLevelRef; // (1..*) /** @req DCM614 */\r
+} Dcm_DspDidReadType; /** @req DCM613 */\r
\r
// 10.2.28\r
typedef struct {\r
- const Dcm_DspSessionRowType **DspDidWriteSessionRef; // (1..*)\r
- const Dcm_DspSecurityRowType **DspDidWriteSecurityLevelRef; // (1..*)\r
-} Dcm_DspDidWriteType;\r
+ const Dcm_DspSessionRowType **DspDidWriteSessionRef; // (1..*) /** @req DCM618 */\r
+ const Dcm_DspSecurityRowType **DspDidWriteSecurityLevelRef; // (1..*) /** @req DCM617 */\r
+} Dcm_DspDidWriteType; /** @req DCM616 */\r
\r
// 10.2.25\r
typedef struct {\r
\r
// 10.2.24\r
typedef struct {\r
- boolean DspDidDynamicllyDefined; // (1)\r
- boolean DspDidFixedLength; // (1)\r
- uint8 DspDidScalingInfoSize; // (0..1)\r
+ boolean DspDidDynamicllyDefined; // (1) /** @req DCM612 */\r
+ boolean DspDidFixedLength; // (1) /** @req DCM608 */\r
+ uint8 DspDidScalingInfoSize; // (0..1) /** @req DCM611 */\r
// Containers\r
- Dcm_DspDidAccessType DspDidAccess; // (1)\r
-} Dcm_DspDidInfoType;\r
+ Dcm_DspDidAccessType DspDidAccess; // (1)\r
+} Dcm_DspDidInfoType; /** @req DCM607 */\r
\r
// 10.2.22\r
typedef struct _Dcm_DspDidType {\r
boolean DspDidUsePort; // (1)\r
- uint16 DspDidIdentifier; // (1)\r
- const Dcm_DspDidInfoType *DspDidInfoRef; // (1)\r
- const struct _Dcm_DspDidType **DspDidRef; // (0..*)\r
- uint16 DspDidSize; // (1)\r
- Dcm_CallbackReadDataLengthFncType DspDidReadDataLengthFnc; // (0..1)\r
- Dcm_CallbackConditionCheckReadFncType DspDidConditionCheckReadFnc; // (0..1)\r
- Dcm_CallbackReadDataFncType DspDidReadDataFnc; // (0..1)\r
- Dcm_CallbackConditionCheckWriteFncType DspDidConditionCheckWriteFnc; // (0..1)\r
- Dcm_CallbackWriteDataFncType DspDidWriteDataFnc; // (0..1)\r
- Dcm_CallbackGetScalingInformationFncType DspDidGetScalingInfoFnc; // (0..1)\r
- Dcm_CallbackFreezeCurrentStateFncType DspDidFreezeCurrentStateFnc; // (0..1)\r
- Dcm_CallbackResetToDefaultFncType DspDidResetToDeaultFnc; // (0..1)\r
- Dcm_CallbackReturnControlToECUFncType DspDidReturnControlToEcuFnc; // (0..1)\r
- Dcm_CallbackShortTermAdjustmentFncType DspDidShortTermAdjustmentFnc; // (0..1)\r
+ uint16 DspDidIdentifier; // (1) /** @req DCM602 */\r
+ const Dcm_DspDidInfoType *DspDidInfoRef; // (1) /** @req DCM604 */\r
+ const struct _Dcm_DspDidType **DspDidRef; // (0..*) /** @req DCM606 */\r
+ uint16 DspDidSize; // (1) /** @req DCM605 */\r
+ Dcm_CallbackReadDataLengthFncType DspDidReadDataLengthFnc; // (0..1) /** @req DCM671 */\r
+ Dcm_CallbackConditionCheckReadFncType DspDidConditionCheckReadFnc; // (0..1) /** @req DCM677 */\r
+ Dcm_CallbackReadDataFncType DspDidReadDataFnc; // (0..1) /** @req DCM669 */\r
+ Dcm_CallbackConditionCheckWriteFncType DspDidConditionCheckWriteFnc; // (0..1) /** @req DCM678 */\r
+ Dcm_CallbackWriteDataFncType DspDidWriteDataFnc; // (0..1) /** @req DCM670 */\r
+ Dcm_CallbackGetScalingInformationFncType DspDidGetScalingInfoFnc; // (0..1) /** @req DCM676 */\r
+ Dcm_CallbackFreezeCurrentStateFncType DspDidFreezeCurrentStateFnc; // (0..1) /** @req DCM674 */\r
+ Dcm_CallbackResetToDefaultFncType DspDidResetToDeaultFnc; // (0..1) /** @req DCM673 */\r
+ Dcm_CallbackReturnControlToECUFncType DspDidReturnControlToEcuFnc; // (0..1) /** @req DCM672 */\r
+ Dcm_CallbackShortTermAdjustmentFncType DspDidShortTermAdjustmentFnc; // (0..1) /** @req DCM675 */\r
// Containers\r
const Dcm_DspDidControlRecordSizesType *DspDidControlRecordSize; // (0..*)\r
boolean Arc_EOL;\r
-} Dcm_DspDidType;\r
+} Dcm_DspDidType; /** @req DCM601 */\r
\r
// 10.2.30\r
typedef struct {\r
- const Dcm_DspSessionRowType **DspEcuResetSessionRef; // (1..*)\r
- const Dcm_DspSecurityRowType **DspEcuResetSecurityLevelRef; // (1..*)\r
-\r
-} Dcm_DspEcuResetType;\r
+ const Dcm_DspSessionRowType **DspEcuResetSessionRef; // (1..*)\r
+ const Dcm_DspSecurityRowType **DspEcuResetSecurityLevelRef; // (1..*)\r
+} Dcm_DspEcuResetType; /** @req DCM657 */\r
\r
// 10.2.31\r
typedef struct {\r
- boolean DspPidUsePort; // (1)\r
- uint8 DspPidIdentifier; // (1)\r
- uint8 DspPidSize; // (1)\r
- Dcm_CallbackGetPIDValueFncType DspGetPidValFnc; // (1)\r
-} Dcm_DspPidType;\r
+ boolean DspPidUsePort; // (1)\r
+ uint8 DspPidIdentifier; // (1) /** @req DCM627 */\r
+ uint8 DspPidSize; // (1) /** @req DCM628 */\r
+ Dcm_CallbackGetPIDValueFncType DspGetPidValFnc; // (1) /** @req DCM629 */\r
+} Dcm_DspPidType; /** @req DCM626 */\r
\r
// 10.2.33\r
typedef struct {\r
- boolean DspDTCInfoSubFuncSupp; // (1)\r
- uint8 DspDTCInfoSubFuncLevel; // (1)\r
- const Dcm_DspSecurityRowType **DspDTCInfoSecLevelRef; // (1..*)\r
-} Dcm_DspReadDTCRowType;\r
+ boolean DspDTCInfoSubFuncSupp; // (1)\r
+ uint8 DspDTCInfoSubFuncLevel; // (1)\r
+ const Dcm_DspSecurityRowType **DspDTCInfoSecLevelRef; // (1..*)\r
+} Dcm_DspReadDTCRowType; /** @req DCM073 */\r
\r
// 10.2.32\r
typedef struct {\r
// Containers\r
Dcm_DspReadDTCRowType *DspReadDTCRow; // (0..*)\r
-} Dcm_DspReadDTCType;\r
+} Dcm_DspReadDTCType; /** @req DCM074 */\r
\r
// 10.2.34\r
typedef struct {\r
- uint8 DspRequestControl; // (1)\r
- uint8 DspRequestControlOutBufferSize; // (1)\r
- uint8 DspRequestControlTestId; // (1)\r
-} Dcm_DspRequestControlType;\r
+ uint8 DspRequestControl; // (1)\r
+ uint8 DspRequestControlOutBufferSize; // (1)\r
+ uint8 DspRequestControlTestId; // (1) /** @req DCM656 */\r
+} Dcm_DspRequestControlType; /** @req DCM637 */\r
\r
// 10.2.37\r
typedef struct {\r
- const Dcm_DspSessionRowType *DspRoutineSessionRef; // (1..*)\r
- const Dcm_DspSecurityRowType *DspRoutineSecurityLevelRef; // (1..*)\r
-} Dcm_DspRoutineAuthorizationType;\r
+ const Dcm_DspSessionRowType *DspRoutineSessionRef; // (1..*) /** @req DCM649 */\r
+ const Dcm_DspSecurityRowType *DspRoutineSecurityLevelRef; // (1..*) /** @req DCM648 */\r
+} Dcm_DspRoutineAuthorizationType; /** @req DCM644 */\r
\r
// 10.2.38\r
typedef struct {\r
- uint8 DspReqResRtnCtrlOptRecSize; // (1)\r
-} Dcm_DspRoutineRequestResType;\r
+ uint8 DspReqResRtnCtrlOptRecSize; // (1) /** @req DCM652 */\r
+} Dcm_DspRoutineRequestResType; /** @req DCM646 */\r
\r
// 10.2.39\r
typedef struct {\r
- uint8 DspStopRoutineCtrlOptRecSize; // (1)\r
- uint8 DspStopRoutineStsOptRecSize; // (1)\r
-} Dcm_DspRoutineStopType;\r
+ uint8 DspStopRoutineCtrlOptRecSize; // (1) /** @req DCM650 */\r
+ uint8 DspStopRoutineStsOptRecSize; // (1) /** @req DCM651 */\r
+} Dcm_DspRoutineStopType; /** @req DCM645 */\r
\r
// 10.2.40\r
typedef struct {\r
- uint8 DspStartRoutineCtrlOptRecSize; // (1)\r
- uint8 DspStartRoutineStsOptRecSize; // (1)\r
-} Dcm_DspStartRoutineType;\r
+ uint8 DspStartRoutineCtrlOptRecSize; // (1) /** @req DCM654 */\r
+ uint8 DspStartRoutineStsOptRecSize; // (1) /** @req DCM655 */\r
+} Dcm_DspStartRoutineType; /** @req DCM647 */\r
\r
// 10.2.36\r
typedef struct {\r
// Containers\r
- const Dcm_DspRoutineAuthorizationType *DspRoutineAuthorization; // (1)\r
- const Dcm_DspRoutineRequestResType *DspRoutineRequestRes; // (0..1)\r
- const Dcm_DspRoutineStopType *DspRoutineStop; // (0..1)\r
- const Dcm_DspStartRoutineType *DspStartRoutine; // (1)\r
-} Dcm_DspRoutineInfoType;\r
+ const Dcm_DspRoutineAuthorizationType *DspRoutineAuthorization; // (1)\r
+ const Dcm_DspRoutineRequestResType *DspRoutineRequestRes; // (0..1)\r
+ const Dcm_DspRoutineStopType *DspRoutineStop; // (0..1)\r
+ const Dcm_DspStartRoutineType *DspStartRoutine; // (1)\r
+} Dcm_DspRoutineInfoType; /** @req DCM643 */\r
\r
// 10.2.35\r
typedef struct {\r
- boolean DspRoutineUsePort; // (1)\r
- uint16 DspRoutineIdentifier; // (1)\r
- const Dcm_DspRoutineInfoType *DspRoutineInfoRef; // (1)\r
- Dcm_CallbackStartFncType DspStartRoutineFnc; // (0..1)\r
- Dcm_CallbackStopFncType DspStopRoutineFnc; // (0..1)\r
- Dcm_CallbackRequestResultFncType DspRequestResultRoutineFnc; // (0..1)\r
-} Dcm_DspRoutineType;\r
+ boolean DspRoutineUsePort; // (1)\r
+ uint16 DspRoutineIdentifier; // (1) /** @req DCM641 */\r
+ const Dcm_DspRoutineInfoType *DspRoutineInfoRef; // (1) /** @req DCM642 */\r
+ Dcm_CallbackStartFncType DspStartRoutineFnc; // (0..1) /** @req DCM664 */\r
+ Dcm_CallbackStopFncType DspStopRoutineFnc; // (0..1) /** @req DCM665 */\r
+ Dcm_CallbackRequestResultFncType DspRequestResultRoutineFnc; // (0..1) /** @req DCM665 */\r
+} Dcm_DspRoutineType; /** @req DCM640 */\r
\r
// 10.2.41\r
typedef struct {\r
// Containers\r
const Dcm_DspSecurityRowType *DspSecurityRow; // (0..31)\r
-} Dcm_DspSecurityType;\r
+} Dcm_DspSecurityType; /** @req DCM073 */\r
\r
// 10.2.43\r
typedef struct {\r
// Containers\r
const Dcm_DspSessionRowType *DspSessionRow; // (0..31)\r
-} Dcm_DspSessionType;\r
+} Dcm_DspSessionType; /** @req DCM072 */\r
\r
// 10.2.47\r
typedef struct {\r
- uint8 DspTestResultTestId; // (1)\r
- uint8 DspTestResultUaSid; // (1)\r
-} Dcm_DspTestResultTidType;\r
+ uint8 DspTestResultTestId; // (1) /** @req DCM635 */\r
+ uint8 DspTestResultUaSid; // (1) /** @req DCM686 */\r
+} Dcm_DspTestResultTidType; /** @req DCM634 */\r
\r
// 10.2.46\r
typedef struct {\r
- uint8 DspTestResultObdmid; // (1)\r
- const Dcm_DspTestResultTidType **DspTestResultObdmidTidRef; // (1..*)\r
-} Dcm_DspTestResultObdmidTidType;\r
+ uint8 DspTestResultObdmid; // (1) /** @req DCM684 */\r
+ const Dcm_DspTestResultTidType **DspTestResultObdmidTidRef; // (1..*) /** @req DCM685 */\r
+} Dcm_DspTestResultObdmidTidType; /** @req DCM683 */\r
\r
// 10.2.45\r
typedef struct {\r
// Containers\r
- const Dcm_DspTestResultObdmidTidType *DspTestResultObdmidTid; // (0..*)\r
- const Dcm_DspTestResultTidType *DspTestResultTid; // (0..*)\r
-} Dcm_DspTestResultByObdmidType;\r
+ const Dcm_DspTestResultObdmidTidType *DspTestResultObdmidTid; // (0..*)\r
+ const Dcm_DspTestResultTidType *DspTestResultTid; // (0..*)\r
+} Dcm_DspTestResultByObdmidType; /** @req DCM682 */\r
\r
// 10.2.48\r
typedef struct {\r
- boolean DspVehInfoUsePort; // (1)\r
- uint8 DspVehInfoType; // (1)\r
- uint8 DspVehInfoSize; // (1)\r
- Dcm_CallbackGetInfoTypeValueFncType DspGetVehInfoTypeFnc; // (1)\r
-} Dcm_DspVehInfoType;\r
+ boolean DspVehInfoUsePort; // (1)\r
+ uint8 DspVehInfoType; // (1) /** @req DCM631 */\r
+ uint8 DspVehInfoSize; // (1) /** @req DCM632 */\r
+ Dcm_CallbackGetInfoTypeValueFncType DspGetVehInfoTypeFnc; // (1) /** @req DCM633 */\r
+} Dcm_DspVehInfoType; /** @req DCM630 */\r
\r
// 10.2.21\r
typedef struct {\r
- uint8 DspMaxDidToRead; // (0..1)\r
+ uint8 DspMaxDidToRead; // (0..1)\r
// Containers\r
- const Dcm_DspDidType *DspDid; // (0..*)\r
- const Dcm_DspDidInfoType *DspDidInfo; // (0..*)\r
- const Dcm_DspEcuResetType *DspEcuReset; // (0..*)\r
- const Dcm_DspPidType *DspPid; // (0..*)\r
- const Dcm_DspReadDTCType *DspReadDTC; // (1)\r
- const Dcm_DspRequestControlType *DspRequestControl; // (0..*)\r
- const Dcm_DspRoutineType *DspRoutine; // (0..*)\r
- const Dcm_DspRoutineInfoType *DspRoutineInfo; // (0..*)\r
- const Dcm_DspSecurityType *DspSecurity; // (0..*)\r
- const Dcm_DspSessionType *DspSession; // (1)\r
- const Dcm_DspTestResultByObdmidType *DspTestResultByObdmid; // (0..*)\r
- const Dcm_DspVehInfoType *DspVehInfo;\r
+ const Dcm_DspDidType *DspDid; // (0..*)\r
+ const Dcm_DspDidInfoType *DspDidInfo; // (0..*)\r
+ const Dcm_DspEcuResetType *DspEcuReset; // (0..*)\r
+ const Dcm_DspPidType *DspPid; // (0..*)\r
+ const Dcm_DspReadDTCType *DspReadDTC; // (1)\r
+ const Dcm_DspRequestControlType *DspRequestControl; // (0..*)\r
+ const Dcm_DspRoutineType *DspRoutine; // (0..*)\r
+ const Dcm_DspRoutineInfoType *DspRoutineInfo; // (0..*)\r
+ const Dcm_DspSecurityType *DspSecurity; // (0..*)\r
+ const Dcm_DspSessionType *DspSession; // (1)\r
+ const Dcm_DspTestResultByObdmidType *DspTestResultByObdmid; // (0..*)\r
+ const Dcm_DspVehInfoType *DspVehInfo;\r
} Dcm_DspType;\r
\r
/*******\r
*******/\r
// 10.2.4 DcmDsdService\r
typedef struct {\r
- uint8 DsdSidTabServiceId; // (1)\r
- boolean DsdSidTabSubfuncAvail; // (1)\r
- const Dcm_DspSecurityRowType **DsdSidTabSecurityLevelRef; // (1..*)\r
- const Dcm_DspSessionRowType **DsdSidTabSessionLevelRef; // (1..*)\r
+ uint8 DsdSidTabServiceId; // (1)\r
+ boolean DsdSidTabSubfuncAvail; // (1)\r
+ const Dcm_DspSecurityRowType **DsdSidTabSecurityLevelRef; // (1..*)\r
+ const Dcm_DspSessionRowType **DsdSidTabSessionLevelRef; // (1..*)\r
// Containers\r
- boolean Arc_EOL;\r
+ boolean Arc_EOL;\r
} Dcm_DsdServiceType;\r
\r
// 10.2.3 DcmDsdServiceTable\r
typedef struct {\r
- uint8 DsdSidTabId; // (1)\r
+ uint8 DsdSidTabId; // (1)\r
// Containers\r
- const Dcm_DsdServiceType *DsdService; // (1..*)\r
- boolean Arc_EOL;\r
-} Dcm_DsdServiceTableType;\r
+ const Dcm_DsdServiceType *DsdService; // (1..*)\r
+ boolean Arc_EOL;\r
+} Dcm_DsdServiceTableType; /** @req DCM071 */\r
\r
// 10.2.2 DcmDsd\r
typedef struct {\r
\r
typedef struct {\r
Dcm_DslBufferStatusType status; // Flag for buffer in use.\r
-\r
} Dcm_DslBufferRuntimeType;\r
\r
// 10.2.6\r
typedef struct {\r
- uint8 DslBufferID; // (1) // Kept for reference, will be removed (polite calls will be made).\r
- uint16 DslBufferSize; // (1)\r
- PduInfoType pduInfo;\r
- Dcm_DslBufferRuntimeType *externalBufferRuntimeData;\r
-} Dcm_DslBufferType;\r
+ uint8 DslBufferID; // (1) // Kept for reference, will be removed (polite calls will be made).\r
+ uint16 DslBufferSize; // (1)\r
+ PduInfoType pduInfo;\r
+ Dcm_DslBufferRuntimeType *externalBufferRuntimeData;\r
+} Dcm_DslBufferType; /** @req DCM032 */\r
\r
// 10.2.7\r
typedef struct {\r
- Dcm_CallbackStartProtocolFncType StartProtocol;\r
- Dcm_CallbackStopProtocolFncType StopProtocol;\r
- boolean Arc_EOL;\r
-} Dcm_DslCallbackDCMRequestServiceType;\r
+ Dcm_CallbackStartProtocolFncType StartProtocol;\r
+ Dcm_CallbackStopProtocolFncType StopProtocol;\r
+ boolean Arc_EOL;\r
+} Dcm_DslCallbackDCMRequestServiceType; /** @req DCM679 */\r
\r
// 10.2.8\r
typedef struct {\r
- boolean DslDiagRespForceRespPendEn; // (1)\r
- uint8 DslDiagRespMaxNumRespPend; // (1)\r
+ boolean DslDiagRespForceRespPendEn; // (1)\r
+ uint8 DslDiagRespMaxNumRespPend; // (1)\r
} Dcm_DslDiagRespType;\r
\r
// 10.2.18\r
typedef struct {\r
- uint16 TimStrP2ServerMax; // (1)\r
- uint16 TimStrP2ServerMin; // (1)\r
- uint16 TimStrP2StarServerMax; // (1)\r
- uint16 TimStrP2StarServerMin; // (1)\r
- uint16 TimStrS3Server; // (1)\r
- const boolean Arc_EOL;\r
+ uint16 TimStrP2ServerMax; // (1)\r
+ uint16 TimStrP2ServerMin; // (1)\r
+ uint16 TimStrP2StarServerMax; // (1)\r
+ uint16 TimStrP2StarServerMin; // (1)\r
+ uint16 TimStrS3Server; // (1)\r
+ const boolean Arc_EOL;\r
} Dcm_DslProtocolTimingRowType;\r
\r
// 10.2.17\r
typedef struct {\r
const Dcm_DslProtocolTimingRowType *DslProtocolTimingRow; // (0..*)\r
-} Dcm_DslProtocolTimingType;\r
+} Dcm_DslProtocolTimingType; /** @req DCM031 */\r
\r
// 10.2.15\r
typedef struct {\r
\r
// 10.2.13\r
struct Dcm_DslProtocolRxType_t {\r
- const Dcm_DslMainConnectionType *DslMainConnectionParent; // (1) /* Cross reference. */\r
- const Dcm_ProtocolAddrTypeType DslProtocolAddrType; // (1)\r
- const uint32 DcmDslProtocolRxPduId; // (1)\r
- const uint32 DcmDslProtocolRxTesterSourceAddr_v4; // (1)\r
- const uint8 DcmDslProtocolRxChannelId_v4; // (1)\r
- const boolean Arc_EOL;\r
+ const Dcm_DslMainConnectionType *DslMainConnectionParent; // (1) /* Cross reference. */\r
+ const Dcm_ProtocolAddrTypeType DslProtocolAddrType; // (1)\r
+ const uint32 DcmDslProtocolRxPduId; // (1)\r
+ const uint32 DcmDslProtocolRxTesterSourceAddr_v4; // (1)\r
+ const uint8 DcmDslProtocolRxChannelId_v4; // (1)\r
+ const boolean Arc_EOL;\r
};\r
\r
/* Makes it possible to cross-reference structures. */\r
\r
// 10.2.14\r
struct Dcm_DslProtocolTxType_t {\r
- const Dcm_DslMainConnectionType *DslMainConnectionParent; // (1) /* Cross reference. */\r
- const uint32 DcmDslProtocolTxPduId; // (1) /* Will be removed (polite), kept for reference. */\r
- const boolean Arc_EOL;\r
+ const Dcm_DslMainConnectionType *DslMainConnectionParent; // (1) /* Cross reference. */\r
+ const uint32 DcmDslProtocolTxPduId; // (1) /* Will be removed (polite), kept for reference. */\r
+ const boolean Arc_EOL;\r
};\r
\r
// -- UH\r
\r
// 10.2.12\r
struct Dcm_DslMainConnectionType_t { // Cross referenced from Dcm_DslProtocolRxType_t.\r
- const Dcm_DslConnectionType *DslConnectionParent; // Cross reference.\r
- const Dcm_DslPeriodicTransmissionType *DslPeriodicTransmissionConRef; // (0..1)\r
- const Dcm_DslResponseOnEventType *DslROEConnectionRef; // (0..*)\r
+ const Dcm_DslConnectionType *DslConnectionParent; // Cross reference.\r
+ const Dcm_DslPeriodicTransmissionType *DslPeriodicTransmissionConRef; // (0..1)\r
+ const Dcm_DslResponseOnEventType *DslROEConnectionRef; // (0..*)\r
// Containers\r
- const Dcm_DslProtocolRxType *DslProtocolRx; // (1..*) Remove?\r
- const Dcm_DslProtocolTxType *DslProtocolTx; // (1)\r
+ const Dcm_DslProtocolRxType *DslProtocolRx; // (1..*) Remove?\r
+ const Dcm_DslProtocolTxType *DslProtocolTx; // (1)\r
};\r
\r
/* Make it possible to cross reference. */\r
// 10.2.11\r
struct Dcm_DslConnectionType_t {\r
// Containers\r
- const Dcm_DslProtocolRowType *DslProtocolRow; // Cross reference.\r
- const Dcm_DslMainConnectionType *DslMainConnection; // (1)\r
- const Dcm_DslPeriodicTransmissionType *DslPeriodicTransmission; // (0..1)\r
- const Dcm_DslResponseOnEventType *DslResponseOnEvent; // (0..1)\r
- boolean Arc_EOL;\r
+ const Dcm_DslProtocolRowType *DslProtocolRow; // Cross reference.\r
+ const Dcm_DslMainConnectionType *DslMainConnection; // (1)\r
+ const Dcm_DslPeriodicTransmissionType *DslPeriodicTransmission; // (0..1)\r
+ const Dcm_DslResponseOnEventType *DslResponseOnEvent; // (0..1)\r
+ boolean Arc_EOL;\r
};\r
\r
typedef enum {\r
#define DCM_DSL_LOCAL_BUFFER_LENGTH 8\r
\r
typedef struct {\r
- Dcm_DslBufferUserType status;\r
- uint8 buffer[DCM_DSL_LOCAL_BUFFER_LENGTH];\r
- PduLengthType messageLenght;\r
- PduInfoType PduInfo;\r
+ Dcm_DslBufferUserType status;\r
+ uint8 buffer[DCM_DSL_LOCAL_BUFFER_LENGTH];\r
+ PduLengthType messageLenght;\r
+ PduInfoType PduInfo;\r
} Dcm_DslLocalBufferType;\r
\r
\r
typedef struct {\r
- PduIdType diagReqestRxPduId; // Tester request PduId.\r
- uint32 stateTimeoutCount; // Counter for timeout.\r
- Dcm_DslBufferUserType externalRxBufferStatus;\r
- PduInfoType diagnosticRequestFromTester;\r
- PduInfoType diagnosticResponseFromDsd;\r
- Dcm_DslBufferUserType externalTxBufferStatus;\r
- boolean protocolStarted; // Has the protocol been started?\r
- Dcm_DslLocalBufferType localRxBuffer;\r
- Dcm_DslLocalBufferType localTxBuffer;\r
- boolean diagnosticActiveComM; //\r
- uint16 S3ServerTimeoutCount;\r
- uint8 responsePendingCount;\r
- Dcm_SecLevelType securityLevel;\r
- Dcm_SesCtrlType sessionControl;\r
+ PduIdType diagReqestRxPduId; // Tester request PduId.\r
+ uint32 stateTimeoutCount; // Counter for timeout.\r
+ Dcm_DslBufferUserType externalRxBufferStatus;\r
+ PduInfoType diagnosticRequestFromTester;\r
+ PduInfoType diagnosticResponseFromDsd;\r
+ Dcm_DslBufferUserType externalTxBufferStatus;\r
+ boolean protocolStarted; // Has the protocol been started?\r
+ Dcm_DslLocalBufferType localRxBuffer;\r
+ Dcm_DslLocalBufferType localTxBuffer;\r
+ boolean diagnosticActiveComM; //\r
+ uint16 S3ServerTimeoutCount;\r
+ uint8 responsePendingCount;\r
+ Dcm_SecLevelType securityLevel;\r
+ Dcm_SesCtrlType sessionControl;\r
} Dcm_DslRunTimeProtocolParametersType;\r
\r
// 10.2.10\r
struct Dcm_DslProtocolRowType_t { // Cross referenced from Dcm_DslConnectionType_t.\r
- Dcm_ProtocolType DslProtocolID; // (1)\r
- boolean DslProtocolIsParallelExecutab; // (1)\r
- uint16 DslProtocolPreemptTimeout; // (1)\r
- uint8 DslProtocolPriority; // (1)\r
- Dcm_ProtocolTransTypeType DslProtocolTransType; // (1)\r
- const Dcm_DslBufferType *DslProtocolRxBufferID; // (1)\r
- const Dcm_DslBufferType *DslProtocolTxBufferID; // (1)\r
- const Dcm_DsdServiceTableType *DslProtocolSIDTable; // (1)\r
- const Dcm_DslProtocolTimingRowType *DslProtocolTimeLimit; // (0..1)\r
+ Dcm_ProtocolType DslProtocolID; // (1)\r
+ boolean DslProtocolIsParallelExecutab; // (1)\r
+ uint16 DslProtocolPreemptTimeout; // (1)\r
+ uint8 DslProtocolPriority; // (1)\r
+ Dcm_ProtocolTransTypeType DslProtocolTransType; // (1)\r
+ const Dcm_DslBufferType *DslProtocolRxBufferID; // (1)\r
+ const Dcm_DslBufferType *DslProtocolTxBufferID; // (1)\r
+ const Dcm_DsdServiceTableType *DslProtocolSIDTable; // (1)\r
+ const Dcm_DslProtocolTimingRowType *DslProtocolTimeLimit; // (0..1)\r
// Containers\r
- const Dcm_DslConnectionType *DslConnection; // (1..*)\r
+ const Dcm_DslConnectionType *DslConnection; // (1..*)\r
// Reference to runtime parameters to this protocol.\r
- Dcm_DslRunTimeProtocolParametersType *DslRunTimeProtocolParameters; // Maybe this needs to change to index.\r
- boolean Arc_EOL;\r
+ Dcm_DslRunTimeProtocolParametersType *DslRunTimeProtocolParameters; // Maybe this needs to change to index.\r
+ boolean Arc_EOL;\r
};\r
\r
// 10.2.9\r
typedef struct {\r
-// Containers\r
- const Dcm_DslProtocolRxType *DslProtocolRxGlobalList; // (1..*) A polite list for all RX protocol configurations.\r
- const Dcm_DslProtocolTxType *DslProtocolTxGlobalList; // (1..*) A polite list for all TX protocol configurations.\r
-const Dcm_DslProtocolRowType *DslProtocolRowList; // (1..*)\r
+ // Containers\r
+ const Dcm_DslProtocolRxType *DslProtocolRxGlobalList; // (1..*) A polite list for all RX protocol configurations.\r
+ const Dcm_DslProtocolTxType *DslProtocolTxGlobalList; // (1..*) A polite list for all TX protocol configurations.\r
+ const Dcm_DslProtocolRowType *DslProtocolRowList; // (1..*)\r
} Dcm_DslProtocolType;\r
\r
// 10.2.19\r
typedef struct {\r
-Dcm_CallbackIndicationFncType Indication;\r
-boolean Arc_EOL;\r
-} Dcm_DslServiceRequestIndicationType;\r
+ Dcm_CallbackIndicationFncType Indication;\r
+ boolean Arc_EOL;\r
+} Dcm_DslServiceRequestIndicationType; /** @req DCM681 */\r
\r
// 10.2.20\r
typedef struct {\r
-Dcm_CallbackGetSesChgPermissionFncType GetSesChgPermission;\r
-Dcm_CallbackChangeIndicationFncType ChangeIndication;\r
-Dcm_CallbackConfirmationRespPendFncType ConfirmationRespPend;\r
-boolean Arc_EOL;\r
-} Dcm_DslSessionControlType;\r
+ Dcm_CallbackGetSesChgPermissionFncType GetSesChgPermission;\r
+ Dcm_CallbackChangeIndicationFncType ChangeIndication;\r
+ Dcm_CallbackConfirmationRespPendFncType ConfirmationRespPend;\r
+ boolean Arc_EOL;\r
+} Dcm_DslSessionControlType; /** @req DCM680 */\r
\r
// 10.2.5\r
typedef struct {\r
-// Containers\r
-const Dcm_DslBufferType *DslBuffer; // (1..256)\r
-const Dcm_DslCallbackDCMRequestServiceType *DslCallbackDCMRequestService; // (1..*)\r
-const Dcm_DslDiagRespType *DslDiagResp; // (1)\r
-const Dcm_DslProtocolType *DslProtocol; // (1)\r
-const Dcm_DslProtocolTimingType *DslProtocolTiming; // (1)\r
-const Dcm_DslServiceRequestIndicationType *DslServiceRequestIndication; // (0..*)\r
-const Dcm_DslSessionControlType *DslSessionControl; // (1..*)\r
+ // Containers\r
+ const Dcm_DslBufferType *DslBuffer; // (1..256)\r
+ const Dcm_DslCallbackDCMRequestServiceType *DslCallbackDCMRequestService; // (1..*)\r
+ const Dcm_DslDiagRespType *DslDiagResp; // (1)\r
+ const Dcm_DslProtocolType *DslProtocol; // (1)\r
+ const Dcm_DslProtocolTimingType *DslProtocolTiming; // (1)\r
+ const Dcm_DslServiceRequestIndicationType *DslServiceRequestIndication; // (0..*)\r
+ const Dcm_DslSessionControlType *DslSessionControl; // (1..*)\r
} Dcm_DslType;\r
\r
// 10.2.1 Dcm\r
typedef struct {\r
-// Containers\r
-const Dcm_DspType *Dsp; // (1)\r
-const Dcm_DsdType *Dsd; // (1)\r
-const Dcm_DslType *Dsl; // (1)\r
+ // Containers\r
+ const Dcm_DspType *Dsp; // (1)\r
+ const Dcm_DsdType *Dsd; // (1)\r
+ const Dcm_DslType *Dsl; // (1)\r
} Dcm_ConfigType;\r
\r
/*\r
#ifndef DCM_H_\r
#define DCM_H_\r
\r
-#define DCM_MODULE_ID MODULE_ID_DCM\r
+#define DCM_MODULE_ID MODULE_ID_DCM /** @req DCM052 */\r
#define DCM_VENDOR_ID 1\r
\r
#define DCM_SW_MAJOR_VERSION 1\r
/*\r
* Interfaces for BSW components (8.3.1)\r
*/\r
-#if ( DCM_VERSION_INFO_API == STD_ON )\r
-#define Dcm_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,DCM)\r
+#if ( DCM_VERSION_INFO_API == STD_ON ) /** @req DCM337 */\r
+#define Dcm_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,DCM) /** @req DCM065 */ /** @req DCM335 */ /** @req DCM336 */\r
#endif /* DCM_VERSION_INFO_API */\r
\r
-void Dcm_Init( void );\r
+void Dcm_Init( void ); /** @req DCM037 */\r
\r
\r
/*\r
* Interfaces for BSW modules and to SW-Cs (8.3.2)\r
*/\r
-Std_ReturnType Dcm_GetSecurityLevel(Dcm_SecLevelType *secLevel);\r
-Std_ReturnType Dcm_GetSesCtrlType(Dcm_SesCtrlType *sesCtrlType);\r
-Std_ReturnType Dcm_GetActiveProtocol(Dcm_ProtocolType *activeProtocol);\r
+Std_ReturnType Dcm_GetSecurityLevel(Dcm_SecLevelType *secLevel); /** @req DCM338 */\r
+Std_ReturnType Dcm_GetSesCtrlType(Dcm_SesCtrlType *sesCtrlType); /** @req DCM339 */\r
+Std_ReturnType Dcm_GetActiveProtocol(Dcm_ProtocolType *activeProtocol); /** @req DCM340 */\r
\r
/*\r
* Interface for basic software scheduler (8.5)\r
*/\r
-void Dcm_MainFunction( void );\r
+void Dcm_MainFunction( void ); /** @req DCM053 */\r
\r
\r
#endif /*DCM_H_*/\r
/*\r
* Interfaces for callback notifications from PduR and ComM (8.4)\r
*/\r
-BufReq_ReturnType Dcm_ProvideRxBuffer(PduIdType dcmRxPduId, PduLengthType tpSduLength, PduInfoType **pduInfoPtr);\r
-void Dcm_RxIndication(PduIdType dcmRxPduId, NotifResultType result);\r
-BufReq_ReturnType Dcm_ProvideTxBuffer(PduIdType dcmTxPduId, PduInfoType **pduInfoPtr, PduLengthType length);\r
-void Dcm_TxConfirmation(PduIdType dcmTxPduId, NotifResultType result);\r
-void Dcm_ComM_NoComModeEntered(void);\r
-void Dcm_ComM_SilentComModeEntered(void);\r
-void Dcm_ComM_FullComModeEntered(void);\r
+BufReq_ReturnType Dcm_ProvideRxBuffer(PduIdType dcmRxPduId, PduLengthType tpSduLength, PduInfoType **pduInfoPtr); /** @req DCM094 */\r
+void Dcm_RxIndication(PduIdType dcmRxPduId, NotifResultType result); /** @req DCM093 */\r
+BufReq_ReturnType Dcm_ProvideTxBuffer(PduIdType dcmTxPduId, PduInfoType **pduInfoPtr, PduLengthType length); /** @req DCM092 */\r
+void Dcm_TxConfirmation(PduIdType dcmTxPduId, NotifResultType result); /** @req DCM351 */\r
+void Dcm_ComM_NoComModeEntered(void); /** @req DCM356 */\r
+void Dcm_ComM_SilentComModeEntered(void); /** @req DCM358 */\r
+void Dcm_ComM_FullComModeEntered(void); /** @req DCM360 */\r
\r
#endif /*DCM_CBK_H_*/\r