/** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs and\r
* starts the library USB task to begin the enumeration and USB management process.\r
*/\r
-void EVENT_USB_Connect(void)\r
+void EVENT_USB_Device_Connect(void)\r
{\r
/* Indicate USB enumerating */\r
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
/** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via\r
* the status LEDs and stops all the relevant tasks.\r
*/\r
-void EVENT_USB_Disconnect(void)\r
+void EVENT_USB_Device_Disconnect(void)\r
{\r
/* Indicate USB not ready */\r
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
/** Event handler for the USB_ConfigurationChanged event. This is fired when the host sets the current configuration\r
* of the USB device after enumeration, and configures the RNDIS device endpoints and starts the relevant tasks.\r
*/\r
-void EVENT_USB_ConfigurationChanged(void)\r
+void EVENT_USB_Device_ConfigurationChanged(void)\r
{\r
- /* Setup CDC Notification, Rx and Tx Endpoints */\r
- Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,\r
- ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,\r
- ENDPOINT_BANK_SINGLE);\r
+ /* Indicate USB connected and ready */\r
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
\r
- Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,\r
- ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,\r
- ENDPOINT_BANK_SINGLE);\r
+ /* Setup CDC Notification, Rx and Tx Endpoints */\r
+ if (!(Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,\r
+ ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,\r
+ ENDPOINT_BANK_SINGLE)))\r
+ {\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ } \r
\r
- Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,\r
- ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,\r
- ENDPOINT_BANK_SINGLE);\r
+ if (!(Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,\r
+ ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,\r
+ ENDPOINT_BANK_SINGLE)))\r
+ {\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ }\r
\r
- /* Indicate USB connected and ready */\r
- LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+ if (!(Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,\r
+ ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,\r
+ ENDPOINT_BANK_SINGLE)))\r
+ {\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ }\r
}\r
\r
-/** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific\r
+/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific\r
* control requests that are not handled internally by the USB library (including the RNDIS control commands,\r
* which set up the USB RNDIS network adapter), so that they can be handled appropriately for the application.\r
*/\r
-void EVENT_USB_UnhandledControlPacket(void)\r
+void EVENT_USB_Device_UnhandledControlRequest(void)\r
{\r
/* Process RNDIS class commands */\r
switch (USB_ControlRequest.bRequest)\r
if ((CurrRNDISState == RNDIS_Data_Initialized) && !(MessageHeader->MessageLength))\r
{\r
/* Create a new packet header for reading/writing */\r
- RNDIS_PACKET_MSG_t RNDISPacketHeader;\r
+ RNDIS_Packet_Message_t RNDISPacketHeader;\r
\r
/* Select the data OUT endpoint */\r
Endpoint_SelectEndpoint(CDC_RX_EPNUM);\r
if (Endpoint_IsOUTReceived() && !(FrameIN.FrameInBuffer))\r
{\r
/* Read in the packet message header */\r
- Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_PACKET_MSG_t));\r
+ Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t));\r
\r
/* Stall the request if the data is too large */\r
if (RNDISPacketHeader.DataLength > ETHERNET_FRAME_SIZE_MAX)\r
if (Endpoint_IsINReady() && FrameOUT.FrameInBuffer)\r
{\r
/* Clear the packet header with all 0s so that the relevant fields can be filled */\r
- memset(&RNDISPacketHeader, 0, sizeof(RNDIS_PACKET_MSG_t));\r
+ memset(&RNDISPacketHeader, 0, sizeof(RNDIS_Packet_Message_t));\r
\r
/* Construct the required packet header fields in the buffer */\r
RNDISPacketHeader.MessageType = REMOTE_NDIS_PACKET_MSG;\r
- RNDISPacketHeader.MessageLength = (sizeof(RNDIS_PACKET_MSG_t) + FrameOUT.FrameLength);\r
- RNDISPacketHeader.DataOffset = (sizeof(RNDIS_PACKET_MSG_t) - sizeof(RNDIS_Message_Header_t));\r
+ RNDISPacketHeader.MessageLength = (sizeof(RNDIS_Packet_Message_t) + FrameOUT.FrameLength);\r
+ RNDISPacketHeader.DataOffset = (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t));\r
RNDISPacketHeader.DataLength = FrameOUT.FrameLength;\r
\r
/* Send the packet header to the host */\r
- Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_PACKET_MSG_t));\r
+ Endpoint_Write_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t));\r
\r
/* Send the Ethernet frame data to the host */\r
Endpoint_Write_Stream_LE(FrameOUT.FrameData, RNDISPacketHeader.DataLength);\r
outgoing frames should be loaded into the FrameOUT structure. Both structures can only hold a single\r
Ethernet frame at a time, so the FrameInBuffer bool is used to indicate when the buffers contain data. */\r
\r
+ /* Device must be connected and configured for the task to run */\r
+ if (USB_DeviceState != DEVICE_STATE_Configured)\r
+ return;\r
+\r
/* Check if a frame has been written to the IN frame buffer */\r
if (FrameIN.FrameInBuffer)\r
{\r