dxd - dynax driver framework 2.1.0d58
cross platform open source driver development framework
|
#include <dx_usb_device_platform.h>
Classes | |
struct | isoc |
Public Types | |
enum class | type : uint8_t { control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt , control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt } |
enum class | type : unsigned char { control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt , control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt } |
Public Member Functions | |
pipe & | abort () try |
pipe & | abort () try |
dx_catchall_rethrow () os_result status() const noexcept | |
dx_catchall_rethrow () os_result status() const noexcept | |
dx_catchall_rethrow () uint64_t frame() | |
dx_catchall_rethrow (try {clear();} dx_catchall(), "handle:%p idx:%d EP:%02x data:%p size:%lld", winusb.handle, idx, address, data, size) pipe &receive(void *data | |
asynchronous USB isoc read request WinUSB limitation no microframe support only multiple of max package size requests allowed, even if only submiting a single package https://docs.microsoft.com/en-us/windows/win32/api/winusb/nf-winusb-winusb_readisochpipe is wrong! | |
dx_catchall_rethrow (try {clear();} dx_catchall(), "handle:%p idx:%d EP:%02x data:%p size:%lld", winusb.handle, idx, address, data, size) pipe &transmit(const void *data | |
asynchronous USB write request | |
dx_catchall_rethrow (try {clear();} dx_catchall(), "handle:%p idx:%d EP:%02x data:%p size:%lld", winusb.handle, idx, address, data, size) template< typename data_t > pipe &operator<<(const data_t &data) | |
dx_catchall_rethrow (try {clear();} dx_catchall(), "handle:%p idx:%d EP:%02x data:%p size:%lld", winusb.handle, idx, address, data, size) template< typename data_t > pipe &operator>>(data_t &data) | |
dx_catchall_rethrow (try {clear();} dx_catchall(), "idx:%d EP:%02x", idx, address) pipe &clear() try | |
dx_catchall_rethrow (try {const_cast< pipe * >(this) ->clear();} dx_catchall_handler(this,), "idx:%d size:%lld", idx, sizeof request) template< typename data_t > data_t submit(const control &control) const | |
control request to pipe | |
void | free () noexcept |
if (tx==max) tx=0 | |
bool | in () const noexcept |
bus initializer (isoc, bulk, pci, etc.) compatibility | |
event & | initialize (::HKEY registry, ::DWORD filter=REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|REG_NOTIFY_CHANGE_SECURITY, bool subtree=true) |
event & | initialize (bool signalled) |
pipe & | max_frame_size (unsigned int frame_size) |
operator const os_event () const noexcept | |
operator os_event () noexcept | |
operator::HANDLE () const noexcept | |
pipe (device_t &device, const endpoint &endpoint) | |
pipe (device_t &device, const endpoint &endpoint) | |
pipe & | read (void *data, size_t size) try |
synchronous USB read request | |
pipe & | receive (void *data, size_t size) try |
asynchronous USB read request | |
void | reset () |
void | signal () |
virtual void | start (unsigned int=1) |
async IO thread control (required for Windows compatibility) | |
virtual unsigned int | stop (bool=false) noexcept |
template<typename data_t > | |
pipe & | submit (const request< data_t > &request) const try |
standard request to pipe | |
void | wait (int64_t timeout=0) |
pipe & | write (const void *data, size_t size) try |
synchronous USB write request | |
Static Public Member Functions | |
static void | wait (::HANDLE handle, int64_t timeout=0) |
Public Attributes | |
device_t & | device |
uint64_t ::USBD_ISO_PACKET_DESCRIPTOR * | frame |
uint64_t & | sequence |
return * | this |
size_t size | try |
tx | |
enum dx::usb::platform::pipe::type | type |
Protected Member Functions | |
virtual void | exception (const dx::exception &exception, bool filtered=false) const noexcept |
virtual void | exception (const dx::exception &exception, bool filtered=false) const noexcept |
virtual void | received (os_result, size_t) |
virtual async callbacks | |
virtual void | received (os_result, size_t) |
virtual async callbacks | |
virtual void | received (os_result, size_t, int64_t, usb::isoc::frame *) |
virtual void | received (os_result, size_t, int64_t, usb::isoc::frame *) |
virtual void | start (unsigned int starting=1) |
async IO thread control | |
virtual unsigned int | stop (bool=false) noexcept |
virtual void | transmitted (os_result, size_t) |
virtual void | transmitted (os_result, size_t) |
virtual void | transmitted (os_result, size_t, int64_t, usb::isoc::frame *) |
virtual void | transmitted (os_result, size_t, int64_t, usb::isoc::frame *) |
virtual | ~pipe () noexcept |
virtual | ~pipe () noexcept=default |
Protected Attributes | ||
struct { | ||
} | address | |
uint8_t | address = 0 | |
uint8_t | idx = 0 | |
interface_t & | interface | |
struct { | ||
class buffer { | ||
} buffer | ||
unsigned int micro_frames = 0 | ||
} | isoc | |
struct dx::usb::platform::pipe::isoc | isoc | |
::HANDLE | process = ::GetCurrentProcess() | |
struct { | ||
::WINUSB_INTERFACE_HANDLE handle | ||
} | winusb | |
|
strong |
|
strong |
|
inlineprotectedvirtualnoexcept |
Reimplemented in dx::usb::pipe< device_t >, dx::usb::pipe< device< _desc_t > >, dx::usb::pipe< device< desc_t > >, dx::usb::pipe< dx::usb::stream::device >, dx::usb::pipe< dx::usb::stream::device< _desc_t > >, dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inline |
|
protectedvirtualdefaultnoexcept |
Reimplemented in dx::usb::pipe< device_t >, dx::usb::pipe< device< _desc_t > >, dx::usb::pipe< device< desc_t > >, dx::usb::pipe< dx::usb::stream::device >, dx::usb::pipe< dx::usb::stream::device< _desc_t > >, dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
dx::usb::platform::pipe< device_t, interface_t >::dx_catchall_rethrow | ( | try { | clear);} dx_catchall(, |
"handle:%p idx:%d EP:%02x data:%p size:%lld" | , | ||
winusb. | handle, | ||
idx | , | ||
address | , | ||
data | , | ||
size | ) & |
asynchronous USB isoc read request WinUSB limitation no microframe support only multiple of max package size requests allowed, even if only submiting a single package https://docs.microsoft.com/en-us/windows/win32/api/winusb/nf-winusb-winusb_readisochpipe is wrong!
dx::usb::platform::pipe< device_t, interface_t >::dx_catchall_rethrow | ( | try { | clear);} dx_catchall(, |
"handle:%p idx:%d EP:%02x data:%p size:%lld" | , | ||
winusb. | handle, | ||
idx | , | ||
address | , | ||
data | , | ||
size | ) const & |
asynchronous USB write request
|
inline |
|
inline |
|
inline |
|
inline |
control request to pipe
|
inlineprotectedvirtualnoexcept |
|
inlineprotectedvirtualnoexcept |
|
inlinenoexceptinherited |
|
pure virtual |
|
inlinenoexcept |
bus initializer (isoc, bulk, pci, etc.) compatibility
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inline |
synchronous USB read request
|
inline |
asynchronous USB read request
|
inlineprotectedvirtual |
virtual async callbacks
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inlineprotectedvirtual |
virtual async callbacks
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedvirtual |
async IO thread control
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inlinevirtual |
async IO thread control (required for Windows compatibility)
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inlinevirtualnoexcept |
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inlineprotectedvirtualnoexcept |
Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.
|
inline |
standard request to pipe
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlinestaticinherited |
|
inlineinherited |
|
inline |
synchronous USB write request
struct { ... } dx::usb::platform::pipe< device_t, interface_t >::address |
|
protected |
class { ... } ::buffer dx::usb::platform::pipe< device_t, interface_t >::buffer |
device_t & dx::usb::platform::pipe< device_t, interface_t >::device |
uint64_t ::USBD_ISO_PACKET_DESCRIPTOR* dx::usb::platform::pipe< device_t, interface_t >::frame |
::WINUSB_INTERFACE_HANDLE dx::usb::platform::pipe< device_t, interface_t >::handle |
|
protected |
|
protected |
struct { ... } dx::usb::platform::pipe< device_t, interface_t >::isoc |
|
protected |
unsigned int dx::usb::platform::pipe< device_t, interface_t >::micro_frames = 0 |
|
protectedinherited |
uint64_t& dx::usb::platform::pipe< device_t, interface_t >::sequence |
return* dx::usb::platform::pipe< device_t, interface_t >::this |
size_t size dx::usb::platform::pipe< device_t, interface_t >::try |
dx::usb::platform::pipe< device_t, interface_t >::tx |
enum dx::usb::platform::pipe::type dx::usb::platform::pipe< device_t, interface_t >::type |
struct { ... } dx::usb::platform::pipe< device_t, interface_t >::winusb |
(c) copyright 2009 dynamic acoustics e.U. | generated on Sat Apr 27 2024 |