|
dxd - dynax driver framework 2.6.0d205
cross platform open source driver development framework
|
#include <dx_usb_device_platform.h>
Public Member Functions | |
| device & | close () noexcept |
| device & | close (bool force=false) noexcept |
| virtual void | conclude () noexcept |
| conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. | |
| void | conclude () noexcept override |
| conclude notifacation: device will be removed from tree | |
| uint8_t | configuration () const |
| unsigned char | configuration () const noexcept |
| virtual uint8_t | configuration (uint8_t configuration) |
| virtual unsigned char | configuration (unsigned char configuration) try |
| uint8_t | configurations () const |
| auto | count () const noexcept |
| auto | count () const noexcept |
| void | ctl (uint32_t ioctl) const try |
| device (decltype(super::driver)&driver, ::io_service_t id) | |
| the device class constructor | |
| device (decltype(super::driver)&driver, decltype(super::id)&id) | |
| the device class constructor | |
| dx_catchall_rethrow (, "name: %s, access rights: %x, sharing options:%x", name, access, share) | |
| dx_catchall_rethrow () device &open() | |
| for macOS compatibility only | |
| dx_catchall_rethrow () device &reset() | |
| dx_catchall_rethrow () device &submit(const control &control) try | |
| dx_catchall_rethrow () struct void_struct | |
| dx_catchall_rethrow () template< typename data_t >device &submit(const request< data_t > &request) try | |
| standard device request | |
| dx_catchall_rethrow () unsigned char configurations() const noexcept | |
| dx_catchall_rethrow () void conclude() noexcept override | |
| conclude notification: device will be removed from tree | |
| dx_catchall_rethrow (if(autoclear) try {const_cast< device * >(this) ->clear();} dx_catchall(), "handle: %p size: %lld request: %x idx: %x value: %x length: %x", winusb.handle, sizeof(request), request.control::request, request.index, request.value, request.length) template< typename data_t | |
| dx_catchall_rethrow (try {if(exception.error==stalled) clear();} dx_catchall_handler(this,), "request type:%x [recipient:%d type:%x direction:%x] request:%x value:%x index:%x length:%d", reinterpret_cast< const uint8_t & >(request), request.recipient, request.type, request.direction, request.control::request, request.value, request.index, request.length) template< typename data_t >data_t submit(const control &control) try | |
| device control request | |
| dx_pass (::IOConnectCallStructMethod(io_connect, ioctl, nullptr, 0, &rx, &size), "%s rx:%p size:%d", fourchar::to::string(ioctl).c_str(), &rx, size) | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| uint64_t | frame () const try |
| uint64_t | frame () const try |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key) const |
| ::CFTypeRef | get (::CFStringRef key) const |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| ::CFTypeRef | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key, value_t dflt) const noexcept |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key, value_t dflt) const noexcept |
| template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (key_t key) const |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| ::CFTypeRef | get (key_t key) const |
| rx_t | ictl (unsigned int ioctl) const |
| Windows: member ioctl. | |
| void | info (std::ostream &os) noexcept override |
| log object class information | |
| void | initialize (const char *name, ::DWORD access=GENERIC_READ|GENERIC_WRITE, ::DWORD share=FILE_SHARE_READ|FILE_SHARE_WRITE) try |
| (re-)initialization the underlaying windows API is CreateFile(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx | |
| size_t | ioctl (unsigned int ioctl, const tx_t &tx, rx_t &rx) const |
| virtual void | launch () |
| launch notification: object mounted and ready to use | |
| virtual void | launch () |
| launch notification: object mounted and ready to use | |
| void | launch () override |
| launch notification: object mounted and ready to use | |
| void | octl (unsigned int ioctl, const tx_t &tx) const |
| device & | open () |
| opens the USB device for exclusice access | |
| operator const ::io_registry_entry_t & () const noexcept | |
| auto converter into const io_object | |
| operator const ::io_registry_entry_t & () const noexcept | |
| auto converter into const io_object | |
| operator uint64_t () const | |
| operator uint64_t () const | |
| operator::CFMutableDictionaryRef () const | |
| operator::CFMutableDictionaryRef () const | |
| operator::CFStringRef () const | |
| operator::CFStringRef () const | |
| operator::io_registry_entry_t & () noexcept | |
| auto converter into io_object | |
| operator::io_registry_entry_t & () noexcept | |
| auto converter into io_object | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| bool | operator== (::io_registry_entry_t io_object) const noexcept |
| bool | operator== (::io_registry_entry_t io_object) const noexcept |
| virtual device & | operator>> (std::ostream &) const |
| virtual device & | operator>> (std::ostream &) const |
| ::CFTypeRef | operator[] (::CFStringRef key) const |
| ::CFTypeRef | operator[] (::CFStringRef key) const |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| ::CFTypeRef | operator[] (key_t key) const |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| ::CFTypeRef | operator[] (key_t key) const |
| registry | parent () const |
| registry | parent () const |
| device & | reenumerate () |
| reference & | retain () |
| reference & | retain () |
| device & | set (::CFTypeRef properties) |
| Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device. | |
| registry & | set (::CFStringRef key, ::CFTypeRef value) |
| registry & | set (::CFStringRef key, ::CFTypeRef value) |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| registry & | set (::CFStringRef key, value_t value) |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| registry & | set (::CFStringRef key, value_t value) |
| registry & | set (::CFTypeRef properties) |
| Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device. | |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| registry & | set (key_t key, ::CFTypeRef value) |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| registry & | set (key_t key, ::CFTypeRef value) |
| template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>> | |
| registry & | set (key_t key, value_t value) |
| template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>> | |
| registry & | set (key_t key, value_t value) |
| virtual void | sleep () |
| notify system will sleep stub | |
| virtual void | sleep () |
| notify system will sleep stub | |
| template<typename data_t> | |
| device & | submit (const request< data_t > &request, bool autoclear=true) const try |
| virtual void | wake () |
| notify system wake completed stub | |
| virtual void | wake () |
| notify system wake completed stub | |
| ~device () override | |
Public Attributes | |
| cf::string | bundle_id |
| bool | composite = false |
| indicate WinUSB matched against single interface of composit device; | |
| dx::driver< decltype(id), dx::preference > & | driver |
| dx::driver< decltype(id), dx::preference > & | driver |
| dx::driver< decltype(id), dx::preference > & | driver |
| const std::string | id |
| const ::io_service_t | id |
| const ::io_service_t | id |
| bool | launched |
| bool | launched |
| bool | launched |
| dx::preference | preference |
| dx::preference | preference |
| dx::preference | preference |
| std::string | puid |
| persistent UID - system unique - could change with location | |
| std::string | puid |
| persistent UID (i.e. serial number) - system unique - if no other option to identify could change with location | |
| std::string | puuid |
| persistent universal UID - universally unique ID (i.e. serial number) | |
| std::string | puuid |
| persistent universal UID - universally unique ID | |
| return | size |
| enum speed | speed |
| rx_t &rx const | try |
Protected Types | |
| typedef service::request< service::stream::data< typename super_device_t::desc_t > > | request |
| enum class | type : ::DWORD { undefined = REG_NONE , uint32 = REG_DWORD , uint64 = REG_QWORD , string = REG_SZ , vendor = REG_BINARY } |
Protected Member Functions | |
| iterator | begin () const |
| iterator | end () const |
| registry & | erase (const char *subkey=nullptr) noexcept |
| void | initialize (::IOCFPlugInInterface **cf_interface, ::CFUUIDRef uuid) |
| registry & | initialize (const std::string &key, ::HKEY root=HKEY_CURRENT_USER, ::REGSAM rights=KEY_ALL_ACCESS) try |
| registry & | initialize (const std::string &key, ::REGSAM rights, ::HKEY root, const char *path=nullptr) try |
| std::string | key_from_index (size_t index) const try |
| dx_catchall_rethrow() registry &initialize( | operator keys () const noexcept |
| ::IOUSBDeviceInterface650 * | operator-> () const |
| operator::IOUSBDeviceInterface650 ** () const | |
| registry & | run () |
Protected Attributes | |
| class dx::service::device::promoted | clocksource |
| bool | connected |
| class dx::service::device::promoted | iosize |
| struct { | |
| cf::string bundle_id | |
| cf::string class_name | |
| } | kernel |
| dx_catchall_rethrow() public std::deque< std::function< void()> > | listen |
| std::atomic< int > | opened {} |
| pipe< request >::server | pipe |
| io::port | port |
| class dx::service::device::promoted | safety_offset [dx::stream::direction::out] |
| class dx::service::device::promoted | safety_offset_in [dx::stream::direction::in] |
| class dx::service::device::promoted | safety_offset_out [dx::stream::direction::out] |
| class dx::service::device::promoted | samplerate |
| bool | schedule_erase {} |
| struct { | |
| ::WINUSB_INTERFACE_HANDLE handle | |
| } | winusb |
|
protectedinherited |
|
strongprotectedinherited |
|
inline |
the device class constructor
| kIOReturn | NoMemory means that the system couldn't allocate the class defined in the drivers plist, or nub which ever its trying connecting to |
obtain version info
statically gets the device speed
| id | the IOService object to open the device connection for. This will be held (but not retained) during device class lifetime |
|
inlineoverride |
|
inline |
the device class constructor
statically gets the device speed
|
inlineprotectedinherited |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinevirtualnoexceptinherited |
conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.
|
inlineoverridevirtualnoexceptinherited |
conclude notifacation: device will be removed from tree
Reimplemented from dx::object.
Reimplemented in dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream > > >.
|
inline |
|
inlinenoexcept |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
|
inherited |
|
inline |
for macOS compatibility only
|
inline |
|
inline |
|
inline |
|
inline |
standard device request
|
inlinenoexcept |
|
inlineoverridenoexcept |
conclude notification: device will be removed from tree
| dx::usb::platform::device< preference_t >::dx_catchall_rethrow | ( | if(autoclear) try {const_cast< device< preference_t > * >(this) ->clear();} dx_catchall() | , |
| "handle: %p size: %lld request: %x idx: %x value: %x length: %x" | , | ||
| winusb. | handle, | ||
| sizeof(request) | , | ||
| request.control::request | , | ||
| request. | index, | ||
| request. | value, | ||
| request. | length ) |
|
inline |
device control request
|
inherited |
|
inlineprotectedinherited |
|
inlineprotectednoexceptinherited |
|
inlineoverridevirtualnoexcept |
notification exception handler
Reimplemented from dx::device<::io_service_t, dx::preference >.
|
inline |
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Windows: member ioctl.
this member retreives data from the device by providing an IOCTL code. the template argument defines the type of data to be retreived. this member is intended as a convinient way to retreive only small amounts of data since there is an intermediate stack copy involved in returning the data.
the underlaying windows API is DeviceIoControl(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx
| n/a | microsoft does not give information about what possible errors values are provided by its OS other than |
| ERROR_INSUFFICIENT_BUFFER | if the output buffer is too small to receive any data |
| rx_t | type of rx_t needs to be explicitly specified as it can't be deduced |
|
inlineoverridevirtualnoexcept |
log object class information
Reimplemented from dx::device<::io_service_t, dx::preference >.
Reimplemented in dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe > > >.
|
inlineprotectedinherited |
|
inlineinherited |
(re-)initialization the underlaying windows API is CreateFile(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
| n/a | microsoft does not give information about what possible errors values are provided by its OS |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineprotectedinherited |
|
inlinevirtualinherited |
launch notification: object mounted and ready to use
|
inlinevirtualinherited |
launch notification: object mounted and ready to use
|
inlineoverridevirtualinherited |
launch notification: object mounted and ready to use
Reimplemented from dx::object.
Reimplemented in dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe > > >.
|
inlineinherited |
|
inline |
opens the USB device for exclusice access
|
inlinenoexceptinherited |
auto converter into const io_object
|
inlinenoexceptinherited |
auto converter into const io_object
|
inlineprotectednoexceptinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlinenoexceptinherited |
auto converter into io_object
|
inlinenoexceptinherited |
auto converter into io_object
|
inlinenoexceptinherited |
auto converter into io_object pointer
|
inlinenoexceptinherited |
auto converter into io_object pointer
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinevirtualinherited |
|
inlinevirtualinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinevirtualinherited |
notify system will sleep stub
|
inlinevirtualinherited |
notify system will sleep stub
|
inline |
|
inlinevirtualinherited |
notify system wake completed stub
Reimplemented in dx::stream::device< dx::stream::control< dx::device< std::string, dx::preference > >, desc, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream > > >, dx::stream::device< dx::stream::control< dx::proxy::device< dx::preference > >, dx::stream::desc<>, stream< device< dx::stream::desc<>, dx::preference, stream > > >, and dx::stream::device< dx::stream::control< usb::device< dx::preference > >, desc_t, pipe< device< desc_t, dx::preference, pipe > > >.
|
inlinevirtualinherited |
notify system wake completed stub
Reimplemented in dx::stream::device< dx::stream::control< dx::proxy::device< dx::preference > >, dx::stream::desc<>, stream< device< dx::stream::desc<>, dx::preference, stream > > >, and dx::stream::device< dx::stream::control< usb::device< dx::preference > >, desc_t, pipe< device< desc_t, dx::preference, pipe > > >.
|
inherited |
|
protectedinherited |
| bool dx::usb::platform::device< preference_t >::composite = false |
indicate WinUSB matched against single interface of composit device;
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
| ::WINUSB_INTERFACE_HANDLE dx::usb::platform::device< preference_t >::handle |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
| struct { ... } dx::service::device< dx::preference >::kernel |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
persistent UID - system unique - could change with location
|
inherited |
persistent UID (i.e. serial number) - system unique - if no other option to identify could change with location
|
inherited |
persistent universal UID - universally unique ID (i.e. serial number)
|
inherited |
persistent universal UID - universally unique ID
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
| enum speed dx::usb::platform::device< preference_t >::speed |
|
inherited |
| struct { ... } dx::usb::platform::device< preference_t >::winusb |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |