Fix flip-ee DFU build target accidentally erasing the target FLASH memory space.
[pub/USBasp.git] / Demos / Device / LowLevel / RNDISEthernet / RNDISEthernet.c
index 9796d4e..51b827a 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
@@ -48,7 +48,7 @@ int main(void)
        Webserver_Init();
 
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-       sei();
+       GlobalInterruptEnable();
 
        for (;;)
        {
@@ -71,8 +71,11 @@ void SetupHardware(void)
 
        /* Hardware Initialization */
        LEDs_Init();
-       SerialStream_Init(9600, false);
+       Serial_Init(9600, false);
        USB_Init();
+
+       /* Create a stdio stream for the serial port for stdin and stdout */
+       Serial_CreateStream(NULL);
 }
 
 /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs and
@@ -101,12 +104,9 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        bool ConfigSuccess = true;
 
        /* Setup RNDIS Data Endpoints */
-       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
-                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
-       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
-                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
-       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
-                                                   CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, 1);
 
        /* Indicate endpoint configuration success or failure */
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
@@ -167,7 +167,7 @@ void EVENT_USB_Device_ControlRequest(void)
 void RNDIS_Task(void)
 {
        /* Select the notification endpoint */
-       Endpoint_SelectEndpoint(CDC_NOTIFICATION_EPNUM);
+       Endpoint_SelectEndpoint(CDC_NOTIFICATION_EPADDR);
 
        /* Check if a message response is ready for the host */
        if (Endpoint_IsINReady() && ResponseReady)
@@ -198,10 +198,10 @@ void RNDIS_Task(void)
                RNDIS_Packet_Message_t RNDISPacketHeader;
 
                /* Select the data OUT endpoint */
-               Endpoint_SelectEndpoint(CDC_RX_EPNUM);
+               Endpoint_SelectEndpoint(CDC_RX_EPADDR);
 
                /* Check if the data OUT endpoint contains data, and that the IN buffer is empty */
-               if (Endpoint_IsOUTReceived() && !(FrameIN.FrameInBuffer))
+               if (Endpoint_IsOUTReceived() && !(FrameIN.FrameLength))
                {
                        /* Read in the packet message header */
                        Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL);
@@ -221,16 +221,13 @@ void RNDIS_Task(void)
 
                        /* Store the size of the Ethernet frame */
                        FrameIN.FrameLength = RNDISPacketHeader.DataLength;
-
-                       /* Indicate Ethernet IN buffer full */
-                       FrameIN.FrameInBuffer = true;
                }
 
                /* Select the data IN endpoint */
-               Endpoint_SelectEndpoint(CDC_TX_EPNUM);
+               Endpoint_SelectEndpoint(CDC_TX_EPADDR);
 
                /* Check if the data IN endpoint is ready for more data, and that the IN buffer is full */
-               if (Endpoint_IsINReady() && FrameOUT.FrameInBuffer)
+               if (Endpoint_IsINReady() && FrameOUT.FrameLength)
                {
                        /* Clear the packet header with all 0s so that the relevant fields can be filled */
                        memset(&RNDISPacketHeader, 0, sizeof(RNDIS_Packet_Message_t));
@@ -251,7 +248,7 @@ void RNDIS_Task(void)
                        Endpoint_ClearIN();
 
                        /* Indicate Ethernet OUT buffer no longer full */
-                       FrameOUT.FrameInBuffer = false;
+                       FrameOUT.FrameLength = 0;
                }
        }
 }
@@ -270,7 +267,7 @@ void Ethernet_Task(void)
          return;
 
        /* Check if a frame has been written to the IN frame buffer */
-       if (FrameIN.FrameInBuffer)
+       if (FrameIN.FrameLength)
        {
                /* Indicate packet processing started */
                LEDs_SetAllLEDs(LEDMASK_USB_BUSY);