Universal Software Radio Peripheral
|
darwin implementation of fusb_ephandle More...
#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 |
size_t | d_bufLenBytes |
gruel::mutex * | d_readRunning |
gruel::mutex * | d_runBlock_mutex |
gruel::mutex * | d_readBlock_mutex |
gruel::condition_variable * | d_runBlock |
gruel::condition_variable * | d_readBlock |
darwin implementation of fusb_ephandle
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 usb_debug, d_interface, d_interfaceRef, d_pipeRef, 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::dequeue(), and usb_debug.
bool fusb_ephandle_darwin::start | ( | ) | [virtual] |
begin streaming i/o
Implements fusb_ephandle.
References d_buffer, circular_buffer::reset(), d_queue, circular_linked_list::num_used(), circular_linked_list::iterate_start(), circular_linked_list::iterate_next(), s_node::both(), s_both::set(), s_node::object(), s_node::set_available(), d_pipeRef, d_transferType, fusb_devhandle::get_usb_dev_handle(), USB_ERROR_STR, usb_dev_handle::impl_info, usb_debug, d_interfaceRef, darwin_dev_handle::interface, d_interface, fusb_ephandle::d_endpoint, fusb_ephandle::d_input_p, fusb_ephandle::d_started, d_runBlock_mutex, and d_runBlock.
bool fusb_ephandle_darwin::stop | ( | ) | [virtual] |
stop streaming i/o
Implements fusb_ephandle.
References fusb_ephandle::d_started, usb_debug, fusb_ephandle::d_input_p, abort(), wait_for_completion(), d_buffer, and circular_buffer::abort().
Referenced by ~fusb_ephandle_darwin().
void fusb_ephandle_darwin::wait_for_completion | ( | ) | [virtual] |
Implements fusb_ephandle.
References d_queue, and circular_linked_list::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 fusb_ephandle::d_started, usb_debug, d_bufLenBytes, d_queue, circular_linked_list::find_next_available_node(), s_node::object(), s_buffer::buffer(), s_node::both(), d_transferType, d_interface, d_interfaceRef, d_pipeRef, and USB_ERROR_STR.
Referenced by fusb_ephandle_darwin(), ~fusb_ephandle_darwin(), start(), read(), and stop().
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(), ~fusb_ephandle_darwin(), start(), write(), and wait_for_completion().
gruel::condition_variable* fusb_ephandle_darwin::d_readBlock |
Referenced by fusb_ephandle_darwin(), and ~fusb_ephandle_darwin().
gruel::mutex* fusb_ephandle_darwin::d_readBlock_mutex |
Referenced by fusb_ephandle_darwin(), and ~fusb_ephandle_darwin().
gruel::mutex* fusb_ephandle_darwin::d_readRunning |
Referenced by fusb_ephandle_darwin(), and ~fusb_ephandle_darwin().
gruel::condition_variable* fusb_ephandle_darwin::d_runBlock |
Referenced by fusb_ephandle_darwin(), ~fusb_ephandle_darwin(), and start().
gruel::mutex* fusb_ephandle_darwin::d_runBlock_mutex |
Referenced by fusb_ephandle_darwin(), ~fusb_ephandle_darwin(), and start().