USB Device HAL API (PCD Layer). This HAL focuses strictly on the Peripheral Controller Device (PCD) hardware. High-level USB stacks utilize this interface to manage endpoints and transfers.
More...
|
| | CFN_HAL_VMT_CHECK (struct cfn_hal_usb_api_s) |
| |
| | CFN_HAL_CREATE_DRIVER_TYPE (usb, cfn_hal_usb_config_t, cfn_hal_usb_api_t, cfn_hal_usb_phy_t, cfn_hal_usb_callback_t) |
| |
| CFN_HAL_INLINE void | cfn_hal_usb_populate (cfn_hal_usb_t *driver, uint32_t peripheral_id, struct cfn_hal_clock_s *clock, void *dependency, const cfn_hal_usb_api_t *api, const cfn_hal_usb_phy_t *phy, const cfn_hal_usb_config_t *config, cfn_hal_usb_callback_t callback, void *user_arg) |
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_config_validate (const cfn_hal_usb_t *driver, const cfn_hal_usb_config_t *config) |
| | Validates the USB configuration.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_init (cfn_hal_usb_t *driver) |
| | Initializes the USB driver.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_deinit (cfn_hal_usb_t *driver) |
| | Deinitializes the USB driver.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_config_set (cfn_hal_usb_t *driver, const cfn_hal_usb_config_t *config) |
| | Sets the USB configuration.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_config_get (cfn_hal_usb_t *driver, cfn_hal_usb_config_t *config) |
| | Gets the current USB configuration.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_callback_register (cfn_hal_usb_t *driver, const cfn_hal_usb_callback_t callback, void *user_arg) |
| | Registers a callback for USB events and errors.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_power_state_set (cfn_hal_usb_t *driver, cfn_hal_power_state_t state) |
| | Sets the USB power state.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_event_enable (cfn_hal_usb_t *driver, uint32_t event_mask) |
| | Enables one or more USB nominal events.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_event_disable (cfn_hal_usb_t *driver, uint32_t event_mask) |
| | Disables one or more USB nominal events.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_event_get (cfn_hal_usb_t *driver, uint32_t *event_mask) |
| | Retrieves the current USB nominal event status.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_error_enable (cfn_hal_usb_t *driver, uint32_t error_mask) |
| | Enables one or more USB exception errors.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_error_disable (cfn_hal_usb_t *driver, uint32_t error_mask) |
| | Disables one or more USB exception errors.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_error_get (cfn_hal_usb_t *driver, uint32_t *error_mask) |
| | Retrieves the current USB exception error status.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_start (cfn_hal_usb_t *driver) |
| | Starts the USB device controller (connects pull-up).
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_stop (cfn_hal_usb_t *driver) |
| | Stops the USB device controller (disconnects pull-up).
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_set_address (cfn_hal_usb_t *driver, uint8_t address) |
| | Sets the USB device address.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_ep_open (cfn_hal_usb_t *driver, uint8_t ep_addr, cfn_hal_usb_ep_type_t ep_type, uint16_t ep_mps) |
| | Configures and enables a USB endpoint.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_ep_close (cfn_hal_usb_t *driver, uint8_t ep_addr) |
| | Disables and closes a USB endpoint.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_ep_transmit (cfn_hal_usb_t *driver, uint8_t ep_addr, const uint8_t *data, size_t length) |
| | Initiates data transmission on an IN endpoint.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_ep_receive (cfn_hal_usb_t *driver, uint8_t ep_addr, uint8_t *buffer, size_t length) |
| | Prepares an OUT endpoint for data reception.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_ep_stall (cfn_hal_usb_t *driver, uint8_t ep_addr, bool stall) |
| | Controls the stall condition of an endpoint.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_read_setup_packet (cfn_hal_usb_t *driver, uint8_t *buffer) |
| | Reads the latest received 8-byte setup packet.
|
| |
| CFN_HAL_INLINE cfn_hal_error_code_t | cfn_hal_usb_get_rx_data_size (cfn_hal_usb_t *driver, uint8_t ep_addr, size_t *size) |
| | Retrieves the size of the last received data on an endpoint.
|
| |
| cfn_hal_error_code_t | cfn_hal_usb_construct (cfn_hal_usb_t *driver, const cfn_hal_usb_config_t *config, const cfn_hal_usb_phy_t *phy, struct cfn_hal_clock_s *clock, void *dependency, cfn_hal_usb_callback_t callback, void *user_arg) |
| |
| cfn_hal_error_code_t | cfn_hal_usb_destruct (cfn_hal_usb_t *driver) |
| |
USB Device HAL API (PCD Layer). This HAL focuses strictly on the Peripheral Controller Device (PCD) hardware. High-level USB stacks utilize this interface to manage endpoints and transfers.
Copyright (c) 2026 Hisham Moussa Daou https://www.whileone.me
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.