/******************************************************************************* * Copyright (c) 2009, Rockwell Automation, Inc. * All rights reserved. * ******************************************************************************/ #ifndef SRC_CIP_CIPQOS_H_ #define SRC_CIP_CIPQOS_H_ /** @file cipqos.h * @brief Public interface of the QoS Object * */ #include "cip/cipconnectionmanager.h" #include "cip/ciptypes.h" #include "core/typedefs.h" /** @brief QoS Object class code */ static const CipUint kCipQoSClassCode = 0x48U; /* public types */ /** This type represents the group of DSCP values of the QoS object. */ typedef struct cip_qos_dscp_values { CipUsint event; ///< Attr. #2: DSCP value for event messages CipUsint general; ///< Attr. #3: DSCP value for general messages CipUsint urgent; ///< Attr. #4: DSCP value for CIP transport class 0/1 Urgent ///< priority messages CipUsint scheduled; ///< Attr. #5: DSCP value for CIP transport class 0/1 ///< Scheduled priority messages CipUsint high; ///< Attr. #6: DSCP value for CIP transport class 0/1 High ///< priority messages CipUsint low; ///< Attr. #7: DSCP value for CIP transport class 0/1 low ///< priority messages CipUsint explicit_msg; ///< Attr. #8: DSCP value for CIP explicit messages ///< (transport class 2/3 and UCMM) and all other ///< EtherNet/IP encapsulation messages } CipQosDscpValues; /** This type represents the QoS object */ typedef struct { CipUsint q_frames_enable; ///< Attr. #1: Enables or disable sending 802.1Q ///< frames on CIP and IEEE 1588 messages CipQosDscpValues dscp; ///< Attributes #2 ... #8 of DSCP values - beware! ///< must not be the used set } CipQosObject; // public data extern CipQosObject g_qos; // public functions /** @brief Provide the matching DSCP value for a given connection object * priority level */ CipUsint CipQosGetDscpPriority(ConnectionObjectPriority priority); /** @brief Create and initialize the QoS object */ EipStatus CipQoSInit(void); /** @brief Updates the currently used set of DSCP priority values */ void CipQosUpdateUsedSetQosValues(void); /** @brief Reset attribute values to default. Does not update currently used set */ void CipQosResetAttributesToDefaultValues(void); #endif // SRC_CIP_CIPQOS_H_