2.2.4.24 USB_DEVICE_EndpointEnable Function
C
USB_DEVICE_RESULT USB_DEVICE_EndpointEnable(
USB_DEVICE_HANDLE usbDeviceHandle,
uint8_t interface,
USB_ENDPOINT_ADDRESS endpoint,
USB_TRANSFER_TYPE transferType,
size_t size
);
Summary
This function enables a device endpoint for the specified transfer type and size. A Vendor specific device application may typically call this function in response to a Set Interface request from the host. Note that Device Layer will enable endpoints contained in Alternate Setting 0 of an interface, when the host configures the device. If there is only one alternate setting in an interface, the application may not need to call the USB_DEVICE_EndpointEnable function.
If the device supports multiple alternate settings in an Interface, the device application must then disable an endpoint (if it was enabled) before re-enabling it with the new settings. The application can use the USB_DEVICE_EndpointIsEnabled function to check the status of the endpoint and USB_DEVICE_EndpointDisable function to disable the endpoint.
Precondition
The device should have been configured.
Parameters
Parameters | Description |
usbDeviceHandle | USB Device Layer Handle. |
interface | This parameter is ignored in the PIC32 USB Device Stack implementation. |
endpoint | Endpoint to enable. |
transferType | Type of transfer that this is endpoint will support. This should match the type reported to the host. |
size | Maximum endpoint size. This should match the value reported to the host. |
Returns
USB_DEVICE_RESULT_OK - The endpoint was enabled successfully.
USB_DEVICE_RESULT_ERROR_ENDPOINT_INVALID - The specified instance was not provisioned in the application and is invalid.
Example
// The following code example checks if an Set Alternate request has // been received and changes the endpoint characteristics based on the // alternate setting. Endpoint is 1 and direction is device to host. // Assume that endpoint size was 32 bytes in alternate setting 0. if(setAlternateRequest) { if(alternateSetting == 1) { // Check if the endpoint is already enabled. if(USB_DEVICE_EndpointIsEnabled(usbDeviceHandle, (0x1|USB_EP_DIRECTION_IN))) { // Disable the endpoint. USB_DEVICE_EndpointDisable(usbDeviceHandle, (0x1|USB_EP_DIRECTION_IN)); } // Re-enable the endpoint with new settings USB_DEVICE_EndpointEnable(usbDeviceHandle, 0, (0x1|USB_EP_DIRECTION_IN) USB_TRANSFER_TYPE_BULK, 64); } }
Remarks
None.