Abstract interface to physical USB hardware. More...
#include <USBPhy.h>
Public Member Functions | |
virtual void | init (USBPhyEvents *events)=0 |
Initialize this USBPhy instance. More... | |
virtual void | deinit ()=0 |
Power down this USBPhy instance. More... | |
virtual bool | powered ()=0 |
Check if USB power is present. More... | |
virtual void | connect ()=0 |
Make the USB phy visible to the USB host. More... | |
virtual void | disconnect ()=0 |
Detach the USB phy. More... | |
virtual void | configure ()=0 |
Set this device to the configured state. More... | |
virtual void | unconfigure ()=0 |
Leave the configured state. More... | |
virtual void | sof_enable ()=0 |
Enable the start of frame interrupt. More... | |
virtual void | sof_disable ()=0 |
Disable the start of frame interrupt. More... | |
virtual void | set_address (uint8_t address)=0 |
Set the USBPhy's address. More... | |
virtual void | remote_wakeup ()=0 |
Wake upstream devices. More... | |
virtual const usb_ep_table_t * | endpoint_table ()=0 |
Get the endpoint table. More... | |
virtual uint32_t | ep0_set_max_packet (uint32_t max_packet)=0 |
Set wMaxPacketSize of endpoint 0. More... | |
virtual void | ep0_setup_read_result (uint8_t *buffer, uint32_t size)=0 |
Read the contents of the SETUP packet. More... | |
virtual void | ep0_read (uint8_t *data, uint32_t size)=0 |
Start receiving a packet of up to wMaxPacketSize on endpoint 0. More... | |
virtual uint32_t | ep0_read_result ()=0 |
Read the contents of a received packet. More... | |
virtual void | ep0_write (uint8_t *buffer, uint32_t size)=0 |
Write a packet on endpoint 0. More... | |
virtual void | ep0_stall ()=0 |
Protocol stall on endpoint 0. More... | |
virtual bool | endpoint_add (usb_ep_t endpoint, uint32_t max_packet, usb_ep_type_t type)=0 |
Configure and enable an endpoint. More... | |
virtual void | endpoint_remove (usb_ep_t endpoint)=0 |
Disable an endpoint. More... | |
virtual void | endpoint_stall (usb_ep_t endpoint)=0 |
Perform a functional stall on the given endpoint. More... | |
virtual void | endpoint_unstall (usb_ep_t endpoint)=0 |
Unstall the endpoint. More... | |
virtual bool | endpoint_read (usb_ep_t endpoint, uint8_t *data, uint32_t size)=0 |
Start a read on the given endpoint. More... | |
virtual uint32_t | endpoint_read_result (usb_ep_t endpoint)=0 |
Finish a read on the given endpoint. More... | |
virtual bool | endpoint_write (usb_ep_t endpoint, uint8_t *data, uint32_t size)=0 |
Start a write on the given endpoint. More... | |
virtual void | endpoint_abort (usb_ep_t endpoint)=0 |
Abort the current transfer if it has not yet been sent. More... | |
virtual void | process ()=0 |
Callback used for performing USB processing. More... | |
Abstract interface to physical USB hardware.
|
pure virtual |
Set this device to the configured state.
Enable added endpoints if they are not enabled already.
|
pure virtual |
Make the USB phy visible to the USB host.
Enable either the D+ or D- pullup so the host can detect the presence of this device.
|
pure virtual |
Power down this USBPhy instance.
Disable interrupts and stop sending events.
|
pure virtual |
Detach the USB phy.
Disable the D+ and D- pullup and stop responding to USB traffic.
|
pure virtual |
Abort the current transfer if it has not yet been sent.
endpoint | Endpoint to abort the transfer on. It is implementation defined if this function has an effect on receive endpoints. |
|
pure virtual |
Configure and enable an endpoint.
endpoint | Endpoint to configure and enable |
max_packet | The maximum packet size that can be sent or received |
type | The type of endpoint this should be configured as - USB_EP_TYPE_BULK, USB_EP_TYPE_INT or USB_EP_TYPE_ISO |
|
pure virtual |
Start a read on the given endpoint.
endpoint | Endpoint to start the read on |
data | Buffer to fill with data |
size | Size of the read buffer. This must be at least the max packet size for this endpoint. |
|
pure virtual |
Finish a read on the given endpoint.
endpoint | Endpoint to check |
|
pure virtual |
Disable an endpoint.
endpoint | Endpoint to disable |
|
pure virtual |
Perform a functional stall on the given endpoint.
Set the HALT feature for this endpoint so that all further communication is aborted.
endpoint | Endpoint to stall |
|
pure virtual |
Get the endpoint table.
This function returns a table which describes the endpoints can be used, the functionality of those endpoints and the resource cost.
|
pure virtual |
Unstall the endpoint.
Clear the HALT feature on this endpoint so communication can resume.
endpoint | Endpoint to stall |
|
pure virtual |
Start a write on the given endpoint.
endpoint | Endpoint to write to |
data | Buffer to write |
size | Size of data to write |
|
pure virtual |
Start receiving a packet of up to wMaxPacketSize on endpoint 0.
data | Buffer to fill with the data read |
size | Size of buffer |
|
pure virtual |
Read the contents of a received packet.
|
pure virtual |
Set wMaxPacketSize of endpoint 0.
max_packet | The wMaxPacketSize value for endpoint 0 |
|
pure virtual |
Read the contents of the SETUP packet.
buffer | Buffer to fill with data |
size | Size of buffer passed in |
|
pure virtual |
Protocol stall on endpoint 0.
Stall all IN and OUT packets on endpoint 0 until a setup packet is received.
|
pure virtual |
Write a packet on endpoint 0.
buffer | Buffer fill with data to send |
size | Size of data to send |
|
pure virtual |
Initialize this USBPhy instance.
This function must be called before calling any other functions of this class, unless specifically noted.
events | Callback class to handle USB events |
|
pure virtual |
Check if USB power is present.
Devices which don't support checking the USB power state must always return true.
|
pure virtual |
Callback used for performing USB processing.
USBPhy processing should be triggered by calling USBPhyEvents::start_process and done inside process. All USBPhyEvents callbacks aside from USBPhyEvents::start_process must be called in the context of process
|
pure virtual |
Wake upstream devices.
|
pure virtual |
Set the USBPhy's address.
address | This device's USB address |
|
pure virtual |
Disable the start of frame interrupt.
Stop calling USBPhyEvents::sof.
|
pure virtual |
Enable the start of frame interrupt.
Call USBPhyEvents::sof on every frame.