Rename PDIProtocol.c/.h to XPROGProtocol.c/.h as it will now handle both TPI and...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / RNDIS.c
index 08efcde..44a895d 100644 (file)
@@ -65,12 +65,12 @@ static const uint32_t PROGMEM AdapterSupportedOIDList[]  =
                OID_802_3_XMIT_MORE_COLLISIONS,\r
        };\r
 \r
-void RNDIS_Device_ProcessControlPacket(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)\r
+void RNDIS_Device_ProcessControlRequest(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)\r
 {\r
        if (!(Endpoint_IsSETUPReceived()))\r
          return;\r
          \r
-       if (USB_ControlRequest.wIndex != RNDISInterfaceInfo->ControlInterfaceNumber)\r
+       if (USB_ControlRequest.wIndex != RNDISInterfaceInfo->Config.ControlInterfaceNumber)\r
          return;\r
 \r
        switch (USB_ControlRequest.bRequest)\r
@@ -80,7 +80,7 @@ void RNDIS_Device_ProcessControlPacket(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo
                        {\r
                                Endpoint_ClearSETUP();\r
 \r
-                               Endpoint_Read_Control_Stream_LE(RNDISInterfaceInfo->RNDISMessageBuffer, USB_ControlRequest.wLength);\r
+                               Endpoint_Read_Control_Stream_LE(RNDISInterfaceInfo->State.RNDISMessageBuffer, USB_ControlRequest.wLength);\r
                                Endpoint_ClearIN();\r
 \r
                                RNDIS_Device_ProcessRNDISControlMessage(RNDISInterfaceInfo);\r
@@ -92,15 +92,15 @@ void RNDIS_Device_ProcessControlPacket(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo
                        {\r
                                Endpoint_ClearSETUP();\r
 \r
-                               RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+                               RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
 \r
                                if (!(MessageHeader->MessageLength))\r
                                {\r
-                                       RNDISInterfaceInfo->RNDISMessageBuffer[0] = 0;\r
+                                       RNDISInterfaceInfo->State.RNDISMessageBuffer[0] = 0;\r
                                        MessageHeader->MessageLength = 1;\r
                                }\r
 \r
-                               Endpoint_Write_Control_Stream_LE(RNDISInterfaceInfo->RNDISMessageBuffer, MessageHeader->MessageLength);                         \r
+                               Endpoint_Write_Control_Stream_LE(RNDISInterfaceInfo->State.RNDISMessageBuffer, MessageHeader->MessageLength);                           \r
                                Endpoint_ClearOUT();\r
 \r
                                MessageHeader->MessageLength = 0;\r
@@ -110,25 +110,27 @@ void RNDIS_Device_ProcessControlPacket(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo
        }\r
 }\r
 \r
-bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)\r
+bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)\r
 {\r
-       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->DataINEndpointNumber, EP_TYPE_BULK,\r
-                                                                ENDPOINT_DIR_IN, RNDISInterfaceInfo->DataINEndpointSize,\r
-                                                                ENDPOINT_BANK_SINGLE)))\r
+       memset(&RNDISInterfaceInfo->State, 0x00, sizeof(RNDISInterfaceInfo->State));\r
+\r
+       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->Config.DataINEndpointNumber, EP_TYPE_BULK,\r
+                                                                ENDPOINT_DIR_IN, RNDISInterfaceInfo->Config.DataINEndpointSize,\r
+                                                                RNDISInterfaceInfo->Config.DataINEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))\r
        {\r
                return false;\r
        }\r
 \r
-       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->DataOUTEndpointNumber, EP_TYPE_BULK,\r
-                                        ENDPOINT_DIR_OUT, RNDISInterfaceInfo->DataOUTEndpointSize,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
+       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->Config.DataOUTEndpointNumber, EP_TYPE_BULK,\r
+                                        ENDPOINT_DIR_OUT, RNDISInterfaceInfo->Config.DataOUTEndpointSize,\r
+                                        RNDISInterfaceInfo->Config.DataOUTEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))\r
        {\r
                return false;\r
        }\r
 \r
