#include <fusb_darwin.h>
Public Member Functions | |
fusb_ephandle_darwin (fusb_devhandle_darwin *dh, int endpoint, bool input_p, int block_size=0, int nblocks=0) | |
virtual | ~fusb_ephandle_darwin () |
virtual bool | start () |
begin streaming i/o | |
virtual bool | stop () |
stop streaming i/o | |
virtual int | write (const void *buffer, int nbytes) |
virtual int | read (void *buffer, int nbytes) |
void | abort () |
virtual void | wait_for_completion () |
Public Attributes | |
UInt8 | d_pipeRef |
UInt8 | d_transferType |
usb_interface_t ** | d_interfaceRef |
usb_interface_t * | d_interface |
s_queue_ptr | d_queue |
circular_buffer< char > * | d_buffer |
UInt32 | d_bufLenBytes |
mld_mutex_ptr | d_readRunning |
mld_condition_ptr | d_runBlock |
mld_condition_ptr | d_readBlock |
This is currently identical to the generic implementation and is intended as a starting point for whatever magic is required to make usb fly.
fusb_ephandle_darwin::fusb_ephandle_darwin | ( | fusb_devhandle_darwin * | dh, | |
int | endpoint, | |||
bool | input_p, | |||
int | block_size = 0 , |
|||
int | nblocks = 0 | |||
) |
fusb_ephandle_darwin::~fusb_ephandle_darwin | ( | ) | [virtual] |
void fusb_ephandle_darwin::abort | ( | ) |
References d_interface, d_interfaceRef, d_pipeRef, usb_debug, and USB_ERROR_STR_NO_RET.
Referenced by stop().
int fusb_ephandle_darwin::read | ( | void * | buffer, | |
int | nbytes | |||
) | [virtual] |
Implements fusb_ephandle.
References d_buffer, circular_buffer< T >::dequeue(), and usb_debug.
bool fusb_ephandle_darwin::start | ( | ) | [virtual] |
begin streaming i/o
Implements fusb_ephandle.
References s_node< T >::both(), d_buffer, fusb_ephandle::d_endpoint, fusb_ephandle::d_input_p, d_interface, d_interfaceRef, d_pipeRef, d_queue, d_runBlock, fusb_ephandle::d_started, d_transferType, fusb_devhandle::get_usb_dev_handle(), usb_dev_handle::impl_info, darwin_dev_handle::interface, circular_linked_list< T >::iterate_next(), circular_linked_list< T >::iterate_start(), mld_mutex_t::lock(), mld_condition_t::mutex(), circular_linked_list< T >::num_used(), s_node< T >::object(), s_buffer::reset(), circular_buffer< T >::reset(), s_both< T >::set(), s_node< T >::set_available(), usb_debug, USB_ERROR_STR, and mld_condition_t::wait().
bool fusb_ephandle_darwin::stop | ( | ) | [virtual] |
stop streaming i/o
Implements fusb_ephandle.
References circular_buffer< T >::abort(), abort(), d_buffer, fusb_ephandle::d_input_p, fusb_ephandle::d_started, mld_mutex_t::lock(), mld_mutex_t::unlock(), usb_debug, and wait_for_completion().
Referenced by ~fusb_ephandle_darwin().
void fusb_ephandle_darwin::wait_for_completion | ( | ) | [virtual] |
Implements fusb_ephandle.
References d_queue, and circular_linked_list< T >::in_use().
Referenced by stop().
int fusb_ephandle_darwin::write | ( | const void * | buffer, | |
int | nbytes | |||
) | [virtual] |
nbytes
if write was successfully enqueued, else -1. Will block if no free buffers available. Implements fusb_ephandle.
References s_node< T >::both(), s_buffer::buffer(), d_bufLenBytes, d_interface, d_interfaceRef, d_pipeRef, d_queue, fusb_ephandle::d_started, d_transferType, circular_linked_list< T >::find_next_available_node(), s_node< T >::object(), usb_debug, and USB_ERROR_STR.
Referenced by fusb_ephandle_darwin(), read(), start(), stop(), and ~fusb_ephandle_darwin().
Referenced by fusb_ephandle_darwin(), and write().
usb_interface_t* fusb_ephandle_darwin::d_interface |
usb_interface_t** fusb_ephandle_darwin::d_interfaceRef |
Referenced by fusb_ephandle_darwin(), start(), wait_for_completion(), write(), and ~fusb_ephandle_darwin().
Referenced by fusb_ephandle_darwin(), and ~fusb_ephandle_darwin().
Referenced by fusb_ephandle_darwin(), and ~fusb_ephandle_darwin().
Referenced by fusb_ephandle_darwin(), start(), and ~fusb_ephandle_darwin().