µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
os::driver::usb::Device Class Referenceabstract

#include <usb-device.h>

+ Inheritance diagram for os::driver::usb::Device:

Public Member Functions

 Device () noexcept
 
 Device (const Device &)=delete
 
 Device (Device &&)=delete
 
virtual ~Device () noexcept override
 
return_t abort_transfer (endpoint_t ep_addr) noexcept
 Abort current USB Endpoint transfer.
 
return_t configure_address (device_address_t dev_addr) noexcept
 Set USB Device Address.
 
return_t configure_endpoint (endpoint_t ep_addr, Endpoint_type ep_type, packet_size_t ep_max_packet_size) noexcept
 Configure USB Endpoint.
 
return_t connect (void) noexcept
 Connect USB Device.
 
return_t disconnect (void) noexcept
 Disconnect USB Device.
 
const device::Capabilitiesget_capabilities (void) noexcept
 Get driver capabilities.
 
frame_number_t get_frame_number (void) noexcept
 Get current USB Frame Number.
 
device::Statusget_status (void) noexcept
 Get current USB Device Status.
 
std::size_t get_transfer_count (endpoint_t ep_addr) noexcept
 Get result of USB Endpoint transfer.
 
const Versionget_version (void) noexcept
 Get driver version.
 
Deviceoperator= (const Device &)=delete
 
Deviceoperator= (Device &&)=delete
 
return_t power (Power state) noexcept
 Power up/down device.
 
return_t read_setup_packet (uint8_t *buf) noexcept
 Read setup packet received over Control Endpoint.
 
void register_device_callback (device::signal_device_event_t cb_func, const void *cb_object=nullptr) noexcept
 Register device event callback.
 
void register_endpoint_callback (device::signal_endpoint_event_t cb_func, const void *cb_object=nullptr) noexcept
 
void signal_device_event (event_t event) noexcept
 Signal device events.
 
void signal_endpoint_event (endpoint_t ep_addr, event_t event) noexcept
 Signal USB Endpoint Event.
 
return_t stall_endpoint (endpoint_t ep_addr, bool stall) noexcept
 Set/Clear Stall for USB Endpoint.
 
return_t transfer (endpoint_t ep_addr, uint8_t *data, std::size_t num) noexcept
 Read data from or Write data to USB Endpoint.
 
return_t unconfigure_endpoint (endpoint_t ep_addr) noexcept
 Unconfigure USB Endpoint.
 
return_t wakeup_remote (void) noexcept
 Trigger USB Remote Wakeup.
 

Protected Member Functions

virtual return_t do_abort_transfer (endpoint_t ep_addr) noexcept=0
 
virtual return_t do_configure_address (device_address_t dev_addr) noexcept=0
 
virtual return_t do_configure_endpoint (endpoint_t ep_addr, Endpoint_type ep_type, packet_size_t ep_max_packet_size) noexcept=0
 
virtual return_t do_connect (void) noexcept=0
 
virtual return_t do_disconnect (void) noexcept=0
 
virtual const device::Capabilitiesdo_get_capabilities (void) noexcept=0
 
virtual frame_number_t do_get_frame_number (void) noexcept=0
 
virtual device::Statusdo_get_status (void) noexcept=0
 
virtual std::size_t do_get_transfer_count (endpoint_t ep_addr) noexcept=0
 
virtual const Versiondo_get_version (void) noexcept=0
 
virtual return_t do_power (Power state) noexcept=0
 
virtual return_t do_read_setup_packet (uint8_t *buf) noexcept=0
 
virtual return_t do_stall_endpoint (endpoint_t ep_addr, bool stall) noexcept=0
 
virtual return_t do_transfer (endpoint_t ep_addr, uint8_t *data, std::size_t num) noexcept=0
 
virtual return_t do_unconfigure_endpoint (endpoint_t ep_addr) noexcept=0
 
virtual return_t do_wakeup_remote (void) noexcept=0
 

Protected Attributes

device::Status status_
 

Private Attributes

device::signal_device_event_t cb_device_func_
 Pointer to static function that implements the device callback.
 
const void * cb_device_object_
 Pointer to object instance associated with the device callback.
 
device::signal_endpoint_event_t cb_endpoint_func_
 Pointer to static function that implements the endpoint callback.
 
const void * cb_endpoint_object_
 Pointer to object instance associated with the endpoint callback.
 

Detailed Description

Definition at line 192 of file usb-device.h.

Constructor & Destructor Documentation

