#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
// Helper to get the Can Controller refered to by a CanIf Channel\r
#define ARC_GET_CHANNEL_CONTROLLER(_channel) \\r
- CanIf_ConfigPtr->Arc_ChannelToControllerMap[channel]\r
+ CanIf_ConfigPtr->Arc_ChannelToControllerMap[_channel]\r
\r
/* Global configure */\r
static const CanIf_ConfigType *CanIf_ConfigPtr;\r
} else {\r
return &CanIf_ConfigPtr->InitConfig->CanIfTxPduConfigPtr[id];\r
}\r
- }\r
+}\r
\r
+
#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )\r
-CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id)\r
-#else\r
-static const CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id)
-#endif\r
-{
- if (id >= CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanRxPduIds) {
- return NULL;
- } else {
- return &CanIf_ConfigPtr->InitConfig->CanIfRxPduConfigPtr[id];
- }
-}
+CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id) {\r
+ if (id >= CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanRxPduIds) {\r
+ return NULL;\r
+ } else {\r
+ return &CanIf_ConfigPtr->InitConfig->CanIfRxPduConfigPtr[id];\r
+ }\r
+}\r
-#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )
const CanIf_HrhConfigType* CanIf_Arc_GetReceiveHandler(CanIf_Arc_ChannelIdType Channel) {
const CanIf_InitHohConfigType *hohConfig;
const CanIf_HrhConfigType *hrhConfig;
\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
case CANIF_USER_TYPE_CAN_PDUR:\r
// Send Can frame to PDU router\r
#if defined(USE_PDUR)\r
- PduR_CanIfRxIndication(entry->CanIfCanRxPduId,CanSduPtr);\r
+ {\r
+ PduInfoType pduInfo;\r
+ pduInfo.SduLength = CanDlc;\r
+ pduInfo.SduDataPtr = (uint8 *)CanSduPtr;\r
+ PduR_CanIfRxIndication(entry->CanIfCanRxPduId,&pduInfo);\r
+ }\r
return;\r
#endif\r
break;\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
-#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 = Controller;\r
-#endif\r
+ CanIf_Arc_ChannelIdType channel = 0xff;\r
\r
VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_ARCERROR_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( channel < CANIF_CHANNEL_CNT, CANIF_ARCERROR_ID, CANIF_E_PARAM_CONTROLLER );\r
\r
if (CanIf_ConfigPtr->DispatchConfig->CanIfErrorNotificaton != NULL)\r
{\r
CanIf_ConfigPtr->DispatchConfig->CanIfErrorNotificaton(Controller, Error);\r
}\r
+\r
+ // Special fix for restart of bus incase of general can error i.e. connection to CanSM\r
+ if (CanIf_ConfigPtr->DispatchConfig->CanIfBusOffNotification != NULL)\r
+ {\r
+ CanIf_ConfigPtr->DispatchConfig->CanIfBusOffNotification(channel);\r
+ }\r
}\r
\r
uint8 CanIf_Arc_GetChannelDefaultConfIndex(CanIf_Arc_ChannelIdType Channel)