128 lines
3.9 KiB
C
128 lines
3.9 KiB
C
/*
|
|
* co_nmt.h - contains defines for nmt services
|
|
*
|
|
* Copyright (c) 2012-2023 emotas embedded communication GmbH
|
|
*
|
|
*-------------------------------------------------------------------
|
|
* $Id: co_nmt.h 49615 2023-09-26 14:21:27Z boe $
|
|
*-------------------------------------------------------------------
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* \brief defines for nmt services
|
|
*
|
|
* \file co_nmt.h - contains defines for nmt services
|
|
*
|
|
*/
|
|
|
|
#ifndef CO_NMT_H
|
|
#define CO_NMT_H 1
|
|
|
|
#include <co_datatype.h>
|
|
|
|
|
|
/* datatypes */
|
|
|
|
/**
|
|
* error control states
|
|
*/
|
|
typedef enum {
|
|
CO_ERRCTRL_BOOTUP, /**< bootup */
|
|
CO_ERRCTRL_NEW_STATE, /**< NMT state changed */
|
|
CO_ERRCTRL_HB_STARTED, /**< heartbeat started */
|
|
CO_ERRCTRL_HB_FAILED, /**< heartbeat failed */
|
|
CO_ERRCTRL_GUARD_FAILED, /**< Lifetime failure from master detected */
|
|
CO_ERRCTRL_MGUARD_TOGGLE, /**< Master guarding toggle failure detected */
|
|
CO_ERRCTRL_MGUARD_FAILED, /**< Master guarding failure detected */
|
|
CO_ERRCTRL_BOOTUP_FAILURE, /**< error transmit bootup */
|
|
CO_ERRCTRL_DOUBLE_ID /**< error double node id received */
|
|
} CO_ERRCTRL_T;
|
|
|
|
|
|
/**
|
|
* NMT states
|
|
*/
|
|
typedef enum {
|
|
CO_NMT_STATE_UNKNOWN = 0, /**< unknown */
|
|
CO_NMT_STATE_OPERATIONAL = 5, /**< OPERATIONAL */
|
|
CO_NMT_STATE_STOPPED = 4, /**< STOPPED */
|
|
CO_NMT_STATE_PREOP = 127, /**< PRE-OPERATIONAL */
|
|
CO_NMT_STATE_RESET_NODE = 128, /**< Reset NODE */
|
|
CO_NMT_STATE_RESET_COMM = 129 /**< Reset Communication */
|
|
} CO_NMT_STATE_T;
|
|
|
|
|
|
/**
|
|
* NMT REQ states
|
|
*/
|
|
typedef enum {
|
|
CO_NMT_REQ_STATE_UNKNOWN = 0, /**< unknown */
|
|
CO_NMT_REQ_STATE_STOPPED = 4, /**< STOPPED */
|
|
CO_NMT_REQ_STATE_OPERATIONAL = 5, /**< OPERATIONAL */
|
|
CO_NMT_REQ_STATE_RESET_NODE = 6, /**< Reset NODE */
|
|
CO_NMT_REQ_STATE_RESET_COMM = 7, /**< Reset Communication */
|
|
CO_NMT_REQ_STATE_PREOP = 127 /**< PRE-OPERATIONAL */
|
|
} CO_NMT_REQ_STATE_T;
|
|
|
|
|
|
|
|
|
|
/** \brief function pointer to get node id function
|
|
* This function shall get the node id for the device
|
|
*
|
|
* \return node id
|
|
*/
|
|
typedef UNSIGNED8 (* CO_NODE_ID_T)(CO_LINE_DECL); /*lint !e960 customer specific parameter names */
|
|
|
|
|
|
/** \brief function pointer to error control event function
|
|
* \param nodeId - node Id
|
|
* \param errCtrlState - error control state
|
|
* \param nmtState - actual NMT state
|
|
*
|
|
*/
|
|
typedef void (* CO_EVENT_ERRCTRL_T)(CO_LINE_DECL, UNSIGNED8, CO_ERRCTRL_T, CO_NMT_STATE_T); /*lint !e960 customer specific parameter names */
|
|
|
|
|
|
/** \brief function pointer to NMT event function
|
|
* \param execute - execute status change y/n
|
|
* \param nmtState - new NMT state
|
|
*
|
|
* \return RET_T
|
|
* \retval RET_OK - state change allowed (only valid for OPERATIONAL)
|
|
* \retval RET_ - state change not allowed (only valid for OPERATIONAL)
|
|
*/
|
|
typedef RET_T (* CO_EVENT_NMT_T)(CO_LINE_DECL, BOOL_T, CO_NMT_STATE_T); /*lint !e960 customer specific parameter names */
|
|
|
|
|
|
/* function prototypes */
|
|
EXTERN_DECL RET_T coNmtInit(CO_LINE_DECL, UNSIGNED8 master);
|
|
EXTERN_DECL UNSIGNED8 coNmtGetNodeId(CO_LINE_DECL);
|
|
EXTERN_DECL BOOL_T coNmtInhibitActive(CO_LINE_DECL);
|
|
EXTERN_DECL RET_T coErrorCtrlInit(CO_LINE_DECL, UNSIGNED16 hbTime, UNSIGNED8 hbConsCnt);
|
|
EXTERN_DECL RET_T coGuardingInit(CO_LINE_DECL);
|
|
|
|
EXTERN_DECL RET_T coEventRegister_ERRCTRL(CO_EVENT_ERRCTRL_T pFunction);
|
|
EXTERN_DECL RET_T coEventRegister_NMT(CO_EVENT_NMT_T pFunction);
|
|
|
|
EXTERN_DECL CO_NMT_STATE_T coNmtGetState(CO_LINE_DECL);
|
|
EXTERN_DECL CO_NMT_STATE_T coNmtGetRemoteNodeState(CO_LINE_DECL,
|
|
UNSIGNED8 nodeId);
|
|
EXTERN_DECL RET_T coNmtStateReq(CO_LINE_DECL, UNSIGNED8 node,
|
|
CO_NMT_STATE_T reqState, BOOL_T master);
|
|
EXTERN_DECL RET_T coNmtLocalStateReq(CO_LINE_DECL, CO_NMT_STATE_T reqState);
|
|
EXTERN_DECL BOOL_T coNmtNodeIsMaster(CO_LINE_DECL);
|
|
|
|
EXTERN_DECL RET_T coHbConsumerSet(CO_LINE_DECL, UNSIGNED8 node,
|
|
UNSIGNED16 hbTime);
|
|
EXTERN_DECL RET_T coHbConsumerStart(CO_LINE_DECL, UNSIGNED8 node);
|
|
EXTERN_DECL RET_T coHbConsumerStop(CO_LINE_DECL, UNSIGNED8 node);
|
|
EXTERN_DECL RET_T coGuardingMasterStart(CO_LINE_DECL, UNSIGNED8 node);
|
|
EXTERN_DECL RET_T coGuardingMasterStop(CO_LINE_DECL, UNSIGNED8 node);
|
|
|
|
|
|
#endif /* CO_NMT_H */
|