Data Endpoint Transfer Functions

group group_usbfs_dev_hal_functions_data_xfer

The Data Endpoint Transfer functions provide an API to establish communication with the USB Host using data endpoint.

Functions

__STATIC_INLINE cy_en_usb_dev_ep_state_t Cy_USBFS_Dev_Drv_GetEndpointState (USBFS_Type const *base, uint32_t endpoint, cy_stc_usbfs_dev_drv_context_t const *context)

Returns the state of the endpoint.

Return

Data endpoint state cy_en_usb_dev_ep_state_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

__STATIC_INLINE cy_en_usbfs_dev_drv_status_t Cy_USBFS_Dev_Drv_LoadInEndpoint (USBFS_Type *base, uint32_t endpoint, uint8_t const *buffer, uint32_t size, cy_stc_usbfs_dev_drv_context_t *context)

Loads data into the IN endpoint buffer.

After data loads, the endpoint is ready to be read by the host.

Return

The status code of the function execution cy_en_usbfs_dev_drv_status_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The IN data endpoint number.

  • buffer: The pointer to the buffer containing data bytes to load.

  • size: The number of bytes to load into the endpoint. This value must be less than or equal to endpoint maximum packet size.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

void Cy_USBFS_Dev_Drv_EnableOutEndpoint(USBFS_Type *base, uint32_t endpoint, cy_stc_usbfs_dev_drv_context_t *context)

Enables the OUT data endpoint to be read by the Host.

note

The OUT endpoints are not enabled by default. The endpoints must be enabled before calling Cy_USBFS_Dev_Drv_ReadOutEndpoint to read data from an endpoint.

Return

Status code of the function execution cy_en_usbfs_dev_drv_status_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The OUT data endpoint number.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

__STATIC_INLINE cy_en_usbfs_dev_drv_status_t Cy_USBFS_Dev_Drv_ReadOutEndpoint (USBFS_Type *base, uint32_t endpoint, uint8_t *buffer, uint32_t size, uint32_t *actSize, cy_stc_usbfs_dev_drv_context_t *context)

Reads data from the OUT endpoint buffer.

Before executing a next read, the Cy_USBFS_Dev_Drv_EnableOutEndpoint must be called to allow the Host to write data into the endpoint.

Return

The status code of the function execution cy_en_usbfs_dev_drv_status_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The OUT data endpoint number.

  • buffer: The pointer to the buffer that stores read data.

  • size: The number of bytes to read from the endpoint. This value must be less than or equal to the endpoint maximum packet size.

  • actSize: The number of actually read bytes.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

cy_en_usbfs_dev_drv_status_t Cy_USBFS_Dev_Drv_Abort(USBFS_Type *base, uint32_t endpoint, cy_stc_usbfs_dev_drv_context_t *context)

Abort operation for data endpoint.

If there is any bus activity after the abort operation requested, the function waits for its completion or a timeout. A timeout is the time to transfer the bulk or an interrupt packet of the maximum playload size. If this bus activity is a transfer to the aborting endpoint, the received data is lost and the endpoint transfer completion callbacks are not invoked. After the function returns a new read or write, the endpoint operation can be submitted.

note

  • This abort operation is not supported for the ISOC endpoints because these endpoints do not have a handshake and are always accessible to the USB Host. Therefore, an abort can cause unexpected behavior.

  • The function uses the critical section to protect from the endpoint transfer complete interrupt.

Return

Data endpoint state cy_en_usb_dev_ep_state_t after abort was applied.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

__STATIC_INLINE bool Cy_USBFS_Dev_Drv_GetEndpointAckState (USBFS_Type const *base, uint32_t endpoint)

Returns whether the transaction completed with ACK for a certain endpoint.

Return

ACK state: true - transaction completed with ACK, false - otherwise.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

__STATIC_INLINE uint32_t Cy_USBFS_Dev_Drv_GetEndpointCount (USBFS_Type const *base, uint32_t endpoint)

Returns the number of data bytes in the transaction for a certain endpoint.

Before calling this function, ensure the Host has written data into the endpoint. The returned value is updated after the Host access to the endpoint but remains unchanged after data has been read from the endpoint buffer. A typical use case is to read the number of bytes that the Host wrote into the OUT endpoint.

Return

The number of data bytes in the transaction.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

cy_en_usbfs_dev_drv_status_t Cy_USBFS_Dev_Drv_StallEndpoint(USBFS_Type *base, uint32_t endpoint, cy_stc_usbfs_dev_drv_context_t *context)

Configures data endpoint to STALL any request intended for it.

Return

Status code of the function execution cy_en_usbfs_dev_drv_status_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.

cy_en_usbfs_dev_drv_status_t Cy_USBFS_Dev_Drv_UnStallEndpoint(USBFS_Type *base, uint32_t endpoint, cy_stc_usbfs_dev_drv_context_t *context)

Release data endpoint STALL condition and clears data toggle bit.

The endpoint is returned to the same state as it was before STALL request.

Return

Status code of the function execution cy_en_usbfs_dev_drv_status_t.

Parameters
  • base: The pointer to the USBFS instance.

  • endpoint: The data endpoint number.

  • context: The pointer to the context structure cy_stc_usbfs_dev_drv_context_t allocated by the user. The structure is used during the USBFS Device operation for internal configuration and data retention. The user must not modify anything in this structure.