Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Host / LowLevel / RNDISEthernetHost / Lib / RNDISCommands.c
index 64cfc3c..c906a3b 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
   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 
+  Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
   software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in 
+  without fee, provided that the above copyright notice appear in
   all copies and that both that the copyright notice and this
   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 
+  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
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
@@ -53,7 +53,7 @@ uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer,
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-                       .bRequest      = REQ_SendEncapsulatedCommand,
+                       .bRequest      = RNDIS_REQ_SendEncapsulatedCommand,
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = Length,
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = Length,
@@ -78,12 +78,12 @@ uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer,
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-                       .bRequest      = REQ_GetEncapsulatedResponse,
+                       .bRequest      = RNDIS_REQ_GetEncapsulatedResponse,
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = Length,
                };
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = Length,
                };
-       
+
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
@@ -102,7 +102,7 @@ uint8_t RNDIS_SendKeepAlive(void)
 
        RNDIS_KeepAlive_Message_t  KeepAliveMessage;
        RNDIS_KeepAlive_Complete_t KeepAliveMessageResponse;
 
        RNDIS_KeepAlive_Message_t  KeepAliveMessage;
        RNDIS_KeepAlive_Complete_t KeepAliveMessageResponse;
-       
+
        KeepAliveMessage.MessageType     = REMOTE_NDIS_KEEPALIVE_MSG;
        KeepAliveMessage.MessageLength   = sizeof(RNDIS_KeepAlive_Message_t);
        KeepAliveMessage.RequestId       = RequestID++;
        KeepAliveMessage.MessageType     = REMOTE_NDIS_KEEPALIVE_MSG;
        KeepAliveMessage.MessageLength   = sizeof(RNDIS_KeepAlive_Message_t);
        KeepAliveMessage.RequestId       = RequestID++;
@@ -112,17 +112,17 @@ uint8_t RNDIS_SendKeepAlive(void)
        {
                return ErrorCode;
        }
        {
                return ErrorCode;
        }
-       
+
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&KeepAliveMessageResponse,
                                                       sizeof(RNDIS_KeepAlive_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
                return ErrorCode;
        }
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&KeepAliveMessageResponse,
                                                       sizeof(RNDIS_KeepAlive_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
                return ErrorCode;
        }
-       
+
        return HOST_SENDCONTROL_Successful;
 }
 
        return HOST_SENDCONTROL_Successful;
 }
 
