/* * co_pdo.h - contains defines for pdo services * * Copyright (c) 2012-2024 emotas embedded communication GmbH * *------------------------------------------------------------------- * $Id: co_pdo.h 54641 2024-07-12 06:47:38Z boe $ * *------------------------------------------------------------------- * * * */ /** * \brief defines for pdo service * * \file co_pdo.h - contains defines for pdo service */ #ifndef CO_PDO_H #define CO_PDO_H 1 # if defined(CO_PDO_TRANSMIT_CNT) || defined(CO_PDO_RECEIVE_CNT) #include #ifndef CO_MAX_MAP_ENTRIES # define CO_MAX_MAP_ENTRIES 1 #endif /* CO_MAX_MAP_ENTRIES */ /** * PDO transmit mapping entry (one mapping entry) */ typedef struct { CO_CONST void *pVar; /**< pointer to variable */ UNSIGNED8 len; /**< number of bytes for variable */ BOOL_T numeric; /**< numeric flag for byte swapping */ UNSIGNED32 val; /**< OD value */ } PDO_TR_MAP_ENTRY_T; /** * PDO receive mapping entry (one mapping entry) */ typedef struct { void *pVar; /**< pointer to variable */ UNSIGNED8 len; /**< number of bytes for variable */ BOOL_T numeric; /**< numeric flag for byte swapping */ UNSIGNED32 val; /**< OD value */ #ifdef CO_NETWORK_ROUTING_CNT UNSIGNED16 routePdo[CO_MULTI_LINE_CNT]; /**< route to other network */ #endif /* CO_NETWORK_ROUTING_CNT */ } PDO_REC_MAP_ENTRY_T; /** * PDO mapping table (mapping entries for one transmit PDO) */ typedef struct { UNSIGNED8 mapCnt; /**< number of mapping entries */ PDO_TR_MAP_ENTRY_T mapEntry[CO_MAX_MAP_ENTRIES]; /**< Mapping entries */ } PDO_TR_MAP_TABLE_T; /** * PDO mapping table (mapping entries for one receive PDO) */ typedef struct { UNSIGNED8 mapCnt; /**< number of mapping entries */ PDO_REC_MAP_ENTRY_T mapEntry[CO_MAX_MAP_ENTRIES]; /**< Mapping entries */ } PDO_REC_MAP_TABLE_T; /** \brief PDO indication data structure */ typedef struct { UNSIGNED16 pdoNr; /**< pdo number */ UNSIGNED8 transType; /**< transmission type */ #ifdef CO_CAN_TIMESTAMP_SUPPORTED CO_CAN_TIMESTAMP_T timeStamp; /**< timestamp */ #endif /* CO_CAN_TIMESTAMP_SUPPORTED */ } CO_EVENT_PDO_PARA_T; /** \brief function pointer to PDO indication * \param pdoNr - PDO number * */ typedef void (* CO_EVENT_PDO_T)(CO_LINE_TYPE, UNSIGNED16); /*lint !e960 customer specific parameter names */ /** \brief function pointer to PDO update indication * \param index * \param subindex * */ typedef void (* CO_EVENT_PDO_UPDATE_T)(CO_LINE_TYPE, UNSIGNED16, UNSIGNED8); /** * MPDO mapping event parameter */ typedef struct { UNSIGNED16 pdoNr; /* PDO number */ UNSIGNED16 index; /* Index */ UNSIGNED8 subIndex; /* subIndex */ UNSIGNED8 nodeId; /* nodeId at SAM mode */ } CO_EVENT_MPDO_PARA_T; /** \brief function pointer to MPDO indication * \param pdoNr - PDO number * \param index - Index * \param subIndex - subIndex * */ typedef void (* CO_EVENT_MPDO_T)(CO_LINE_TYPE, UNSIGNED16, UNSIGNED16, UNSIGNED8); /*lint !e960 customer specific parameter names */ /* function prototypes */ EXTERN_DECL RET_T coPdoTransmitInit(CO_LINE_DECL, UNSIGNED16 pdoNr, UNSIGNED8 transType, UNSIGNED16 inhibit, UNSIGNED16 eventTime, UNSIGNED8 syncStartVal, CO_CONST PDO_TR_MAP_TABLE_T *mapTable); EXTERN_DECL RET_T coPdoReceiveInit(CO_LINE_DECL, UNSIGNED16 pdoNr, UNSIGNED8 transType, UNSIGNED16 inhibit, UNSIGNED16 eventTime, CO_CONST PDO_REC_MAP_TABLE_T *mapTable); EXTERN_DECL RET_T coPdoNetworkRouting(void); EXTERN_DECL RET_T coPdoReqNr(CO_LINE_DECL, UNSIGNED16 pdoNr, UNSIGNED8 flags); EXTERN_DECL RET_T coPdoReqObj(CO_LINE_DECL, UNSIGNED16 index, UNSIGNED8 subIndex, UNSIGNED8 flags); EXTERN_DECL BOOL_T coPdoObjIsMapped(CO_LINE_DECL, UNSIGNED16 pdoNr, UNSIGNED16 index, UNSIGNED8 subIndex); EXTERN_DECL UNSIGNED16 coPdoTrObjIsMapped(CO_LINE_DECL, UNSIGNED16 index, UNSIGNED8 subIndex, UNSIGNED16 *pMapList, UNSIGNED16 mapListlen); EXTERN_DECL RET_T coMPdoReq(CO_LINE_DECL, UNSIGNED16 pdoNr, UNSIGNED8 dstNode, UNSIGNED16 index, UNSIGNED8 subIndex, UNSIGNED8 flags); EXTERN_DECL RET_T coMPdoGetSamInfo(CO_LINE_DECL, UNSIGNED16 *pRIndex, UNSIGNED8 *pRSubIndex, UNSIGNED8 *pRNodeId); #ifdef CO_CAN_TIMESTAMP_SUPPORTED EXTERN_DECL CO_CAN_TIMESTAMP_T coPdoGetTimestamp(CO_LINE_TYPE, UNSIGNED16 pdoNr); #endif /* CO_CAN_TIMESTAMP_SUPPORTED */ EXTERN_DECL RET_T coEventRegister_PDO_SYNC(CO_EVENT_PDO_T pFunction); EXTERN_DECL RET_T coEventRegister_PDO_REC_EVENT(CO_EVENT_PDO_T pFunction); EXTERN_DECL RET_T coEventRegister_PDO(CO_EVENT_PDO_T pFunction); EXTERN_DECL RET_T coEventRegister_MPDO(CO_EVENT_MPDO_T pFunction); EXTERN_DECL RET_T coEventRegister_PDO_UPDATE(CO_EVENT_PDO_UPDATE_T pFunction); # endif /* defined(CO_PDO_TRANSMIT_CNT) || defined(CO_PDO_RECEIVE_CNT) */ #endif /* CO_PDO_H */