//***************************************************************************** // // Given a maximum packet size and the user's FIFO scaling requirements, // determine the flags to use to configure the endpoint FIFO and the number // of bytes of FIFO space occupied. // //***************************************************************************** static uint32_t GetEndpointFIFOSize(uint32_t ui32MaxPktSize, uint32_t *pupBytesUsed) { uint32_t ui32Loop, ui32FIFOSize; // // Now we need to find the nearest supported size that accommodates the // requested size. Step through each of the supported sizes until we // find one that will do. // for(ui32Loop = USB_FIFO_SZ_8; ui32Loop <= USB_FIFO_SZ_2048; ui32Loop++) { // // How many bytes does this FIFO value represent? // ui32FIFOSize = USBFIFOSizeToBytes(ui32Loop); // // Is this large enough to hold one packet. // if(ui32FIFOSize >= ui32MaxPktSize) { // // Return the FIFO size setting and the USB_FIFO_SZ_ value. // *pupBytesUsed = ui32FIFOSize; return(ui32Loop); } } // // If we drop out, we can't support the FIFO size requested. Signal a // problem by returning 0 in the pBytesUsed // *pupBytesUsed = 0; return(USB_FIFO_SZ_8); }
USB_HID_SCLASS_BOOT, // The interface sub-class. USB_HID_PROTOCOL_KEYB, // The interface protocol for the sub-class // specified above. 4, // The string index for this interface. }; static const uint8_t g_pui8HIDInEndpoint[HIDINENDPOINT_SIZE] = { // // Interrupt IN endpoint descriptor // 7, // The size of the endpoint descriptor. USB_DTYPE_ENDPOINT, // Descriptor type is an endpoint. USB_EP_DESC_IN | USBEPToIndex(USB_EP_1), USB_EP_ATTR_INT, // Endpoint is an interrupt endpoint. USBShort(USBFIFOSizeToBytes(USB_FIFO_SZ_64)), // The maximum packet size. 16, // The polling interval for this endpoint. }; static const uint8_t g_pui8HIDOutEndpoint[HIDOUTENDPOINT_SIZE] = { // // Interrupt OUT endpoint descriptor // 7, // The size of the endpoint descriptor. USB_DTYPE_ENDPOINT, // Descriptor type is an endpoint. USB_EP_DESC_OUT | USBEPToIndex(USB_EP_2), USB_EP_ATTR_INT, // Endpoint is an interrupt endpoint. USBShort(USBFIFOSizeToBytes(USB_FIFO_SZ_64)), // The maximum packet size.