Sophie

Sophie

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

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="headertitle">
<h1>libplayersd</h1>  </div>
</div>
<div class="contents">

<p>Player service discovery library.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><p><a class="anchor" id="amgrpd41d8cd98f00b204e9800998ecf8427e"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf1e594af06d4528d1e4ec5129d7b2369"></a><!-- doxytag: member="libplayersd::PLAYER_SD_SERVICENAME" ref="gaf1e594af06d4528d1e4ec5129d7b2369" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gaf1e594af06d4528d1e4ec5129d7b2369">PLAYER_SD_SERVICENAME</a>&nbsp;&nbsp;&nbsp;&quot;_player21._tcp&quot;</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A device, represented by its name and address. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8194d7579221bdafd7b73412ed223296"></a><!-- doxytag: member="libplayersd::PLAYER_SD_DEVICE_TXTNAME" ref="ga8194d7579221bdafd7b73412ed223296" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga8194d7579221bdafd7b73412ed223296">PLAYER_SD_DEVICE_TXTNAME</a>&nbsp;&nbsp;&nbsp;&quot;device&quot;</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A device, represented by its name and address. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9c64d8ba807bb4245c0248ba042fa508"></a><!-- doxytag: member="libplayersd::PLAYER_SD_NAME_MAXLEN" ref="ga9c64d8ba807bb4245c0248ba042fa508" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga9c64d8ba807bb4245c0248ba042fa508">PLAYER_SD_NAME_MAXLEN</a>&nbsp;&nbsp;&nbsp;256</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A device, represented by its name and address. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad95db6674f6fe83448b17f4b8810b6b1"></a><!-- doxytag: member="libplayersd::PLAYER_SD_TXT_MAXLEN" ref="gad95db6674f6fe83448b17f4b8810b6b1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gad95db6674f6fe83448b17f4b8810b6b1">PLAYER_SD_TXT_MAXLEN</a>&nbsp;&nbsp;&nbsp;256</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A device, represented by its name and address. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga666c0b366913fa0eb87d8fe943173620"></a><!-- doxytag: member="libplayersd::player_sd_dev_t" ref="ga666c0b366913fa0eb87d8fe943173620" args="" -->
typedef struct <a class="el" href="structplayer__sd__dev.html">player_sd_dev</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga666c0b366913fa0eb87d8fe943173620">player_sd_dev_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A device, represented by its name and address. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga31f0007b85d04a749069ee6494be8ae5"></a><!-- doxytag: member="libplayersd::player_sd_t" ref="ga31f0007b85d04a749069ee6494be8ae5" args="" -->
typedef struct <a class="el" href="structplayer__sd.html">player_sd</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga31f0007b85d04a749069ee6494be8ae5">player_sd_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Service discovery object. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gae9fbb34f6d6ffaa3939d3f50e822ef61">player_sd_browse_callback_fn_t</a> )(<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, <a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *dev)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prototype for a callback function that can be invoked when devices are added or removed.  <a href="#gae9fbb34f6d6ffaa3939d3f50e822ef61"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga7dcfc04e91b995d9e831a06f6883c97f">player_sd_init</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize service discovery, passing back a pointer that will be passed into all future calls.  <a href="#ga7dcfc04e91b995d9e831a06f6883c97f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1e806097736fdc1073e85d8990dba982"></a><!-- doxytag: member="libplayersd::player_sd_fini" ref="ga1e806097736fdc1073e85d8990dba982" args="(player_sd_t *sd)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga1e806097736fdc1073e85d8990dba982">player_sd_fini</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finalize service discovery, freeing associated resources. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga52b37990e82edeec68a425a22b80c1c0"></a><!-- doxytag: member="libplayersd::player_sd_lock" ref="ga52b37990e82edeec68a425a22b80c1c0" args="(player_sd_t *sd)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga52b37990e82edeec68a425a22b80c1c0">player_sd_lock</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock access to playersd structures, such as the local device cache. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e1f4631e733c609ca47d63488cdace7"></a><!-- doxytag: member="libplayersd::player_sd_unlock" ref="ga4e1f4631e733c609ca47d63488cdace7" args="(player_sd_t *sd)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga4e1f4631e733c609ca47d63488cdace7">player_sd_unlock</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock access to playersd structures, such as the local device cache. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gadacf4e2e00de739daf48e48f01b45bb9">player_sd_register</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, const char *name, <a class="el" href="structplayer__devaddr.html">player_devaddr_t</a> addr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register the named device.  <a href="#gadacf4e2e00de739daf48e48f01b45bb9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga1bafb01f77a70d6d6865dfbe260a3a9c">player_sd_unregister</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, const char *name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unregister (terminate) the named device.  <a href="#ga1bafb01f77a70d6d6865dfbe260a3a9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gaf0159fe328bd5fa04591c4801bcee468">player_sd_browse</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, double timeout, int keepalive, <a class="el" href="group__libplayersd.html#gae9fbb34f6d6ffaa3939d3f50e822ef61">player_sd_browse_callback_fn_t</a> cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Browse for player devices.  <a href="#gaf0159fe328bd5fa04591c4801bcee468"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gaf114899e1ec83b62e2d3a940905eb82a">player_sd_update</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, double timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for new device updates, waiting for timeout s.  <a href="#gaf114899e1ec83b62e2d3a940905eb82a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac9e13041eacfd5615bf3e0a1cebe7e79"></a><!-- doxytag: member="libplayersd::player_sd_browse_stop" ref="gac9e13041eacfd5615bf3e0a1cebe7e79" args="(player_sd_t *sd)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gac9e13041eacfd5615bf3e0a1cebe7e79">player_sd_browse_stop</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop browsing. Returns 0 on success, non-zero on error. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#gae3db57f8fbbc595fcdf43bfda6f7e26d">player_sd_get_device</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, const char *name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a device by name.  <a href="#gae3db57f8fbbc595fcdf43bfda6f7e26d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga429b3e87da0c1db34f268cb379431ade">player_sd_find_devices</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, <a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *result, size_t result_len, const char *name, const char *hostname, int robot, int interf, int index)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a device in the local cache that matches the given criteria.  <a href="#ga429b3e87da0c1db34f268cb379431ade"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga814176b1114ebba2d63aef25ba953aa8">_player_sd_add_device</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, const char *name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a device to the local cache.  <a href="#ga814176b1114ebba2d63aef25ba953aa8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4f3d9214a3dc863c1c4aa84e6f37923f"></a><!-- doxytag: member="libplayersd::player_sd_printcache" ref="ga4f3d9214a3dc863c1c4aa84e6f37923f" args="(player_sd_t *sd)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayersd.html#ga4f3d9214a3dc863c1c4aa84e6f37923f">player_sd_printcache</a> (<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print the contents of the local device cache to the console. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Player service discovery library. </p>
<p>This library provides service discovery capabilities for Player devices. This library is currently in an alpha state, and is not ready for regular use. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="gae9fbb34f6d6ffaa3939d3f50e822ef61"></a><!-- doxytag: member="playersd.h::player_sd_browse_callback_fn_t" ref="gae9fbb34f6d6ffaa3939d3f50e822ef61" args=")(player_sd_t *sd, player_sd_dev_t *dev)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="group__libplayersd.html#gae9fbb34f6d6ffaa3939d3f50e822ef61">player_sd_browse_callback_fn_t</a>)(<a class="el" href="structplayer__sd.html">player_sd_t</a> *sd, <a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *dev)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Prototype for a callback function that can be invoked when devices are added or removed. </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga814176b1114ebba2d63aef25ba953aa8"></a><!-- doxytag: member="playersd.h::_player_sd_add_device" ref="ga814176b1114ebba2d63aef25ba953aa8" args="(player_sd_t *sd, const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a>* _player_sd_add_device </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</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 to the local cache. </p>
<p>The user should not call this function. It will be invoked by the playersd implementation. </p>

</div>
</div>
<a class="anchor" id="gaf0159fe328bd5fa04591c4801bcee468"></a><!-- doxytag: member="playersd.h::player_sd_browse" ref="gaf0159fe328bd5fa04591c4801bcee468" args="(player_sd_t *sd, double timeout, int keepalive, player_sd_browse_callback_fn_t cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int player_sd_browse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>timeout</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>keepalive</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__libplayersd.html#gae9fbb34f6d6ffaa3939d3f50e822ef61">player_sd_browse_callback_fn_t</a>&nbsp;</td>
          <td class="paramname"> <em>cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Browse for player devices. </p>
<p>Browses for timeout s, accruing the results into the sd object. If keepalive is non-zero, then the browsing session is left open and can be updated by future calls to <a class="el" href="group__libplayersd.html#gaf114899e1ec83b62e2d3a940905eb82a" title="Check for new device updates, waiting for timeout s.">player_sd_update()</a>. Otherwise, the browsing session is closed before returning. If cb is non-NULL, then it is registered and invoked whenever new device notifications are received (call player_sd_update to give this a chance to happen).</p>
<p>NOTE: Because device hostnames are resolved as they are discovered, this call may block for an unpredictable amount of time.</p>
<p>Returns 0 on success, non-zero on error. </p>

