#include "CanTp_Cbk.h"\r
#endif\r
\r
+#if defined(USE_J1939TP)\r
+#include "J1939Tp_Cbk.h"\r
+#endif\r
+\r
#if defined(USE_CANNM)\r
#include "CanNm.h"\r
#endif\r
\r
canPdu.length = PduInfoPtr->SduLength;\r
canPdu.sdu = PduInfoPtr->SduDataPtr;\r
- canPdu.swPduHandle = CanTxPduId;\r
+ canPdu.swPduHandle = CanTxPduId; // e.g. ARC_PDUR_CANIF\r
\r
Can_ReturnType rVal = Can_Write(txEntry->CanIfCanTxPduHthRef->CanIfHthIdSymRef, &canPdu);\r
\r
return;\r
#endif\r
break;\r
+ case CANIF_USER_TYPE_J1939TP:\r
+ // Send Can frame to CAN TP\r
+#if defined(USE_J1939TP)\r
+ {\r
+ PduInfoType J1939TpRxPdu;\r
+ J1939TpRxPdu.SduLength = CanDlc;\r
+ J1939TpRxPdu.SduDataPtr = (uint8 *)CanSduPtr;\r
+ J1939Tp_RxIndication(entry->CanIfCanRxPduId, &J1939TpRxPdu);\r
+ }\r
+ return;\r
+#endif\r
+ break; \r
}\r
}\r
\r
\r
void CanIf_ControllerBusOff(uint8 Controller)\r
{\r
- // We call this a CanIf channel. Hopefully makes it easier to follow.\r
- CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
+ CanIf_Arc_ChannelIdType channel = 0xff;\r
\r
VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_CONTROLLER_BUSOFF_ID, CANIF_E_UNINIT );\r
+\r
+ for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+ {\r
+ if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+ {\r
+ channel = i;\r
+ }\r
+ }\r
+\r
VALIDATE_NO_RV( Controller < CANIF_CHANNEL_CNT, CANIF_CONTROLLER_BUSOFF_ID, CANIF_E_PARAM_CONTROLLER );\r
\r
// According to figure 35 in canif spec this should be done in\r
\r
void CanIf_SetWakeupEvent(uint8 Controller)\r
{\r
-#if ( CANIF_DEV_ERROR_DETECT == STD_ON )\r
- // We call this a CanIf channel. Hopefully makes it easier to follow.\r
- CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
-#else\r
- (void)Controller;\r
-#endif\r
+ CanIf_Arc_ChannelIdType channel = 0xff;\r
\r
- VALIDATE_NO_RV(FALSE, CANIF_SETWAKEUPEVENT_ID, CANIF_E_NOK_NOSUPPORT);\r
- VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_SETWAKEUPEVENT_ID, CANIF_E_UNINIT );\r
- VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_SETWAKEUPEVENT_ID, CANIF_E_PARAM_CONTROLLER );\r
+ VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_SETWAKEUPEVENT_ID, CANIF_E_UNINIT );\r
\r
- // Not supported\r
+ for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+ {\r
+ if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+ {\r
+ channel = i;\r
+ }\r
+ }\r
+\r
+ VALIDATE_NO_RV(FALSE, CANIF_SETWAKEUPEVENT_ID, CANIF_E_NOK_NOSUPPORT);\r
+ VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_SETWAKEUPEVENT_ID, CANIF_E_PARAM_CONTROLLER );\r
+\r
+ // Not supported\r
}\r
\r
void CanIf_Arc_Error(uint8 Controller, Can_Arc_ErrorType Error)\r
{\r
- // We call this a CanIf channel. Hopefully makes it easier to follow.\r
- CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
+ CanIf_Arc_ChannelIdType channel = 0xff;\r
\r
VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_ARCERROR_ID, CANIF_E_UNINIT );\r
- VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_ARCERROR_ID, CANIF_E_PARAM_CONTROLLER );\r
\r
- /* Same handling for Arc error as for BUS_OFF even if not in AR req.\r
- * This because we do want same handling for upper layer for restart of channel\r
- * According to figure 35 in canif spec this should be done in\r
- * Can driver but it is better to do it here */\r
- CanIf_SetControllerMode(channel, CANIF_CS_STOPPED);\r
+ for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+ {\r
+ if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+ {\r
+ channel = i;\r
+ }\r
+ }\r
+\r
+ VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_ARCERROR_ID, CANIF_E_PARAM_CONTROLLER );\r
\r
if (CanIf_ConfigPtr->DispatchConfig->CanIfErrorNotificaton != NULL)\r
{\r