X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/afe6ae14023c7040befe73e49d00077d3425c564..d11ed10c5314c44dc01c06954d1d73d4894cbff8:/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 abc17334a..ef98ccd56 100644 --- a/LUFA/Drivers/USB/Class/Common/RNDIS.h +++ b/LUFA/Drivers/USB/Class/Common/RNDIS.h @@ -1,21 +1,21 @@ /* LUFA Library - Copyright (C) Dean Camera, 2009. + Copyright (C) Dean Camera, 2010. dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ /* - Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, and distribute this software - and its documentation for any purpose and without fee is hereby - granted, provided that the above copyright notice appear in all - copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + Copyright 2010 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 + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -29,6 +29,12 @@ */ /** \ingroup Group_USBClassRNDIS + * @defgroup Group_USBClassRNDISCommon Common Class Definitions + * + * \section Module Description + * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB + * RNDIS Class. + * * @{ */ @@ -37,6 +43,8 @@ /* Includes: */ #include "../../USB.h" + #include "CDC.h" + #include "RNDISConstants.h" #include @@ -61,7 +69,7 @@ /** Maximum size in bytes of a RNDIS control message which can be sent or received */ #define RNDIS_MESSAGE_BUFFER_SIZE 128 - /** Maximum size in bytes of an Ethernet frame which can be sent or received */ + /** Maximum size in bytes of an Ethernet frame according to the Ethernet standard */ #define ETHERNET_FRAME_SIZE_MAX 1500 /** Notification request value for a RNDIS Response Available notification */ @@ -93,13 +101,6 @@ uint8_t Octets[6]; /**< Individual bytes of a MAC address */ } MAC_Address_t; - /** Type define for a RNDIS message header, sent before RNDIS messages */ - typedef struct - { - uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */ - uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */ - } RNDIS_Message_Header_t; - /** Type define for an Ethernet frame buffer. */ typedef struct { @@ -108,6 +109,13 @@ bool FrameInBuffer; /**< Indicates if a frame is currently stored in the buffer */ } Ethernet_Frame_Info_t; + /** Type define for a RNDIS message header, sent before RNDIS messages */ + typedef struct + { + uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */ + uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */ + } RNDIS_Message_Header_t; + /** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter */ typedef struct { @@ -122,7 +130,7 @@ uint32_t PerPacketInfoLength; uint32_t VcHandle; uint32_t Reserved; - } RNDIS_PACKET_MSG_t; + } RNDIS_Packet_Message_t; /** Type define for a RNDIS Initialize command message */ typedef struct @@ -134,7 +142,7 @@ uint32_t MajorVersion; uint32_t MinorVersion; uint32_t MaxTransferSize; - } RNDIS_INITIALIZE_MSG_t; + } RNDIS_Initialize_Message_t; /** Type define for a RNDIS Initialize complete response message */ typedef struct @@ -153,7 +161,7 @@ uint32_t PacketAlignmentFactor; uint32_t AFListOffset; uint32_t AFListSize; - } RNDIS_INITIALIZE_CMPLT_t; + } RNDIS_Initialize_Complete_t; /** Type define for a RNDIS Keepalive command message */ typedef struct @@ -161,7 +169,7 @@ uint32_t MessageType; uint32_t MessageLength; uint32_t RequestId; - } RNDIS_KEEPALIVE_MSG_t; + } RNDIS_KeepAlive_Message_t; /** Type define for a RNDIS Keepalive complete message */ typedef struct @@ -170,7 +178,7 @@ uint32_t MessageLength; uint32_t RequestId; uint32_t Status; - } RNDIS_KEEPALIVE_CMPLT_t; + } RNDIS_KeepAlive_Complete_t; /** Type define for a RNDIS Reset complete message */ typedef struct @@ -180,7 +188,7 @@ uint32_t Status; uint32_t AddressingReset; - } RNDIS_RESET_CMPLT_t; + } RNDIS_Reset_Complete_t; /** Type define for a RNDIS Set command message */ typedef struct @@ -193,7 +201,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; uint32_t DeviceVcHandle; - } RNDIS_SET_MSG_t; + } RNDIS_Set_Message_t; /** Type define for a RNDIS Set complete response message */ typedef struct @@ -202,7 +210,7 @@ uint32_t MessageLength; uint32_t RequestId; uint32_t Status; - } RNDIS_SET_CMPLT_t; + } RNDIS_Set_Complete_t; /** Type define for a RNDIS Query command message */ typedef struct @@ -215,7 +223,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; uint32_t DeviceVcHandle; - } RNDIS_QUERY_MSG_t; + } RNDIS_Query_Message_t; /** Type define for a RNDIS Query complete response message */ typedef struct @@ -227,42 +235,7 @@ uint32_t InformationBufferLength; uint32_t InformationBufferOffset; - } RNDIS_QUERY_CMPLT_t; - - /** Class state structure. An instance of this structure should be made for each RNDIS interface - * within the user application, and passed to each of the RNDIS class driver functions as the - * RNDISInterfaceInfo parameter. The contents of this structure should be set to their correct - * values when used, or ommitted to force the library to use default values. - */ - typedef struct - { - uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device */ - - uint8_t DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */ - uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */ - - uint8_t DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */ - uint16_t DataOUTEndpointSize; /**< Size in bytes of the CDC interface's OUT data endpoint */ - - uint8_t NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */ - uint16_t NotificationEndpointSize; /**< Size in bytes of the CDC interface's IN notification endpoint, if used */ - - char* AdapterVendorDescription; /**< String description of the adapter vendor */ - MAC_Address_t AdapterMACAddress; /**< MAC address of the adapter */ - - uint8_t RNDISMessageBuffer[RNDIS_MESSAGE_BUFFER_SIZE]; /**< Buffer to hold RNDIS messages to and from the host, - * managed by the class driver - */ - bool ResponseReady; /**< Internal flag indicating if a RNDIS message is waiting to be returned to the host */ - uint8_t CurrRNDISState; /**< Current RNDIS state of the adapter, a value from the RNDIS_States_t enum */ - uint32_t CurrPacketFilter; /**< Current packet filter mode, used internally by the class driver */ - Ethernet_Frame_Info_t FrameIN; /**< Structure holding the last received Ethernet frame from the host, for user - * processing - */ - Ethernet_Frame_Info_t FrameOUT; /**< Structure holding the next Ethernet frame to send to the host, populated by the - * user application - */ - } USB_ClassInfo_RNDIS_t; + } RNDIS_Query_Complete_t; /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus)