Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > ca44e7e21c4b6cd5e0c5fdfbf12b4de7 > files > 108

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/protocol3.h 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>protocol3.h File Reference</h1><code>#include &quot;<a class="el" href="libnjb_8h_source.html">libnjb.h</a>&quot;</code><br>

<p>
<a href="protocol3_8h_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_state_t</b></td></tr>

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f9540315fa216e0ba502f77bae06b05"></a><!-- doxytag: member="protocol3.h::NJB3_SHORTREAD_BUFSIZE" ref="8f9540315fa216e0ba502f77bae06b05" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_SHORTREAD_BUFSIZE</b>&nbsp;&nbsp;&nbsp;1024</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c9d34896695f4e38e33f6c33031d1777"></a><!-- doxytag: member="protocol3.h::NJB3_CHUNK_SIZE" ref="c9d34896695f4e38e33f6c33031d1777" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CHUNK_SIZE</b>&nbsp;&nbsp;&nbsp;0x100000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9ca3bd504bf2c0f7aecad6f7ec3bd62f"></a><!-- doxytag: member="protocol3.h::NJB3_FIRMWARE_CHUNK_SIZE" ref="9ca3bd504bf2c0f7aecad6f7ec3bd62f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FIRMWARE_CHUNK_SIZE</b>&nbsp;&nbsp;&nbsp;0x40000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76fbcd3f910b422151298e2a9279058e"></a><!-- doxytag: member="protocol3.h::NJB3_DEFAULT_GET_FILE_BLOCK_SIZE" ref="76fbcd3f910b422151298e2a9279058e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_DEFAULT_GET_FILE_BLOCK_SIZE</b>&nbsp;&nbsp;&nbsp;0x2000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e929c9800b2d844e115a2a6bacaa41a5"></a><!-- doxytag: member="protocol3.h::NJB3_DEFAULT_SEND_FILE_BLOCK_SIZE" ref="e929c9800b2d844e115a2a6bacaa41a5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_DEFAULT_SEND_FILE_BLOCK_SIZE</b>&nbsp;&nbsp;&nbsp;0x2000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="697b7ad253ed1e0310ba53956695bd46"></a><!-- doxytag: member="protocol3.h::NJB3_CODECS_FRAME_ID" ref="697b7ad253ed1e0310ba53956695bd46" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODECS_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0001U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8802039399bff295f956167faaf70b52"></a><!-- doxytag: member="protocol3.h::NJB3_DISKUTIL_FRAME_ID" ref="8802039399bff295f956167faaf70b52" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_DISKUTIL_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0002U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d2eada66eb9df6d0cb65e1cca2f5b019"></a><!-- doxytag: member="protocol3.h::NJB3_PRODID_FRAME_ID" ref="d2eada66eb9df6d0cb65e1cca2f5b019" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PRODID_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0003U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="089305f380d32fd7689cc405a45a3023"></a><!-- doxytag: member="protocol3.h::NJB3_LOCKED_FRAME_ID" ref="089305f380d32fd7689cc405a45a3023" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_LOCKED_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0006U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39ce8a9fd74652dec5bcfca423b705e3"></a><!-- doxytag: member="protocol3.h::NJB3_FNAME_FRAME_ID" ref="39ce8a9fd74652dec5bcfca423b705e3" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FNAME_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0007U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f05c1513c7c1a175f63572be560f488f"></a><!-- doxytag: member="protocol3.h::NJB3_UNKNOWN1_FRAME_ID" ref="f05c1513c7c1a175f63572be560f488f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_UNKNOWN1_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0008U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6b0623c769f4cea0b2add2780d355b0"></a><!-- doxytag: member="protocol3.h::NJB3_KEY_FRAME_ID" ref="f6b0623c769f4cea0b2add2780d355b0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_KEY_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x000aU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9759e25f2204f866592a44f27a22e25b"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_FRAME_ID" ref="9759e25f2204f866592a44f27a22e25b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x000bU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4880b99eed5ba129bc9453620573317d"></a><!-- doxytag: member="protocol3.h::NJB3_POSTID_FRAME_ID" ref="4880b99eed5ba129bc9453620573317d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_POSTID_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x000cU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="59f8357986e6334d56f9b24b0b2bbda4"></a><!-- doxytag: member="protocol3.h::NJB3_DIR_FRAME_ID" ref="59f8357986e6334d56f9b24b0b2bbda4" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_DIR_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x000dU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c23107cf9438a36be5a2fa71692e7de5"></a><!-- doxytag: member="protocol3.h::NJB3_FILESIZE_FRAME_ID" ref="c23107cf9438a36be5a2fa71692e7de5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FILESIZE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x000eU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="200bfc2f38f3285c4bc6884932007355"></a><!-- doxytag: member="protocol3.h::NJB3_FILECOUNT_FRAME_ID" ref="200bfc2f38f3285c4bc6884932007355" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FILECOUNT_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0013U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5d5bea628a28db0da68712410666a986"></a><!-- doxytag: member="protocol3.h::NJB3_VALUE_FRAME_ID" ref="5d5bea628a28db0da68712410666a986" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_VALUE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0014U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f3da781b4b80d811a65ad6beb3aa07b"></a><!-- doxytag: member="protocol3.h::NJB3_JUKEBOXID_FRAME_ID" ref="9f3da781b4b80d811a65ad6beb3aa07b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_JUKEBOXID_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0015U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4916dbea37b0b69e9b0486664152a2ca"></a><!-- doxytag: member="protocol3.h::NJB3_FILETIME_FRAME_ID" ref="4916dbea37b0b69e9b0486664152a2ca" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FILETIME_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0016U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bff2e1abfefb78b499a205b6468fcc66"></a><!-- doxytag: member="protocol3.h::NJB3_UNKNOWN6_FRAME_ID" ref="bff2e1abfefb78b499a205b6468fcc66" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_UNKNOWN6_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0017U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="601978a8c379a8180aee709c45edbb7d"></a><!-- doxytag: member="protocol3.h::NJB3_FILEFLAGS_FRAME_ID" ref="601978a8c379a8180aee709c45edbb7d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FILEFLAGS_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0018U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="644410938109c66cfe9c252db1258eae"></a><!-- doxytag: member="protocol3.h::NJB3_ALBUM_FRAME_ID" ref="644410938109c66cfe9c252db1258eae" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_ALBUM_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0101U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0844205f9b493abb7affaedebcd7134"></a><!-- doxytag: member="protocol3.h::NJB3_ARTIST_FRAME_ID" ref="c0844205f9b493abb7affaedebcd7134" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_ARTIST_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0102U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c3f3584d06a017df9bf907d97f014d47"></a><!-- doxytag: member="protocol3.h::NJB3_GENRE_FRAME_ID" ref="c3f3584d06a017df9bf907d97f014d47" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_GENRE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0103U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="73d57db0e36047b4d41ff2abf832cd79"></a><!-- doxytag: member="protocol3.h::NJB3_TITLE_FRAME_ID" ref="73d57db0e36047b4d41ff2abf832cd79" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TITLE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0104U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dbfcae5eaddef829e8ea617d62a9b3f9"></a><!-- doxytag: member="protocol3.h::NJB3_LENGTH_FRAME_ID" ref="dbfcae5eaddef829e8ea617d62a9b3f9" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_LENGTH_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0105U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36351dbc939acb2459b6836099400a6f"></a><!-- doxytag: member="protocol3.h::NJB3_TRACKNO_FRAME_ID" ref="36351dbc939acb2459b6836099400a6f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TRACKNO_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0106U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63a54faf0c61c5242338bac22d80d406"></a><!-- doxytag: member="protocol3.h::NJB3_YEAR_FRAME_ID" ref="63a54faf0c61c5242338bac22d80d406" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_YEAR_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0107U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="697ac39c0710ef5ac90a1f6d9abb4964"></a><!-- doxytag: member="protocol3.h::NJB3_SMARTPAR_FRAME_ID" ref="697ac39c0710ef5ac90a1f6d9abb4964" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_SMARTPAR_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x010aU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36aeb13e7de79ed9991c7aa1855f8092"></a><!-- doxytag: member="protocol3.h::NJB3_PLAYINFO_FRAME_ID" ref="36aeb13e7de79ed9991c7aa1855f8092" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PLAYINFO_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x010bU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d817936a33943e6e6dc2c29d1b2434eb"></a><!-- doxytag: member="protocol3.h::NJB3_SEEKTRACK_FRAME_ID" ref="d817936a33943e6e6dc2c29d1b2434eb" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_SEEKTRACK_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x010cU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1ef4d670df1ea38f57891cf4d876718c"></a><!-- doxytag: member="protocol3.h::NJB3_EAX_TYPENAME" ref="1ef4d670df1ea38f57891cf4d876718c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EAX_TYPENAME</b>&nbsp;&nbsp;&nbsp;0x010eU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1f5dd424665af3dc50e4ff8f97f221a8"></a><!-- doxytag: member="protocol3.h::NJB3_PLNAME_FRAME_ID" ref="1f5dd424665af3dc50e4ff8f97f221a8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PLNAME_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x010fU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2bc42bfbbb8af575b014e61786bafd5"></a><!-- doxytag: member="protocol3.h::NJB3_TIME_FRAME_ID" ref="f2bc42bfbbb8af575b014e61786bafd5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TIME_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0110U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="79f8c075dfa4e8a7ad60bba41f48fa39"></a><!-- doxytag: member="protocol3.h::NJB3_ALBUMCNT_FRAME_ID" ref="79f8c075dfa4e8a7ad60bba41f48fa39" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_ALBUMCNT_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0111U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78e85585418f68817022c7a5f3ad27fc"></a><!-- doxytag: member="protocol3.h::NJB3_TRACKCNT_FRAME_ID" ref="78e85585418f68817022c7a5f3ad27fc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TRACKCNT_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0112U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c00fa3def38155c0a212c1898fde9405"></a><!-- doxytag: member="protocol3.h::NJB3_OWNER_FRAME_ID" ref="c00fa3def38155c0a212c1898fde9405" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_OWNER_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0113U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="70f4a4cf2dbec0742f74911e8c9c0263"></a><!-- doxytag: member="protocol3.h::NJB3_BATTERY_FRAME_ID" ref="70f4a4cf2dbec0742f74911e8c9c0263" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_BATTERY_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0114U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1377c9cf541aa5ec01ef9b17973cb202"></a><!-- doxytag: member="protocol3.h::NJB3_PLCNT_FRAME_ID" ref="1377c9cf541aa5ec01ef9b17973cb202" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PLCNT_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0115U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f2c517eca322cd92c9deb4e38854742"></a><!-- doxytag: member="protocol3.h::NJB3_PLAYTRACK_FRAME_ID" ref="9f2c517eca322cd92c9deb4e38854742" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PLAYTRACK_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0119U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b96091bc1aa8897bda56f7fd3f945dd0"></a><!-- doxytag: member="protocol3.h::NJB3_UNKNOWN4_FRAME_ID" ref="b96091bc1aa8897bda56f7fd3f945dd0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_UNKNOWN4_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x011aU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d9bce7ed9e786a64de1f7d17ec666d02"></a><!-- doxytag: member="protocol3.h::NJB3_PLTRACKS_FRAME_ID" ref="d9bce7ed9e786a64de1f7d17ec666d02" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PLTRACKS_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x011cU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ca663b7002652077199cbd5171bbdd5"></a><!-- doxytag: member="protocol3.h::NJB3_MINMAX_ID" ref="3ca663b7002652077199cbd5171bbdd5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_MINMAX_ID</b>&nbsp;&nbsp;&nbsp;0x0201U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f82d202b597125c50fa4bc999f1d2acc"></a><!-- doxytag: member="protocol3.h::NJB3_EAX_ACTIVE_ID" ref="f82d202b597125c50fa4bc999f1d2acc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EAX_ACTIVE_ID</b>&nbsp;&nbsp;&nbsp;0x0202U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2301a865d8511f3704c9b981e9688ca8"></a><!-- doxytag: member="protocol3.h::NJB3_VOLUME_FRAME_ID" ref="2301a865d8511f3704c9b981e9688ca8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_VOLUME_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0203U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2c57b89b23224fd1821ba2c4f652ad9"></a><!-- doxytag: member="protocol3.h::NJB3_ENV_FRAME_ID" ref="f2c57b89b23224fd1821ba2c4f652ad9" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_ENV_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0204U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2d6c085400f32dcc14b5424d944443b"></a><!-- doxytag: member="protocol3.h::NJB3_EQ_FRAME_ID" ref="b2d6c085400f32dcc14b5424d944443b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EQ_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0205U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5b945ef36f8fdaad9f20b1a985fb923c"></a><!-- doxytag: member="protocol3.h::NJB3_SPAT_FRAME_ID" ref="5b945ef36f8fdaad9f20b1a985fb923c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_SPAT_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0206U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1c7ff29b39e3b3351ef9fbe8f86dcc20"></a><!-- doxytag: member="protocol3.h::NJB3_TSCALE_FRAME_ID" ref="1c7ff29b39e3b3351ef9fbe8f86dcc20" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TSCALE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0207U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9579cf760c4c68a372ffa6493d6af70a"></a><!-- doxytag: member="protocol3.h::NJB3_SMARTVOL_FRAME_ID" ref="9579cf760c4c68a372ffa6493d6af70a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_SMARTVOL_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x0208U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad21a076d1a876f2960e404acf282d30"></a><!-- doxytag: member="protocol3.h::NJB3_EAXACTIVE_FRAME_ID" ref="ad21a076d1a876f2960e404acf282d30" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EAXACTIVE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x020aU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="54efa60f74029e76611d292aa7de95d4"></a><!-- doxytag: member="protocol3.h::NJB3_EAXID_FRAME_ID" ref="54efa60f74029e76611d292aa7de95d4" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EAXID_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x020bU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1ae7950cf002726034146791db4834be"></a><!-- doxytag: member="protocol3.h::NJB3_EAX_INDEX_ID" ref="1ae7950cf002726034146791db4834be" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_EAX_INDEX_ID</b>&nbsp;&nbsp;&nbsp;0x020cU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="283cbd4ea5a6a70825fe0e2c6f9a2825"></a><!-- doxytag: member="protocol3.h::NJB3_KEYVALUE_FRAME_ID" ref="283cbd4ea5a6a70825fe0e2c6f9a2825" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_KEYVALUE_FRAME_ID</b>&nbsp;&nbsp;&nbsp;0x1400U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="72d024e8b8539c3a0a61c7074b32df16"></a><!-- doxytag: member="protocol3.h::NJB3_FILE_DATABASE" ref="72d024e8b8539c3a0a61c7074b32df16" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_FILE_DATABASE</b>&nbsp;&nbsp;&nbsp;0x0000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ba376a6eb93ee5db2fa32ef9f2635008"></a><!-- doxytag: member="protocol3.h::NJB3__PLAYLIST_DATABASE" ref="ba376a6eb93ee5db2fa32ef9f2635008" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3__PLAYLIST_DATABASE</b>&nbsp;&nbsp;&nbsp;0x0001U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4845cb4bd870c7e0655cfdd4b1d3a54d"></a><!-- doxytag: member="protocol3.h::NJB3_TRACK_DATABASE" ref="4845cb4bd870c7e0655cfdd4b1d3a54d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_TRACK_DATABASE</b>&nbsp;&nbsp;&nbsp;0x0002U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="43fab6249ff0f8bd6e419a085c1acebb"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_MP3_ID_OLD" ref="43fab6249ff0f8bd6e419a085c1acebb" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_MP3_ID_OLD</b>&nbsp;&nbsp;&nbsp;0x0000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a770157f605b1f33478e09a2d62657e8"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_WAV_ID" ref="a770157f605b1f33478e09a2d62657e8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_WAV_ID</b>&nbsp;&nbsp;&nbsp;0x0001U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3eb762afbc8e070ae14d0e0d9469a461"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_MP3_ID" ref="3eb762afbc8e070ae14d0e0d9469a461" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_MP3_ID</b>&nbsp;&nbsp;&nbsp;0x0002U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a44a7da91215714629edb13d0f8df736"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_WMA_ID" ref="a44a7da91215714629edb13d0f8df736" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_WMA_ID</b>&nbsp;&nbsp;&nbsp;0x0003U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="487aba0abbfbde5b855ddc1ac4f1379a"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_AA_ID" ref="487aba0abbfbde5b855ddc1ac4f1379a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_AA_ID</b>&nbsp;&nbsp;&nbsp;0x0007U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed53adf558ef08a861d67146e63541e0"></a><!-- doxytag: member="protocol3.h::NJB3_CODEC_PROTECTED_WMA_ID" ref="ed53adf558ef08a861d67146e63541e0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_CODEC_PROTECTED_WMA_ID</b>&nbsp;&nbsp;&nbsp;0x0203U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b640f7cca39448683124196113958835"></a><!-- doxytag: member="protocol3.h::NJB3_START_PLAY" ref="b640f7cca39448683124196113958835" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_START_PLAY</b>&nbsp;&nbsp;&nbsp;0x00</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aa6c5d7b2f49debf6a5c2b5c39632e35"></a><!-- doxytag: member="protocol3.h::NJB3_STOP_PLAY" ref="aa6c5d7b2f49debf6a5c2b5c39632e35" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STOP_PLAY</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea854cb1a8f4ddd66ecf0298ff6c7d54"></a><!-- doxytag: member="protocol3.h::NJB3_PAUSE_PLAY" ref="ea854cb1a8f4ddd66ecf0298ff6c7d54" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_PAUSE_PLAY</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7c043c7420a7eec0099d7eda58fdc29b"></a><!-- doxytag: member="protocol3.h::NJB3_RESUME_PLAY" ref="7c043c7420a7eec0099d7eda58fdc29b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_RESUME_PLAY</b>&nbsp;&nbsp;&nbsp;0x03</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="53d854254af1fb57a5133e9c5cea35bc"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_OK" ref="53d854254af1fb57a5133e9c5cea35bc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_OK</b>&nbsp;&nbsp;&nbsp;0x0000U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c5b1638f775c7c134821b69d7f04066c"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_EMPTY" ref="c5b1638f775c7c134821b69d7f04066c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_EMPTY</b>&nbsp;&nbsp;&nbsp;0x0001U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aff4348c5bcda80b841ed9e2f88df510"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_TRANSFER_ERROR" ref="aff4348c5bcda80b841ed9e2f88df510" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_TRANSFER_ERROR</b>&nbsp;&nbsp;&nbsp;0x0002U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a3cc4675c83cc204691013678de7ddc"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_BAD_FILESIZE" ref="2a3cc4675c83cc204691013678de7ddc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_BAD_FILESIZE</b>&nbsp;&nbsp;&nbsp;0x0003U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6c00d6548ea6d855dc27898f12105795"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_NOTIMPLEMENTED" ref="6c00d6548ea6d855dc27898f12105795" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_NOTIMPLEMENTED</b>&nbsp;&nbsp;&nbsp;0x0004U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="48890f1239e9030d635a87375317c707"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_NOTEXIST" ref="48890f1239e9030d635a87375317c707" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_NOTEXIST</b>&nbsp;&nbsp;&nbsp;0x0005U</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="07fd596694b0a20e0876dddee4231159"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_PROTECTED" ref="07fd596694b0a20e0876dddee4231159" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_PROTECTED</b>&nbsp;&nbsp;&nbsp;0x000cU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ebca8c4b6d927a216f154336a185669"></a><!-- doxytag: member="protocol3.h::NJB3_STATUS_EMPTY_CHUNK" ref="6ebca8c4b6d927a216f154336a185669" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NJB3_STATUS_EMPTY_CHUNK</b>&nbsp;&nbsp;&nbsp;0x000eU</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9b461a4c49a8126470c61342e22966d3"></a><!-- doxytag: member="protocol3.h::njb3_start_play" ref="9b461a4c49a8126470c61342e22966d3" args="(njb)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_start_play</b>(njb)&nbsp;&nbsp;&nbsp;njb3_ctrl_playing(njb, NJB3_START_PLAY)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21275675f6e3a10b03edff860a29896f"></a><!-- doxytag: member="protocol3.h::njb3_stop_play" ref="21275675f6e3a10b03edff860a29896f" args="(njb)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_stop_play</b>(njb)&nbsp;&nbsp;&nbsp;njb3_ctrl_playing(njb, NJB3_STOP_PLAY)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5275012f9af061961b7002356ef305c"></a><!-- doxytag: member="protocol3.h::njb3_pause_play" ref="b5275012f9af061961b7002356ef305c" args="(njb)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_pause_play</b>(njb)&nbsp;&nbsp;&nbsp;njb3_ctrl_playing(njb, NJB3_PAUSE_PLAY)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0fb7c6cf1d40c23b61132160418b05e"></a><!-- doxytag: member="protocol3.h::njb3_resume_play" ref="b0fb7c6cf1d40c23b61132160418b05e" args="(njb)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_resume_play</b>(njb)&nbsp;&nbsp;&nbsp;njb3_ctrl_playing(njb, NJB3_RESUME_PLAY)</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="protocol3_8h.html#62e227f18d3a17362052f14a81031035">njb3_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="protocol3_8h.html#22acc85e6102a1192c59c481d20b07aa">njb3_set_bitmap</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t x_size, u_int16_t y_size, const unsigned char *bitmap)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ab530a039cff14233c0083236294202"></a><!-- doxytag: member="protocol3.h::njb3_current_track" ref="8ab530a039cff14233c0083236294202" args="(njb_t *njb, u_int16_t *track)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_current_track</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t *track)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a759a34d97424ddd6fe5c1b71ad14cde"></a><!-- doxytag: member="protocol3.h::njb3_elapsed_time" ref="a759a34d97424ddd6fe5c1b71ad14cde" args="(njb_t *njb, u_int16_t *elapsed, int *change)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_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="cf8324cb82c2e94b128c26921714fb83"></a><!-- doxytag: member="protocol3.h::njb3_play_track" ref="cf8324cb82c2e94b128c26921714fb83" args="(njb_t *njb, u_int32_t trackid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_play_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="1113dd4798f8bc3365e2bff62f898ae5"></a><!-- doxytag: member="protocol3.h::njb3_queue_track" ref="1113dd4798f8bc3365e2bff62f898ae5" args="(njb_t *njb, u_int32_t trackid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_queue_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="26bdc06f27e9bd3a7c4d3a3d609888de"></a><!-- doxytag: member="protocol3.h::njb3_clear_play_queue" ref="26bdc06f27e9bd3a7c4d3a3d609888de" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_clear_play_queue</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="96ab0ff8931cd3289910f176bfa6c80d"></a><!-- doxytag: member="protocol3.h::njb3_ctrl_playing" ref="96ab0ff8931cd3289910f176bfa6c80d" args="(njb_t *njb, int cmd)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_ctrl_playing</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, int cmd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9147bf6f60727e7534af9cfd05eb7f4a"></a><!-- doxytag: member="protocol3.h::njb3_seek_track" ref="9147bf6f60727e7534af9cfd05eb7f4a" args="(njb_t *njb, u_int32_t position)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_seek_track</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t position)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#11ff9d3e1e3a638168f290e68f6a8a20">njb3_get_codecs</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="175d51cffb0743f1e357096ba6385e72"></a><!-- doxytag: member="protocol3.h::njb3_ping" ref="175d51cffb0743f1e357096ba6385e72" args="(njb_t *njb, int type)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_ping</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, int type)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#01ddb94dde9f1369519cea9159947291">njb3_power_status</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, int *battery_level, int *charging, int *ac_power)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7a904a08e61daab9b451a0b1be93154"></a><!-- doxytag: member="protocol3.h::njb3_readid" ref="c7a904a08e61daab9b451a0b1be93154" args="(njb_t *njb, u_int8_t *sdmiid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_readid</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int8_t *sdmiid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fdb2050ba7226f2fff40c2c8dad32d63"></a><!-- doxytag: member="protocol3.h::njb3_capture" ref="fdb2050ba7226f2fff40c2c8dad32d63" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_capture</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="ba0acbc4afe2e0601b4f2bd843033f7a"></a><!-- doxytag: member="protocol3.h::njb3_release" ref="ba0acbc4afe2e0601b4f2bd843033f7a" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_release</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="68d645693b732a574e60042087836c15"></a><!-- doxytag: member="protocol3.h::njb3_get_disk_usage" ref="68d645693b732a574e60042087836c15" args="(njb_t *njb, u_int64_t *totalbytes, u_int64_t *freebytes)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_disk_usage</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int64_t *totalbytes, u_int64_t *freebytes)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8924e6b2003a843df267b8fc5b553809"></a><!-- doxytag: member="protocol3.h::njb3_turnoff_flashing" ref="8924e6b2003a843df267b8fc5b553809" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_turnoff_flashing</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="3b1d962a42af73abb8f54a71a7d89454"></a><!-- doxytag: member="protocol3.h::njb3_get_owner_string" ref="3b1d962a42af73abb8f54a71a7d89454" args="(njb_t *njb, char *name)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_owner_string</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, char *name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="285b143109393ab6c2994ddbc9b9767b"></a><!-- doxytag: member="protocol3.h::njb3_set_owner_string" ref="285b143109393ab6c2994ddbc9b9767b" args="(njb_t *njb, const char *name)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_set_owner_string</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, const char *name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6fcc88f9b6d77b4cef7bccf94bac98f7"></a><!-- doxytag: member="protocol3.h::njb3_get_time" ref="6fcc88f9b6d77b4cef7bccf94bac98f7" args="(njb_t *njb)" -->
<a class="el" href="structnjb__time__struct.html">njb_time_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_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="9558b5c73e653512eff11368f54c999a"></a><!-- doxytag: member="protocol3.h::njb3_set_time" ref="9558b5c73e653512eff11368f54c999a" args="(njb_t *njb, njb_time_t *time)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_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="4850e792bd60d885a97e9e18e69e2cd1"></a><!-- doxytag: member="protocol3.h::njb3_reset_get_track_tag" ref="4850e792bd60d885a97e9e18e69e2cd1" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_reset_get_track_tag</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="2697f9e22c794a3a3a1eb65a8e56da16"></a><!-- doxytag: member="protocol3.h::njb3_get_next_track_tag" ref="2697f9e22c794a3a3a1eb65a8e56da16" args="(njb_t *njb)" -->
<a class="el" href="structnjb__songid__struct.html">njb_songid_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_next_track_tag</b> (<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="protocol3_8h.html#7d8dffadc9e0e8238ffc840075cc2293">njb3_reset_get_playlist_tag</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="8dabd50507d0c7da1eb50e61cf0a9725"></a><!-- doxytag: member="protocol3.h::njb3_get_next_playlist_tag" ref="8dabd50507d0c7da1eb50e61cf0a9725" args="(njb_t *njb)" -->
<a class="el" href="structnjb__playlist__struct.html">njb_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_next_playlist_tag</b> (<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="protocol3_8h.html#ed14b36adbbd0c6d045f0be3e86c5a37">njb3_reset_get_datafile_tag</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="a528e1750eb39e0847148e496214dd31"></a><!-- doxytag: member="protocol3.h::njb3_get_next_datafile_tag" ref="a528e1750eb39e0847148e496214dd31" args="(njb_t *njb)" -->
<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_next_datafile_tag</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="39f5e56cf736150456085eda4f411980"></a><!-- doxytag: member="protocol3.h::njb3_read_keys" ref="39f5e56cf736150456085eda4f411980" args="(njb_t *njb)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_read_keys</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="b3bd6aa4236ca180dbc0e52261727fbd"></a><!-- doxytag: member="protocol3.h::njb3_get_keys" ref="b3bd6aa4236ca180dbc0e52261727fbd" args="(njb_t *njb)" -->
<a class="el" href="structnjb__keyval__struct.html">njb_keyval_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_keys</b> (<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="protocol3_8h.html#956618fea29be076067bf608190398bf">njb3_request_file_chunk</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t fileid, u_int32_t offset)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#baa0008a62887dbbd36f6b27a8e740d8">njb3_get_file_block</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, unsigned char *data, u_int32_t maxsize)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8358969ecbddc9de8059f46942ecacf8"></a><!-- doxytag: member="protocol3.h::njb3_create_file" ref="8358969ecbddc9de8059f46942ecacf8" args="(njb_t *njb, unsigned char *ptag, u_int32_t tagsize, u_int16_t database)" -->
u_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_create_file</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, unsigned char *ptag, u_int32_t tagsize, u_int16_t database)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="134aa663a2ea12f7861d0d13237efbea"></a><!-- doxytag: member="protocol3.h::njb3_send_file_chunk" ref="134aa663a2ea12f7861d0d13237efbea" args="(njb_t *njb, unsigned char *chunk, u_int32_t chunksize, u_int32_t fileid)" -->
u_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_send_file_chunk</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, unsigned char *chunk, u_int32_t chunksize, u_int32_t fileid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b09e267d5412bb0e83171eb7fd02f909"></a><!-- doxytag: member="protocol3.h::njb3_send_file_complete" ref="b09e267d5412bb0e83171eb7fd02f909" args="(njb_t *njb, u_int32_t fileid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_send_file_complete</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="f84b3480f5145a28f6be1ebb5aa5f9e1"></a><!-- doxytag: member="protocol3.h::njb3_create_folder" ref="f84b3480f5145a28f6be1ebb5aa5f9e1" args="(njb_t *njb, const char *name, u_int32_t *folderid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_create_folder</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, const char *name, u_int32_t *folderid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05c0085f0ae2ab2044ad9acecc574901"></a><!-- doxytag: member="protocol3.h::njb3_delete_item" ref="05c0085f0ae2ab2044ad9acecc574901" args="(njb_t *njb, u_int32_t itemid)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_delete_item</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t itemid)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#37d979a879932b2fe83ada01e5bc1f0b">njb3_update_16bit_frame</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t itemid, u_int16_t frameid, u_int16_t value)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#f4c77c8c12bea8f1a8c125e70019d5c1">njb3_update_string_frame</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t itemid, u_int16_t frameid, unsigned char *str)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#ed7061feb344ae07fa2121e19332e280">njb3_update_tag</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t trackid, unsigned char *ptag, u_int32_t ptagsize)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#91831b3fc1d2c5ccafd2f62629733074">njb3_create_playlist</a> (<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">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#120bb9ef7afb94102b2e1f29515de0dd">njb3_add_multiple_tracks_to_playlist</a> (<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="02d92192ec2b5659d1229beae7470308"></a><!-- doxytag: member="protocol3.h::njb3_adjust_volume" ref="02d92192ec2b5659d1229beae7470308" args="(njb_t *njb, u_int16_t value)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_adjust_volume</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t value)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#6fe00399de0e30cfd70220b28c49e781">njb3_control_eax_processor</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t state)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aa8ba4ddaec2c9a8169c295b3471c03f"></a><!-- doxytag: member="protocol3.h::njb3_adjust_eax" ref="aa8ba4ddaec2c9a8169c295b3471c03f" args="(njb_t *njb, u_int16_t eaxid, u_int16_t patchindex, u_int16_t active, u_int16_t scalevalue)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_adjust_eax</b> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int16_t eaxid, u_int16_t patchindex, u_int16_t active, u_int16_t scalevalue)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e554d66361acc1fc602bdf57cdb51165"></a><!-- doxytag: member="protocol3.h::njb3_read_eaxtypes" ref="e554d66361acc1fc602bdf57cdb51165" args="(njb_t *njb)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_read_eaxtypes</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="c05d1f73a99bb9badbb25d983a8d18a1"></a><!-- doxytag: member="protocol3.h::njb3_get_nexteax" ref="c05d1f73a99bb9badbb25d983a8d18a1" args="(njb_t *njb)" -->
<a class="el" href="structnjb__eax__struct.html">njb_eax_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb3_get_nexteax</b> (<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="protocol3_8h.html#ea0edf60a976fbe68c0fd3e0aae10984">njb3_announce_firmware</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">u_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#2b9e5af429aa7667396bf28ef310b698">njb3_send_firmware_chunk</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, u_int32_t chunksize, unsigned char *chunk)</td></tr>

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

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="protocol3_8h.html#6cb6360d563df97d2ee763389ca94343">njb3_destroy_state</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb)</td></tr>

</table>
<hr><h2>Detailed Description</h2>
This is the main header file for the "series 3" protocol that is believed to have the internal name "PDE" at Creative, an acronym that probably reads out "Personal Digital Entertainment".<p>
The protocol has three distinct namespaced ("enum series") that are used for communications. These are:<p>
1. Command namespace, all commands that can be sent are uniquely enumerated. 2. Device register and frame namespace: all kind of metadata, database data and device registers (!) are enumerated in the same namespace, making very different things share the same number series. 3. Return types (error codes). 4. Codecs. 5. File types (or databases), it's just track, file or playlist really.<p>
Known commands (first 16 bits)<p>
0x0001 Update database item metadata on files, tracks, playlists also used for adding smartvolume information to tracks 0x0002 Get file/track chunk 0x0003 Send file/track chunk 0x0004 Create database file item (files and tracks) 0x0005 Delete database file item (files and tracks) 0x0006 Read database tracks, datafiles, playlists, all the commands seen for this code has produced a dump of the entire database so these are all-or-nothing operations. 0x0007 Set device register - owner string, current track position, play status (pause/stop), set time, EAX processor mode (on/off) 0x0008 Request device register - codecs, device info, ID, fw version, hw version, disk usage, owner string, time, current track position, play status (pause/stop), number of tracks, albums or playlists, battery status. 0x0009 Send file/track complete 0x000a Create folder or playlist (empty, non-file item entry in database) 0x000b Load device firmware (bitmaps and firmware upgrade) 0x000c Get device keys, returns a number of device-unique keys. 0x0010 Verify file?? 0x0100 Playback track (on the device) 0x0101 Get elapsed time for current track, just 4 bytes 0101 0001 0x0103 Clear playback queue 0x0104 Enqueue track for playing 0x0107 Add tracks to playlist 0x0108 Get tracks for playlist 0x0200 Get EAX effect settings 0x0201 Adjust EAX setting <hr><h2>Function Documentation</h2>
<a class="anchor" name="120bb9ef7afb94102b2e1f29515de0dd"></a><!-- doxytag: member="protocol3.h::njb3_add_multiple_tracks_to_playlist" ref="120bb9ef7afb94102b2e1f29515de0dd" args="(njb_t *njb, u_int32_t *plid, u_int32_t *trids, u_int16_t ntracks)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_add_multiple_tracks_to_playlist           </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>plid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&nbsp;</td>
          <td class="paramname"> <em>trids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int16_t&nbsp;</td>
          <td class="paramname"> <em>ntracks</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 takes an array of 32-bit track ID:s and adds it to a certain playlist.<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>plid</em>&nbsp;</td><td>a pointer to the ID of the playlist to add tracks to. The ID will change during this operation, so it is important to pass in a pointer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>trids</em>&nbsp;</td><td>an array of tracks to add </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ntracks</em>&nbsp;</td><td>absolute number of tracks in the array. </td></tr>
  </table>
</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#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="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00164">njb3_bytes_to_16bit()</a>, <a class="el" href="byteorder_8c_source.html#l00091">njb3_bytes_to_32bit()</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="ea0edf60a976fbe68c0fd3e0aae10984"></a><!-- doxytag: member="protocol3.h::njb3_announce_firmware" ref="ea0edf60a976fbe68c0fd3e0aae10984" args="(njb_t *njb, u_int32_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_announce_firmware           </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 announces a firmware image which will then be sent in several chunks.<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 device object to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the total size of the firmware image </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="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, and <a class="el" href="protocol3_8c_source.html#l04400">njb3_announce_firmware()</a>.</p>

<p>Referenced by <a class="el" href="protocol3_8c_source.html#l04400">njb3_announce_firmware()</a>, and <a class="el" href="procedure_8c_source.html#l03240">NJB_Send_Firmware()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6fe00399de0e30cfd70220b28c49e781"></a><!-- doxytag: member="protocol3.h::njb3_control_eax_processor" ref="6fe00399de0e30cfd70220b28c49e781" args="(njb_t *njb, u_int16_t state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_control_eax_processor           </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_int16_t&nbsp;</td>
          <td class="paramname"> <em>state</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 command turns the EAX DSP processor on or off. You will also have to adjust the currently used EAX effect with njb3_adjust_eax() below. 
<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</a>, and <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="91831b3fc1d2c5ccafd2f62629733074"></a><!-- doxytag: member="protocol3.h::njb3_create_playlist" ref="91831b3fc1d2c5ccafd2f62629733074" args="(njb_t *njb, char *name, u_int32_t *plid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_create_playlist           </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">char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&nbsp;</td>
          <td class="paramname"> <em>plid</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 creates a new playlist on the 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>name</em>&nbsp;</td><td>the name of the playlist to create, as a string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>plid</em>&nbsp;</td><td>a pointer to a 32-bit numer that will contain the new playlist ID after this routine has been called. </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#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="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00164">njb3_bytes_to_16bit()</a>, <a class="el" href="byteorder_8c_source.html#l00091">njb3_bytes_to_32bit()</a>, <a class="el" href="unicode_8c_source.html#l00050">ucs2strlen()</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="6cb6360d563df97d2ee763389ca94343"></a><!-- doxytag: member="protocol3.h::njb3_destroy_state" ref="6cb6360d563df97d2ee763389ca94343" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void njb3_destroy_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>
Cleans up any dangling lists in the njb_t state holder struct, and other stuff related to the state. 
<p>References <a class="el" href="libnjb_8h_source.html#l00422">njb_keyval_struct::next</a>, and <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#l00184">NJB_Close()</a>.</p>

</div>
</div><p>
<a class="anchor" name="11ff9d3e1e3a638168f290e68f6a8a20"></a><!-- doxytag: member="protocol3.h::njb3_get_codecs" ref="11ff9d3e1e3a638168f290e68f6a8a20" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_get_codecs           </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>
Reads the supported audio file types. 
<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</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="byteorder_8c_source.html#l00164">njb3_bytes_to_16bit()</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</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="baa0008a62887dbbd36f6b27a8e740d8"></a><!-- doxytag: member="protocol3.h::njb3_get_file_block" ref="baa0008a62887dbbd36f6b27a8e740d8" args="(njb_t *njb, unsigned char *data, u_int32_t maxsize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_get_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">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t&nbsp;</td>
          <td class="paramname"> <em>maxsize</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 retrieves a part of the requested chunk. Short reads are allowed, so the caller must make sure that it is called as many times as is needed to retrieve the entire file chunk.<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>data</em>&nbsp;</td><td>an allocated byte array to store the retrieved chunk in. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>maxsize</em>&nbsp;</td><td>the maximum number of bytes to retrieve from this chunk at a time. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00012">EO_USBBLK</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</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="11c183e62511af9c23f15e5f1d7a1912"></a><!-- doxytag: member="protocol3.h::njb3_get_firmware_confirmation" ref="11c183e62511af9c23f15e5f1d7a1912" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_get_firmware_confirmation           </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 simply reads back the device status after a firmware upgrade. 
<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="62e227f18d3a17362052f14a81031035"></a><!-- doxytag: member="protocol3.h::njb3_init_state" ref="62e227f18d3a17362052f14a81031035" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_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 PROTOCOL3-devices. 
<p>References <a class="el" href="libnjb_8h_source.html#l00156">NJB_TURBO_ON</a>, and <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="01ddb94dde9f1369519cea9159947291"></a><!-- doxytag: member="protocol3.h::njb3_power_status" ref="01ddb94dde9f1369519cea9159947291" args="(njb_t *njb, int *battery_level, int *charging, int *ac_power)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_power_status           </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>battery_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>charging</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>ac_power</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 reads out the current battery level and charging status from a series 3 device. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>battery_level</em>&nbsp;</td><td>a variable that will hold the current level after the call. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>charging</em>&nbsp;</td><td>if the battery is charging, this variable will hold 1 after the call, else 0. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ac_power</em>&nbsp;</td><td>if the charger is connected, this variable will hold 1 after the call, else 0. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. If the call fails, all other return values are invalid. </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#l00013">EO_RDSHORT</a>, <a class="el" href="njb__error_8h_source.html#l00012">EO_USBBLK</a>, <a class="el" href="byteorder_8c_source.html#l00164">njb3_bytes_to_16bit()</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</a>.</p>

<p>Referenced by <a class="el" href="procedure_8c_source.html#l03366">NJB_Get_Auxpower()</a>, <a class="el" href="procedure_8c_source.html#l03328">NJB_Get_Battery_Charging()</a>, and <a class="el" href="procedure_8c_source.html#l03294">NJB_Get_Battery_Level()</a>.</p>

</div>
</div><p>
<a class="anchor" name="956618fea29be076067bf608190398bf"></a><!-- doxytag: member="protocol3.h::njb3_request_file_chunk" ref="956618fea29be076067bf608190398bf" args="(njb_t *njb, u_int32_t fileid, u_int32_t offset)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_request_file_chunk           </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>fileid</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><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function requests a chunk from a certain file. The offset may index into the file. The chunk transfer size is 1MB by default (as used by creative) but may actually exceed that.<p>
Returns actual chunk size or -1 if failed. 
<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</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="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00164">njb3_bytes_to_16bit()</a>, <a class="el" href="byteorder_8c_source.html#l00091">njb3_bytes_to_32bit()</a>, and <a class="el" href="usb__io_8c_source.html#l00076">usb_pipe_read()</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="ed14b36adbbd0c6d045f0be3e86c5a37"></a><!-- doxytag: member="protocol3.h::njb3_reset_get_datafile_tag" ref="ed14b36adbbd0c6d045f0be3e86c5a37" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_reset_get_datafile_tag           </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 routine retrieves the list of datafiles, and returns the first item. 
<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#l00811">NJB_Reset_Get_Datafile_Tag()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7d8dffadc9e0e8238ffc840075cc2293"></a><!-- doxytag: member="protocol3.h::njb3_reset_get_playlist_tag" ref="7d8dffadc9e0e8238ffc840075cc2293" args="(njb_t *njb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_reset_get_playlist_tag           </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 routine retrieves the list of playlists, while also filling in each playlist post with it's respective track ID:s. 
<p>References <a class="el" href="libnjb_8h_source.html#l00259">njb_playlist_struct::nextpl</a>, and <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#l00556">NJB_Reset_Get_Playlist()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2b9e5af429aa7667396bf28ef310b698"></a><!-- doxytag: member="protocol3.h::njb3_send_firmware_chunk" ref="2b9e5af429aa7667396bf28ef310b698" args="(njb_t *njb, u_int32_t chunksize, unsigned char *chunk)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int32_t njb3_send_firmware_chunk           </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>chunksize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>chunk</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 sends a chunk of firmware. Typically the chunks are <code>NJB3_FIRMWARE_CHUNK_SIZE</code> each, except for the last chunk.<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 device object to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>chunksize</em>&nbsp;</td><td>the size of this chunk </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>chunk</em>&nbsp;</td><td>a pointer to the raw bytes representing this firmware chunk </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>

</div>
</div><p>
<a class="anchor" name="22acc85e6102a1192c59c481d20b07aa"></a><!-- doxytag: member="protocol3.h::njb3_set_bitmap" ref="22acc85e6102a1192c59c481d20b07aa" args="(njb_t *njb, u_int16_t x_size, u_int16_t y_size, const unsigned char *bitmap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_set_bitmap           </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_int16_t&nbsp;</td>
          <td class="paramname"> <em>x_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int16_t&nbsp;</td>
          <td class="paramname"> <em>y_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>bitmap</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
NJB2 only (shall be expanded for all jukeboxes). Set up the black/white bitmap shown on shutdown.<p>
The bitmap must be exactly 1088 bytes large, coded as a serial bitmap of 136x64 pixels. The final 4 bits per line are not shown, because the the display of the NJB2 has only 132x64 pixels.<p>
A set pixel (1) means dark, an unset means white.<p>
To create a compatible bitmap, take a 132x64 PBM file (of course not a ASCII-coded, but a binary "P4") and cut off the header.<p>
Explaination of the JBM1 file format: <pre>
 Byte offset:     Contents:
 0x00 - 0x03      "JBM1"
 0x04 - 0x05      width of bitmap in pixels 16bit 
                  unsigned bigendian integer
 0x06 - 0x07      height of bitmap in pixels 16bit
                  unsigned bigendian integer
 0x08 - 0x0b      file format version? contains 0x00000001
                  as a 32bit unsigned bigendian integer
 0x0c - fileend   actual bitmap data
 </pre><p>
The bitmap data is black-and-white and each bit represents a single pixel. A set pixel is 1 and a cleared pixel is 0. The bitmap is stored in 16bit unsigned integers which are little-endian, and each of these 16bit integers form a vertical, eight-pixel high and two-pixel wide "bar". 
<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</a>, <a class="el" href="njb__error_8h_source.html#l00014">EO_NOMEM</a>, <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, and <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="37d979a879932b2fe83ada01e5bc1f0b"></a><!-- doxytag: member="protocol3.h::njb3_update_16bit_frame" ref="37d979a879932b2fe83ada01e5bc1f0b" args="(njb_t *njb, u_int32_t itemid, u_int16_t frameid, u_int16_t value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_update_16bit_frame           </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>itemid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int16_t&nbsp;</td>
          <td class="paramname"> <em>frameid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int16_t&nbsp;</td>
          <td class="paramname"> <em>value</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 will update a single 16bit metadata frame associated with a certain item (track, playlist or datafile). Only call this function to modify 16-bit values!<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>itemid</em>&nbsp;</td><td>the item ID (track, playlist or datafile) to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frameid</em>&nbsp;</td><td>the frame ID of the frame to modyfy. Must be a 16-bit frame. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>valud</em>&nbsp;</td><td>the new 16-bit value. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="njb__error_8h_source.html#l00017">EO_BADSTATUS</a>, <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, and <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f4c77c8c12bea8f1a8c125e70019d5c1"></a><!-- doxytag: member="protocol3.h::njb3_update_string_frame" ref="f4c77c8c12bea8f1a8c125e70019d5c1" args="(njb_t *njb, u_int32_t itemid, u_int16_t frameid, unsigned char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_update_string_frame           </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>itemid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int16_t&nbsp;</td>
          <td class="paramname"> <em>frameid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>str</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 updates a single string of metadata associated with a certain item (track, playlist or datafile). Only call this routine to modify string frames!<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>itemid</em>&nbsp;</td><td>the item ID (track, playlist or datafile) to be modified. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frameid</em>&nbsp;</td><td>the frame ID of the frame to be updated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>the new string value. </td></tr>
  </table>
</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#l00014">EO_NOMEM</a>, <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, and <a class="el" href="unicode_8c_source.html#l00050">ucs2strlen()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="ed7061feb344ae07fa2121e19332e280"></a><!-- doxytag: member="protocol3.h::njb3_update_tag" ref="ed7061feb344ae07fa2121e19332e280" args="(njb_t *njb, u_int32_t trackid, unsigned char *ptag, u_int32_t ptagsize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int njb3_update_tag           </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>itemid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>ptag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t&nbsp;</td>
          <td class="paramname"> <em>ptagsize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A function to update a block of metadata on the series 3 devices. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>itemid</em>&nbsp;</td><td>the track (or similar) whose metadata is to be updated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ptag</em>&nbsp;</td><td>a packed metadata structure for series 3 devices. </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#l00014">EO_NOMEM</a>, and <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>.</p>

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

</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>