</div>
</div>
<a class="anchor" id="ga429b3e87da0c1db34f268cb379431ade"></a><!-- doxytag: member="playersd.h::player_sd_find_devices" ref="ga429b3e87da0c1db34f268cb379431ade" args="(player_sd_t *sd, player_sd_dev_t *result, size_t result_len, const char *name, const char *hostname, int robot, int interf, int index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int player_sd_find_devices </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a> *&nbsp;</td>
          <td class="paramname"> <em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>result_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>hostname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>robot</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><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Find a device in the local cache that matches the given criteria. </p>
<ul>
<li>sd: a player_sd_t* returned by <a class="el" href="group__libplayersd.html#ga7dcfc04e91b995d9e831a06f6883c97f" title="Initialize service discovery, passing back a pointer that will be passed into all future calls...">player_sd_init()</a></li>
<li>result: a caller-supplied array to store the matching device(s) in</li>
<li>result_len: the length of the result array</li>
<li>name: the Zeroconf name of the device; NULL for don't care</li>
<li>hostname: the hostname where the device resides; NULL for don't care</li>
<li>robot: the 'robot' field of the Player address; -1 for don't care</li>
<li>interf: the 'interf' field of the Player address; -1 for don't care</li>
<li>index: the 'index' field of the Player address; -1 for don't care</li>
</ul>
<p>The first result_len devices in the local cache that match the criteria are copied into the result array.</p>
<p>Returns: the number of devices copied into result. </p>

</div>
</div>
<a class="anchor" id="gae3db57f8fbbc595fcdf43bfda6f7e26d"></a><!-- doxytag: member="playersd.h::player_sd_get_device" ref="gae3db57f8fbbc595fcdf43bfda6f7e26d" args="(player_sd_t *sd, const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structplayer__sd__dev.html">player_sd_dev_t</a>* player_sd_get_device </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Look up a device by name. </p>
<p>This functions only consults the local cache of registered devices, which was filled by <a class="el" href="group__libplayersd.html#gaf0159fe328bd5fa04591c4801bcee468" title="Browse for player devices.">player_sd_browse()</a>. </p>

</div>
</div>
<a class="anchor" id="ga7dcfc04e91b995d9e831a06f6883c97f"></a><!-- doxytag: member="playersd.h::player_sd_init" ref="ga7dcfc04e91b995d9e831a06f6883c97f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structplayer__sd.html">player_sd_t</a>* player_sd_init </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialize service discovery, passing back a pointer that will be passed into all future calls. </p>
<p>Returns NULL on failure. </p>

</div>
</div>
<a class="anchor" id="gadacf4e2e00de739daf48e48f01b45bb9"></a><!-- doxytag: member="playersd.h::player_sd_register" ref="gadacf4e2e00de739daf48e48f01b45bb9" args="(player_sd_t *sd, const char *name, player_devaddr_t addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int player_sd_register </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structplayer__devaddr.html">player_devaddr_t</a>&nbsp;</td>
          <td class="paramname"> <em>addr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Register the named device. </p>
<p>Returns 0 on success, non-zero on error. Name may be automatically changed in case of conflict. </p>

</div>
</div>
<a class="anchor" id="ga1bafb01f77a70d6d6865dfbe260a3a9c"></a><!-- doxytag: member="playersd.h::player_sd_unregister" ref="ga1bafb01f77a70d6d6865dfbe260a3a9c" args="(player_sd_t *sd, const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int player_sd_unregister </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unregister (terminate) the named device. </p>
<p>Returns 0 on success, non-zero on error. </p>

</div>
</div>
<a class="anchor" id="gaf114899e1ec83b62e2d3a940905eb82a"></a><!-- doxytag: member="playersd.h::player_sd_update" ref="gaf114899e1ec83b62e2d3a940905eb82a" args="(player_sd_t *sd, double timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int player_sd_update </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structplayer__sd.html">player_sd_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&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>Check for new device updates, waiting for timeout s. </p>
<p>Contents of sd are updated, and if a callback was passed to player_sd_browse, then this function is also called for each discovered device. Only makes sense to call this function after a call to player_sd_browse.</p>
<p>NOTE: Because device hostnames are resolved as they are discovered, this call may block for an unpredictable amount of time.</p>
<p>Returns 0 on success, non-zero on error. </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>