-       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->NotificationEndpointNumber, EP_TYPE_INTERRUPT,\r
-                                        ENDPOINT_DIR_IN, RNDISInterfaceInfo->NotificationEndpointSize,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
+       if (!(Endpoint_ConfigureEndpoint(RNDISInterfaceInfo->Config.NotificationEndpointNumber, EP_TYPE_INTERRUPT,\r
+                                        ENDPOINT_DIR_IN, RNDISInterfaceInfo->Config.NotificationEndpointSize,\r
+                                        RNDISInterfaceInfo->Config.NotificationEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))\r
        {\r
                return false;\r
        }\r
@@ -136,16 +138,16 @@ bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)
        return true;\r
 }\r
 \r
-void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)\r
+void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)\r
 {\r
-       if (!(USB_IsConnected))\r
+       if (USB_DeviceState != DEVICE_STATE_Configured)\r
          return;\r
 \r
-       RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+       RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
 \r
-       Endpoint_SelectEndpoint(RNDISInterfaceInfo->NotificationEndpointNumber);\r
+       Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.NotificationEndpointNumber);\r
 \r
-       if (Endpoint_IsINReady() && RNDISInterfaceInfo->ResponseReady)\r
+       if (Endpoint_IsINReady() && RNDISInterfaceInfo->State.ResponseReady)\r
        {\r
                USB_Request_Header_t Notification = (USB_Request_Header_t)\r
                        {\r
@@ -156,22 +158,22 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)
                                .wLength       = 0,\r
                        };\r
                \r
-               Endpoint_Write_Stream_LE(&Notification, sizeof(Notification), NO_STREAM_CALLBACK);\r
+               Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NO_STREAM_CALLBACK);\r
 \r
                Endpoint_ClearIN();\r
 \r
-               RNDISInterfaceInfo->ResponseReady = false;\r
+               RNDISInterfaceInfo->State.ResponseReady = false;\r
        }\r
        \r
-       if ((RNDISInterfaceInfo->CurrRNDISState == RNDIS_Data_Initialized) && !(MessageHeader->MessageLength))\r
+       if ((RNDISInterfaceInfo->State.CurrRNDISState == RNDIS_Data_Initialized) && !(MessageHeader->MessageLength))\r
        {\r
-               RNDIS_PACKET_MSG_t RNDISPacketHeader;\r
+               RNDIS_Packet_Message_t RNDISPacketHeader;\r
 \r
-               Endpoint_SelectEndpoint(RNDISInterfaceInfo->DataOUTEndpointNumber);\r
+               Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.DataOUTEndpointNumber);\r
 \r
-               if (Endpoint_IsOUTReceived() && !(RNDISInterfaceInfo->FrameIN.FrameInBuffer))\r
+               if (Endpoint_IsOUTReceived() && !(RNDISInterfaceInfo->State.FrameIN.FrameInBuffer))\r
                {\r
-                       Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_PACKET_MSG_t), NO_STREAM_CALLBACK);\r
+                       Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NO_STREAM_CALLBACK);\r
 \r
                        if (RNDISPacketHeader.DataLength > ETHERNET_FRAME_SIZE_MAX)\r
                        {\r
@@ -179,52 +181,54 @@ void RNDIS_Device_USBTask(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)
                                return;\r
                        }\r
                        \r
-                       Endpoint_Read_Stream_LE(RNDISInterfaceInfo->FrameIN.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK);\r
+                       Endpoint_Read_Stream_LE(RNDISInterfaceInfo->State.FrameIN.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK);\r
 \r
                        Endpoint_ClearOUT();\r
                        \r
-                       RNDISInterfaceInfo->FrameIN.FrameLength = RNDISPacketHeader.DataLength;\r
+                       RNDISInterfaceInfo->State.FrameIN.FrameLength = RNDISPacketHeader.DataLength;\r
 \r
-                       RNDISInterfaceInfo->FrameIN.FrameInBuffer = true;\r
+                       RNDISInterfaceInfo->State.FrameIN.FrameInBuffer = true;\r
                }\r
                \r
-               Endpoint_SelectEndpoint(RNDISInterfaceInfo->DataINEndpointNumber);\r
+               Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.DataINEndpointNumber);\r
                \r
-               if (Endpoint_IsINReady() && RNDISInterfaceInfo->FrameOUT.FrameInBuffer)\r
+               if (Endpoint_IsINReady() && RNDISInterfaceInfo->State.FrameOUT.FrameInBuffer)\r
                {\r
-                       memset(&RNDISPacketHeader, 0, sizeof(RNDIS_PACKET_MSG_t));\r
+                       memset(&RNDISPacketHeader, 0, sizeof(RNDIS_Packet_Message_t));\r
 \r
                        RNDISPacketHeader.MessageType   = REMOTE_NDIS_PACKET_MSG;\r
-                       RNDISPacketHeader.MessageLength = (sizeof(RNDIS_PACKET_MSG_t) + RNDISInterfaceInfo->FrameOUT.FrameLength);\r
-                       RNDISPacketHeader.DataOffset    = (sizeof(RNDIS_PACKET_MSG_t) - sizeof(RNDIS_Message_Header_t));\r
-                       RNDISPacketHeader.DataLength    = RNDISInterfaceInfo->FrameOUT.FrameLength;\r
+                       RNDISPacketHeader.MessageLength = (sizeof(RNDIS_Packet_Message_t) + RNDISInterfaceInfo->State.FrameOUT.FrameLength);\r
+                       RNDISPacketHeader.DataOffset    = (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t));\r
+                       RNDISPacketHeader.DataLength    = RNDISInterfaceInfo->State.FrameOUT.FrameLength;\r
 \r
-                       Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_PACKET_MSG_t), NO_STREAM_CALLBACK);\r
-                       Endpoint_Write_Stream_LE(RNDISInterfaceInfo->FrameOUT.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK);\r
+                       Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NO_STREAM_CALLBACK);\r
+                       Endpoint_Write_Stream_LE(RNDISInterfaceInfo->State.FrameOUT.FrameData, RNDISPacketHeader.DataLength, NO_STREAM_CALLBACK);\r
                        Endpoint_ClearIN();\r
                        \r
-                       RNDISInterfaceInfo->FrameOUT.FrameInBuffer = false;\r
+                       RNDISInterfaceInfo->State.FrameOUT.FrameInBuffer = false;\r
                }\r
        }\r
 }                                                      \r
 \r
