X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/b37d77eab32d171ad7b28157a924a4026e2aebd1..de9bd767dc8578a45a195fb1e37dd4ff26ae9567:/LUFA/Drivers/USB/Class/Common/RNDIS.h diff --git a/LUFA/Drivers/USB/Class/Common/RNDIS.h b/LUFA/Drivers/USB/Class/Common/RNDIS.h index ae2d5bd54..f98fc6d81 100644 --- a/LUFA/Drivers/USB/Class/Common/RNDIS.h +++ b/LUFA/Drivers/USB/Class/Common/RNDIS.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. + Copyright (C) Dean Camera, 2011. dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -38,9 +38,9 @@ */ /** \ingroup Group_USBClassRNDIS - * @defgroup Group_USBClassRNDISCommon Common Class Definitions + * \defgroup Group_USBClassRNDISCommon Common Class Definitions * - * \section Module Description + * \section Sec_ModDescription Module Description * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB * RNDIS Class. * @@ -54,12 +54,9 @@ #define __INCLUDE_FROM_CDC_DRIVER /* Includes: */ - #include "../../HighLevel/StdDescriptors.h" - #include "RNDISConstants.h" + #include "../../Core/StdDescriptors.h" #include "CDC.h" - #include - /* Enable C linkage for C++ Compilers: */ #if defined(__cplusplus) extern "C" { @@ -77,6 +74,98 @@ /** Implemented RNDIS Version Minor. */ #define REMOTE_NDIS_VERSION_MINOR 0x00 + /** \name RNDIS Message Values */ + //@{ + #define REMOTE_NDIS_PACKET_MSG 0x00000001UL + #define REMOTE_NDIS_INITIALIZE_MSG 0x00000002UL + #define REMOTE_NDIS_HALT_MSG 0x00000003UL + #define REMOTE_NDIS_QUERY_MSG 0x00000004UL + #define REMOTE_NDIS_SET_MSG 0x00000005UL + #define REMOTE_NDIS_RESET_MSG 0x00000006UL + #define REMOTE_NDIS_INDICATE_STATUS_MSG 0x00000007UL + #define REMOTE_NDIS_KEEPALIVE_MSG 0x00000008UL + //@} + + /** \name RNDIS Response Values */ + //@{ + #define REMOTE_NDIS_INITIALIZE_CMPLT 0x80000002UL + #define REMOTE_NDIS_QUERY_CMPLT 0x80000004UL + #define REMOTE_NDIS_SET_CMPLT 0x80000005UL + #define REMOTE_NDIS_RESET_CMPLT 0x80000006UL + #define REMOTE_NDIS_KEEPALIVE_CMPLT 0x80000008UL + //@} + + /** \name RNDIS Status Values */ + //@{ + #define REMOTE_NDIS_STATUS_SUCCESS 0x00000000UL + #define REMOTE_NDIS_STATUS_FAILURE 0xC0000001UL + #define REMOTE_NDIS_STATUS_INVALID_DATA 0xC0010015UL + #define REMOTE_NDIS_STATUS_NOT_SUPPORTED 0xC00000BBUL + #define REMOTE_NDIS_STATUS_MEDIA_CONNECT 0x4001000BUL + #define REMOTE_NDIS_STATUS_MEDIA_DISCONNECT 0x4001000CUL + //@} + + /** \name RNDIS Media States */ + //@{ + #define REMOTE_NDIS_MEDIA_STATE_CONNECTED 0x00000000UL + #define REMOTE_NDIS_MEDIA_STATE_DISCONNECTED 0x00000001UL + //@} + + #define REMOTE_NDIS_MEDIUM_802_3 0x00000000UL + + /** \name RNDIS Connection Types */ + //@{ + #define REMOTE_NDIS_DF_CONNECTIONLESS 0x00000001UL + #define REMOTE_NDIS_DF_CONNECTION_ORIENTED 0x00000002UL + //@} + + /** \name RNDIS Packet Types */ + //@{ + #define REMOTE_NDIS_PACKET_DIRECTED 0x00000001UL + #define REMOTE_NDIS_PACKET_MULTICAST 0x00000002UL + #define REMOTE_NDIS_PACKET_ALL_MULTICAST 0x00000004UL + #define REMOTE_NDIS_PACKET_BROADCAST 0x00000008UL + #define REMOTE_NDIS_PACKET_SOURCE_ROUTING 0x00000010UL + #define REMOTE_NDIS_PACKET_PROMISCUOUS 0x00000020UL + #define REMOTE_NDIS_PACKET_SMT 0x00000040UL + #define REMOTE_NDIS_PACKET_ALL_LOCAL 0x00000080UL + #define REMOTE_NDIS_PACKET_GROUP 0x00001000UL + #define REMOTE_NDIS_PACKET_ALL_FUNCTIONAL 0x00002000UL + #define REMOTE_NDIS_PACKET_FUNCTIONAL 0x00004000UL + #define REMOTE_NDIS_PACKET_MAC_FRAME 0x00008000UL + //@} + + /** \name RNDIS OID Values */ + //@{ + #define OID_GEN_SUPPORTED_LIST 0x00010101UL + #define OID_GEN_HARDWARE_STATUS 0x00010102UL + #define OID_GEN_MEDIA_SUPPORTED 0x00010103UL + #define OID_GEN_MEDIA_IN_USE 0x00010104UL + #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106UL + #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111UL + #define OID_GEN_LINK_SPEED 0x00010107UL + #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010AUL + #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010BUL + #define OID_GEN_VENDOR_ID 0x0001010CUL + #define OID_GEN_VENDOR_DESCRIPTION 0x0001010DUL + #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010EUL + #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111UL + #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114UL + #define OID_GEN_PHYSICAL_MEDIUM 0x00010202UL + #define OID_GEN_XMIT_OK 0x00020101UL + #define OID_GEN_RCV_OK 0x00020102UL + #define OID_GEN_XMIT_ERROR 0x00020103UL + #define OID_GEN_RCV_ERROR 0x00020104UL + #define OID_GEN_RCV_NO_BUFFER 0x00020105UL + #define OID_802_3_PERMANENT_ADDRESS 0x01010101UL + #define OID_802_3_CURRENT_ADDRESS 0x01010102UL + #define OID_802_3_MULTICAST_LIST 0x01010103UL + #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104UL + #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101UL + #define OID_802_3_XMIT_ONE_COLLISION 0x01020102UL + #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103UL + //@} + /** Maximum size in bytes of a RNDIS control message which can be sent or received. */ #define RNDIS_MESSAGE_BUFFER_SIZE 128 @@ -102,7 +191,7 @@ /** Enum for the RNDIS class specific notification requests that can be issued by a RNDIS device to a host. */ enum RNDIS_ClassNotifications_t { - RNDIS_NOTIF_ResponseAvailable = 0x01, /**< Notification request value for a RNDIS Response Available notification. */ + RNDIS_NOTIF_ResponseAvailable = 0x01, /**< Notification request value for a RNDIS Response Available notification. */ }; /** Enum for the NDIS hardware states. */ @@ -123,7 +212,7 @@ typedef struct { uint8_t Octets[6]; /**< Individual bytes of a MAC address */ - } MAC_Address_t; + } ATTR_PACKED MAC_Address_t; /** \brief RNDIS Ethernet Frame Packet Information Structure. * @@ -134,7 +223,7 @@ uint8_t FrameData[ETHERNET_FRAME_SIZE_MAX]; /**< Ethernet frame contents. */ uint16_t FrameLength; /**< Length in bytes of the Ethernet frame stored in the buffer. */ bool FrameInBuffer; /**< Indicates if a frame is currently stored in the buffer. */ - } Ethernet_Frame_Info_t; + } ATTR_PACKED Ethernet_Frame_Info_t; /** \brief RNDIS Common Message Header Structure. * @@ -142,9 +231,9 @@ */ typedef struct { - uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */ + uint32_t MessageType; /**< RNDIS message type, a \c REMOTE_NDIS_*_MSG constant */ uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */ - } RNDIS_Message_Header_t; + } ATTR_PACKED RNDIS_Message_Header_t; /** \brief RNDIS Message Structure. * @@ -163,7 +252,7 @@ uint32_t PerPacketInfoLength; uint32_t VcHandle; uint32_t Reserved; - } RNDIS_Packet_Message_t; + } ATTR_PACKED RNDIS_Packet_Message_t; /** \brief RNDIS Initialization Message Structure. * @@ -178,7 +267,7 @@ uint32_t MajorVersion; uint32_t MinorVersion; uint32_t MaxTransferSize; - } RNDIS_Initialize_Message_t; + } ATTR_PACKED RNDIS_Initialize_Message_t; /** \brief RNDIS Initialize Complete Message Structure. * @@ -200,7 +289,7 @@ uint32_t PacketAlignmentFactor; uint32_t AFListOffset; uint32_t AFListSize; - } RNDIS_Initialize_Complete_t; + } ATTR_PACKED RNDIS_Initialize_Complete_t; /** \brief RNDIS Keep Alive Message Structure. * @@ -211,7 +300,7 @@ uint32_t MessageType; uint32_t MessageLength; uint32_t RequestId; - } RNDIS_KeepAlive_Message_t; + } ATTR_PACKED RNDIS_KeepAlive_Message_t; /** \brief RNDIS Keep Alive Complete Message Structure. * @@ -223,7 +312,7 @@ uint32_t MessageLength; uint32_t RequestId; uint32_t Status; - } RNDIS_KeepAlive_Complete_t; + } ATTR_PACKED RNDIS_KeepAlive_Complete_t; /** \brief RNDIS Reset Complete Message Structure. * @@ -236,7 +325,7 @@ uint32_t Status; uint32_t AddressingReset; - } RNDIS_Reset_Complete_t; + } ATTR_PACKED RNDIS_Reset_Complete_t; /** \brief RNDIS OID Property Set Message Structure. * @@ -252,7 +341,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; uint32_t DeviceVcHandle; - } RNDIS_Set_Message_t; + } ATTR_PACKED RNDIS_Set_Message_t; /** \brief RNDIS OID Property Set Complete Message Structure. * @@ -264,7 +353,7 @@ uint32_t MessageLength; uint32_t RequestId; uint32_t Status; - } RNDIS_Set_Complete_t; + } ATTR_PACKED RNDIS_Set_Complete_t; /** \brief RNDIS OID Property Query Message Structure. * @@ -280,7 +369,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; uint32_t DeviceVcHandle; - } RNDIS_Query_Message_t; + } ATTR_PACKED RNDIS_Query_Message_t; /** \brief RNDIS OID Property Query Complete Message Structure. * @@ -295,7 +384,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; - } RNDIS_Query_Complete_t; + } ATTR_PACKED RNDIS_Query_Complete_t; /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus)