* @{ */\r
\r
/** @file CanIf_Cfg.h\r
- * Definitions of configuration parameters for CAN Interface.\r
*/\r
\r
#warning "This default file may only be used as an example!"\r
CANIF_CHANNEL_CNT,\r
} CanIf_Arc_ChannelIdType;\r
\r
-/** Software filtering type */\r
-typedef enum {\r
- CANIF_SOFTFILTER_TYPE_BINARY = 0, /**< Not supported */\r
- CANIF_SOFTFILTER_TYPE_INDEX, /**< Not supported */\r
- CANIF_SOFTFILTER_TYPE_LINEAR, /**< Not supported */\r
- CANIF_SOFTFILTER_TYPE_TABLE, /**< Not supported */\r
- CANIF_SOFTFILTER_TYPE_MASK, /**< CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering */\r
-} CanIf_SoftwareFilterTypeType;\r
-\r
-/** Type of the upper layer interfacing this module */\r
-typedef enum {\r
- CANIF_USER_TYPE_CAN_NM,\r
- CANIF_USER_TYPE_CAN_TP,\r
- CANIF_USER_TYPE_CAN_PDUR,\r
- CANIF_USER_TYPE_CAN_SPECIAL,\r
-} CanIf_UserTypeType;\r
-\r
-/** Notification function for CANIF_USER_TYPE_CAN_SPECIAL */\r
-typedef void (*CanIf_FuncTypeCanSpecial)(PduIdType, const uint8 *, uint8, Can_IdType);\r
-\r
-/** Defines if PDU Can id can be changed at runtime. */\r
-typedef enum {\r
- CANIF_PDU_TYPE_STATIC = 0,\r
- CANIF_PDU_TYPE_DYNAMIC /**< Not supported */\r
-} CanIf_PduTypeType;\r
-\r
-/** PDU Can id type */\r
-typedef enum {\r
- CANIF_CAN_ID_TYPE_29 = 0,\r
- CANIF_CAN_ID_TYPE_11\r
-} CanIf_CanIdTypeType;\r
-\r
-/*\r
- * Public container\r
- */\r
#define CANIF_VERSION_INFO_API STD_ON /**< Build version info API */\r
#define CANIF_DEV_ERROR_DETECT STD_ON /**< Enable Development Error Trace */\r
#define CANIF_DLC_CHECK STD_ON /**< Enable/disable DLC checking. */\r
+#define CANIF_ARC_RUNTIME_PDU_CONFIGURATION STD_OFF\r
#define CANIF_MULITPLE_DRIVER_SUPPORT STD_OFF /**< Not supported */\r
#define CANIF_READRXPDU_DATA_API STD_OFF /**< Not supported */\r
#define CANIF_READRXPDU_NOTIFY_STATUS_API STD_OFF /**< Not supported */\r
#define CANIF_TRANSCEIVER_API STD_OFF /**< Not supported */\r
#define CANIF_TRANSMIT_CANCELLATION STD_OFF /**< Not supported */\r
\r
-\r
-//-------------------------------------------------------------------\r
-\r
-/** Parameters for configuring Can id ranges. Not supported. */\r
-typedef struct {\r
- /** Lower CAN Identifier of a receive CAN L-PDU for identifier range\r
- * definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
- * Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer */\r
- uint32 CanIfRxPduLowerCanId;\r
-\r
- /** Upper CAN Identifier of a receive CAN L-PDU for identifier range\r
- * definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
- * Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer */\r
- uint32 CanIfRxPduUpperCanId;\r
-} CanIf_HrhRangeConfigType;\r
-\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHrhConfig container\r
- */\r
-/** Definition of Hardware Receive Handle */\r
-typedef struct {\r
- /** Defines the HRH type i.e, whether its a BasicCan or FullCan. If BasicCan is\r
- * configured, software filtering is enabled. */\r
- Can_Arc_HohType CanIfHrhType;\r
-\r
- /** Selects the hardware receive objects by using the HRH range/list from\r
- * CAN Driver configuration to define, for which HRH a software filtering has\r
- * to be performed at during receive processing. True: Software filtering is\r
- * enabled False: Software filtering is disabled */\r
- boolean CanIfSoftwareFilterHrh;\r
-\r
- /** Reference to controller Id to which the HRH belongs to. A controller can\r
- * contain one or more HRHs. */\r
- CanIf_Arc_ChannelIdType CanIfCanControllerHrhIdRef;\r
-\r
- /** The parameter refers to a particular HRH object in the CAN Driver Module\r
- * configuration. The HRH id is unique in a given CAN Driver. The HRH Ids\r
- * are defined in the CAN Driver Module and hence it is derived from CAN\r
- * Driver Configuration. */\r
- Can_Arc_HRHType CanIfHrhIdSymRef ;\r
-\r
- /** Defines the parameters required for configuraing multiple\r
- * CANID ranges for a given same HRH. */\r
- const CanIf_HrhRangeConfigType *CanIfHrhRangeConfig;\r
-\r
- /** End Of List. Set to TRUE if this is the last object in the list. */\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_HrhConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHthConfig container\r
- */\r
-/** Definition of Hardware Transmit Handle */\r
-typedef struct {\r
- /** Defines the HTH type i.e, whether its a BasicCan or FullCan. */\r
- Can_Arc_HohType CanIfHthType;\r
-\r
- /** Reference to controller Id to which the HTH belongs to. A controller\r
- * can contain one or more HTHs */\r
- CanIf_Arc_ChannelIdType CanIfCanControllerIdRef;\r
-\r
- /** The parameter refers to a particular HTH object in the CAN Driver Module\r
- * configuration. The HTH id is unique in a given CAN Driver. The HTH Ids\r
- * are defined in the CAN Driver Module and hence it is derived from CAN\r
- * Driver Configuration. */\r
- Can_Arc_HTHType CanIfHthIdSymRef ;\r
-\r
- /** End Of List. Set to TRUE if this is the last object in the list. */\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_HthConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHohConfig container\r
- */\r
-/** Definition of Hardware Object Handle. */\r
-typedef struct {\r
- /** Reference to the CAN Driver controller config. */\r
- const Can_ConfigSetType *CanConfigSet;\r
-\r
- /** This container contains contiguration parameters for each hardware receive object. */\r
- const CanIf_HrhConfigType *CanIfHrhConfig;\r
-\r
- /** This container contains parameters releated to each HTH */\r
- const CanIf_HthConfigType *CanIfHthConfig;\r
-\r
- /** End Of List. Set to TRUE if this is the last object in the list. */\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_InitHohConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfTxPduConfig container\r
- */\r
-\r
-/** Definition of Tx PDU (Protocol Data Unit). */\r
-typedef struct {\r
- /** ECU wide unique, symbolic handle for transmit CAN L-PDU. The\r
- * CanIfCanTxPduId is configurable at pre-compile and post-built time.\r
- * Range: 0..max. number of CantTxPduIds PduIdType CanTxPduId; */\r
- PduIdType CanIfTxPduId;\r
-\r
- /** CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
- * PDU transmission. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
- * Extended CAN identifier */\r
- uint32 CanIfCanTxPduIdCanId;\r
-\r
- /** Data length code (in bytes) of transmit CAN L-PDUs used by the CAN\r
- * Driver for CAN L-PDU transmission. The data area size of a CAN L-Pdu\r
- * can have a range from 0 to 8 bytes. */\r
- uint8 CanIfCanTxPduIdDlc;\r
-\r
- /** Defines the type of each transmit CAN L-PDU.\r
- * DYNAMIC CAN ID is defined at runtime.\r
- * STATIC CAN ID is defined at compile-time. */\r
- CanIf_PduTypeType CanIfCanTxPduType;\r
-\r
-#if ( CANIF_READTXPDU_NOTIFY_STATUS_API == STD_ON )\r
- /** Enables and disables transmit confirmation for each transmit CAN L-PDU\r
- * for reading its notification status. True: Enabled False: Disabled */\r
- boolean CanIfReadTxPduNotifyStatus;\r
-#endif\r
-\r
- /** CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
- * PDU transmission.\r
- * EXTENDED_CAN The CANID is of type Extended (29 bits).\r
- * STANDARD_CAN The CANID is of type Standard (11 bits). */\r
- CanIf_CanIdTypeType CanIfTxPduIdCanIdType;\r
-\r
- /** Name of target confirmation services to target upper layers (PduR, CanNm\r
- * and CanTp. If parameter is not configured then no call-out function is\r
- * provided by the upper layer for this Tx L-PDU. */\r
- void (*CanIfUserTxConfirmation)(PduIdType); /* CANIF 109 */\r
-\r
- /** Handle, that defines the hardware object or the pool of hardware objects\r
- * configured for transmission. The parameter refers HTH Id, to which the L-\r
- * PDU belongs to. */\r
- const CanIf_HthConfigType *CanIfCanTxPduHthRef;\r
-\r
- /** Reference to the "global" Pdu structure to allow harmonization of handle\r
- * IDs in the COM-Stack. */\r
- void *PduIdRef;\r
-} CanIf_TxPduConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfRxPduConfig container\r
- */\r
-\r
-\r
-/** Definition of Rx PDU (Protocol Data Unit). */\r
-typedef struct {\r
- /** ECU wide unique, symbolic handle for receive CAN L-PDU. The\r
- * CanRxPduId is configurable at pre-compile and post-built time. It shall fulfill\r
- * ANSI/AUTOSAR definitions for constant defines. Range: 0..max. number\r
- * of defined CanRxPduIds */\r
- PduIdType CanIfCanRxPduId;\r
-\r
- /** CAN Identifier of Receive CAN L-PDUs used by the CAN Interface. Exa:\r
- * Software Filtering. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
- * Extended CAN identifier */\r
- uint32 CanIfCanRxPduCanId;\r
-\r
- /** Data Length code of received CAN L-PDUs used by the CAN Interface.\r
- * Exa: DLC check. The data area size of a CAN L-PDU can have a range\r
- * from 0 to 8 bytes. uint8 CanIfCanRxPduDlc; */\r
- uint8 CanIfCanRxPduDlc;\r
-\r
-#if ( CANIF_CANPDUID_READDATA_API == STD_ON )\r
- /** Enables and disables the Rx buffering for reading of received L-PDU data.\r
- * True: Enabled False: Disabled */\r
- boolean CanIfReadRxPduData;\r
-#endif\r
-\r
-#if ( CANIF_READRXPDU_NOTIF_STATUS_API == STD_ON )\r
- /** CanIfReadRxPduNotifyStatus {CANIF_READRXPDU_NOTIFY_STATUS}\r
- * Enables and disables receive indication for each receive CAN L-PDU for\r
- * reading its' notification status. True: Enabled False: Disabled */\r
- boolean CanIfReadRxPduNotifyStatus;\r
-#endif\r
-\r
- /** CAN Identifier of receive CAN L-PDUs used by the CAN Driver for CAN L-\r
- * PDU transmission.\r
- * EXTENDED_CAN The CANID is of type Extended (29 bits)\r
- * STANDARD_CAN The CANID is of type Standard (11 bits) */\r
- CanIf_CanIdTypeType CanIfRxPduIdCanIdType;\r
-\r
- /** This parameter defines the type of the receive indication call-outs called to\r
- * the corresponding upper layer the used TargetRxPduId belongs to. */\r
- CanIf_UserTypeType CanIfRxUserType;\r
-\r
- /** Name of target indication services to target upper layers (PduRouter,\r
- * CanNm, CanTp and ComplexDeviceDrivers). If parameter is 0 no call-out\r
- * function is configured. */\r
- void *CanIfUserRxIndication;\r
-\r
- /** The HRH to which Rx L-PDU belongs to, is referred through this\r
- * parameter. */\r
- const CanIf_HrhConfigType *CanIfCanRxPduHrhRef;\r
-\r
- /** Reference to the "global" Pdu structure to allow harmonization of handle\r
- * IDs in the COM-Stack. */\r
- void *PduIdRef;\r
-\r
- /** Defines the type of software filtering that should be used\r
- * for this receive object. */\r
- CanIf_SoftwareFilterTypeType CanIfSoftwareFilterType;\r
-\r
- /** Acceptance filters, 1 - care, 0 - don't care.\r
- * Is enabled by the CanIfSoftwareFilterMask in CanIf_HrhConfigType\r
- * ArcCore exension */\r
- uint32 CanIfCanRxPduCanIdMask;\r
-\r
-} CanIf_RxPduConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-\r
-/*\r
- * CanIfControllerConfig container\r
- */\r
-/** Not supported. */\r
-typedef enum {\r
- CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
- CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
- CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
-} CanIf_WakeupSupportType;\r
-\r
-\r
-/** Container used to create channel init configurations.\r
- * @see CanIf_Arc_ConfigurationIndexType\r
- * @see CanIf_Arc_ChannelIdType */\r
-typedef struct {\r
- /** Not used */\r
- CanIf_WakeupSupportType WakeupSupport;\r
-\r
- /** CanIf-specific id of the controller */\r
- CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
-\r
- /** Not used */\r
- const char CanIfDriverNameRef[8];\r
-\r
- /** Reference to */\r
- const Can_ControllerConfigType *CanIfInitControllerRef;\r
-} CanIf_ControllerConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfTransceiverDrvConfig container\r
- */\r
-\r
-typedef struct {\r
- boolean TrcvWakeupNotification;\r
- uint8 TrcvIdRef;\r
-} CanIf_TransceiverDrvConfigType;\r
-\r
-\r
-typedef struct {\r
- uint32 todo;\r
-} CanIf_TransceiverConfigType;\r
-\r
-/** Callout functions with respect to the upper layers. This callout functions\r
- * defined in this container are common to all configured underlying CAN\r
- * Drivers / CAN Transceiver Drivers. */\r
-typedef struct {\r
- /** Name of target BusOff notification services to target upper layers\r
- * (PduRouter, CanNm, CanTp and ComplexDeviceDrivers). */\r
- void (*CanIfBusOffNotification)(uint8 Controller);\r
-\r
- /** Name of target wakeup notification services to target upper layers\r
- * e.g Ecu_StateManager. If parameter is 0\r
- * no call-out function is configured. */\r
- void (*CanIfWakeUpNotification)();\r
-\r
- /** Name of target wakeup validation notification services to target upper\r
- * layers (ECU State Manager). If parameter is 0 no call-out function is\r
- * configured. */\r
- void (*CanIfWakeupValidNotification)();\r
-\r
- /** ArcCore ext. */\r
- void (*CanIfErrorNotificaton)(uint8,Can_Arc_ErrorType);\r
-\r
-} CanIf_DispatchConfigType;\r
-\r
-/** This container contains the references to the configuration setup of each\r
- * underlying CAN driver. */\r
-typedef struct {\r
- /** Not used. */\r
- uint32 CanIfConfigSet;\r
-\r
- /** Size of Rx PDU list. */\r
- uint32 CanIfNumberOfCanRxPduIds;\r
- /** Size of Tx PDU list. */\r
- uint32 CanIfNumberOfCanTXPduIds;\r
- /** Not used */\r
- uint32 CanIfNumberOfDynamicCanTXPduIds;\r
-\r
- //\r
- // Containers\r
- //\r
-\r
- /** Hardware Object Handle list */\r
- const CanIf_InitHohConfigType *CanIfHohConfigPtr;\r
-\r
- /** Rx PDU's list */\r
- const CanIf_RxPduConfigType *CanIfRxPduConfigPtr;\r
-\r
- /** Tx PDU's list */\r
- const CanIf_TxPduConfigType *CanIfTxPduConfigPtr;\r
-\r
-} CanIf_InitConfigType;\r
-\r
-/** Top level config container. */\r
-typedef struct {\r
- /** Reference to the list of channel init configurations. */\r
- const CanIf_ControllerConfigType *ControllerConfig;\r
-\r
- /** Callout functions with respect to the upper layers. This callout\r
- * functions defined in this container are common to all\r
- * configured underlying CAN Drivers / CAN Transceiver Drivers */\r
- const CanIf_DispatchConfigType *DispatchConfig;\r
-\r
- /** This container contains the init parameters of the CAN Interface. */\r
- const CanIf_InitConfigType *InitConfig;\r
-\r
- /** Not used */\r
- const CanIf_TransceiverConfigType *TransceiverConfig;\r
-\r
- /** ArcCore: Contains the mapping from CanIf-specific Channels to Can Controllers */\r
- const CanControllerIdType *Arc_ChannelToControllerMap;\r
-} CanIf_ConfigType;\r
+#include "CanIf_ConfigTypes.h"\r
\r
/** Instance of the top level container. */\r
extern CanIf_ConfigType CanIf_Config;\r
* for more details.\r
* -------------------------------- Arctic Core ------------------------------*/\r
\r
+/** @addtogroup CanIf CAN Interface\r
+ * @{ */\r
\r
-\r
-\r
-\r
-\r
-\r
+/** @file CanIf_Cfg.h\r
+ */\r
\r
#warning "This default file may only be used as an example!"\r
\r
\r
#include "Can.h"\r
\r
-// Identifiers for the elements in CanIfControllerConfig[]\r
-// This is the ConfigurationIndex in CanIf_InitController()\r
+/** Identifiers for the elements in CanIfControllerConfig[].\r
+ * This is the ConfigurationIndex in CanIf_InitController(). */\r
typedef enum {\r
CANIF_CHANNEL_0_CONFIG_0 = 0,\r
\r
CANIF_CHANNEL_CONFIGURATION_CNT\r
} CanIf_Arc_ConfigurationIndexType;\r
\r
+/** Channel id's */\r
typedef enum {\r
CANIF_CHANNEL_0,\r
CANIF_CHANNEL_1,\r
CANIF_CHANNEL_CNT,\r
} CanIf_Arc_ChannelIdType;\r
\r
-typedef enum {\r
- CANIF_SOFTFILTER_TYPE_BINARY = 0, // Not supported\r
- CANIF_SOFTFILTER_TYPE_INDEX, // Not supported\r
- CANIF_SOFTFILTER_TYPE_LINEAR, // Not supported\r
- CANIF_SOFTFILTER_TYPE_TABLE, // Not supported\r
- CANIF_SOFTFILTER_TYPE_MASK, // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
-} CanIf_SoftwareFilterTypeType;\r
-\r
-typedef enum {\r
- CANIF_USER_TYPE_CAN_NM,\r
- CANIF_USER_TYPE_CAN_TP,\r
- CANIF_USER_TYPE_CAN_PDUR,\r
- CANIF_USER_TYPE_CAN_SPECIAL,\r
-} CanIf_UserTypeType;\r
-\r
-\r
-\r
-typedef void (*CanIf_FuncTypeCanSpecial)(PduIdType, const uint8 *, uint8, Can_IdType);\r
-\r
-typedef enum {\r
- CANIF_PDU_TYPE_STATIC = 0,\r
- CANIF_PDU_TYPE_DYNAMIC // Not supported\r
-} CanIf_PduTypeType;\r
-\r
-typedef enum {\r
- CANIF_CAN_ID_TYPE_29 = 0,\r
- CANIF_CAN_ID_TYPE_11\r
-} CanIf_CanIdTypeType;\r
-\r
-/*\r
- * Public container\r
- */\r
-#define CANIF_VERSION_INFO_API STD_ON\r
-#define CANIF_DEV_ERROR_DETECT STD_ON\r
-#define CANIF_DLC_CHECK STD_ON\r
-#define CANIF_MULITPLE_DRIVER_SUPPORT STD_OFF // Not supported\r
-#define CANIF_READRXPDU_DATA_API STD_OFF // Not supported\r
-#define CANIF_READRXPDU_NOTIFY_STATUS_API STD_OFF // Not supported\r
-#define CANIF_READTXPDU_NOTIFY_STATUS_API STD_OFF // Not supported\r
-#define CANIF_SETDYNAMICTXID_API STD_OFF // Not supported\r
-#define CANIF_WAKEUP_EVENT_API STD_OFF // Not supported\r
-#define CANIF_TRANSCEIVER_API STD_OFF // Not supported\r
-#define CANIF_TRANSMIT_CANCELLATION STD_OFF // Not supported\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfHrhRangeConfig container\r
- */\r
-\r
-typedef struct {\r
- // Lower CAN Identifier of a receive CAN L-PDU for identifier range\r
- // definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
- // Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer\r
- uint32 CanIfRxPduLowerCanId;\r
-\r
- // Upper CAN Identifier of a receive CAN L-PDU for identifier range\r
- // definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
- // Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer\r
- uint32 CanIfRxPduUpperCanId;\r
-} CanIf_HrhRangeConfigType;\r
-\r
-\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHrhConfig container\r
- */\r
-typedef struct {\r
- // Defines the HRH type i.e, whether its a BasicCan or FullCan. If BasicCan is\r
- // configured, software filtering is enabled.\r
- Can_Arc_HohType CanIfHrhType;\r
-\r
- // Selects the hardware receive objects by using the HRH range/list from\r
- // CAN Driver configuration to define, for which HRH a software filtering has\r
- // to be performed at during receive processing. True: Software filtering is\r
- // enabled False: Software filtering is disabled\r
- boolean CanIfSoftwareFilterHrh;\r
-\r
- // Reference to controller Id to which the HRH belongs to. A controller can\r
- // contain one or more HRHs.\r
- CanIf_Arc_ChannelIdType CanIfCanControllerHrhIdRef;\r
-\r
- // The parameter refers to a particular HRH object in the CAN Driver Module\r
- // configuration. The HRH id is unique in a given CAN Driver. The HRH Ids\r
- // are defined in the CAN Driver Module and hence it is derived from CAN\r
- // Driver Configuration.\r
- Can_Arc_HRHType CanIfHrhIdSymRef ;\r
-\r
- // Defines the parameters required for configuraing multiple\r
- // CANID ranges for a given same HRH.\r
- const CanIf_HrhRangeConfigType *CanIfHrhRangeConfig;\r
-\r
- // End Of List. Set to TRUE is this is the last object in the list.\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_HrhConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHthConfig container\r
- */\r
-\r
-typedef struct {\r
- // Defines the HTH type i.e, whether its a BasicCan or FullCan.\r
- Can_Arc_HohType CanIfHthType;\r
-\r
- // Reference to controller Id to which the HTH belongs to. A controller\r
- // can contain one or more HTHs\r
- CanIf_Arc_ChannelIdType CanIfCanControllerIdRef;\r
-\r
- // The parameter refers to a particular HTH object in the CAN Driver Module\r
- // configuration. The HTH id is unique in a given CAN Driver. The HTH Ids\r
- // are defined in the CAN Driver Module and hence it is derived from CAN\r
- // Driver Configuration.\r
- Can_Arc_HTHType CanIfHthIdSymRef ;\r
-\r
- // End Of List. Set to TRUE is this is the last object in the list.\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_HthConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfInitHohConfig container\r
- */\r
-typedef struct {\r
- // Selects the CAN interface specific configuration setup. This type of external\r
- // data structure shall contain the post build initialization data for the\r
- // CAN interface for all underlying CAN Drivers.\r
- const Can_ConfigSetType *CanConfigSet;\r
-\r
- // This container contains contiguration parameters for each hardware receive object.\r
- const CanIf_HrhConfigType *CanIfHrhConfig;\r
-\r
- // This container contains parameters releated to each HTH\r
- const CanIf_HthConfigType *CanIfHthConfig;\r
-\r
- // End Of List. Set to TRUE is this is the last object in the list.\r
- boolean CanIf_Arc_EOL;\r
-} CanIf_InitHohConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfTxPduConfig container\r
- */\r
-\r
-// This container contains the configuration (parameters) of each transmit\r
-// CAN L-PDU. The SHORT-NAME of "CanIfTxPduConfig" container\r
-// represents the symolic name of Transmit L-PDU.\r
-typedef struct {\r
- // ECU wide unique, symbolic handle for transmit CAN L-PDU. The\r
- // CanIfCanTxPduId is configurable at pre-compile and post-built time.\r
- // Range: 0..max. number of CantTxPduIds PduIdType CanTxPduId;\r
- PduIdType CanIfTxPduId;\r
-\r
- // CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
- // PDU transmission. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
- // Extended CAN identifier\r
- uint32 CanIfCanTxPduIdCanId;\r
-\r
- // Data length code (in bytes) of transmit CAN L-PDUs used by the CAN\r
- // Driver for CAN L-PDU transmission. The data area size of a CAN L-Pdu\r
- // can have a range from 0 to 8 bytes.\r
- uint8 CanIfCanTxPduIdDlc;\r
-\r
- // Defines the type of each transmit CAN L-PDU.\r
- // DYNAMIC CAN ID is defined at runtime.\r
- // STATIC CAN ID is defined at compile-time.\r
- CanIf_PduTypeType CanIfCanTxPduType;\r
-\r
-#if ( CANIF_READTXPDU_NOTIFY_STATUS_API == STD_ON )\r
- // Enables and disables transmit confirmation for each transmit CAN L-PDU\r
- // for reading its notification status. True: Enabled False: Disabled\r
- boolean CanIfReadTxPduNotifyStatus;\r
-#endif\r
-\r
- // CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
- // PDU transmission.\r
- // EXTENDED_CAN The CANID is of type Extended (29 bits)\r
- // STANDARD_CAN The CANID is of type Standard (11 bits)\r
- CanIf_CanIdTypeType CanIfTxPduIdCanIdType;\r
-\r
- // Name of target confirmation services to target upper layers (PduR, CanNm\r
- // and CanTp. If parameter is not configured then no call-out function is\r
- // provided by the upper layer for this Tx L-PDU.\r
- void (*CanIfUserTxConfirmation)(PduIdType); /* CANIF 109 */\r
-\r
- // Handle, that defines the hardware object or the pool of hardware objects\r
- // configured for transmission. The parameter refers HTH Id, to which the L-\r
- // PDU belongs to.\r
- const CanIf_HthConfigType *CanIfCanTxPduHthRef;\r
-\r
- // Reference to the "global" Pdu structure to allow harmonization of handle\r
- // IDs in the COM-Stack. ..\r
- void *PduIdRef;\r
-} CanIf_TxPduConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfRxPduConfig container\r
- */\r
-\r
-\r
-// This container contains the configuration (parameters) of each receive\r
-// CAN L-PDU. The SHORT-NAME of "CanIfRxPduConfig" container itself\r
-// represents the symolic name of Receive L-PDU.\r
-\r
-typedef struct {\r
- // ECU wide unique, symbolic handle for receive CAN L-PDU. The\r
- // CanRxPduId is configurable at pre-compile and post-built time. It shall fulfill\r
- // ANSI/AUTOSAR definitions for constant defines. Range: 0..max. number\r
- // of defined CanRxPduIds\r
- PduIdType CanIfCanRxPduId;\r
-\r
- // CAN Identifier of Receive CAN L-PDUs used by the CAN Interface. Exa:\r
- // Software Filtering. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
- // Extended CAN identifier\r
- uint32 CanIfCanRxPduCanId;\r
-\r
- // Data Length code of received CAN L-PDUs used by the CAN Interface.\r
- // Exa: DLC check. The data area size of a CAN L-PDU can have a range\r
- // from 0 to 8 bytes. uint8 CanIfCanRxPduDlc;\r
- uint8 CanIfCanRxPduDlc;\r
-\r
-#if ( CANIF_CANPDUID_READDATA_API == STD_ON )\r
- // Enables and disables the Rx buffering for reading of received L-PDU data.\r
- // True: Enabled False: Disabled\r
- boolean CanIfReadRxPduData;\r
-#endif\r
-\r
-#if ( CANIF_READRXPDU_NOTIF_STATUS_API == STD_ON )\r
- // CanIfReadRxPduNotifyStatus {CANIF_READRXPDU_NOTIFY_STATUS}\r
- // Enables and disables receive indication for each receive CAN L-PDU for\r
- // reading its' notification status. True: Enabled False: Disabled\r
- boolean CanIfReadRxPduNotifyStatus;\r
-#endif\r
-\r
- // CAN Identifier of receive CAN L-PDUs used by the CAN Driver for CAN L-\r
- // PDU transmission.\r
- // EXTENDED_CAN The CANID is of type Extended (29 bits)\r
- // STANDARD_CAN The CANID is of type Standard (11 bits)\r
- CanIf_CanIdTypeType CanIfRxPduIdCanIdType;\r
-\r
- // This parameter defines the type of the receive indication call-outs called to\r
- // the corresponding upper layer the used TargetRxPduId belongs to.\r
- CanIf_UserTypeType CanIfRxUserType;\r
-\r
- // Name of target indication services to target upper layers (PduRouter,\r
- // CanNm, CanTp and ComplexDeviceDrivers). If parameter is 0 no call-out\r
- // function is configured.\r
- void *CanIfUserRxIndication;\r
-\r
- // The HRH to which Rx L-PDU belongs to, is referred through this\r
- // parameter.\r
- const CanIf_HrhConfigType *CanIfCanRxPduHrhRef;\r
-\r
- // Reference to the "global" Pdu structure to allow harmonization of handle\r
- // IDs in the COM-Stack.\r
- void *PduIdRef;\r
-\r
- // Defines the type of software filtering that should be used\r
- // for this receive object.\r
- CanIf_SoftwareFilterTypeType CanIfSoftwareFilterType;\r
-\r
- // Acceptance filters, 1 - care, 0 - don't care.\r
- // Is enabled by the CanIfSoftwareFilterMask in CanIf_HrhConfigType\r
- // ArcCore exension\r
- uint32 CanIfCanRxPduCanIdMask;\r
-\r
-} CanIf_RxPduConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-\r
-/*\r
- * CanIfControllerConfig container\r
- */\r
-\r
-typedef enum {\r
- CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
- CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
- CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
-} CanIf_WakeupSupportType;\r
-\r
-\r
-// This is the type supplied to CanIf_InitController()\r
-typedef struct {\r
- CanIf_WakeupSupportType WakeupSupport; // Not used\r
-\r
- // CanIf-specific id of the controller\r
- CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
-\r
- const char CanIfDriverNameRef[8]; // Not used\r
-\r
- const Can_ControllerConfigType *CanIfInitControllerRef;\r
-} CanIf_ControllerConfigType;\r
-\r
-//-------------------------------------------------------------------\r
-/*\r
- * CanIfTransceiverDrvConfig container\r
- */\r
-\r
-typedef struct {\r
- boolean TrcvWakeupNotification;\r
- uint8 TrcvIdRef;\r
-} CanIf_TransceiverDrvConfigType;\r
-\r
-\r
-typedef struct {\r
- uint32 todo;\r
-} CanIf_TransceiverConfigType;\r
-\r
-// Callout functions with respect to the upper layers. This callout functions\r
-// defined in this container are common to all configured underlying CAN\r
-// Drivers / CAN Transceiver Drivers.\r
-typedef struct {\r
- // Name of target BusOff notification services to target upper layers\r
- // (PduRouter, CanNm, CanTp and ComplexDeviceDrivers).\r
- // Multiplicity: 1\r
- void (*CanIfBusOffNotification)(uint8 Controller);\r
-\r
- // Name of target wakeup notification services to target upper layers\r
- // e.g Ecu_StateManager. If parameter is 0\r
- // no call-out function is configured.\r
- // Multiplicity: 0..1\r
- void (*CanIfWakeUpNotification)();\r
-\r
- // Name of target wakeup validation notification services to target upper\r
- // layers (ECU State Manager). If parameter is 0 no call-out function is\r
- // configured.\r
- // Multiplicity: 0..1\r
- void (*CanIfWakeupValidNotification)();\r
-\r
- // ArcCore ext.\r
- void (*CanIfErrorNotificaton)(uint8,Can_Arc_ErrorType);\r
-\r
-} CanIf_DispatchConfigType;\r
-\r
-// This container contains the references to the configuration setup of each\r
-// underlying CAN driver.\r
-\r
-typedef struct {\r
- // Selects the CAN Interface specific configuration setup. This type of the\r
- // external data structure shall contain the post build initialization data for the\r
- // CAN Interface for all underlying CAN Dirvers. constant to CanIf_ConfigType\r
- uint32 CanIfConfigSet;\r
-\r
- uint32 CanIfNumberOfCanRxPduIds;\r
- uint32 CanIfNumberOfCanTXPduIds;\r
- uint32 CanIfNumberOfDynamicCanTXPduIds;\r
-\r
- //\r
- // Containers\r
- //\r
-\r
- // This container contains the reference to the configuration\r
- // setup of each underlying CAN driver.\r
- // Multiplicity: 0..*\r
- const CanIf_InitHohConfigType *CanIfHohConfigPtr;\r
-\r
- // This container contains the configuration (parameters) of each\r
- // receive CAN L-PDU. The SHORT-NAME of\r
- // "CanIfRxPduConfig" container itself represents the symolic\r
- // name of Receive L-PDU.\r
- // Multiplicity: 0..*\r
- const CanIf_RxPduConfigType *CanIfRxPduConfigPtr;\r
-\r
- // This container contains the configuration (parameters) of each\r
- // transmit CAN L-PDU. The SHORT-NAME of\r
- // "CanIfTxPduConfig" container represents the symolic name of\r
- // Transmit L-PDU.\r
- // Multiplicity: 0..*\r
- const CanIf_TxPduConfigType *CanIfTxPduConfigPtr;\r
-\r
-} CanIf_InitConfigType;\r
-\r
-\r
-typedef struct {\r
- // This container contains the configuration (parameters) of all\r
- // addressed CAN controllers by each underlying CAN driver.\r
- // Multiplicity: 1..*\r
- const CanIf_ControllerConfigType *ControllerConfig;\r
-\r
- // Callout functions with respect to the upper layers. This callout\r
- // functions defined in this container are common to all\r
- // configured underlying CAN Drivers / CAN Transceiver Drivers\r
- const CanIf_DispatchConfigType *DispatchConfig;\r
-\r
- // This container contains the init parameters of the CAN\r
- // Interface.\r
- // Multiplicity: 1..*\r
- const CanIf_InitConfigType *InitConfig;\r
-\r
- // This container contains the configuration (parameters) of all\r
- // addressed CAN transceivers by each underlying CAN\r
- // Transceiver Driver.\r
- // Multiplicity: 1..*\r
- const CanIf_TransceiverConfigType *TransceiverConfig;\r
-\r
- // ArcCore: Contains the mapping from CanIf-specific Channels to Can Controllers\r
- const CanControllerIdType *Arc_ChannelToControllerMap;\r
-} CanIf_ConfigType;\r
-\r
-\r
+#define CANIF_VERSION_INFO_API STD_ON /**< Build version info API */\r
+#define CANIF_DEV_ERROR_DETECT STD_ON /**< Enable Development Error Trace */\r
+#define CANIF_DLC_CHECK STD_ON /**< Enable/disable DLC checking. */\r
+#define CANIF_ARC_RUNTIME_PDU_CONFIGURATION STD_OFF\r
+#define CANIF_MULITPLE_DRIVER_SUPPORT STD_OFF /**< Not supported */\r
+#define CANIF_READRXPDU_DATA_API STD_OFF /**< Not supported */\r
+#define CANIF_READRXPDU_NOTIFY_STATUS_API STD_OFF /**< Not supported */\r
+#define CANIF_READTXPDU_NOTIFY_STATUS_API STD_OFF /**< Not supported */\r
+#define CANIF_SETDYNAMICTXID_API STD_OFF /**< Not supported */\r
+#define CANIF_WAKEUP_EVENT_API STD_OFF /**< Not supported */\r
+#define CANIF_TRANSCEIVER_API STD_OFF /**< Not supported */\r
+#define CANIF_TRANSMIT_CANCELLATION STD_OFF /**< Not supported */\r
+\r
+#include "CanIf_ConfigTypes.h"\r
+\r
+/** Instance of the top level container. */\r
extern CanIf_ConfigType CanIf_Config;\r
\r
#endif\r
-\r
+/** @} */\r
\r
#define CANIF_AR_PATCH_VERSION 2\r
\r
#define CANIF_SW_MAJOR_VERSION 1\r
-#define CANIF_SW_MINOR_VERSION 2\r
+#define CANIF_SW_MINOR_VERSION 3\r
#define CANIF_SW_PATCH_VERSION 0\r
\r
#include "Det.h"\r
--- /dev/null
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009 ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/** @addtogroup CanIf CAN Interface\r
+ * @{ */\r
+\r
+/** @file CanIf_ConfigTypes.h\r
+ * Definitions of configuration parameters for CAN Interface.\r
+ */\r
+\r
+#ifndef CANIF_CONFIGTYPES_H_\r
+#define CANIF_CONFIGTYPES_H_\r
+\r
+\r
+/** Software filtering type */\r
+typedef enum {\r
+ CANIF_SOFTFILTER_TYPE_BINARY = 0, /**< Not supported */\r
+ CANIF_SOFTFILTER_TYPE_INDEX, /**< Not supported */\r
+ CANIF_SOFTFILTER_TYPE_LINEAR, /**< Not supported */\r
+ CANIF_SOFTFILTER_TYPE_TABLE, /**< Not supported */\r
+ CANIF_SOFTFILTER_TYPE_MASK, /**< CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering */\r
+} CanIf_SoftwareFilterTypeType;\r
+\r
+/** Type of the upper layer interfacing this module */\r
+typedef enum {\r
+ CANIF_USER_TYPE_CAN_NM,\r
+ CANIF_USER_TYPE_CAN_TP,\r
+ CANIF_USER_TYPE_CAN_PDUR,\r
+ CANIF_USER_TYPE_CAN_SPECIAL\r
+} CanIf_UserTypeType;\r
+\r
+/** Notification function for CANIF_USER_TYPE_CAN_SPECIAL */\r
+typedef void (*CanIf_FuncTypeCanSpecial)(uint8 channel, PduIdType pduId, const uint8 *sduPtr, uint8 dlc, Can_IdType canId);\r
+\r
+/** Defines if PDU Can id can be changed at runtime. */\r
+typedef enum {\r
+ CANIF_PDU_TYPE_STATIC = 0,\r
+ CANIF_PDU_TYPE_DYNAMIC /**< Not supported */\r
+} CanIf_PduTypeType;\r
+\r
+/** PDU Can id type */\r
+typedef enum {\r
+ CANIF_CAN_ID_TYPE_29 = 0,\r
+ CANIF_CAN_ID_TYPE_11\r
+} CanIf_CanIdTypeType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfHrhRangeConfig container\r
+ */\r
+\r
+/** Parameters for configuring Can id ranges. Not supported. */\r
+typedef struct {\r
+ /** Lower CAN Identifier of a receive CAN L-PDU for identifier range\r
+ * definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
+ * Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer */\r
+ uint32 CanIfRxPduLowerCanId;\r
+\r
+ /** Upper CAN Identifier of a receive CAN L-PDU for identifier range\r
+ * definition, in which all CAN Ids shall pass the software filtering. Range: 11\r
+ * Bit for Standard CAN Identifier 29 Bit for Extended CAN Identifer */\r
+ uint32 CanIfRxPduUpperCanId;\r
+} CanIf_HrhRangeConfigType;\r
+\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfInitHrhConfig container\r
+ */\r
+/** Definition of Hardware Receive Handle */\r
+typedef struct {\r
+ /** Defines the HRH type i.e, whether its a BasicCan or FullCan. If BasicCan is\r
+ * configured, software filtering is enabled. */\r
+ Can_Arc_HohType CanIfHrhType;\r
+\r
+ /** Selects the hardware receive objects by using the HRH range/list from\r
+ * CAN Driver configuration to define, for which HRH a software filtering has\r
+ * to be performed at during receive processing. True: Software filtering is\r
+ * enabled False: Software filtering is disabled */\r
+ boolean CanIfSoftwareFilterHrh;\r
+\r
+ /** Reference to controller Id to which the HRH belongs to. A controller can\r
+ * contain one or more HRHs. */\r
+ CanIf_Arc_ChannelIdType CanIfCanControllerHrhIdRef;\r
+\r
+ /** The parameter refers to a particular HRH object in the CAN Driver Module\r
+ * configuration. The HRH id is unique in a given CAN Driver. The HRH Ids\r
+ * are defined in the CAN Driver Module and hence it is derived from CAN\r
+ * Driver Configuration. */\r
+ Can_Arc_HRHType CanIfHrhIdSymRef ;\r
+\r
+ /** Defines the parameters required for configuraing multiple\r
+ * CANID ranges for a given same HRH. */\r
+ const CanIf_HrhRangeConfigType *CanIfHrhRangeConfig;\r
+\r
+ /** End Of List. Set to TRUE if this is the last object in the list. */\r
+ boolean CanIf_Arc_EOL;\r
+} CanIf_HrhConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfInitHthConfig container\r
+ */\r
+/** Definition of Hardware Transmit Handle */\r
+typedef struct {\r
+ /** Defines the HTH type i.e, whether its a BasicCan or FullCan. */\r
+ Can_Arc_HohType CanIfHthType;\r
+\r
+ /** Reference to controller Id to which the HTH belongs to. A controller\r
+ * can contain one or more HTHs */\r
+ CanIf_Arc_ChannelIdType CanIfCanControllerIdRef;\r
+\r
+ /** The parameter refers to a particular HTH object in the CAN Driver Module\r
+ * configuration. The HTH id is unique in a given CAN Driver. The HTH Ids\r
+ * are defined in the CAN Driver Module and hence it is derived from CAN\r
+ * Driver Configuration. */\r
+ Can_Arc_HTHType CanIfHthIdSymRef ;\r
+\r
+ /** End Of List. Set to TRUE if this is the last object in the list. */\r
+ boolean CanIf_Arc_EOL;\r
+} CanIf_HthConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfInitHohConfig container\r
+ */\r
+/** Definition of Hardware Object Handle. */\r
+typedef struct {\r
+ /** Reference to the CAN Driver controller config. */\r
+ const Can_ConfigSetType *CanConfigSet;\r
+\r
+ /** This container contains contiguration parameters for each hardware receive object. */\r
+ const CanIf_HrhConfigType *CanIfHrhConfig;\r
+\r
+ /** This container contains parameters releated to each HTH */\r
+ const CanIf_HthConfigType *CanIfHthConfig;\r
+\r
+ /** End Of List. Set to TRUE if this is the last object in the list. */\r
+ boolean CanIf_Arc_EOL;\r
+} CanIf_InitHohConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfTxPduConfig container\r
+ */\r
+\r
+/** Definition of Tx PDU (Protocol Data Unit). */\r
+typedef struct {\r
+ /** ECU wide unique, symbolic handle for transmit CAN L-PDU. The\r
+ * CanIfCanTxPduId is configurable at pre-compile and post-built time.\r
+ * Range: 0..max. number of CantTxPduIds PduIdType CanTxPduId; */\r
+ PduIdType CanIfTxPduId;\r
+\r
+ /** CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
+ * PDU transmission. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
+ * Extended CAN identifier */\r
+ uint32 CanIfCanTxPduIdCanId;\r
+\r
+ /** Data length code (in bytes) of transmit CAN L-PDUs used by the CAN\r
+ * Driver for CAN L-PDU transmission. The data area size of a CAN L-Pdu\r
+ * can have a range from 0 to 8 bytes. */\r
+ uint8 CanIfCanTxPduIdDlc;\r
+\r
+ /** Defines the type of each transmit CAN L-PDU.\r
+ * DYNAMIC CAN ID is defined at runtime.\r
+ * STATIC CAN ID is defined at compile-time. */\r
+ CanIf_PduTypeType CanIfCanTxPduType;\r
+\r
+#if ( CANIF_READTXPDU_NOTIFY_STATUS_API == STD_ON )\r
+ /** Enables and disables transmit confirmation for each transmit CAN L-PDU\r
+ * for reading its notification status. True: Enabled False: Disabled */\r
+ boolean CanIfReadTxPduNotifyStatus;\r
+#endif\r
+\r
+ /** CAN Identifier of transmit CAN L-PDUs used by the CAN Driver for CAN L-\r
+ * PDU transmission.\r
+ * EXTENDED_CAN The CANID is of type Extended (29 bits).\r
+ * STANDARD_CAN The CANID is of type Standard (11 bits). */\r
+ CanIf_CanIdTypeType CanIfTxPduIdCanIdType;\r
+\r
+ /** Name of target confirmation services to target upper layers (PduR, CanNm\r
+ * and CanTp. If parameter is not configured then no call-out function is\r
+ * provided by the upper layer for this Tx L-PDU. */\r
+ void (*CanIfUserTxConfirmation)(PduIdType); /* CANIF 109 */\r
+\r
+ /** Handle, that defines the hardware object or the pool of hardware objects\r
+ * configured for transmission. The parameter refers HTH Id, to which the L-\r
+ * PDU belongs to. */\r
+ const CanIf_HthConfigType *CanIfCanTxPduHthRef;\r
+\r
+ /** Reference to the "global" Pdu structure to allow harmonization of handle\r
+ * IDs in the COM-Stack. */\r
+ void *PduIdRef;\r
+} CanIf_TxPduConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfRxPduConfig container\r
+ */\r
+\r
+\r
+/** Definition of Rx PDU (Protocol Data Unit). */\r
+typedef struct {\r
+ /** ECU wide unique, symbolic handle for receive CAN L-PDU. The\r
+ * CanRxPduId is configurable at pre-compile and post-built time. It shall fulfill\r
+ * ANSI/AUTOSAR definitions for constant defines. Range: 0..max. number\r
+ * of defined CanRxPduIds */\r
+ PduIdType CanIfCanRxPduId;\r
+\r
+ /** CAN Identifier of Receive CAN L-PDUs used by the CAN Interface. Exa:\r
+ * Software Filtering. Range: 11 Bit For Standard CAN Identifier ... 29 Bit For\r
+ * Extended CAN identifier */\r
+ uint32 CanIfCanRxPduCanId;\r
+\r
+ /** Data Length code of received CAN L-PDUs used by the CAN Interface.\r
+ * Exa: DLC check. The data area size of a CAN L-PDU can have a range\r
+ * from 0 to 8 bytes. uint8 CanIfCanRxPduDlc; */\r
+ uint8 CanIfCanRxPduDlc;\r
+\r
+#if ( CANIF_CANPDUID_READDATA_API == STD_ON )\r
+ /** Enables and disables the Rx buffering for reading of received L-PDU data.\r
+ * True: Enabled False: Disabled */\r
+ boolean CanIfReadRxPduData;\r
+#endif\r
+\r
+#if ( CANIF_READRXPDU_NOTIF_STATUS_API == STD_ON )\r
+ /** CanIfReadRxPduNotifyStatus {CANIF_READRXPDU_NOTIFY_STATUS}\r
+ * Enables and disables receive indication for each receive CAN L-PDU for\r
+ * reading its' notification status. True: Enabled False: Disabled */\r
+ boolean CanIfReadRxPduNotifyStatus;\r
+#endif\r
+\r
+ /** CAN Identifier of receive CAN L-PDUs used by the CAN Driver for CAN L-\r
+ * PDU transmission.\r
+ * EXTENDED_CAN The CANID is of type Extended (29 bits)\r
+ * STANDARD_CAN The CANID is of type Standard (11 bits) */\r
+ CanIf_CanIdTypeType CanIfRxPduIdCanIdType;\r
+\r
+ /** This parameter defines the type of the receive indication call-outs called to\r
+ * the corresponding upper layer the used TargetRxPduId belongs to. */\r
+ CanIf_UserTypeType CanIfRxUserType;\r
+\r
+ /** Name of target indication services to target upper layers (PduRouter,\r
+ * CanNm, CanTp and ComplexDeviceDrivers). If parameter is 0 no call-out\r
+ * function is configured. */\r
+ void *CanIfUserRxIndication;\r
+\r
+ /** The HRH to which Rx L-PDU belongs to, is referred through this\r
+ * parameter. */\r
+ const CanIf_HrhConfigType *CanIfCanRxPduHrhRef;\r
+\r
+ /** Reference to the "global" Pdu structure to allow harmonization of handle\r
+ * IDs in the COM-Stack. */\r
+ void *PduIdRef;\r
+\r
+ /** Defines the type of software filtering that should be used\r
+ * for this receive object. */\r
+ CanIf_SoftwareFilterTypeType CanIfSoftwareFilterType;\r
+\r
+ /** Acceptance filters, 1 - care, 0 - don't care.\r
+ * Is enabled by the CanIfSoftwareFilterMask in CanIf_HrhConfigType\r
+ * ArcCore exension */\r
+ uint32 CanIfCanRxPduCanIdMask;\r
+\r
+} CanIf_RxPduConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+\r
+/*\r
+ * CanIfControllerConfig container\r
+ */\r
+/** Not supported. */\r
+typedef enum {\r
+ CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
+ CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
+ CANIF_WAKEUP_SUPPORT_TRANSCEIVER\r
+} CanIf_WakeupSupportType;\r
+\r
+\r
+/** Container used to create channel init configurations.\r
+ * @see CanIf_Arc_ConfigurationIndexType\r
+ * @see CanIf_Arc_ChannelIdType */\r
+typedef struct {\r
+ /** Not used */\r
+ CanIf_WakeupSupportType WakeupSupport;\r
+\r
+ /** CanIf-specific id of the controller */\r
+ CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
+\r
+ /** Not used */\r
+ const char CanIfDriverNameRef[8];\r
+\r
+ /** Reference to */\r
+ const Can_ControllerConfigType *CanIfInitControllerRef;\r
+} CanIf_ControllerConfigType;\r
+\r
+//-------------------------------------------------------------------\r
+/*\r
+ * CanIfTransceiverDrvConfig container\r
+ */\r
+\r
+typedef struct {\r
+ boolean TrcvWakeupNotification;\r
+ uint8 TrcvIdRef;\r
+} CanIf_TransceiverDrvConfigType;\r
+\r
+\r
+typedef struct {\r
+ uint32 todo;\r
+} CanIf_TransceiverConfigType;\r
+\r
+/** Callout functions with respect to the upper layers. This callout functions\r
+ * defined in this container are common to all configured underlying CAN\r
+ * Drivers / CAN Transceiver Drivers. */\r
+typedef struct {\r
+ /** Name of target BusOff notification services to target upper layers\r
+ * (PduRouter, CanNm, CanTp and ComplexDeviceDrivers). */\r
+ void (*CanIfBusOffNotification)(uint8 Controller);\r
+\r
+ /** Name of target wakeup notification services to target upper layers\r
+ * e.g Ecu_StateManager. If parameter is 0\r
+ * no call-out function is configured. */\r
+ void (*CanIfWakeUpNotification)();\r
+\r
+ /** Name of target wakeup validation notification services to target upper\r
+ * layers (ECU State Manager). If parameter is 0 no call-out function is\r
+ * configured. */\r
+ void (*CanIfWakeupValidNotification)();\r
+\r
+ /** ArcCore ext. */\r
+ void (*CanIfErrorNotificaton)(uint8,Can_Arc_ErrorType);\r
+\r
+} CanIf_DispatchConfigType;\r
+\r
+/** This container contains the references to the configuration setup of each\r
+ * underlying CAN driver. */\r
+typedef struct {\r
+ /** Not used. */\r
+ uint32 CanIfConfigSet;\r
+\r
+ /** Size of Rx PDU list. */\r
+ uint32 CanIfNumberOfCanRxPduIds;\r
+ /** Size of Tx PDU list. */\r
+ uint32 CanIfNumberOfCanTXPduIds;\r
+ /** Not used */\r
+ uint32 CanIfNumberOfDynamicCanTXPduIds;\r
+\r
+ //\r
+ // Containers\r
+ //\r
+\r
+ /** Hardware Object Handle list */\r
+ const CanIf_InitHohConfigType *CanIfHohConfigPtr;\r
+\r
+ /** Rx PDU's list */\r
+ const CanIf_RxPduConfigType *CanIfRxPduConfigPtr;\r
+\r
+ /** Tx PDU's list */\r
+ const CanIf_TxPduConfigType *CanIfTxPduConfigPtr;\r
+\r
+} CanIf_InitConfigType;\r
+\r
+/** Top level config container. */\r
+typedef struct {\r
+ /** Reference to the list of channel init configurations. */\r
+ const CanIf_ControllerConfigType *ControllerConfig;\r
+\r
+ /** Callout functions with respect to the upper layers. This callout\r
+ * functions defined in this container are common to all\r
+ * configured underlying CAN Drivers / CAN Transceiver Drivers */\r
+ const CanIf_DispatchConfigType *DispatchConfig;\r
+\r
+ /** This container contains the init parameters of the CAN Interface. */\r
+ const CanIf_InitConfigType *InitConfig;\r
+\r
+ /** Not used */\r
+ const CanIf_TransceiverConfigType *TransceiverConfig;\r
+\r
+ /** ArcCore: Contains the mapping from CanIf-specific Channels to Can Controllers */\r
+ const CanControllerIdType *Arc_ChannelToControllerMap;\r
+\r
+ const uint8 *Arc_ChannelDefaultConfIndex;\r
+} CanIf_ConfigType;\r
+\r
+\r
+#endif /* CANIF_CONFIGTYPES_H_ */\r
+/** @} */\r
+\r