Sophie

Sophie

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

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>player<br/>
<small>
[<a class="el" href="group__interfaces.html">Interface specifications</a>]</small>
</h1>  </div>
</div>
<div class="contents">

<p>Player: the meta-device.  
<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="ga8e8acaa554856ff933588c78b40399ee"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_DEVLIST" ref="ga8e8acaa554856ff933588c78b40399ee" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga8e8acaa554856ff933588c78b40399ee">PLAYER_PLAYER_REQ_DEVLIST</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga46d79c68c8df9cbd14077e32ef01df9d"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_DRIVERINFO" ref="ga46d79c68c8df9cbd14077e32ef01df9d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga46d79c68c8df9cbd14077e32ef01df9d">PLAYER_PLAYER_REQ_DRIVERINFO</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get driver info. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad1d7a7cc87b5b00b56f62c0a9b8e513c"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_DEV" ref="gad1d7a7cc87b5b00b56f62c0a9b8e513c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gad1d7a7cc87b5b00b56f62c0a9b8e513c">PLAYER_PLAYER_REQ_DEV</a>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: (un)subscribe to device. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga0cdf130802a6880322e42e029ec2a384">PLAYER_PLAYER_REQ_DATA</a>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configuration request: Get data.  <a href="#ga0cdf130802a6880322e42e029ec2a384"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5cfbb382044a2ea01a4442f558e867f3"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_DATAMODE" ref="ga5cfbb382044a2ea01a4442f558e867f3" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga5cfbb382044a2ea01a4442f558e867f3">PLAYER_PLAYER_REQ_DATAMODE</a>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf99c347a5ef858493cf2188b58caa9c0"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_AUTH" ref="gaf99c347a5ef858493cf2188b58caa9c0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gaf99c347a5ef858493cf2188b58caa9c0">PLAYER_PLAYER_REQ_AUTH</a>&nbsp;&nbsp;&nbsp;7</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga663462d2d807e728fa4dd09290ba6df2"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_NAMESERVICE" ref="ga663462d2d807e728fa4dd09290ba6df2" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga663462d2d807e728fa4dd09290ba6df2">PLAYER_PLAYER_REQ_NAMESERVICE</a>&nbsp;&nbsp;&nbsp;8</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga20087a9a17c61c13aeda75a40ef6760f"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_REQ_ADD_REPLACE_RULE" ref="ga20087a9a17c61c13aeda75a40ef6760f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga20087a9a17c61c13aeda75a40ef6760f">PLAYER_PLAYER_REQ_ADD_REPLACE_RULE</a>&nbsp;&nbsp;&nbsp;10</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4333aa52180adfc32b6b55b5fb1be561"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_SYNCH_OK" ref="ga4333aa52180adfc32b6b55b5fb1be561" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga4333aa52180adfc32b6b55b5fb1be561">PLAYER_PLAYER_SYNCH_OK</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga98d18b305826e4c7b86cf2eb1c60a4d0"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_SYNCH_OVERFLOW" ref="ga98d18b305826e4c7b86cf2eb1c60a4d0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga98d18b305826e4c7b86cf2eb1c60a4d0">PLAYER_PLAYER_SYNCH_OVERFLOW</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga53dbb758d337a2b6db5fe57dbdba0ea0"></a><!-- doxytag: member="interface_player::PLAYER_OPEN_MODE" ref="ga53dbb758d337a2b6db5fe57dbdba0ea0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga53dbb758d337a2b6db5fe57dbdba0ea0">PLAYER_OPEN_MODE</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classDevice.html" title="Encapsulates a device (i.e., a driver bound to an interface).">Device</a> access mode: open. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef871c2315ff593a408e2fb2e496299e"></a><!-- doxytag: member="interface_player::PLAYER_CLOSE_MODE" ref="gaef871c2315ff593a408e2fb2e496299e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gaef871c2315ff593a408e2fb2e496299e">PLAYER_CLOSE_MODE</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classDevice.html" title="Encapsulates a device (i.e., a driver bound to an interface).">Device</a> access mode: close. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4081785d3f99061bf6bf67fb761dae71"></a><!-- doxytag: member="interface_player::PLAYER_ERROR_MODE" ref="ga4081785d3f99061bf6bf67fb761dae71" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga4081785d3f99061bf6bf67fb761dae71">PLAYER_ERROR_MODE</a>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classDevice.html" title="Encapsulates a device (i.e., a driver bound to an interface).">Device</a> access mode: error. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga873facd47a9efaa244a411efedb659c9">PLAYER_DATAMODE_PUSH</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data delivery mode: Send data from all subscribed devices all the time (i.e.  <a href="#ga873facd47a9efaa244a411efedb659c9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga32e47dfa038a268985593fc0bb9cd19b">PLAYER_DATAMODE_PULL</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data delivery mode: Only on request, send data from all subscribed devices.  <a href="#ga32e47dfa038a268985593fc0bb9cd19b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gac4ff584fedc14518ca06ce0146502b40">PLAYER_PLAYER_MSG_REPLACE_RULE_ACCEPT</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A replace rule can either accept, replace or ignore a message.  <a href="#gac4ff584fedc14518ca06ce0146502b40"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae7f4ff291bdf55893d6b6a1bd65b363f"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_MSG_REPLACE_RULE_REPLACE" ref="gae7f4ff291bdf55893d6b6a1bd65b363f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gae7f4ff291bdf55893d6b6a1bd65b363f">PLAYER_PLAYER_MSG_REPLACE_RULE_REPLACE</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13ced1500f1b8de7aa02e1ac412ea34f"></a><!-- doxytag: member="interface_player::PLAYER_PLAYER_MSG_REPLACE_RULE_IGNORE" ref="ga13ced1500f1b8de7aa02e1ac412ea34f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga13ced1500f1b8de7aa02e1ac412ea34f">PLAYER_PLAYER_MSG_REPLACE_RULE_IGNORE</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply subtype: get device list. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__device__devlist.html">player_device_devlist</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga7c0f61fb1b9953e4b784fc8dce2436bc">player_device_devlist_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply: Get the list of available devices.  <a href="#ga7c0f61fb1b9953e4b784fc8dce2436bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__device__driverinfo.html">player_device_driverinfo</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gabbac946eba909fda05946d32eaedf640">player_device_driverinfo_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply: Get the driver name for a particular device.  <a href="#gabbac946eba909fda05946d32eaedf640"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structplayer__device__req.html">player_device_req</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#gaf04eb342ecc3df1166dd364f7c3f4bf0">player_device_req_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request/reply: (un)subscribe to a device.  <a href="#gaf04eb342ecc3df1166dd364f7c3f4bf0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__device__datamode__req.html">player_device_datamode_req</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga5de3083c3e53553c00ccc2787308229f">player_device_datamode_req_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configuration request: Change data delivery mode.  <a href="#ga5de3083c3e53553c00ccc2787308229f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__device__auth__req.html">player_device_auth_req</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga606c5d19cc8ce04c8652e9bd8c8540b7">player_device_auth_req_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configuration request: Authentication.  <a href="#ga606c5d19cc8ce04c8652e9bd8c8540b7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__device__nameservice__req.html">player_device_nameservice_req</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga5c7f179a1fedddd5d2f88736d808601e">player_device_nameservice_req_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Nameservice request.  <a href="#ga5c7f179a1fedddd5d2f88736d808601e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structplayer__add__replace__rule__req.html">player_add_replace_rule_req</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interface__player.html#ga1466357d24d95e360e4308a8fdea1699">player_add_replace_rule_req_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configuration request: Add client queue replace rule.  <a href="#ga1466357d24d95e360e4308a8fdea1699"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Player: the meta-device. </p>
<p>The <code>player</code> device represents the server itself, and is used in configuring the behavior of the server. There is only one such device (with index 0) and it is always open.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>Determine what, if any, data delivery modes and requests are needed.</dd></dl>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga32e47dfa038a268985593fc0bb9cd19b"></a><!-- doxytag: member="player_interfaces.h::PLAYER_DATAMODE_PULL" ref="ga32e47dfa038a268985593fc0bb9cd19b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYER_DATAMODE_PULL&nbsp;&nbsp;&nbsp;2</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Data delivery mode: Only on request, send data from all subscribed devices. </p>
<p>A PLAYER_MSGTYPE_SYNCH packet follows each set of data. Request should be made automatically by client libraries when they begin reading. </p>

</div>
</div>
<a class="anchor" id="ga873facd47a9efaa244a411efedb659c9"></a><!-- doxytag: member="player_interfaces.h::PLAYER_DATAMODE_PUSH" ref="ga873facd47a9efaa244a411efedb659c9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYER_DATAMODE_PUSH&nbsp;&nbsp;&nbsp;1</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Data delivery mode: Send data from all subscribed devices all the time (i.e. </p>
<p>when it's ready on the server). </p>

</div>
</div>
<a class="anchor" id="gac4ff584fedc14518ca06ce0146502b40"></a><!-- doxytag: member="player_interfaces.h::PLAYER_PLAYER_MSG_REPLACE_RULE_ACCEPT" ref="gac4ff584fedc14518ca06ce0146502b40" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYER_PLAYER_MSG_REPLACE_RULE_ACCEPT&nbsp;&nbsp;&nbsp;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A replace rule can either accept, replace or ignore a message. </p>

</div>
</div>
<a class="anchor" id="ga0cdf130802a6880322e42e029ec2a384"></a><!-- doxytag: member="player_interfaces.h::PLAYER_PLAYER_REQ_DATA" ref="ga0cdf130802a6880322e42e029ec2a384" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYER_PLAYER_REQ_DATA&nbsp;&nbsp;&nbsp;4</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Configuration request: Get data. </p>
<p>When the server is in a PLAYER_DATAMODE_PULL data delivery mode, the client can request a single round of data by sending a zero-argument request with type code <code>PLAYER_PLAYER_REQ_DATA</code>. The response will be a zero-length acknowledgement. </p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga1466357d24d95e360e4308a8fdea1699"></a><!-- doxytag: member="player_interfaces.h::player_add_replace_rule_req_t" ref="ga1466357d24d95e360e4308a8fdea1699" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__add__replace__rule__req.html">player_add_replace_rule_req</a>  <a class="el" href="structplayer__add__replace__rule__req.html">player_add_replace_rule_req_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Configuration request: Add client queue replace rule. </p>
<p>Allows the client to add a replace rule to their server queue. Replace rules define which messages will be replaced when new data arrives. If you are not updating frequently from ther server then the use of replace rules for data packets will stop any queue overflow messages</p>
<p>Each field in the request type corresponds to the equivalent field in the message header use -1 for a dont care value. </p>

</div>
</div>
<a class="anchor" id="ga606c5d19cc8ce04c8652e9bd8c8540b7"></a><!-- doxytag: member="player_interfaces.h::player_device_auth_req_t" ref="ga606c5d19cc8ce04c8652e9bd8c8540b7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__auth__req.html">player_device_auth_req</a>  <a class="el" href="structplayer__device__auth__req.html">player_device_auth_req_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Configuration request: Authentication. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>Add support for this mechanism to libplayertcp. Right now, it's disabled.</dd></dl>
<p>If server authentication has been enabled (by providing '-key &lt;key&gt;' on the command-line); then each client must authenticate itself before otherwise interacting with the server. To authenticate, send a request with this format.</p>
<p>If the key matches the server's key then the client is authenticated, the server will reply with a zero-length acknowledgement, and the client can continue with other operations. If the key does not match, or if the client attempts any other server interactions before authenticating, then the connection will be closed immediately. It is only necessary to authenticate each client once.</p>
<p>Note that this support for authentication is <b>NOT</b> a security mechanism. The keys are always in plain text, both in memory and when transmitted over the network; further, since the key is given on the command-line, there is a very good chance that you can find it in plain text in the process table (in Linux try 'ps -ax | grep player'). Thus you should not use an important password as your key, nor should you rely on Player authentication to prevent bad guys from driving your robots (use a firewall instead). Rather, authentication was introduced into Player to prevent accidentally connecting one's client program to someone else's robot. This kind of accident occurs primarily when Stage is running in a multi-user environment. In this case it is very likely that there is a Player server listening on port 6665, and clients will generally connect to that port by default, unless a specific option is given.</p>
<p>This mechanism was never really used, and may be removed. </p>

</div>
</div>
<a class="anchor" id="ga5de3083c3e53553c00ccc2787308229f"></a><!-- doxytag: member="player_interfaces.h::player_device_datamode_req_t" ref="ga5de3083c3e53553c00ccc2787308229f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__datamode__req.html">player_device_datamode_req</a>  <a class="el" href="structplayer__device__datamode__req.html">player_device_datamode_req_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Configuration request: Change data delivery mode. </p>
<p>The Player server supports two data modes, described above. By default, the server operates in <code>PLAYER_DATAMODE_PUSH</code> mode. To switch to a different mode send a request with the format given below. The server's reply will be a zero-length acknowledgement. </p>

</div>
</div>
<a class="anchor" id="ga7c0f61fb1b9953e4b784fc8dce2436bc"></a><!-- doxytag: member="player_interfaces.h::player_device_devlist_t" ref="ga7c0f61fb1b9953e4b784fc8dce2436bc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__devlist.html">player_device_devlist</a>  <a class="el" href="structplayer__device__devlist.html">player_device_devlist_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Request/reply: Get the list of available devices. </p>
<p>It's useful for applications such as viewer programs and test suites that tailor behave differently depending on which devices are available. To request the list, send a null <a class="el" href="group__interface__player.html#ga8e8acaa554856ff933588c78b40399ee">PLAYER_PLAYER_REQ_DEVLIST</a>. </p>

</div>
</div>
<a class="anchor" id="gabbac946eba909fda05946d32eaedf640"></a><!-- doxytag: member="player_interfaces.h::player_device_driverinfo_t" ref="gabbac946eba909fda05946d32eaedf640" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__driverinfo.html">player_device_driverinfo</a>  <a class="el" href="structplayer__device__driverinfo.html">player_device_driverinfo_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Request/reply: Get the driver name for a particular device. </p>
<p>To get a name, send a <a class="el" href="group__interface__player.html#ga46d79c68c8df9cbd14077e32ef01df9d">PLAYER_PLAYER_REQ_DRIVERINFO</a> request that specifies the address of the desired device in the addr field. Set driver_name_count to 0 and leave driver_name empty. The response will contain the driver name. </p>

</div>
</div>
<a class="anchor" id="ga5c7f179a1fedddd5d2f88736d808601e"></a><!-- doxytag: member="player_interfaces.h::player_device_nameservice_req_t" ref="ga5c7f179a1fedddd5d2f88736d808601e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__nameservice__req.html">player_device_nameservice_req</a>  <a class="el" href="structplayer__device__nameservice__req.html">player_device_nameservice_req_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Nameservice request. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>Update this structure and add support for it to libplayertcp. Right now it's disabled. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf04eb342ecc3df1166dd364f7c3f4bf0"></a><!-- doxytag: member="player_interfaces.h::player_device_req_t" ref="gaf04eb342ecc3df1166dd364f7c3f4bf0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structplayer__device__req.html">player_device_req</a>  <a class="el" href="structplayer__device__req.html">player_device_req_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Request/reply: (un)subscribe to a device. </p>
<p>This is the most important request! Before interacting with a device, the client must request appropriate access. Valid access modes are:</p>
<ul>
<li><a class="el" href="group__interface__player.html#ga53dbb758d337a2b6db5fe57dbdba0ea0">PLAYER_OPEN_MODE</a> : subscribe to the device. You will receive any data published by the device and you may send it commands and/or requests.</li>
<li><a class="el" href="group__interface__player.html#gaef871c2315ff593a408e2fb2e496299e">PLAYER_CLOSE_MODE</a> : unsubscribe from the device.</li>
<li><a class="el" href="group__interface__player.html#ga4081785d3f99061bf6bf67fb761dae71">PLAYER_ERROR_MODE</a> : the requested access was not granted (only appears in responses)</li>
</ul>
<p>To request access, send a <a class="el" href="group__interface__player.html#gad1d7a7cc87b5b00b56f62c0a9b8e513c">PLAYER_PLAYER_REQ_DEV</a> request that specifies the desired device address in the addr field and the desired access mode in access. Set driver_name_count to 0 and leave driver_name empty. The response will indicate the granted access in the access field and the name of the underyling driver in the driver_name field. Note that the granted access may not be the same as the requested access (e.g., if initialization of the driver failed). </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>