NorthStar-Endurance-TestBench/north-star_emotas-stack/colib_ml/inc/co_pdo.h

154 lines
4.6 KiB
C

/*
* 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 <co_datatype.h>
#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 */