/* * co_canopen.h - contains defines for all services * * Copyright (c) 2012-2024 emotas embedded communication GmbH * *------------------------------------------------------------------- * $Id: co_canopen.h 55050 2024-08-08 08:20:45Z boe $ *------------------------------------------------------------------- * * */ /** * \brief defines for all services * * \file co_canopen.h - contains defines for all services * * This header inludes defines for all services of the CANopen library. * It can be included instead of header files of each service. * */ #ifndef CO_CANOPEN_H #define CO_CANOPEN_H 1 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CO_NETWORK_ROUTING_CNT # include #endif /* CO_NETWORK_ROUTING_CNT */ #ifdef CO_SRD_SUPPORTED # include #endif /* CO_SRD_SUPPORTED */ #ifdef CO_FLYING_MASTER_SUPPORTED # include #endif /* CO_FLYING_MASTER_SUPPORTED */ #ifdef CO_BOOTUP_MANAGER # include #endif /* CO_BOOTUP_MANAGER */ #ifdef CO_USER_EXTENSION_SUPPORTED # include #endif /* CO_USER_EXTENSION_SUPPORTED */ #ifdef CO_GFC_SUPPORTED # include #endif /* CO_GFC_SUPPORTED */ #ifdef CO_SRDO_SUPPORTED # include #endif /* CO_SRDO_SUPPORTED */ #ifdef CO_ESDO_SUPPORTED # include #endif /* CO_ESDO_SUPPORTED */ #ifdef CO_IDNEGO_SUPPORTED # include #endif /* CO_IDNEGO_SUPPORTED */ /* actual CANopen stack software version */ #define CO_STACK_VERSION 0x31300ul typedef struct { UNSIGNED8 master; /**< device works as master */ } CO_INIT_OPTION_T; /** * line parameter definition * * defines number of line parameter for services */ #define CO_SERVICE_INIT_STRUCT_VERSION 0x0005u typedef struct { UNSIGNED16 structVersion; UNSIGNED16 objectCnt[1]; UNSIGNED16 pdoTrCnt[1]; UNSIGNED16 pdoRecCnt[1]; #ifdef CO_SRDO_SUPPORTED UNSIGNED16 srdoCnt[1]; #endif /* CO_SRDO_SUPPORTED */ UNSIGNED8 sdoServerCnt[1]; UNSIGNED8 sdoClientCnt[1]; UNSIGNED8 errorCtrlCnt[1]; UNSIGNED8 emcyErrHistCnt[1]; UNSIGNED8 emcyActiveErrHistCnt[1]; UNSIGNED8 emcyConsCnt[1]; #ifdef CO_NETWORK_ROUTING_CNT UNSIGNED8 networkCnt[1]; #endif /* CO_NETWORK_ROUTING_CNT */ UNSIGNED8 slaveAssign[1]; UNSIGNED8 guardingCnt[1]; UNSIGNED8 nodeId[1]; CO_NODE_ID_T nodeIdFct[1]; } CO_SERVICE_INIT_VAL_T; /* function prototypes */ /** * \brief coCanOpenStackInit - init of CANopen stack * * This function is normally generated by the CANopen Device Designer * and responsible for the whole intialization of the CANopen stack. * * \param pLoadFunction * pointer to loadFunction * pointer to mode List (NULL - use default line settings from CDD) * * \return RET_T */ EXTERN_DECL RET_T coCanOpenStackInit(CO_EVENT_STORE_T pLoadFunction); /** * \brief coCanOpenStackInit - init of CANopen stack * This function is normally generated by the CANopen Device Designer * and responsible for the intialization of the CANopen stack. * In addition to coCanOpenStackInit some options for services can be added. * * \param pLoadFunction * pointer to loadFunction * \param pCoOptions * pointer to coOptions * * * \return RET_T */ EXTERN_DECL RET_T coCanOpenStackInitPara(CO_EVENT_STORE_T pLoadFunction, CO_INIT_OPTION_T *pCoOptions); /** * \brief coCanOpenStackInit_common - init of common part of CANopen stack * This function is generated by the CANopen Device Designer * and responsible for the common intialization of the CANopen stack. * Normally called from coCanOpenStackInit(); * * \param pLoadFunction * pointer to loadFunction * * \return RET_T */ RET_T coCanOpenStackInit_common(CO_EVENT_STORE_T pLoadFunction ); /** * \brief coCanOpenStackInit_line - init one CAN line of CANopen stack * This function is generated by the CANopen Device Designer * and responsible for the line depending intialization of the CANopen stack. * Normally called from coCanOpenStackInit(); * * \param pCoOptions * pointer to coOptions * * \return RET_T */ RET_T coCanOpenStackInit_line(CO_INIT_OPTION_T *pCoOptions ); /** * \brief coCanOpenStackDeInit - deinit of CANopen stack * * This function is normally generated by the CANopen Device Designer * and responsible for the de-intialization of the CANopen stack. * */ EXTERN_DECL void coCanOpenStackDeInit(void); EXTERN_DECL RET_T coCanOpenStackVarInit(CO_SERVICE_INIT_VAL_T *pServiceInitVals); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CO_CANOPEN_H */