Abuse the the C preprocessor so that the HID macros can automatically encode data...
[pub/USBasp.git] / Demos / Device / LowLevel / RNDISEthernet / RNDISEthernet.c
index e8eda4c..9796d4e 100644 (file)
@@ -1,13 +1,13 @@
 /*
              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
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -112,16 +112,16 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
-/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
- *  control requests that are not handled internally by the USB library (including the RNDIS control commands,
- *  which set up the USB RNDIS network adapter), so that they can be handled appropriately for the application.
+/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
+ *  the device from the USB host before passing along unhandled control requests to the library for processing
+ *  internally.
  */
  */
-void EVENT_USB_Device_UnhandledControlRequest(void)
+void EVENT_USB_Device_ControlRequest(void)
 {
        /* Process RNDIS class commands */
        switch (USB_ControlRequest.bRequest)
        {
 {
        /* Process RNDIS class commands */
        switch (USB_ControlRequest.bRequest)
        {
-               case REQ_SendEncapsulatedCommand:
+               case RNDIS_REQ_SendEncapsulatedCommand:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
@@ -135,7 +135,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
                        }
 
                        break;
                        }
 
                        break;
-               case REQ_GetEncapsulatedResponse:
+               case RNDIS_REQ_GetEncapsulatedResponse:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                /* Check if a response to the last message is ready */
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                /* Check if a response to the last message is ready */
@@ -172,17 +172,17 @@ void RNDIS_Task(void)
        /* Check if a message response is ready for the host */
        if (Endpoint_IsINReady() && ResponseReady)
        {
        /* Check if a message response is ready for the host */
        if (Endpoint_IsINReady() && ResponseReady)
        {
-               USB_Notification_t Notification = (USB_Notification_t)
+               USB_Request_Header_t Notification = (USB_Request_Header_t)
                        {
                                .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
                        {
                                .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-                               .bNotification = NOTIF_RESPONSE_AVAILABLE,
+                               .bRequest      = RNDIS_NOTIF_ResponseAvailable,
                                .wValue        = 0,
                                .wIndex        = 0,
                                .wLength       = 0,
                        };
 
                /* Indicate that a message response is ready for the host */
                                .wValue        = 0,
                                .wIndex        = 0,
                                .wLength       = 0,
                        };
 
                /* Indicate that a message response is ready for the host */
-               Endpoint_Write_Stream_LE(&Notification, sizeof(Notification));
+               Endpoint_Write_Stream_LE(&Notification, sizeof(Notification), NULL);
 
                /* Finalize the stream transfer to send the last packet */
                Endpoint_ClearIN();
 
                /* Finalize the stream transfer to send the last packet */
                Endpoint_ClearIN();
@@ -204,7 +204,7 @@ void RNDIS_Task(void)
                if (Endpoint_IsOUTReceived() && !(FrameIN.FrameInBuffer))
                {
                        /* Read in the packet message header */
                if (Endpoint_IsOUTReceived() && !(FrameIN.FrameInBuffer))
                {
                        /* Read in the packet message header */
-                       Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t));
+                       Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL);
 
                        /* Stall the request if the data is too large */
                        if (RNDISPacketHeader.DataLength > ETHERNET_FRAME_SIZE_MAX)
 
                        /* Stall the request if the data is too large */
                        if (RNDISPacketHeader.DataLength > ETHERNET_FRAME_SIZE_MAX)
@@ -214,7 +214,7 @@ void RNDIS_Task(void)
                        }
 
                        /* Read in the Ethernet frame into the buffer */
                        }
 
                        /* Read in the Ethernet frame into the buffer */
-                       Endpoint_Read_Stream_LE(FrameIN.FrameData, RNDISPacketHeader.DataLength);
+                       Endpoint_Read_Stream_LE(FrameIN.FrameData, RNDISPacketHeader.DataLength, NULL);
 
                        /* Finalize the stream transfer to send the last packet */
                        Endpoint_ClearOUT();
 
                        /* Finalize the stream transfer to send the last packet */
                        Endpoint_ClearOUT();
@@ -242,10 +242,10 @@ void RNDIS_Task(void)
                        RNDISPacketHeader.DataLength    = FrameOUT.FrameLength;
 
                        /* Send the packet header to the host */
                        RNDISPacketHeader.DataLength    = FrameOUT.FrameLength;
 
                        /* Send the packet header to the host */
-                       Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t));
+                       Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL);
 
                        /* Send the Ethernet frame data to the host */
 
                        /* Send the Ethernet frame data to the host */
-                       Endpoint_Write_Stream_LE(FrameOUT.FrameData, RNDISPacketHeader.DataLength);
+                       Endpoint_Write_Stream_LE(FrameOUT.FrameData, RNDISPacketHeader.DataLength, NULL);
 
                        /* Finalize the stream transfer to send the last packet */
                        Endpoint_ClearIN();
 
                        /* Finalize the stream transfer to send the last packet */
                        Endpoint_ClearIN();