18#ifndef CMSIS_PLUS_DRIVER_USB_HOST_H_
19#define CMSIS_PLUS_DRIVER_USB_HOST_H_
35#pragma GCC diagnostic push
37#pragma clang diagnostic ignored "-Wc++98-compat"
52#pragma GCC diagnostic push
54#pragma clang diagnostic ignored "-Wpadded"
55#elif defined(__GNUC__)
56#pragma GCC diagnostic ignored "-Wpadded"
84#pragma GCC diagnostic pop
89#pragma GCC diagnostic push
91#pragma clang diagnostic ignored "-Wpadded"
92#elif defined(__GNUC__)
93#pragma GCC diagnostic ignored "-Wpadded"
127#pragma GCC diagnostic pop
203#pragma GCC diagnostic push
204#if defined(__clang__)
205#pragma clang diagnostic ignored "-Wpadded"
206#elif defined(__GNUC__)
207#pragma GCC diagnostic ignored "-Wpadded"
230 virtual ~Host () noexcept override;
242 const
void* cb_object =
nullptr) noexcept;
246 const
void* cb_object =
nullptr) noexcept;
250 const host::Capabilities&
288 std::
size_t num) noexcept;
306 virtual const host::Capabilities&
326 virtual host::Status&
355 std::
size_t num) noexcept
387#pragma GCC diagnostic pop
397 Status::is_connected (
void)
const noexcept
403 Status::is_overcurrent (
void)
const noexcept
409 Status::get_speed (
void)
const noexcept
462 ep_addr, ep_type, ep_max_packet_size,
472 return do_modify_pipe (pipe, dev_addr, dev_speed, hub_addr, hub_port,
510#pragma GCC diagnostic pop
Host(const Host &)=delete
virtual return_t do_power_port_vbus(port_t port, bool vbus) noexcept=0
host::signal_port_event_t cb_port_func_
Pointer to static function that implements the port callback.
virtual return_t do_suspend_port(port_t port) noexcept=0
return_t reset_port(port_t port) noexcept
return_t delete_pipe(pipe_t pipe) noexcept
Host & operator=(const Host &)=delete
const host::Capabilities & get_capabilities(void) noexcept
virtual host::Status & do_get_port_status(port_t port) noexcept=0
virtual return_t do_reset_pipe(pipe_t pipe) noexcept=0
virtual return_t do_delete_pipe(pipe_t pipe) noexcept=0
host::Status & get_port_status(port_t port) noexcept
pipe_t create_pipe(device_address_t dev_addr, speed_t dev_speed, hub_addr_t hub_addr, hub_port_t hub_port, endpoint_t ep_addr, endpoint_type_t ep_type, packet_size_t ep_max_packet_size, polling_interval_t ep_interval) noexcept
void register_port_callback(host::signal_port_event_t cb_func, const void *cb_object=nullptr) noexcept
Register port event callback.
virtual return_t do_resume_port(port_t port) noexcept=0
void signal_pipe_event(pipe_t pipe, event_t event) noexcept
virtual uint16_t do_get_frame_number(void) noexcept=0
virtual return_t do_modify_pipe(pipe_t pipe, device_address_t dev_addr, speed_t dev_speed, hub_addr_t hub_addr, hub_port_t hub_port, packet_size_t ep_max_packet_size) noexcept=0
host::signal_pipe_event_t cb_pipe_func_
Pointer to static function that implements the pipe callback.
return_t transfer(pipe_t pipe, uint32_t packet, uint8_t *data, std::size_t num) noexcept
return_t power_port_vbus(port_t port, bool vbus) noexcept
return_t resume_port(port_t port) noexcept
virtual return_t do_abort_transfer(pipe_t pipe) noexcept=0
return_t modify_pipe(pipe_t pipe, device_address_t dev_addr, speed_t dev_speed, hub_addr_t hub_addr, hub_port_t hub_port, packet_size_t ep_max_packet_size) noexcept
virtual pipe_t do_create_pipe(device_address_t dev_addr, speed_t dev_speed, hub_addr_t hub_addr, hub_port_t hub_port, endpoint_t ep_addr, endpoint_type_t ep_type, packet_size_t ep_max_packet_size, polling_interval_t ep_interval) noexcept=0
const void * cb_pipe_object_
Pointer to object instance associated with the pipe callback.
virtual const host::Capabilities & do_get_capabilities(void) noexcept=0
virtual std::size_t do_get_transfer_count(pipe_t pipe) noexcept=0
return_t suspend_port(port_t port) noexcept
const void * cb_port_object_
Pointer to object instance associated with the port callback.
return_t reset_pipe(pipe_t pipe) noexcept
std::size_t get_transfer_count(pipe_t pipe) noexcept
uint16_t get_frame_number(void) noexcept
virtual return_t do_reset_port(port_t port) noexcept=0
virtual ~Host() noexcept override
void register_pipe_callback(host::signal_pipe_event_t cb_func, const void *cb_object=nullptr) noexcept
void signal_port_event(port_t port, event_t event) noexcept
return_t abort_transfer(pipe_t pipe) noexcept
virtual return_t do_transfer(pipe_t pipe, uint32_t packet, uint8_t *data, std::size_t num) noexcept=0
USB host driver capabilities.
bool event_connect
Signal Connect event.
bool event_overcurrent
Signal Overcurrent event.
uint32_t port_mask
Root HUB available Ports Mask.
bool auto_split
Automatic SPLIT packet handling.
bool event_disconnect
Signal Disconnect event.
speed_t get_speed(void) const noexcept
bool is_connected(void) const noexcept
bool is_overcurrent(void) const noexcept
bool overcurrent
USB Host Port overcurrent flag.
speed_t speed
USB Host Port speed setting (ARM_USB_SPEED_xxx).
bool connected
USB Host Port connected flag.
Port_event
USB Host Port Events.
@ resume
USB Resume occurred.
@ disconnect
USB Device Disconnected from Port.
@ suspend
USB Suspend occurred.
@ remote_hangup
USB Device activated Remote Wakeup.
@ overcurrent
USB Device caused Overcurrent.
@ connect
USB Device Connected to Port.
@ reset
USB Reset completed.
void(* signal_pipe_event_t)(const void *object, pipe_t pipe, event_t event)
Pipe_event
USB Host Pipe Event.
@ handshake_nak
NAK Handshake received.
@ transfer_complete
Transfer completed.
@ handshake_stall
STALL Handshake received.
@ handshake_err
ERR Handshake received.
@ handshake_mdata
MDATA Handshake received.
@ bus_err
Bus Error detected.
@ handshake_nyet
NYET Handshake received.
void(* signal_port_event_t)(const void *object, port_t port, event_t event)
uint8_t polling_interval_t