Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 727fa15453fcace956b835e2377d4269 > files > 765

player-doc-3.0.2-5.fc14.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html>
<!-- $Id: header.html 8799 2010-06-28 04:12:42Z jpgr87 $ -->

<HEAD>


<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=utf-8">
<meta name="keywords" content="stage, robot, simulation, player, player/stage">
<link href="doxygen.css" rel="stylesheet" type="text/css">

<style type="text/css">

.floatright { float: right; margin: 0 0 1em 1em; }

body {
  font-family: sans-serif;
  #font-family: Geneva, Verdana, Helvetica, Arial, sans-serif;
  background-color: #FFF;
  color:#000;
}


a:link { 
	color: #A00;
}

a:visited { 
	color: #800;
}

a { text-decoration: none; }
a:hover { text-decoration: underline; }


.timestamp { text-align:right; background-color: #DDD; font-size:75%;}

h1 { 
  font-size:160%; 
}

h2 {
  font-size:110%;
  #color: #FFF;
  #background-color: #666;
  #padding:3px;
}

h3 { text-align:left; }

img {
  border: 0;
}

ul.menu { 
    position:relative;
    left:-2.5em;
    margin-bottom:0px;
    margin-top:0px;
}

ul.menu1 { 
    position:relative;
    left:-2.1em;
    margin-bottom:0px;
    margin-top:0px;
}

li.menu { 
    list-style-type: none;
    position:relative;
    #left:-0.5em;
}


#sidebar { position: absolute; left:0px; padding:2em; top:0em; width:12em;}

#content { position: absolute; left:12em; top:0em; padding-left:3em; padding-right:3em; padding-bottom:2em; margin-top:1em; margin-right:2em; }

div.box { background-color:#EEE; border: 1px solid #000; padding: 0.5ex 0.4em 0.5ex 0.6em; margin:1em;  }
div.title { font-weight:bold; background-color:#eee; margin-bottom:2px;}

div.topbar { position: absolute; top:0px; left:9em; margin:1em; }

</style>

<TITLE>Player Manual</TITLE>

</HEAD>

<body>

<div id="sidebar"> 

<h2 style="text-align:center;">
<a href="index.html">
<img width=140 src="http://playerstage.sourceforge.net/images/player_button_v3.png" alt="Player logo"><br></a>
</h2>



<div class="box">
<div class=title>Player</div>

<ul class=menu>
<li class=menu><a href="index.html">Frontpage</a>
<li class=menu><a href="modules.html">Contents</a>
</ul>
</div>

<div class="box">
<div class=title>User</div>

<ul class=menu>
<li class=menu><a href="install.html">Installation</a>
<li class=menu><a href="start.html">Quick start</a>
<li class=menu><a href="supported_hardware.html">Supported&nbsp;devices</a>
<li class=menu><a href="group__tutorials.html">Tutorials</a>
<li class=menu><a href="group__utils.html">Utilities</a>
<li class=menu><a href="group__clientlibs.html">Client&nbsp;libraries</a>
<li class=menu><a href="http://playerstage.sourceforge.net/wiki/Basic_FAQ">FAQ</a>
<li class=menu><a href="help.html">Help</a>

</ul>
</div>

<div class=box>
<div class="title">Developer</div>
<ul class=menu>
<li class=menu><a href="architecture.html">Architecture</a>
<li class=menu><a href="group__libplayercore.html">libplayercore</a>
<ul class=menu1>
<li class=menu><a href="group__interfaces.html">interfaces</a></li>
</ul>
<li class=menu><a href="group__libplayerdrivers.html">libplayerdrivers</a>
<ul class=menu1>
<li class=menu><a href="group__drivers.html">drivers</a></li>
</ul>
<li class=menu><a href="group__libplayercommon.html">libplayercommon</a>
<li class=menu><a href="group__libplayerutils.html">libplayerutils</a>
<li class=menu><a href="group__libplayersd.html">libplayersd</a>
<li class=menu><a href="group__libplayertcp.html">libplayertcp</a>
<li class=menu><a href="group__libplayerxdr.html">libplayerxdr</a>
<li class=menu><a href="todo.html">TODO</a>
</ul>
</div>

<div class=box>
<!-- <a href="http://sourceforge.net"><img border=0 src="http://sourceforge.net/sflogo.php?group_id=42445&type=1"></a> -->
<div class="title">Online</div>
<a href="http://playerstage.sourceforge.net">Homepage</a><br>
<a href="http://sourceforge.net/project/showfiles.php?group_id=42445">Download</a><br>
<a href="http://sourceforge.net/projects/playerstage">Project</a><br>
<a href="http://sourceforge.net/tracker/?group_id=42445">Bugs</a><br>
<a href="http://sourceforge.net/mail/?group_id=42445">Help</a>
</div>


</div>

<div id="content" >
<!-- Generated by Doxygen 1.7.1 -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<h1>Client API<br/>
<small>
[<a class="el" href="group__player__clientlib__libplayerc.html">libplayerc</a>]</small>
</h1>  </div>
</div>
<div class="contents">

<p>The client object manages the connection with the Player server; it is responsible for reading new data, setting data transmission modes and so on.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structplayerc__device__info__t.html">playerc_device_info_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Info about an available (but not necessarily subscribed) device.  <a href="structplayerc__device__info__t.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__playerc__client__t.html">_playerc_client_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Client object data.  <a href="struct__playerc__client__t.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__playerc__client__t.html">_playerc_client_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga8c6bd4fedda80f587e9aee4c3f11e61a">playerc_client_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Client object data.  <a href="#ga8c6bd4fedda80f587e9aee4c3f11e61a"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT <a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga3f6ad85306c9faa2d799817b7e57aa9e">playerc_client_create</a> (<a class="el" href="structplayerc__mclient__t.html">playerc_mclient_t</a> *mclient, const char *host, int port)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a client object.  <a href="#ga3f6ad85306c9faa2d799817b7e57aa9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga1cae342cd44cc82e0fb95af32797898a">playerc_client_destroy</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a client object.  <a href="#ga1cae342cd44cc82e0fb95af32797898a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga9d9f8873b10b10ec2991674d32d05155">playerc_client_set_transport</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, unsigned int transport)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the transport type.  <a href="#ga9d9f8873b10b10ec2991674d32d05155"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga5bf536922ccb55b895cd7f7d64df5453">playerc_client_connect</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to the server.  <a href="#ga5bf536922ccb55b895cd7f7d64df5453"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga6637deaff563ea0068d639a368ce5125">playerc_client_disconnect</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect from the server.  <a href="#ga6637deaff563ea0068d639a368ce5125"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gafb407c155f850120f965f340b63f9320">playerc_client_disconnect_retry</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect from the server, with potential retry.  <a href="#gafb407c155f850120f965f340b63f9320"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gabb027414e8ef9726ac04040e955a96c2">playerc_client_datamode</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, uint8_t mode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the server's data delivery mode.  <a href="#gabb027414e8ef9726ac04040e955a96c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gae15ccb3b14ce2e837cb50d1a2b4ca6ef">playerc_client_requestdata</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a round of data.  <a href="#gae15ccb3b14ce2e837cb50d1a2b4ca6ef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga614460854dbe3336e87388d0912fe96e">playerc_client_set_replace_rule</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int interf, int index, int type, int subtype, int replace)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a replace rule for the client queue on the server.  <a href="#ga614460854dbe3336e87388d0912fe96e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga787ada446523d54564134303cd5c56c1">playerc_client_adddevice</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a device proxy.  <a href="#ga787ada446523d54564134303cd5c56c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gaafa3d9eef35b887ed0789d02fc622679">playerc_client_deldevice</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a device proxy.  <a href="#gaafa3d9eef35b887ed0789d02fc622679"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga437742c8803f5f2d967f82d3fd1dd00e">playerc_client_addcallback</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device, <a class="el" href="group__playerc__client.html#gad7e70480b0d4c9f57dbe980a6a4293eb">playerc_callback_fn_t</a> callback, void *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add user callbacks (called when new data arrives).  <a href="#ga437742c8803f5f2d967f82d3fd1dd00e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gaaba403a58acd73991bf1296a8127fb83">playerc_client_delcallback</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device, <a class="el" href="group__playerc__client.html#gad7e70480b0d4c9f57dbe980a6a4293eb">playerc_callback_fn_t</a> callback, void *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove user callbacks (called when new data arrives).  <a href="#gaaba403a58acd73991bf1296a8127fb83"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga7e24e5c9127d84d127c6464bfa5e15d0">playerc_client_get_devlist</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the list of available device ids.  <a href="#ga7e24e5c9127d84d127c6464bfa5e15d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga56b20c0d5aeb34f9174bcd05ffe635da">playerc_client_subscribe</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int code, int index, int access, char *drivername, size_t len)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Subscribe a device.  <a href="#ga56b20c0d5aeb34f9174bcd05ffe635da"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gab6901e9b9b3d48f558505e96375e7a8d">playerc_client_unsubscribe</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int code, int index)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unsubscribe a device.  <a href="#gab6901e9b9b3d48f558505e96375e7a8d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga1aa2ff621c82c99834ef9e1053d52943">playerc_client_request</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device, uint8_t reqtype, const void *req_data, void **rep_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Issue a request to the server and await a reply (blocking).  <a href="#ga1aa2ff621c82c99834ef9e1053d52943"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga2647e1178b9de53db1f1578ff6bbf048">playerc_client_peek</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait for response from server (blocking).  <a href="#ga2647e1178b9de53db1f1578ff6bbf048"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gad6a4b3d0252d02fc04a25d7a00a083b4">playerc_client_internal_peek</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test to see if there is pending data.  <a href="#gad6a4b3d0252d02fc04a25d7a00a083b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga4dde3a1fa0fb0288cbf39fce32ecb960">playerc_client_read</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read data from the server (blocking).  <a href="#ga4dde3a1fa0fb0288cbf39fce32ecb960"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gab2e422b4ce36d9bdbf27929100279210">playerc_client_read_nonblock</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read and process a packet (nonblocking).  <a href="#gab2e422b4ce36d9bdbf27929100279210"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gaa0d736d863f3def74f4764eaba62f6ab">playerc_client_read_nonblock_withproxy</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, void **proxy)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read and process a packet (nonblocking), fills in pointer to proxy that got data.  <a href="#gaa0d736d863f3def74f4764eaba62f6ab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gaddf1663a4370b15be7941aa87ddfe16c">playerc_client_set_request_timeout</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, uint32_t seconds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout for client requests.  <a href="#gaddf1663a4370b15be7941aa87ddfe16c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga3025a79ece2a7c6608eab9de3f08c195">playerc_client_set_retry_limit</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, int limit)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the connection retry limit.  <a href="#ga3025a79ece2a7c6608eab9de3f08c195"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gaebdce291cd7c283d6f48943c265ec320">playerc_client_set_retry_time</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, double time)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the connection retry sleep time.  <a href="#gaebdce291cd7c283d6f48943c265ec320"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PLAYERC_EXPORT int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#ga9b7345ee85e793c9c011bf9b90254025">playerc_client_write</a> (<a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *client, struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *device, uint8_t subtype, void *cmd, double *timestamp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write data to the server.  <a href="#ga9b7345ee85e793c9c011bf9b90254025"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad98282e0bb4b776229284c0342c6f348"></a><!-- doxytag: member="playerc_client::playerc_putmsg_fn_t" ref="gad98282e0bb4b776229284c0342c6f348" args=")(void *device, char *header, char *data)" -->
PLAYERC_EXPORT typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gad98282e0bb4b776229284c0342c6f348">playerc_putmsg_fn_t</a> )(void *device, char *header, char *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Typedef for proxy callback function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad7e70480b0d4c9f57dbe980a6a4293eb"></a><!-- doxytag: member="playerc_client::playerc_callback_fn_t" ref="gad7e70480b0d4c9f57dbe980a6a4293eb" args=")(void *data)" -->
PLAYERC_EXPORT typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__playerc__client.html#gad7e70480b0d4c9f57dbe980a6a4293eb">playerc_callback_fn_t</a> )(void *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Typedef for proxy callback function. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The client object manages the connection with the Player server; it is responsible for reading new data, setting data transmission modes and so on. </p>
<p>The client object must be created and connected before device proxies are initialized. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga8c6bd4fedda80f587e9aee4c3f11e61a"></a><!-- doxytag: member="playerc.h::playerc_client_t" ref="ga8c6bd4fedda80f587e9aee4c3f11e61a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct__playerc__client__t.html">_playerc_client_t</a>  <a class="el" href="struct__playerc__client__t.html">playerc_client_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Client object data. </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga437742c8803f5f2d967f82d3fd1dd00e"></a><!-- doxytag: member="playerc.h::playerc_client_addcallback" ref="ga437742c8803f5f2d967f82d3fd1dd00e" args="(playerc_client_t *client, struct _playerc_device_t *device, playerc_callback_fn_t callback, void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_addcallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__playerc__client.html#gad7e70480b0d4c9f57dbe980a6a4293eb">playerc_callback_fn_t</a>&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add user callbacks (called when new data arrives). </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="ga787ada446523d54564134303cd5c56c1"></a><!-- doxytag: member="playerc.h::playerc_client_adddevice" ref="ga787ada446523d54564134303cd5c56c1" args="(playerc_client_t *client, struct _playerc_device_t *device)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_adddevice </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a device proxy. </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="ga5bf536922ccb55b895cd7f7d64df5453"></a><!-- doxytag: member="playerc.h::playerc_client_connect" ref="ga5bf536922ccb55b895cd7f7d64df5453" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_connect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Connect to the server. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. Use <a class="el" href="group__playerc__utility.html#gabc6f998b5f95a7368a3e7577e8e91dc6" title="Retrieve the last error (as a descriptive string).">playerc_error_str()</a> to get a descriptive error message. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3f6ad85306c9faa2d799817b7e57aa9e"></a><!-- doxytag: member="playerc.h::playerc_client_create" ref="ga3f6ad85306c9faa2d799817b7e57aa9e" args="(playerc_mclient_t *mclient, const char *host, int port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT <a class="el" href="struct__playerc__client__t.html">playerc_client_t</a>* playerc_client_create </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayerc__mclient__t.html">playerc_mclient_t</a> *&nbsp;</td>
          <td class="paramname"> <em>mclient</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a client object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mclient</em>&nbsp;</td><td>Multiclient object; set this NULL if this is a stand-alone client.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>host</em>&nbsp;</td><td>Player server host name (i.e., name of the machine with the Player server).</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>Player server port (typically 6665, but depends on the server configuration).</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns a newly allocated pointer to the client object; use <a class="el" href="group__playerc__client.html#ga1cae342cd44cc82e0fb95af32797898a" title="Destroy a client object.">playerc_client_destroy()</a> to delete the object. </dd></dl>

</div>
</div>
<a class="anchor" id="gabb027414e8ef9726ac04040e955a96c2"></a><!-- doxytag: member="playerc.h::playerc_client_datamode" ref="gabb027414e8ef9726ac04040e955a96c2" args="(playerc_client_t *client, uint8_t mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_datamode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Change the server's data delivery mode. </p>
<p>Be sure to <a class="el" href="group__libplayerc__datamodes.html">read about data modes</a> before using this function.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>Data delivery mode; must be one of PLAYERC_DATAMODE_PUSH, PLAYERC_DATAMODE_PULL; the defalt mode is PLAYERC_DATAMODE_PUSH.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. Use <a class="el" href="group__playerc__utility.html#gabc6f998b5f95a7368a3e7577e8e91dc6" title="Retrieve the last error (as a descriptive string).">playerc_error_str()</a> to get a descriptive error message. </dd></dl>

</div>
</div>
<a class="anchor" id="gaaba403a58acd73991bf1296a8127fb83"></a><!-- doxytag: member="playerc.h::playerc_client_delcallback" ref="gaaba403a58acd73991bf1296a8127fb83" args="(playerc_client_t *client, struct _playerc_device_t *device, playerc_callback_fn_t callback, void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_delcallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__playerc__client.html#gad7e70480b0d4c9f57dbe980a6a4293eb">playerc_callback_fn_t</a>&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove user callbacks (called when new data arrives). </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="gaafa3d9eef35b887ed0789d02fc622679"></a><!-- doxytag: member="playerc.h::playerc_client_deldevice" ref="gaafa3d9eef35b887ed0789d02fc622679" args="(playerc_client_t *client, struct _playerc_device_t *device)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_deldevice </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove a device proxy. </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="ga1cae342cd44cc82e0fb95af32797898a"></a><!-- doxytag: member="playerc.h::playerc_client_destroy" ref="ga1cae342cd44cc82e0fb95af32797898a" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void playerc_client_destroy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroy a client object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6637deaff563ea0068d639a368ce5125"></a><!-- doxytag: member="playerc.h::playerc_client_disconnect" ref="ga6637deaff563ea0068d639a368ce5125" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_disconnect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnect from the server. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. Use <a class="el" href="group__playerc__utility.html#gabc6f998b5f95a7368a3e7577e8e91dc6" title="Retrieve the last error (as a descriptive string).">playerc_error_str()</a> to get a descriptive error message. </dd></dl>

</div>
</div>
<a class="anchor" id="gafb407c155f850120f965f340b63f9320"></a><!-- doxytag: member="playerc.h::playerc_client_disconnect_retry" ref="gafb407c155f850120f965f340b63f9320" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_disconnect_retry </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnect from the server, with potential retry. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. </dd></dl>

</div>
</div>
<a class="anchor" id="ga7e24e5c9127d84d127c6464bfa5e15d0"></a><!-- doxytag: member="playerc.h::playerc_client_get_devlist" ref="ga7e24e5c9127d84d127c6464bfa5e15d0" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_get_devlist </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the list of available device ids. </p>
<p>This function queries the server for the list of available devices, and write result to the devinfos list in the client object.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. Use <a class="el" href="group__playerc__utility.html#gabc6f998b5f95a7368a3e7577e8e91dc6" title="Retrieve the last error (as a descriptive string).">playerc_error_str()</a> to get a descriptive error message. </dd></dl>

</div>
</div>
<a class="anchor" id="gad6a4b3d0252d02fc04a25d7a00a083b4"></a><!-- doxytag: member="playerc.h::playerc_client_internal_peek" ref="gad6a4b3d0252d02fc04a25d7a00a083b4" args="(playerc_client_t *client, int timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_internal_peek </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test to see if there is pending data. </p>
<p>Don't send a request for data. This function is reliant on a call being made elsewhere to request data from the server.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>Timeout value (ms). Set timeout to 0 to check for currently queued data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns -1 on error, 0 or 1 otherwise. </dd></dl>

</div>
</div>
<a class="anchor" id="ga2647e1178b9de53db1f1578ff6bbf048"></a><!-- doxytag: member="playerc.h::playerc_client_peek" ref="ga2647e1178b9de53db1f1578ff6bbf048" args="(playerc_client_t *client, int timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_peek </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Wait for response from server (blocking). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>device</em>&nbsp;</td><td></td></tr>
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td></td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sequence</em>&nbsp;</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Will return data size for ack, -1 for nack and -2 for failureTest to see if there is pending data. Send a data request if one has not been sent already. A data request is necessary to provoke a response from the server.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>Timeout value (ms). Set timeout to 0 to check for currently queued data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns -1 on error, 0 or 1 otherwise. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4dde3a1fa0fb0288cbf39fce32ecb960"></a><!-- doxytag: member="playerc.h::playerc_client_read" ref="ga4dde3a1fa0fb0288cbf39fce32ecb960" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void* playerc_client_read </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read data from the server (blocking). </p>
<p>In PUSH mode this will read and process a single message. In PULL mode this will process a full batch of messages up to the sync from the server.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>PUSH mode: For data packets, will return the ID of the proxy that got the data; for synch packets, will return the ID of the client itself; on error, will return NULL. PULL mode: Will return NULL on error, the ID of the client on success. Will never return the ID of a proxy other than the client. </dd></dl>

</div>
</div>
<a class="anchor" id="gab2e422b4ce36d9bdbf27929100279210"></a><!-- doxytag: member="playerc.h::playerc_client_read_nonblock" ref="gab2e422b4ce36d9bdbf27929100279210" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_read_nonblock </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read and process a packet (nonblocking). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if no data recieved, 1 if data recieved and -1 on error </dd></dl>

</div>
</div>
<a class="anchor" id="gaa0d736d863f3def74f4764eaba62f6ab"></a><!-- doxytag: member="playerc.h::playerc_client_read_nonblock_withproxy" ref="gaa0d736d863f3def74f4764eaba62f6ab" args="(playerc_client_t *client, void **proxy)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_read_nonblock_withproxy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&nbsp;</td>
          <td class="paramname"> <em>proxy</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read and process a packet (nonblocking), fills in pointer to proxy that got data. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if no data recieved, 1 if data recieved and -1 on error </dd></dl>

</div>
</div>
<a class="anchor" id="ga1aa2ff621c82c99834ef9e1053d52943"></a><!-- doxytag: member="playerc.h::playerc_client_request" ref="ga1aa2ff621c82c99834ef9e1053d52943" args="(playerc_client_t *client, struct _playerc_device_t *device, uint8_t reqtype, const void *req_data, void **rep_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_request </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&nbsp;</td>
          <td class="paramname"> <em>reqtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>req_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&nbsp;</td>
          <td class="paramname"> <em>rep_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Issue a request to the server and await a reply (blocking). </p>
<p><b>For internal use only.</b></p>
<p>The rep_data pointer is filled with a pointer to the response data received. It is the callers responisbility to free this memory with the approriate player _free method.</p>
<p>If an error is returned then no data will have been stored in rep_data.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns -1 on error and -2 on NACK. </dd></dl>

</div>
</div>
<a class="anchor" id="gae15ccb3b14ce2e837cb50d1a2b4ca6ef"></a><!-- doxytag: member="playerc.h::playerc_client_requestdata" ref="gae15ccb3b14ce2e837cb50d1a2b4ca6ef" args="(playerc_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_requestdata </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Request a round of data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
  </table>
  </dd>
</dl>
<p>Request a round of data; only valid when in a request/reply (aka PULL) data delivery mode. But you don't need to call this function, because <a class="el" href="group__playerc__client.html#ga4dde3a1fa0fb0288cbf39fce32ecb960">playerc_client_read</a> will do it for you if the client is in a PULL mode.</p>
<p>Use <a class="el" href="group__playerc__client.html#gabb027414e8ef9726ac04040e955a96c2">playerc_client_datamode</a> to change modes. </p>

</div>
</div>
<a class="anchor" id="ga614460854dbe3336e87388d0912fe96e"></a><!-- doxytag: member="playerc.h::playerc_client_set_replace_rule" ref="ga614460854dbe3336e87388d0912fe96e" args="(playerc_client_t *client, int interf, int index, int type, int subtype, int replace)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_set_replace_rule </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>interf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>subtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>replace</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a replace rule for the client queue on the server. </p>
<p>If a rule with the same pattern already exists, it will be replaced with the new rule (i.e., its setting to replace will be updated).</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object.</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>interf</em>&nbsp;</td><td>Interface to set replace rule for (-1 for wildcard)</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>Index to set replace rule for (-1 for wildcard)</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Type to set replace rule for (-1 for wildcard), i.e. PLAYER_MSGTYPE_DATA</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td><a class="el" href="classMessage.html" title="Reference-counted message objects.">Message</a> subtype to set replace rule for (-1 for wildcard)</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>replace</em>&nbsp;</td><td>Should we replace these messages</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Returns 0 on success, non-zero otherwise. Use <a class="el" href="group__playerc__utility.html#gabc6f998b5f95a7368a3e7577e8e91dc6" title="Retrieve the last error (as a descriptive string).">playerc_error_str()</a> to get a descriptive error message. </dd></dl>

</div>
</div>
<a class="anchor" id="gaddf1663a4370b15be7941aa87ddfe16c"></a><!-- doxytag: member="playerc.h::playerc_client_set_request_timeout" ref="gaddf1663a4370b15be7941aa87ddfe16c" args="(playerc_client_t *client, uint32_t seconds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void playerc_client_set_request_timeout </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&nbsp;</td>
          <td class="paramname"> <em>seconds</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the timeout for client requests. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to client object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>seconds</em>&nbsp;</td><td>Seconds to wait for a reply. </td></tr>
  </table>
  </dd>
</dl>

<p>Referenced by <a class="el" href="classPlayerCc_1_1PlayerClient.html#ab1a28cc46355fc9c56813373a1c2bf89">PlayerCc::PlayerClient::SetRequestTimeout()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3025a79ece2a7c6608eab9de3f08c195"></a><!-- doxytag: member="playerc.h::playerc_client_set_retry_limit" ref="ga3025a79ece2a7c6608eab9de3f08c195" args="(playerc_client_t *client, int limit)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void playerc_client_set_retry_limit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>limit</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the connection retry limit. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to the client object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>limit</em>&nbsp;</td><td>The number of times to attempt to reconnect to the server. Give -1 for infinite retry. </td></tr>
  </table>
  </dd>
</dl>

<p>Referenced by <a class="el" href="classPlayerCc_1_1PlayerClient.html#ad355a259243d1ad7596366a0313244b0">PlayerCc::PlayerClient::SetRetryLimit()</a>.</p>

</div>
</div>
<a class="anchor" id="gaebdce291cd7c283d6f48943c265ec320"></a><!-- doxytag: member="playerc.h::playerc_client_set_retry_time" ref="gaebdce291cd7c283d6f48943c265ec320" args="(playerc_client_t *client, double time)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void playerc_client_set_retry_time </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>time</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the connection retry sleep time. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer to the client object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>The amount of time, in seconds, to sleep between reconnection attempts. </td></tr>
  </table>
  </dd>
</dl>

<p>Referenced by <a class="el" href="classPlayerCc_1_1PlayerClient.html#afa5bddb9335bd4445170b30c0f7d2b54">PlayerCc::PlayerClient::SetRetryTime()</a>.</p>

</div>
</div>
<a class="anchor" id="ga9d9f8873b10b10ec2991674d32d05155"></a><!-- doxytag: member="playerc.h::playerc_client_set_transport" ref="ga9d9f8873b10b10ec2991674d32d05155" args="(playerc_client_t *client, unsigned int transport)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT void playerc_client_set_transport </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>transport</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the transport type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>transport</em>&nbsp;</td><td>Either PLAYERC_TRANSPORT_UDP or PLAYERC_TRANSPORT_TCP </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga56b20c0d5aeb34f9174bcd05ffe635da"></a><!-- doxytag: member="playerc.h::playerc_client_subscribe" ref="ga56b20c0d5aeb34f9174bcd05ffe635da" args="(playerc_client_t *client, int code, int index, int access, char *drivername, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_subscribe </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>access</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>drivername</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Subscribe a device. </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="gab6901e9b9b3d48f558505e96375e7a8d"></a><!-- doxytag: member="playerc.h::playerc_client_unsubscribe" ref="gab6901e9b9b3d48f558505e96375e7a8d" args="(playerc_client_t *client, int code, int index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_unsubscribe </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unsubscribe a device. </p>
<p><b>For internal use only.</b></p>

</div>
</div>
<a class="anchor" id="ga9b7345ee85e793c9c011bf9b90254025"></a><!-- doxytag: member="playerc.h::playerc_client_write" ref="ga9b7345ee85e793c9c011bf9b90254025" args="(playerc_client_t *client, struct _playerc_device_t *device, uint8_t subtype, void *cmd, double *timestamp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PLAYERC_EXPORT int playerc_client_write </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__playerc__client__t.html">playerc_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="struct__playerc__device__t.html">_playerc_device_t</a> *&nbsp;</td>
          <td class="paramname"> <em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&nbsp;</td>
          <td class="paramname"> <em>subtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>timestamp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write data to the server. </p>
<p><b>For internal use only.</b></p>

</div>
</div>
</div>
<!-- render the modification time of the source file -->


<div class="timestamp">
<hr>

<table style="width:100%;">
<tr>
<td style="text-align:left;">
Last updated 12 September 2005 21:38:45
<!--
<td style="text-align:right;">
<a href="http://validator.w3.org/check/referer"><img style="vertical-align:middle;border:0;width:88px;height:31px"
          src="http://www.w3.org/Icons/valid-html401"
          alt="Valid HTML 4.01!"></a>

 <a href="http://jigsaw.w3.org/css-validator/">
  <img style="vertical-align:middle;border:0;width:88px;height:31px"
       src="http://jigsaw.w3.org/css-validator/images/vcss"
       alt="Valid CSS!">
 </a>
-->
</tr>
</table>
</div>


</tr>
</table>

</BODY>
</HTML>