| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /* This file is the part of the Lightweight USB device Stack for STM32 microcontrollers
- *
- * Copyright ©2016 Dmitry Filimonchuk <dmitrystu[at]gmail[dot]com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /**\ingroup USB_CDC
- * \addtogroup USB_CDC_ECM USB CDC ECM subclass
- * \brief USB CDC ECM subclass definitions
- * \details This module based on "Universal Serial Bus Communications Class Subclass Specification for
- * Ethernet Control Model Devices Revision 1.2"
- * @{ */
- #ifndef _USB_CDC_ECM_H_
- #define _USB_CDC_ECM_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**\name Communications Class Subclass Codes
- * @{ */
- #define USB_CDC_SUBCLASS_ETH 0x06 /**<\brief Ethernet Networking Control Model */
- /* @} */
- /**\name CDC ECM subclass specific Functional Descriptors codes
- * @{ */
- #define USB_DTYPE_CDC_ETHERNET 0x0F /**<\brief Ethernet Networking Functional Descriptor*/
- /** @} */
- /**\name CDC ECM subclass specific requests
- * @{ */
- #define USB_CDC_SET_ETH_MULTICAST_FILTERS 0x40 /**<\brief */
- #define USB_CDC_SET_ETH_PM_PATTERN_FILTER 0x41 /**<\brief */
- #define USB_CDC_GET_ETH_PM_PATTERN_FILTER 0x42 /**<\brief */
- #define USB_CDC_SET_ETH_PACKET_FILTER 0x43 /**<\brief Sets device filter for running a network
- * analyzer application on the host machine.*/
- #define USB_CDC_GET_ETH_STATISTIC 0x44 /**<\brief Retrieves Ethernet device statistics such
- * as frames transmitted, frames received, and bad
- * frames received.*/
- /** @} */
- /**\name Ethernet Statistics Capabilities
- * @{ */
- #define USB_ETH_XMIT_OK (1<<0) /**<\brief Frames transmitted without errors.*/
- #define USB_ETH_RCV_OK (1<<1) /**<\brief Frames received without errors.*/
- #define USB_ETH_XMIT_ERROR (1<<2) /**<\brief Frames not transmitted, or transmitted
- * with errors.*/
- #define USB_ETH_RCV_ERROR (1<<3) /**<\brief Frames received with errors that are
- * not delivered to the USB host. */
- #define USB_ETH_RCV_NO_BUFFER (1<<4) /**<\brief Frame missed, no buffers */
- #define USB_ETH_DIRECTED_BYTES_XMIT (1<<5) /**<\brief Directed bytes transmitted without errors */
- #define USB_ETH_DIRECTED_FRAMES_XMIT (1<<6) /**<\brief Directed frames transmitted without errors */
- #define USB_ETH_MULTICAST_BYTES_XMIT (1<<7) /**<\brief Multicast bytes transmitted without errors */
- #define USB_ETH_MULTICAST_FRAMES_XMIT (1<<8) /**<\brief Multicast frames transmitted without errors */
- #define USB_ETH_BROADCAST_BYTES_XMIT (1<<9) /**<\brief Broadcast bytes transmitted without errors */
- #define USB_ETH_BROADCAST_FRAMES_XMIT (1<<10) /**<\brief Broadcast frames transmitted without errors */
- #define USB_ETH_DIRECTED_BYTES_RCV (1<<11) /**<\brief Directed bytes received without errors */
- #define USB_ETH_DIRECTED_FRAMES_RCV (1<<12) /**<\brief Directed frames received without errors */
- #define USB_ETH_MULTICAST_BYTES_RCV (1<<13) /**<\brief Multicast bytes received without errors */
- #define USB_ETH_MULTICAST_FRAMES_RCV (1<<14) /**<\brief Multicast frames received without errors */
- #define USB_ETH_BROADCAST_BYTES_RCV (1<<15) /**<\brief Broadcast bytes received without errors */
- #define USB_ETH_BROADCAST_FRAMES_RCV (1<<16) /**<\brief Broadcast frames received without errors */
- #define USB_ETH_RCV_CRC_ERROR (1<<17) /**<\brief Frames received with circular redundancy check
- * (CRC) or frame check sequence (FCS) error */
- #define USB_ETH_TRANSMIT_QUEUE_LENGTH (1<<18) /**<\brief Length of transmit queue */
- #define USB_ETH_RCV_ERROR_ALIGNMENT (1<<19) /**<\brief Frames received with alignment error */
- #define USB_ETH_XMIT_ONE_COLLISION (1<<20) /**<\brief Frames transmitted with one collision */
- #define USB_ETH_XMIT_MORE_COLLISIONS (1<<21) /**<\brief Frames transmitted with more than one collision */
- #define USB_ETH_XMIT_DEFERRED (1<<22) /**<\brief Frames transmitted after deferral */
- #define USB_ETH_XMIT_MAX_COLLISIONS (1<<23) /**<\brief Frames not transmitted due to collisions */
- #define USB_ETH_RCV_OVERRUN (1<<24) /**<\brief Frames not received due to overrun */
- #define USB_ETH_XMIT_UNDERRUN (1<<25) /**<\brief Frames not transmitted due to underrun */
- #define USB_ETH_XMIT_HEARTBEAT_FAILURE (1<<26) /**<\brief Frames transmitted with heartbeat failure */
- #define USB_ETH_XMIT_TIMES_CRS_LOST (1<<27) /**<\brief Times carrier sense signal lost during transmission */
- #define USB_ETH_XMIT_LATE_COLLISIONS (1<<28) /**<\brief Late collisions detected */
- /** @} */
- /**\brief Ethernet Networking Functional Descriptor
- * \details describes the operational modes supported by the
- * Communications Class interface, as defined in Section 3.4, with the SubClass code of Ethernet
- * Networking Control. It can only occur within the class-specific portion of an Interface descriptor.
- */
- struct usb_cdc_ether_desc {
- uint8_t bFunctionLength; /**<\brief Size of this functional descriptor, in bytes.*/
- uint8_t bDescriptorType; /**<\brief CS_INTERFACE descriptor type.*/
- uint8_t bDescriptorSubType; /**<\brief Ethernet Networking Functional Descriptor.*/
- uint8_t iMACAddress; /**<\brief Index of string descriptor that holds the
- * 48bit Ethernet MAC.*/
- uint32_t bmEthernetStatistics; /**<\brief Indicates which Ethernet statistics functions
- * the device collects. */
- uint16_t wMaxSegmentSize; /**<\brief The maximum segment size that the Ethernet
- * device is capable of supporting. */
- uint16_t wNumberMCFilters; /**<\brief Contains the number of multicast filters that
- * can be configured by the host. */
- uint8_t bNumberPowerFilters; /**<\brief Contains the number of pattern filters that
- * are available for causing wake-up of the host. */
- } __attribute__ ((packed));
- /** @} */
- #ifdef __cplusplus
- }
- #endif
- #endif /* _USB_CDC_ECM_H_ */
|