-void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo)\r
+void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)\r
 {\r
        /* Note: Only a single buffer is used for both the received message and its response to save SRAM. Because of\r
                 this, response bytes should be filled in order so that they do not clobber unread data in the buffer. */\r
 \r
-       RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+       RNDIS_Message_Header_t* MessageHeader = (RNDIS_Message_Header_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
 \r
        switch (MessageHeader->MessageType)\r
        {\r
                case REMOTE_NDIS_INITIALIZE_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = true;\r
+                       RNDISInterfaceInfo->State.ResponseReady = true;\r
                        \r
-                       RNDIS_INITIALIZE_MSG_t*   INITIALIZE_Message  = (RNDIS_INITIALIZE_MSG_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       RNDIS_INITIALIZE_CMPLT_t* INITIALIZE_Response = (RNDIS_INITIALIZE_CMPLT_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+                       RNDIS_Initialize_Message_t*  INITIALIZE_Message  =\r
+                                      (RNDIS_Initialize_Message_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       RNDIS_Initialize_Complete_t* INITIALIZE_Response =\r
+                                      (RNDIS_Initialize_Complete_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
                        \r
                        INITIALIZE_Response->MessageType           = REMOTE_NDIS_INITIALIZE_CMPLT;\r
-                       INITIALIZE_Response->MessageLength         = sizeof(RNDIS_INITIALIZE_CMPLT_t);\r
+                       INITIALIZE_Response->MessageLength         = sizeof(RNDIS_Initialize_Complete_t);\r
                        INITIALIZE_Response->RequestId             = INITIALIZE_Message->RequestId;\r
                        INITIALIZE_Response->Status                = REMOTE_NDIS_STATUS_SUCCESS;\r
                        \r
@@ -233,35 +237,35 @@ void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_t* RNDISInterfa
                        INITIALIZE_Response->DeviceFlags           = REMOTE_NDIS_DF_CONNECTIONLESS;\r
                        INITIALIZE_Response->Medium                = REMOTE_NDIS_MEDIUM_802_3;\r
                        INITIALIZE_Response->MaxPacketsPerTransfer = 1;\r
-                       INITIALIZE_Response->MaxTransferSize       = (sizeof(RNDIS_PACKET_MSG_t) + ETHERNET_FRAME_SIZE_MAX);\r
+                       INITIALIZE_Response->MaxTransferSize       = (sizeof(RNDIS_Packet_Message_t) + ETHERNET_FRAME_SIZE_MAX);\r
                        INITIALIZE_Response->PacketAlignmentFactor = 0;\r
                        INITIALIZE_Response->AFListOffset          = 0;\r
                        INITIALIZE_Response->AFListSize            = 0;\r
                        \r
-                       RNDISInterfaceInfo->CurrRNDISState = RNDIS_Initialized;\r
+                       RNDISInterfaceInfo->State.CurrRNDISState = RNDIS_Initialized;\r
                \r
                        break;\r
                case REMOTE_NDIS_HALT_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = false;\r
+                       RNDISInterfaceInfo->State.ResponseReady = false;\r
                        MessageHeader->MessageLength = 0;\r
 \r
-                       RNDISInterfaceInfo->CurrRNDISState = RNDIS_Uninitialized;\r
+                       RNDISInterfaceInfo->State.CurrRNDISState = RNDIS_Uninitialized;\r
 \r
                        break;\r
                case REMOTE_NDIS_QUERY_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = true;\r
+                       RNDISInterfaceInfo->State.ResponseReady = true;\r
                                                \r
-                       RNDIS_QUERY_MSG_t*   QUERY_Message  = (RNDIS_QUERY_MSG_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       RNDIS_QUERY_CMPLT_t* QUERY_Response = (RNDIS_QUERY_CMPLT_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       uint32_t             Query_Oid      = QUERY_Message->Oid;\r
+                       RNDIS_Query_Message_t*  QUERY_Message  = (RNDIS_Query_Message_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       RNDIS_Query_Complete_t* QUERY_Response = (RNDIS_Query_Complete_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       uint32_t                Query_Oid      = QUERY_Message->Oid;\r
                                                \r
-                       void*     QueryData                 = &RNDISInterfaceInfo->RNDISMessageBuffer[sizeof(RNDIS_Message_Header_t) +\r
-                                                                                                     QUERY_Message->InformationBufferOffset];\r
-                       void*     ResponseData              = &RNDISInterfaceInfo->RNDISMessageBuffer[sizeof(RNDIS_QUERY_CMPLT_t)];             \r
+                       void*     QueryData = &RNDISInterfaceInfo->State.RNDISMessageBuffer[sizeof(RNDIS_Message_Header_t) +\r
+                                                                                           QUERY_Message->InformationBufferOffset];\r
+                       void*     ResponseData = &RNDISInterfaceInfo->State.RNDISMessageBuffer[sizeof(RNDIS_Query_Complete_t)];         \r
                        uint16_t  ResponseSize;\r
 \r
-                       QUERY_Response->MessageType         = REMOTE_NDIS_QUERY_CMPLT;\r
-                       QUERY_Response->MessageLength       = sizeof(RNDIS_QUERY_CMPLT_t);\r
+                       QUERY_Response->MessageType   = REMOTE_NDIS_QUERY_CMPLT;\r
+                       QUERY_Response->MessageLength = sizeof(RNDIS_Query_Complete_t);\r
                                                \r
                        if (RNDIS_Device_ProcessNDISQuery(RNDISInterfaceInfo, Query_Oid, QueryData, QUERY_Message->InformationBufferLength,\r
                                                          ResponseData, &ResponseSize))\r
@@ -270,7 +274,7 @@ void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_t* RNDISInterfa
                                QUERY_Response->MessageLength          += ResponseSize;\r
                                                        \r
                                QUERY_Response->InformationBufferLength = ResponseSize;\r
-                               QUERY_Response->InformationBufferOffset = (sizeof(RNDIS_QUERY_CMPLT_t) - sizeof(RNDIS_Message_Header_t));\r
+                               QUERY_Response->InformationBufferOffset = (sizeof(RNDIS_Query_Complete_t) - sizeof(RNDIS_Message_Header_t));\r
                        }\r
                        else\r
                        {                               \r
@@ -282,55 +286,58 @@ void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_t* RNDISInterfa
                        \r
                        break;\r
                case REMOTE_NDIS_SET_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = true;\r
+                       RNDISInterfaceInfo->State.ResponseReady = true;\r
                        \r
-                       RNDIS_SET_MSG_t*   SET_Message  = (RNDIS_SET_MSG_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       RNDIS_SET_CMPLT_t* SET_Response = (RNDIS_SET_CMPLT_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       uint32_t           SET_Oid      = SET_Message->Oid;\r
+                       RNDIS_Set_Message_t*  SET_Message  = (RNDIS_Set_Message_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       RNDIS_Set_Complete_t* SET_Response = (RNDIS_Set_Complete_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       uint32_t              SET_Oid      = SET_Message->Oid;\r
 \r
-                       SET_Response->MessageType       = REMOTE_NDIS_SET_CMPLT;\r
-                       SET_Response->MessageLength     = sizeof(RNDIS_SET_CMPLT_t);\r
-                       SET_Response->RequestId         = SET_Message->RequestId;\r
+                       SET_Response->MessageType   = REMOTE_NDIS_SET_CMPLT;\r
+                       SET_Response->MessageLength = sizeof(RNDIS_Set_Complete_t);\r
+                       SET_Response->RequestId     = SET_Message->RequestId;\r
 \r
-                       void* SetData                   = &RNDISInterfaceInfo->RNDISMessageBuffer[sizeof(RNDIS_Message_Header_t) +\r
-                                                                                                 SET_Message->InformationBufferOffset];\r
+                       void* SetData = &RNDISInterfaceInfo->State.RNDISMessageBuffer[sizeof(RNDIS_Message_Header_t) +\r
+                                                                                     SET_Message->InformationBufferOffset];\r
                                                \r
-                       if (RNDIS_Device_ProcessNDISSet(RNDISInterfaceInfo, SET_Oid, SetData, SET_Message->InformationBufferLength))\r
-                         SET_Response->Status        = REMOTE_NDIS_STATUS_SUCCESS;\r
-                       else\r
-                         SET_Response->Status        = REMOTE_NDIS_STATUS_NOT_SUPPORTED;\r
-\r
+                       SET_Response->Status = RNDIS_Device_ProcessNDISSet(RNDISInterfaceInfo, SET_Oid, SetData,\r
+                                                                          SET_Message->InformationBufferLength) ?\r
+                                                                          REMOTE_NDIS_STATUS_SUCCESS : REMOTE_NDIS_STATUS_NOT_SUPPORTED;\r
                        break;\r
                case REMOTE_NDIS_RESET_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = true;\r
+                       RNDISInterfaceInfo->State.ResponseReady = true;\r
                        \r
-                       RNDIS_RESET_CMPLT_t* RESET_Response = (RNDIS_RESET_CMPLT_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+                       RNDIS_Reset_Complete_t* RESET_Response = (RNDIS_Reset_Complete_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
 \r
-                       RESET_Response->MessageType         = REMOTE_NDIS_RESET_CMPLT;\r
-                       RESET_Response->MessageLength       = sizeof(RNDIS_RESET_CMPLT_t);\r
-                       RESET_Response->Status              = REMOTE_NDIS_STATUS_SUCCESS;\r
-                       RESET_Response->AddressingReset     = 0;\r
+                       RESET_Response->MessageType     = REMOTE_NDIS_RESET_CMPLT;\r
+                       RESET_Response->MessageLength   = sizeof(RNDIS_Reset_Complete_t);\r
+                       RESET_Response->Status          = REMOTE_NDIS_STATUS_SUCCESS;\r
+                       RESET_Response->AddressingReset = 0;\r
 \r
                        break;\r
                case REMOTE_NDIS_KEEPALIVE_MSG:\r
-                       RNDISInterfaceInfo->ResponseReady = true;\r
+                       RNDISInterfaceInfo->State.ResponseReady = true;\r
                        \r
-                       RNDIS_KEEPALIVE_MSG_t*   KEEPALIVE_Message  = (RNDIS_KEEPALIVE_MSG_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
-                       RNDIS_KEEPALIVE_CMPLT_t* KEEPALIVE_Response = (RNDIS_KEEPALIVE_CMPLT_t*)&RNDISInterfaceInfo->RNDISMessageBuffer;\r
+                       RNDIS_KeepAlive_Message_t*  KEEPALIVE_Message  =\r
+                                       (RNDIS_KeepAlive_Message_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
+                       RNDIS_KeepAlive_Complete_t* KEEPALIVE_Response =\r
+                                       (RNDIS_KeepAlive_Complete_t*)&RNDISInterfaceInfo->State.RNDISMessageBuffer;\r
 \r
-                       KEEPALIVE_Response->MessageType     = REMOTE_NDIS_KEEPALIVE_CMPLT;\r
-                       KEEPALIVE_Response->MessageLength   = sizeof(RNDIS_KEEPALIVE_CMPLT_t);\r
-                       KEEPALIVE_Response->RequestId       = KEEPALIVE_Message->RequestId;\r
-                       KEEPALIVE_Response->Status          = REMOTE_NDIS_STATUS_SUCCESS;\r
+                       KEEPALIVE_Response->MessageType   = REMOTE_NDIS_KEEPALIVE_CMPLT;\r
+                       KEEPALIVE_Response->MessageLength = sizeof(RNDIS_KeepAlive_Complete_t);\r
+                       KEEPALIVE_Response->RequestId     = KEEPALIVE_Message->RequestId;\r
+                       KEEPALIVE_Response->Status        = REMOTE_NDIS_STATUS_SUCCESS;\r
                        \r
                        break;\r
        }\r
 }\r
 \r
-static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo,\r
-                                          uint32_t OId, void* QueryData, uint16_t QuerySize,\r
-                                          void* ResponseData, uint16_t* ResponseSize)\r
+static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,\r
+                                          const uint32_t OId, void* const QueryData, const uint16_t QuerySize,\r
+                                          void* ResponseData, uint16_t* const ResponseSize)\r
 {\r
+       (void)QueryData;\r
+       (void)QuerySize;\r
+\r
        switch (OId)\r
        {\r
                case OID_GEN_SUPPORTED_LIST:\r
@@ -375,9 +382,9 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_t* RNDISInterfaceI
                        \r
                        return true;\r
                case OID_GEN_VENDOR_DESCRIPTION:\r
-                       *ResponseSize = (strlen(RNDISInterfaceInfo->AdapterVendorDescription) + 1);\r
+                       *ResponseSize = (strlen(RNDISInterfaceInfo->Config.AdapterVendorDescription) + 1);\r
                        \r
-                       memcpy(ResponseData, RNDISInterfaceInfo->AdapterVendorDescription, *ResponseSize);\r
+                       memcpy(ResponseData, RNDISInterfaceInfo->Config.AdapterVendorDescription, *ResponseSize);\r
                        \r
                        return true;\r
                case OID_GEN_MEDIA_CONNECT_STATUS:\r
@@ -397,7 +404,7 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_t* RNDISInterfaceI
                case OID_802_3_CURRENT_ADDRESS:\r
                        *ResponseSize = sizeof(MAC_Address_t);\r
                        \r
-                       memcpy(ResponseData, &RNDISInterfaceInfo->AdapterMACAddress, sizeof(MAC_Address_t));\r
+                       memcpy(ResponseData, &RNDISInterfaceInfo->Config.AdapterMACAddress, sizeof(MAC_Address_t));\r
 \r
                        return true;\r
                case OID_802_3_MAXIMUM_LIST_SIZE:\r
@@ -410,7 +417,7 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_t* RNDISInterfaceI
                case OID_GEN_CURRENT_PACKET_FILTER:\r
                        *ResponseSize = sizeof(uint32_t);\r
                        \r
-                       *((uint32_t*)ResponseData) = RNDISInterfaceInfo->CurrPacketFilter;\r
+                       *((uint32_t*)ResponseData) = RNDISInterfaceInfo->State.CurrPacketFilter;\r
                \r
                        return true;                    \r
                case OID_GEN_XMIT_OK:\r
@@ -439,13 +446,16 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_t* RNDISInterfaceI
        }\r
 }\r
 \r
-static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo, uint32_t OId, void* SetData, uint16_t SetSize)\r
+static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, const uint32_t OId,\r
+                                        void* SetData, const uint16_t SetSize)\r
 {\r
+       (void)SetSize;\r
+\r
        switch (OId)\r
        {\r
                case OID_GEN_CURRENT_PACKET_FILTER:\r
-                       RNDISInterfaceInfo->CurrPacketFilter = *((uint32_t*)SetData);\r
-                       RNDISInterfaceInfo->CurrRNDISState = ((RNDISInterfaceInfo->CurrPacketFilter) ?\r
+                       RNDISInterfaceInfo->State.CurrPacketFilter = *((uint32_t*)SetData);\r
+                       RNDISInterfaceInfo->State.CurrRNDISState = ((RNDISInterfaceInfo->State.CurrPacketFilter) ?\r
                                                              RNDIS_Data_Initialized : RNDIS_Data_Initialized);\r
                        \r
                        return true;\r