-/** Initialises the attached RNDIS device's RNDIS interface.
+/** Initializes the attached RNDIS device's RNDIS interface.
  *
  *  \param[in] HostMaxPacketSize  Size of the packet buffer on the host
  *  \param[out] DeviceMaxPacketSize   Pointer to where the packet buffer size of the device is to be stored
  *
  *  \param[in] HostMaxPacketSize  Size of the packet buffer on the host
  *  \param[out] DeviceMaxPacketSize   Pointer to where the packet buffer size of the device is to be stored
@@ -145,13 +145,13 @@ uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize,
        InitMessage.MajorVersion    = REMOTE_NDIS_VERSION_MAJOR;
        InitMessage.MinorVersion    = REMOTE_NDIS_VERSION_MINOR;
        InitMessage.MaxTransferSize = HostMaxPacketSize;
        InitMessage.MajorVersion    = REMOTE_NDIS_VERSION_MAJOR;
        InitMessage.MinorVersion    = REMOTE_NDIS_VERSION_MINOR;
        InitMessage.MaxTransferSize = HostMaxPacketSize;
-       
+
        if ((ErrorCode = RNDIS_SendEncapsulatedCommand(&InitMessage,
                                                       sizeof(RNDIS_Initialize_Message_t))) != HOST_SENDCONTROL_Successful)
        {
                return ErrorCode;
        }
        if ((ErrorCode = RNDIS_SendEncapsulatedCommand(&InitMessage,
                                                       sizeof(RNDIS_Initialize_Message_t))) != HOST_SENDCONTROL_Successful)
        {
                return ErrorCode;
        }
-       
+
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&InitMessageResponse,
                                                       sizeof(RNDIS_Initialize_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&InitMessageResponse,
                                                       sizeof(RNDIS_Initialize_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
@@ -160,9 +160,9 @@ uint8_t RNDIS_InitializeDevice(const uint16_t HostMaxPacketSize,
 
        if (InitMessageResponse.Status != REMOTE_NDIS_STATUS_SUCCESS)
          return RNDIS_COMMAND_FAILED;
 
        if (InitMessageResponse.Status != REMOTE_NDIS_STATUS_SUCCESS)
          return RNDIS_COMMAND_FAILED;
-         
+
        *DeviceMaxPacketSize = InitMessageResponse.MaxTransferSize;
        *DeviceMaxPacketSize = InitMessageResponse.MaxTransferSize;
-       
+
        return HOST_SENDCONTROL_Successful;
 }
 
        return HOST_SENDCONTROL_Successful;
 }
 
@@ -186,18 +186,18 @@ uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid,
                RNDIS_Set_Message_t SetMessage;
                uint8_t             ContiguousBuffer[Length];
        } SetMessageData;
                RNDIS_Set_Message_t SetMessage;
                uint8_t             ContiguousBuffer[Length];
        } SetMessageData;
-       
+
        RNDIS_Set_Complete_t SetMessageResponse;
        RNDIS_Set_Complete_t SetMessageResponse;
-       
+
        SetMessageData.SetMessage.MessageType    = REMOTE_NDIS_SET_MSG;
        SetMessageData.SetMessage.MessageLength  = sizeof(RNDIS_Set_Message_t) + Length;
        SetMessageData.SetMessage.RequestId      = RequestID++;
        SetMessageData.SetMessage.MessageType    = REMOTE_NDIS_SET_MSG;
        SetMessageData.SetMessage.MessageLength  = sizeof(RNDIS_Set_Message_t) + Length;
        SetMessageData.SetMessage.RequestId      = RequestID++;
-                       
+
        SetMessageData.SetMessage.Oid            = Oid;
        SetMessageData.SetMessage.InformationBufferLength = Length;
        SetMessageData.SetMessage.InformationBufferOffset = (sizeof(RNDIS_Set_Message_t) - sizeof(RNDIS_Message_Header_t));
        SetMessageData.SetMessage.DeviceVcHandle = 0;
        SetMessageData.SetMessage.Oid            = Oid;
        SetMessageData.SetMessage.InformationBufferLength = Length;
        SetMessageData.SetMessage.InformationBufferOffset = (sizeof(RNDIS_Set_Message_t) - sizeof(RNDIS_Message_Header_t));
        SetMessageData.SetMessage.DeviceVcHandle = 0;
-       
+
        memcpy(&SetMessageData.ContiguousBuffer, Buffer, Length);
 
        if ((ErrorCode = RNDIS_SendEncapsulatedCommand(&SetMessageData,
        memcpy(&SetMessageData.ContiguousBuffer, Buffer, Length);
 
        if ((ErrorCode = RNDIS_SendEncapsulatedCommand(&SetMessageData,
@@ -205,7 +205,7 @@ uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid,
        {
                return ErrorCode;
        }
        {
                return ErrorCode;
        }
-       
+
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&SetMessageResponse,
                                                       sizeof(RNDIS_Set_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&SetMessageResponse,
                                                       sizeof(RNDIS_Set_Complete_t))) != HOST_SENDCONTROL_Successful)
        {
@@ -214,7 +214,7 @@ uint8_t RNDIS_SetRNDISProperty(const uint32_t Oid,
 
        if (SetMessageResponse.Status != REMOTE_NDIS_STATUS_SUCCESS)
          return RNDIS_COMMAND_FAILED;
 
        if (SetMessageResponse.Status != REMOTE_NDIS_STATUS_SUCCESS)
          return RNDIS_COMMAND_FAILED;
-         
+
        return HOST_SENDCONTROL_Successful;
 }
 
        return HOST_SENDCONTROL_Successful;
 }
 
@@ -244,7 +244,7 @@ uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid,
        QueryMessage.MessageType    = REMOTE_NDIS_QUERY_MSG;
        QueryMessage.MessageLength  = sizeof(RNDIS_Query_Message_t);
        QueryMessage.RequestId      = RequestID++;
        QueryMessage.MessageType    = REMOTE_NDIS_QUERY_MSG;
        QueryMessage.MessageLength  = sizeof(RNDIS_Query_Message_t);
        QueryMessage.RequestId      = RequestID++;
-                       
+
        QueryMessage.Oid            = Oid;
        QueryMessage.InformationBufferLength = 0;
        QueryMessage.InformationBufferOffset = 0;
        QueryMessage.Oid            = Oid;
        QueryMessage.InformationBufferLength = 0;
        QueryMessage.InformationBufferOffset = 0;
@@ -255,7 +255,7 @@ uint8_t RNDIS_QueryRNDISProperty(const uint32_t Oid,
        {
                return ErrorCode;
        }
        {
                return ErrorCode;
        }
-       
+
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&QueryMessageResponseData,
                                                       sizeof(QueryMessageResponseData))) != HOST_SENDCONTROL_Successful)
        {
        if ((ErrorCode = RNDIS_GetEncapsulatedResponse(&QueryMessageResponseData,
                                                       sizeof(QueryMessageResponseData))) != HOST_SENDCONTROL_Successful)
        {
@@ -284,7 +284,7 @@ uint8_t RNDIS_GetPacketLength(uint16_t* const PacketLength)
        Pipe_SelectPipe(RNDIS_DATA_IN_PIPE);
        Pipe_SetPipeToken(PIPE_TOKEN_IN);
        Pipe_Unfreeze();
        Pipe_SelectPipe(RNDIS_DATA_IN_PIPE);
        Pipe_SetPipeToken(PIPE_TOKEN_IN);
        Pipe_Unfreeze();
-       
+
        if (!(Pipe_IsReadWriteAllowed()))
        {
                *PacketLength = 0;
        if (!(Pipe_IsReadWriteAllowed()))
        {
                *PacketLength = 0;
@@ -293,17 +293,19 @@ uint8_t RNDIS_GetPacketLength(uint16_t* const PacketLength)
        }
 
        RNDIS_Packet_Message_t DeviceMessage;
        }
 
        RNDIS_Packet_Message_t DeviceMessage;
-       
-       if ((ErrorCode = Pipe_Read_Stream_LE(&DeviceMessage, sizeof(RNDIS_Packet_Message_t))) != PIPE_RWSTREAM_NoError)
+
+       if ((ErrorCode = Pipe_Read_Stream_LE(&DeviceMessage, sizeof(RNDIS_Packet_Message_t), NULL)) != PIPE_RWSTREAM_NoError)
        {
                return ErrorCode;
        }
 
        *PacketLength = (uint16_t)DeviceMessage.DataLength;
        {
                return ErrorCode;
        }
 
        *PacketLength = (uint16_t)DeviceMessage.DataLength;
-       
-       Pipe_Discard_Stream(DeviceMessage.DataOffset - (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t)));
-       
+
+       Pipe_Discard_Stream(DeviceMessage.DataOffset - (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t)),
+                           NULL);
+
        Pipe_Freeze();
        Pipe_Freeze();
-       
+
        return PIPE_RWSTREAM_NoError;
 }
        return PIPE_RWSTREAM_NoError;
 }
+