◆ Device() [1/3]

os::driver::usb::Device::Device ( )
noexcept

Definition at line 38 of file usb-device.cpp.

39 {
40 trace::printf ("%s() %p\n", __func__, this);
41
42 cb_device_func_ = nullptr;
43 cb_device_object_ = nullptr;
44
45 cb_endpoint_func_ = nullptr;
46 cb_endpoint_object_ = nullptr;
47 }
device::signal_device_event_t cb_device_func_
Pointer to static function that implements the device callback.
Definition usb-device.h:442
device::signal_endpoint_event_t cb_endpoint_func_
Pointer to static function that implements the endpoint callback.
Definition usb-device.h:448
const void * cb_endpoint_object_
Pointer to object instance associated with the endpoint callback.
Definition usb-device.h:451
const void * cb_device_object_
Pointer to object instance associated with the device callback.
Definition usb-device.h:445
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59

References cb_device_func_, cb_device_object_, cb_endpoint_func_, cb_endpoint_object_, and os::trace::printf().

◆ Device() [2/3]

os::driver::usb::Device::Device ( const Device )
delete

◆ Device() [3/3]

os::driver::usb::Device::Device ( Device &&  )
delete

◆ ~Device()

os::driver::usb::Device::~Device ( )
overridevirtualnoexcept

Definition at line 49 of file usb-device.cpp.

50 {
51 trace::printf ("%s() %p\n", __func__, this);
52 }

References os::trace::printf().

Member Function Documentation

◆ abort_transfer()

return_t os::driver::usb::Device::abort_transfer ( endpoint_t  ep_addr)
inlinenoexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
Returns
Execution status.

Definition at line 556 of file usb-device.h.

557 {
558 return do_abort_transfer (ep_addr);
559 }
virtual return_t do_abort_transfer(endpoint_t ep_addr) noexcept=0

References do_abort_transfer().

◆ configure_address()

return_t os::driver::usb::Device::configure_address ( device_address_t  dev_addr)
inlinenoexcept
Parameters
[in]dev_addrDevice Address
Returns
Execution status.

Definition at line 519 of file usb-device.h.

520 {
521 return do_configure_address (dev_addr);
522 }
virtual return_t do_configure_address(device_address_t dev_addr) noexcept=0

References do_configure_address().

◆ configure_endpoint()

return_t os::driver::usb::Device::configure_endpoint ( endpoint_t  ep_addr,
Endpoint_type  ep_type,
packet_size_t  ep_max_packet_size 
)
inlinenoexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
[in]ep_typeEndpoint Type (ARM_USB_ENDPOINT_xxx)
[in]ep_max_packet_sizeEndpoint Maximum Packet Size
Returns
Execution status.

Definition at line 531 of file usb-device.h.

533 {
534 return do_configure_endpoint (ep_addr, ep_type, ep_max_packet_size);
535 }
virtual return_t do_configure_endpoint(endpoint_t ep_addr, Endpoint_type ep_type, packet_size_t ep_max_packet_size) noexcept=0

References do_configure_endpoint().

◆ connect()

return_t os::driver::usb::Device::connect ( void  )
inlinenoexcept
Returns
Execution status.

Definition at line 501 of file usb-device.h.

502 {
503 return do_connect ();
504 }
virtual return_t do_connect(void) noexcept=0

References do_connect().

◆ disconnect()

return_t os::driver::usb::Device::disconnect ( void  )
inlinenoexcept
Returns
Execution status.

Definition at line 507 of file usb-device.h.

508 {
509 return do_disconnect ();
510 }
virtual return_t do_disconnect(void) noexcept=0

References do_disconnect().

◆ do_abort_transfer()

virtual return_t os::driver::usb::Device::do_abort_transfer ( endpoint_t  ep_addr)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by abort_transfer().

◆ do_configure_address()

virtual return_t os::driver::usb::Device::do_configure_address ( device_address_t  dev_addr)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by configure_address().

◆ do_configure_endpoint()

virtual return_t os::driver::usb::Device::do_configure_endpoint ( endpoint_t  ep_addr,
Endpoint_type  ep_type,
packet_size_t  ep_max_packet_size 
)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by configure_endpoint().

◆ do_connect()

virtual return_t os::driver::usb::Device::do_connect ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by connect().

◆ do_disconnect()

virtual return_t os::driver::usb::Device::do_disconnect ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by disconnect().

◆ do_get_capabilities()

virtual const device::Capabilities & os::driver::usb::Device::do_get_capabilities ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by get_capabilities().

◆ do_get_frame_number()

virtual frame_number_t os::driver::usb::Device::do_get_frame_number ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by get_frame_number().

◆ do_get_status()

virtual device::Status & os::driver::usb::Device::do_get_status ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by get_status().

◆ do_get_transfer_count()

virtual std::size_t os::driver::usb::Device::do_get_transfer_count ( endpoint_t  ep_addr)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by get_transfer_count().

◆ do_get_version()

virtual const Version & os::driver::Base::do_get_version ( void  )
protectedpure virtualnoexceptinherited

◆ do_power()

virtual return_t os::driver::Base::do_power ( Power  state)
protectedpure virtualnoexceptinherited

◆ do_read_setup_packet()

virtual return_t os::driver::usb::Device::do_read_setup_packet ( uint8_t *  buf)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

◆ do_stall_endpoint()

virtual return_t os::driver::usb::Device::do_stall_endpoint ( endpoint_t  ep_addr,
bool  stall 
)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by stall_endpoint().

◆ do_transfer()

virtual return_t os::driver::usb::Device::do_transfer ( endpoint_t  ep_addr,
uint8_t *  data,
std::size_t  num 
)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

◆ do_unconfigure_endpoint()

virtual return_t os::driver::usb::Device::do_unconfigure_endpoint ( endpoint_t  ep_addr)
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by unconfigure_endpoint().

◆ do_wakeup_remote()

virtual return_t os::driver::usb::Device::do_wakeup_remote ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usbd_wrapper.

Referenced by wakeup_remote().

◆ get_capabilities()

const device::Capabilities & os::driver::usb::Device::get_capabilities ( void  )
inlinenoexcept
Returns
Capabilities.

Definition at line 489 of file usb-device.h.

490 {
491 return do_get_capabilities ();
492 }
virtual const device::Capabilities & do_get_capabilities(void) noexcept=0

References do_get_capabilities().

◆ get_frame_number()

frame_number_t os::driver::usb::Device::get_frame_number ( void  )
inlinenoexcept
Returns
Frame Number

Definition at line 525 of file usb-device.h.

526 {
527 return do_get_frame_number ();
528 }
virtual frame_number_t do_get_frame_number(void) noexcept=0

References do_get_frame_number().

◆ get_status()

device::Status & os::driver::usb::Device::get_status ( void  )
inlinenoexcept
Returns
Device State.

Definition at line 495 of file usb-device.h.

496 {
497 return do_get_status ();
498 }
virtual device::Status & do_get_status(void) noexcept=0

References do_get_status().

◆ get_transfer_count()

std::size_t os::driver::usb::Device::get_transfer_count ( endpoint_t  ep_addr)
inlinenoexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
Returns
number of successfully transferred data bytes

Definition at line 550 of file usb-device.h.

551 {
552 return do_get_transfer_count (ep_addr);
553 }
virtual std::size_t do_get_transfer_count(endpoint_t ep_addr) noexcept=0

References do_get_transfer_count().

◆ get_version()

const Version & os::driver::Base::get_version ( void  )
inlinenoexceptinherited
Returns
Version.

Definition at line 185 of file common.h.

186 {
187 return do_get_version ();
188 }
virtual const Version & do_get_version(void) noexcept=0

◆ operator=() [1/2]

Device & os::driver::usb::Device::operator= ( const Device )
delete

◆ operator=() [2/2]

Device & os::driver::usb::Device::operator= ( Device &&  )
delete

◆ power()

return_t os::driver::Base::power ( Power  state)
inlinenoexceptinherited
Parameters
[in]statePower state
Returns
Execution status

Definition at line 191 of file common.h.

192 {
193 return do_power (state);
194 }
virtual return_t do_power(Power state) noexcept=0

◆ read_setup_packet()

return_t os::driver::usb::Device::read_setup_packet ( uint8_t *  buf)
noexcept
Parameters
[out]bufPointer to buffer for setup packet
Returns
Execution status.

Definition at line 74 of file usb-device.cpp.

75 {
76 assert (buf != nullptr);
77 return do_read_setup_packet (buf);
78 }
virtual return_t do_read_setup_packet(uint8_t *buf) noexcept=0

◆ register_device_callback()

void os::driver::usb::Device::register_device_callback ( device::signal_device_event_t  cb_func,
const void *  cb_object = nullptr 
)
noexcept
Parameters
[in]cb_funcPointer to function.
[in]cb_objectPointer to object passed to the function.
Returns
Nothing.

