Sophie

Sophie

distrib > Fedora > 13 > x86_64 > by-pkgid > ca44e7e21c4b6cd5e0c5fdfbf12b4de7 > files > 110

libnjb-devel-2.2.6-6.fc12.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>libnjb: /builddir/build/BUILD/libnjb-2.2.6/src/protocol.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_a231d544ee85f784af5e92462fb4d8ea.html">src</a>
  </div>
</div>
<div class="contents">
<h1>protocol.c File Reference</h1><code>#include &quot;config.h&quot;</code><br>
<code>#include &lt;unistd.h&gt;</code><br>
<code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;stdlib.h&gt;</code><br>
<code>#include &lt;fcntl.h&gt;</code><br>
<code>#include &lt;string.h&gt;</code><br>
<code>#include &lt;errno.h&gt;</code><br>
<code>#include &quot;<a class="el" href="libnjb_8h_source.html">libnjb.h</a>&quot;</code><br>
<code>#include &quot;protocol.h&quot;</code><br>
<code>#include &quot;byteorder.h&quot;</code><br>
<code>#include &quot;njb_error.h&quot;</code><br>
<code>#include &quot;usb_io.h&quot;</code><br>
<code>#include &quot;ioutil.h&quot;</code><br>
<code>#include &quot;defs.h&quot;</code><br>
<code>#include &quot;base.h&quot;</code><br>
<code>#include &quot;eax.h&quot;</code><br>
<code>#include &quot;songid.h&quot;</code><br>
<code>#include &quot;datafile.h&quot;</code><br>
<code>#include &quot;njbtime.h&quot;</code><br>
<code>#include &quot;playlist.h&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#892c9eb5d494fde6084ddb736f307a29">NJB_STATUS</a>(a, b)</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#41a4352e7fba316a9eb6262546e05e4a">njb_init_state</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#1d6bdb13a1de6c49b04a081502bcf9d4">njb_set_library_counter</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int64_t count)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#d4c55baa3faa179396f2f76ce9fbd5ca">njb_get_library_counter</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njblibctr_t *lcount)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#e959b6717b8bd6b3bcd61447e8ddda17">njb_ping</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#e5ea9fbb3859ec50540bcd9cf4a3f328">njb_verify_last_command</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#ded817a86b7cee20247ebae531626574">njb_capture</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, int which)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#b71c71bdf6131d176ad3572e72ef190b">njb_get_track_tag_header</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbttaghdr_t *tagh, int cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3609e13e4b3529219bf081b5fe45bed9"></a><!-- doxytag: member="protocol.c::njb_get_track_tag" ref="3609e13e4b3529219bf081b5fe45bed9" args="(njb_t *njb, njbttaghdr_t *tagh)" -->
<a class="el" href="structnjb__songid__struct.html">njb_songid_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_track_tag</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbttaghdr_t *tagh)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#fb3d4c4e2f9fe7de9786aa47bc92da12">njb_get_playlist_header</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbplhdr_t *plh, int cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e96bd29ac7ca0221d3978483c0393a64"></a><!-- doxytag: member="protocol.c::njb_get_playlist" ref="e96bd29ac7ca0221d3978483c0393a64" args="(njb_t *njb, njbplhdr_t *plh)" -->
<a class="el" href="structnjb__playlist__struct.html">njb_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbplhdr_t *plh)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#7f0a8d1560f23483fe722fb51f634fe8">njb_get_disk_usage</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int64_t *total, u_int64_t *free_bytes)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1c4d1b619e143a817df8699ffe625a1f"></a><!-- doxytag: member="protocol.c::njb_get_owner_string" ref="1c4d1b619e143a817df8699ffe625a1f" args="(njb_t *njb, owner_string name)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_owner_string</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, <a class="el" href="libnjb_8h.html#ed0d26175297ce40dc5e81f9248c44a5">owner_string</a> name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="657ce995c4b9fa5330705af71c2a1eef"></a><!-- doxytag: member="protocol.c::njb_set_owner_string" ref="657ce995c4b9fa5330705af71c2a1eef" args="(njb_t *njb, owner_string name)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_set_owner_string</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, <a class="el" href="libnjb_8h.html#ed0d26175297ce40dc5e81f9248c44a5">owner_string</a> name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#1bd23c272154f003bd55075b352be5fc">njb_get_datafile_header</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbdfhdr_t *dfh, int cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="45153920c77cdbd2ea34f017db117c9f"></a><!-- doxytag: member="protocol.c::njb_get_datafile_tag" ref="45153920c77cdbd2ea34f017db117c9f" args="(njb_t *njb, njbdfhdr_t *dfh)" -->
<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_datafile_tag</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbdfhdr_t *dfh)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">u_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#f1b5132b6c3f0c9f408a77cdc5e64f58">njb_receive_file_block</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t offset, u_int32_t bsize, void *bp)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="06c6da30c10cfd7073e923128f78f700"></a><!-- doxytag: member="protocol.c::njb_request_file" ref="06c6da30c10cfd7073e923128f78f700" args="(njb_t *njb, u_int32_t fileid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_request_file</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t fileid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="535fb967481cce0ab36736cf16425807"></a><!-- doxytag: member="protocol.c::njb_transfer_complete" ref="535fb967481cce0ab36736cf16425807" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_transfer_complete</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5642f1b72cc2bca1756a16e891e625ba"></a><!-- doxytag: member="protocol.c::njb_send_track_tag" ref="5642f1b72cc2bca1756a16e891e625ba" args="(njb_t *njb, njbttaghdr_t *tagh, void *tag)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_send_track_tag</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbttaghdr_t *tagh, void *tag)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="307cebb4f060584a789fec4251d46fc9"></a><!-- doxytag: member="protocol.c::njb_send_datafile_tag" ref="307cebb4f060584a789fec4251d46fc9" args="(njb_t *njb, njbdfhdr_t *dfh, void *tag)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_send_datafile_tag</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbdfhdr_t *dfh, void *tag)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98d4b0e19eb96fffd2483cf161175d46"></a><!-- doxytag: member="protocol.c::njb_send_file_block" ref="98d4b0e19eb96fffd2483cf161175d46" args="(njb_t *njb, void *data, u_int32_t blocksize)" -->
u_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_send_file_block</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, void *data, u_int32_t blocksize)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1e7c0dbb3313038d3fbba2601ec71083"></a><!-- doxytag: member="protocol.c::njb_stop_play" ref="1e7c0dbb3313038d3fbba2601ec71083" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_stop_play</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ef62ca7173935b2a757692c8e3671c09"></a><!-- doxytag: member="protocol.c::njb_get_eax_size" ref="ef62ca7173935b2a757692c8e3671c09" args="(njb_t *njb, u_int32_t *size)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_eax_size</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t *size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#fe8b51e10cf1a2a5d313a4c273133278">njb_read_eaxtypes</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structnjb__eax__struct.html">njb_eax_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#d9259496f4562d52937c0296d8a6812c">njb_get_nexteax</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="42a3928004c71e9c2ef1f3a7a6eaa7a9"></a><!-- doxytag: member="protocol.c::njb_get_time" ref="42a3928004c71e9c2ef1f3a7a6eaa7a9" args="(njb_t *njb)" -->
<a class="el" href="structnjb__time__struct.html">njb_time_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_get_time</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e0f2f087cf0d48c57243a45e55f989e"></a><!-- doxytag: member="protocol.c::njb_set_time" ref="7e0f2f087cf0d48c57243a45e55f989e" args="(njb_t *njb, njb_time_t *time)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_set_time</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, <a class="el" href="structnjb__time__struct.html">njb_time_t</a> *time)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3be9651166f9196520d1176bb410e28c"></a><!-- doxytag: member="protocol.c::njb_create_playlist" ref="3be9651166f9196520d1176bb410e28c" args="(njb_t *njb, char *name, u_int32_t *plid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_create_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, char *name, u_int32_t *plid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a820e84f075d20c2bf5f7ee0842e764c"></a><!-- doxytag: member="protocol.c::njb_delete_playlist" ref="a820e84f075d20c2bf5f7ee0842e764c" args="(njb_t *njb, u_int32_t plid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_delete_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t plid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="11b3f1e5f7377969b13fc9e2c62de51a"></a><!-- doxytag: member="protocol.c::njb_rename_playlist" ref="11b3f1e5f7377969b13fc9e2c62de51a" args="(njb_t *njb, u_int32_t plid, char *name)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_rename_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t plid, char *name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="291bc9536a7398c04698e05dbe5b3183"></a><!-- doxytag: member="protocol.c::njb_add_track_to_playlist" ref="291bc9536a7398c04698e05dbe5b3183" args="(njb_t *njb, u_int32_t plid, u_int32_t trid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_add_track_to_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t plid, u_int32_t trid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9df6b2a790fc605e438679fea5a0dbb7"></a><!-- doxytag: member="protocol.c::njb_add_multiple_tracks_to_playlist" ref="9df6b2a790fc605e438679fea5a0dbb7" args="(njb_t *njb, u_int32_t plid, u_int32_t *trids, u_int16_t ntracks)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_add_multiple_tracks_to_playlist</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t plid, u_int32_t *trids, u_int16_t ntracks)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74a7c26c79dc01f2c2d0df3e7fbaf03a"></a><!-- doxytag: member="protocol.c::njb_delete_track" ref="74a7c26c79dc01f2c2d0df3e7fbaf03a" args="(njb_t *njb, u_int32_t trackid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_delete_track</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t trackid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6217774df8d7882441876538a775e5c0"></a><!-- doxytag: member="protocol.c::njb_delete_datafile" ref="6217774df8d7882441876538a775e5c0" args="(njb_t *njb, u_int32_t fileid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_delete_datafile</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t fileid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2d1382cfd9ed878d24c0a3358306b9d"></a><!-- doxytag: member="protocol.c::njb_play_or_queue" ref="a2d1382cfd9ed878d24c0a3358306b9d" args="(njb_t *njb, u_int32_t trackid, int cmd)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_play_or_queue</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t trackid, int cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="385e3038c0bf270d0f1b58d000b817d7"></a><!-- doxytag: member="protocol.c::njb_elapsed_time" ref="385e3038c0bf270d0f1b58d000b817d7" args="(njb_t *njb, u_int16_t *elapsed, int *change)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_elapsed_time</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t *elapsed, int *change)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41859540c6580c0e7deff489dcc35318"></a><!-- doxytag: member="protocol.c::njb_replace_track_tag" ref="41859540c6580c0e7deff489dcc35318" args="(njb_t *njb, njbttaghdr_t *tagh, void *tag)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_replace_track_tag</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, njbttaghdr_t *tagh, void *tag)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1173ecd2403e2ac96e5ddaf7a89d43b5"></a><!-- doxytag: member="protocol.c::njb_adjust_sound" ref="1173ecd2403e2ac96e5ddaf7a89d43b5" args="(njb_t *njb, u_int8_t effect, int16_t value)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_adjust_sound</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int8_t effect, int16_t value)</td></tr>

<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol_8c.html#60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a></td></tr>

</table>
<hr><h2>Detailed Description</h2>
This file contains the major parts of the NJB1 (OaSIS) protocol for all jukebox functionality. <hr><h2>Define Documentation</h2>
<a class="anchor" name="892c9eb5d494fde6084ddb736f307a29"></a><!-- doxytag: member="protocol.c::NJB_STATUS" ref="892c9eb5d494fde6084ddb736f307a29" args="(a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NJB_STATUS          </td>
          <td>(</td>
          <td class="paramtype">a,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">b&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        <span class="keywordtype">char</span> *s = njb_status_string(b);\
        njb_error_add_string(a,subroutinename,s);\
        free (s); \
}
</pre></div>This returns the string representing an internal NJB1 error code. 
<p>Referenced by <a class="el" href="protocol_8c_source.html#l00708">njb_get_datafile_header()</a>, <a class="el" href="protocol_8c_source.html#l00596">njb_get_disk_usage()</a>, <a class="el" href="protocol_8c_source.html#l00241">njb_get_library_counter()</a>, <a class="el" href="protocol_8c_source.html#l00498">njb_get_playlist_header()</a>, <a class="el" href="protocol_8c_source.html#l00406">njb_get_track_tag_header()</a>, <a class="el" href="protocol_8c_source.html#l00285">njb_ping()</a>, <a class="el" href="protocol_8c_source.html#l01197">njb_read_eaxtypes()</a>, <a class="el" href="protocol_8c_source.html#l00812">njb_receive_file_block()</a>, and <a class="el" href="protocol_8c_source.html#l00341">njb_verify_last_command()</a>.</p>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="ded817a86b7cee20247ebae531626574"></a><!-- doxytag: member="protocol.c::njb_capture" ref="ded817a86b7cee20247ebae531626574" args="(njb_t *njb, int which)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_capture           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>which</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function captures the NJB1 device.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</a>, <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00223">NJB_Capture()</a>, and <a class="el" href="procedure_8c_source.html#l00266">NJB_Release()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1bd23c272154f003bd55075b352be5fc"></a><!-- doxytag: member="protocol.c::njb_get_datafile_header" ref="1bd23c272154f003bd55075b352be5fc" args="(njb_t *njb, njbdfhdr_t *dfh, int cmd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_get_datafile_header           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">njbdfhdr_t *&nbsp;</td>
          <td class="paramname"> <em>dfh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>cmd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieves a datafile header from the NJB1<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on OK, -1 on error, -2 means the last header has already been returned. </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00072">njb1_bytes_to_32bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7f0a8d1560f23483fe722fb51f634fe8"></a><!-- doxytag: member="protocol.c::njb_get_disk_usage" ref="7f0a8d1560f23483fe722fb51f634fe8" args="(njb_t *njb, u_int64_t *total, u_int64_t *free_bytes)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_get_disk_usage           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int64_t *&nbsp;</td>
          <td class="paramname"> <em>total</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int64_t *&nbsp;</td>
          <td class="paramname"> <em>free_bytes</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get disk usage for the NJB1<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on OK, -1 on failure, -2 means "try again" </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00027">njb1_bytes_to_64bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00657">NJB_Get_Disk_Usage()</a>, and <a class="el" href="procedure_8c_source.html#l01723">NJB_Send_File()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d4c55baa3faa179396f2f76ce9fbd5ca"></a><!-- doxytag: member="protocol.c::njb_get_library_counter" ref="d4c55baa3faa179396f2f76ce9fbd5ca" args="(njb_t *njb, njblibctr_t *lcount)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_get_library_counter           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">njblibctr_t *&nbsp;</td>
          <td class="paramname"> <em>lcount</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function gets the library counter from the device. The library counter is sent back and forth to the device to indicate if something in the library as changed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use.  is a pointer to the current library counter to get from the device. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="ioutil_8c_source.html#l00035">data_dump()</a>, <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00027">njb1_bytes_to_64bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00223">NJB_Capture()</a>, and <a class="el" href="procedure_8c_source.html#l00297">NJB_Handshake()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d9259496f4562d52937c0296d8a6812c"></a><!-- doxytag: member="protocol.c::njb_get_nexteax" ref="d9259496f4562d52937c0296d8a6812c" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnjb__eax__struct.html">njb_eax_t</a>* njb_get_nexteax           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This retrieves an EAX effect from the list of effects read in by the previous functions.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>a pointer to the NJB object to use </td></tr>
  </table>
</dl>

<p>References <a class="el" href="libnjb_8h_source.html#l00192">njb_struct::protocol_state</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l01952">NJB_Get_EAX_Type()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fb3d4c4e2f9fe7de9786aa47bc92da12"></a><!-- doxytag: member="protocol.c::njb_get_playlist_header" ref="fb3d4c4e2f9fe7de9786aa47bc92da12" args="(njb_t *njb, njbplhdr_t *plh, int cmd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_get_playlist_header           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">njbplhdr_t *&nbsp;</td>
          <td class="paramname"> <em>plh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>cmd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Gets a playlist header.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on OK, -1 on error, -2 means "retry", -3 means "not found" or "last playlist already retrieved". </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00072">njb1_bytes_to_32bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b71c71bdf6131d176ad3572e72ef190b"></a><!-- doxytag: member="protocol.c::njb_get_track_tag_header" ref="b71c71bdf6131d176ad3572e72ef190b" args="(njb_t *njb, njbttaghdr_t *tagh, int cmd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_get_track_tag_header           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">njbttaghdr_t *&nbsp;</td>
          <td class="paramname"> <em>tagh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>cmd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a track header from the NJB1.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on OK, -1 on error, -2 if the last header has been retrieved. </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00072">njb1_bytes_to_32bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

</div>
</div><p>
<a class="anchor" name="41a4352e7fba316a9eb6262546e05e4a"></a><!-- doxytag: member="protocol.c::njb_init_state" ref="41a4352e7fba316a9eb6262546e05e4a" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_init_state           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initializes the basic state of the njb-&gt;protocol_state for the NJB1-device.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="libnjb_8h_source.html#l00192">njb_struct::protocol_state</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00130">NJB_Open()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e959b6717b8bd6b3bcd61447e8ddda17"></a><!-- doxytag: member="protocol.c::njb_ping" ref="e959b6717b8bd6b3bcd61447e8ddda17" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_ping           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function pings the NJB1 device to see if it is up and running, and ready for action. This is done every now and then.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="ioutil_8c_source.html#l00035">data_dump()</a>, <a class="el" href="njb__error_8h_source.html#l00013">EO_RDSHORT</a>, <a class="el" href="njb__error_8h_source.html#l00012">EO_USBBLK</a>, <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, <a class="el" href="libnjb_8h_source.html#l00192">njb_struct::protocol_state</a>, <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00297">NJB_Handshake()</a>, and <a class="el" href="procedure_8c_source.html#l03131">NJB_Ping()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fe8b51e10cf1a2a5d313a4c273133278"></a><!-- doxytag: member="protocol.c::njb_read_eaxtypes" ref="fe8b51e10cf1a2a5d313a4c273133278" args="(njb_t *njb, u_int32_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void njb_read_eaxtypes           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This reads in the block with EAX types. It is a byte chunk which is then interpreted and the EAX effects are added to a list of effects which is then retrieved by calls to the <code><a class="el" href="protocol_8c.html#d9259496f4562d52937c0296d8a6812c">njb_get_nexteax()</a></code> function.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>a pointer to the NJB object to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the previously determined size of the EAX block </td></tr>
  </table>
</dl>

<p>References <a class="el" href="eax_8c_source.html#l00066">eax_unpack()</a>, <a class="el" href="njb__error_8h_source.html#l00014">EO_NOMEM</a>, <a class="el" href="njb__error_8h_source.html#l00013">EO_RDSHORT</a>, <a class="el" href="njb__error_8h_source.html#l00012">EO_USBBLK</a>, <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00112">from_32bit_to_njb1_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00072">njb1_bytes_to_32bit()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, <a class="el" href="libnjb_8h_source.html#l00192">njb_struct::protocol_state</a>, <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l01915">NJB_Reset_Get_EAX_Type()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f1b5132b6c3f0c9f408a77cdc5e64f58"></a><!-- doxytag: member="protocol.c::njb_receive_file_block" ref="f1b5132b6c3f0c9f408a77cdc5e64f58" args="(njb_t *njb, u_int32_t offset, u_int32_t bsize, void *bp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int32_t njb_receive_file_block           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t&nbsp;</td>
          <td class="paramname"> <em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t&nbsp;</td>
          <td class="paramname"> <em>bsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>bp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
offset is the offset into the file, starting at 0. bsize indicates the recieved buffer max size. bp points to the recieve buffer (atleast NJB_XFER_BLOCK_SIZE + NJB_XFER_BLOCK_HEADER_SIZE) lastsort indicates if last transfer was short (ended before requested number of bytes were recieved).<p>
If lastshort == 1, the last call to this function returned a a short read. In that case, a new setup command shall not be sent, the bus shall just keep retrieveing buffer contents from the bulk pipe. 
<p>References <a class="el" href="njb__error_8h_source.html#l00022">EO_TOOBIG</a>, <a class="el" href="njb__error_8h_source.html#l00012">EO_USBBLK</a>, <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00112">from_32bit_to_njb1_bytes()</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00980">NJB_Get_Track_fd()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1d6bdb13a1de6c49b04a081502bcf9d4"></a><!-- doxytag: member="protocol.c::njb_set_library_counter" ref="1d6bdb13a1de6c49b04a081502bcf9d4" args="(njb_t *njb, u_int64_t count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_set_library_counter           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int64_t&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function sets the library counter on the device. The library counter is sent back and forth to the device to indicate if something in the library has changed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>is the current library counter to set on the device. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="byteorder_8c_source.html#l00052">from_64bit_to_njb1_bytes()</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00297">NJB_Handshake()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e5ea9fbb3859ec50540bcd9cf4a3f328"></a><!-- doxytag: member="protocol.c::njb_verify_last_command" ref="e5ea9fbb3859ec50540bcd9cf4a3f328" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb_verify_last_command           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function verifies if the last command was successful or not.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>is a pointer to the jukebox object to use. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00011">EO_USBCTL</a>, <a class="el" href="protocol_8c_source.html#l00084">NJB_STATUS</a>, and <a class="el" href="usb__io_8c_source.html#l00123">usb_setup()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l00980">NJB_Get_Track_fd()</a>, <a class="el" href="procedure_8c_source.html#l00297">NJB_Handshake()</a>, <a class="el" href="procedure_8c_source.html#l02503">NJB_Play_Track()</a>, <a class="el" href="procedure_8c_source.html#l02551">NJB_Queue_Track()</a>, <a class="el" href="procedure_8c_source.html#l00746">NJB_Set_Owner_String()</a>, <a class="el" href="procedure_8c_source.html#l02113">NJB_Set_Time()</a>, and <a class="el" href="procedure_8c_source.html#l02206">NJB_Update_Playlist()</a>.</p>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="60db410c9e82d9e61b1bf0be607922ed"></a><!-- doxytag: member="protocol.c::__sub_depth" ref="60db410c9e82d9e61b1bf0be607922ed" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="usb__io_8c.html#60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The current subroutine depth for all of libnjb (global) 
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 26 17:17:29 2009 for libnjb by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>