\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
-\r
case CANIF_USER_TYPE_J1939TP:\r
// Send Can frame to CAN TP\r
#if defined(USE_J1939TP)\r
}\r
return;\r
#endif\r
- break;\r
+ break; \r
}\r
-\r
}\r
\r
entry++;\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)