X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/eee252603be67c539f9986cde76454f756e55d95..HEAD:/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h diff --git a/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h b/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h index 2e4ee486b..9a4adc7da 100644 --- a/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h +++ b/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2012. + Copyright (C) Dean Camera, 2021. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2021 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 @@ -40,11 +40,11 @@ /** \ingroup Group_USBClassRNDIS * \defgroup Group_USBClassRNDISDevice RNDIS Class Device Mode Driver * - * \section Sec_Dependencies Module Source Dependencies + * \section Sec_USBClassRNDISDevice_Dependencies Module Source Dependencies * The following files must be built with any user project that uses this module: * - LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) * - * \section Sec_ModDescription Module Description + * \section Sec_USBClassRNDISDevice_ModDescription Module Description * Device Mode USB Class driver framework interface, for the RNDIS USB Class driver. * * @{ @@ -87,14 +87,15 @@ char* AdapterVendorDescription; /**< String description of the adapter vendor. */ MAC_Address_t AdapterMACAddress; /**< MAC address of the adapter. */ + + uint8_t* MessageBuffer; /**< Buffer where RNDIS messages can be stored by the internal driver. This + * should be at least 132 bytes in length for minimal functionality. */ + uint16_t MessageBufferLength; /**< Length in bytes of the \ref MessageBuffer RNDIS buffer. */ } Config; /**< Config data for the USB class interface within the device. All elements in this section * must be set or the interface will fail to enumerate and operate correctly. */ struct { - 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 \ref RNDIS_States_t enum. */ uint32_t CurrPacketFilter; /**< Current packet filter mode, used internally by the class driver. */ @@ -137,7 +138,7 @@ * * \return Boolean \c true if a packet is waiting to be read in by the host, \c false otherwise. */ - bool RNDIS_Device_IsPacketReceived(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo); + bool RNDIS_Device_IsPacketReceived(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); /** Retrieves the next pending packet from the device, discarding the remainder of the RNDIS packet header to leave * only the packet contents for processing by the device in the nominated buffer. @@ -147,13 +148,15 @@ * * \param[in,out] RNDISInterfaceInfo Pointer to a structure containing an RNDIS Class configuration and state. * \param[out] Buffer Pointer to a buffer where the packer data is to be written to. - * \param[out] PacketLength Pointer to where the length in bytes of the read packet is to be stored. + * \param[in] BufferSize Size in bytes of the supplied buffer to store the read packet. + * \param[out] PacketLength Pointer to a value indicating the length in bytes of the read packet. * * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. */ uint8_t RNDIS_Device_ReadPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, void* Buffer, - uint16_t* const PacketLength); + const uint16_t BufferSize, + uint16_t* PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(4); /** Sends the given packet to the attached RNDIS device, after adding a RNDIS packet message header. * @@ -168,10 +171,13 @@ */ uint8_t RNDIS_Device_SendPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, void* Buffer, - const uint16_t PacketLength); + const uint16_t PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) + /* Macros: */ + #define RNDIS_DEVICE_MIN_MESSAGE_BUFFER_LENGTH sizeof(AdapterSupportedOIDList) + sizeof(RNDIS_Query_Complete_t) + /* Function Prototypes: */ #if defined(__INCLUDE_FROM_RNDIS_DEVICE_C) static void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)