Definition at line 55 of file usb-device.cpp.

57 {
58 cb_device_func_ = cb_func;
59 cb_device_object_ = cb_object;
60 }

◆ register_endpoint_callback()

void os::driver::usb::Device::register_endpoint_callback ( device::signal_endpoint_event_t  cb_func,
const void *  cb_object = nullptr 
)
noexcept

Definition at line 63 of file usb-device.cpp.

66 {
67 cb_endpoint_func_ = cb_func;
68 cb_endpoint_object_ = cb_object;
69 }

◆ signal_device_event()

void os::driver::usb::Device::signal_device_event ( event_t  event)
noexcept
Parameters
[in]eventEvent.
Returns
Nothing.

Definition at line 95 of file usb-device.cpp.

96 {
97 if (cb_device_func_ != nullptr)
98 {
99 // Forward event to registered callback.
101 }
102 }

◆ signal_endpoint_event()

void os::driver::usb::Device::signal_endpoint_event ( endpoint_t  ep_addr,
event_t  event 
)
noexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
[in]eventEvent.
Returns
Nothing.

Definition at line 105 of file usb-device.cpp.

107 {
108 if (cb_endpoint_func_ != nullptr)
109 {
110 // Forward event to registered callback.
111 cb_endpoint_func_ (cb_endpoint_object_, ep_addr, event);
112 }
113 }

◆ stall_endpoint()

return_t os::driver::usb::Device::stall_endpoint ( endpoint_t  ep_addr,
bool  stall 
)
inlinenoexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
[in]stallOperation
  • false Clear
  • true Set
Returns
Execution status.

Definition at line 544 of file usb-device.h.

545 {
546 return do_stall_endpoint (ep_addr, stall);
547 }
virtual return_t do_stall_endpoint(endpoint_t ep_addr, bool stall) noexcept=0

References do_stall_endpoint().

◆ transfer()

return_t os::driver::usb::Device::transfer ( endpoint_t  ep_addr,
uint8_t *  data,
std::size_t  num 
)
noexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
[out]dataPointer to buffer for data to read or with data to write
[in]numNumber of data bytes to transfer
Returns
Execution status.

Definition at line 81 of file usb-device.cpp.

83 {
84 assert (data != nullptr);
85 if (num == 0)
86 {
87 return RETURN_OK;
88 }
89 return do_transfer (ep_addr, data, num);
90 }
virtual return_t do_transfer(endpoint_t ep_addr, uint8_t *data, std::size_t num) noexcept=0
constexpr return_t RETURN_OK
Definition common.h:52

References os::driver::RETURN_OK.

◆ unconfigure_endpoint()

return_t os::driver::usb::Device::unconfigure_endpoint ( endpoint_t  ep_addr)
inlinenoexcept
Parameters
[in]ep_addrEndpoint Address
  • ep_addr.0..3: Address
  • ep_addr.7: Direction
Returns
Execution status.

Definition at line 538 of file usb-device.h.

539 {
540 return do_unconfigure_endpoint (ep_addr);
541 }
virtual return_t do_unconfigure_endpoint(endpoint_t ep_addr) noexcept=0

References do_unconfigure_endpoint().

◆ wakeup_remote()

return_t os::driver::usb::Device::wakeup_remote ( void  )
inlinenoexcept
Returns
Execution status.

Definition at line 513 of file usb-device.h.

514 {
515 return do_wakeup_remote ();
516 }
virtual return_t do_wakeup_remote(void) noexcept=0

References do_wakeup_remote().

Member Data Documentation

◆ cb_device_func_

device::signal_device_event_t os::driver::usb::Device::cb_device_func_
private

Definition at line 442 of file usb-device.h.

Referenced by Device().

◆ cb_device_object_

const void* os::driver::usb::Device::cb_device_object_
private

Definition at line 445 of file usb-device.h.

Referenced by Device().

◆ cb_endpoint_func_

device::signal_endpoint_event_t os::driver::usb::Device::cb_endpoint_func_
private

Definition at line 448 of file usb-device.h.

Referenced by Device().

◆ cb_endpoint_object_

const void* os::driver::usb::Device::cb_endpoint_object_
private

Definition at line 451 of file usb-device.h.

Referenced by Device().

◆ status_

device::Status os::driver::usb::Device::status_
protected

Definition at line 454 of file usb-device.h.


The documentation for this class was generated from the following files: