<!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: handshake.c</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 Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><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> <div class="contents"> <h1>handshake.c</h1><div class="fragment"><pre class="fragment"><span class="preprocessor">#include "common.h"</span> <span class="keywordtype">int</span> main (<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) { <a name="_a0"></a><a class="code" href="structnjb__struct.html">njb_t</a> njbs[<a name="a1"></a><a class="code" href="libnjb_8h.html#46e41076f44166b6446e3fdae6db62a9">NJB_MAX_DEVICES</a>]; <a class="code" href="structnjb__struct.html">njb_t</a> *njb; <span class="keywordtype">int</span> i, n, opt, debug; <span class="keyword">extern</span> <span class="keywordtype">char</span> *optarg; u_int8_t sdmiid[16]; debug = 0; <span class="keywordflow">while</span> ( (opt= getopt(argc, argv, <span class="stringliteral">"D:"</span>)) != -1 ) { <span class="keywordflow">switch</span> (opt) { <span class="keywordflow">case</span> <span class="charliteral">'D'</span>: debug= atoi(optarg); <span class="keywordflow">break</span>; <span class="keywordflow">default</span>: fprintf(stderr, <span class="stringliteral">"usage: handshake [ -D debuglvl ]\n"</span>); <span class="keywordflow">return</span> 1; } } <span class="keywordflow">if</span> ( debug ) <a name="a2"></a><a class="code" href="group__internals.html#ga5ff48cc89e320bc1c1d89efd2613d77">NJB_Set_Debug</a>(debug); <span class="keywordflow">if</span> (<a name="a3"></a><a class="code" href="group__basic.html#g199efd7711a70ae5d63f4052c2e492d3">NJB_Discover</a>(njbs, 0, &n) == -1) { fprintf(stderr, <span class="stringliteral">"could not locate any jukeboxes\n"</span>); <span class="keywordflow">return</span> 1; } <span class="keywordflow">if</span> ( n == 0 ) { fprintf(stderr, <span class="stringliteral">"No NJB devices found\n"</span>); <span class="keywordflow">return</span> 1; } printf(<span class="stringliteral">"Found %u devices.\n"</span>, n); <span class="keywordflow">for</span> (i = 0; i < n; i++) { <a name="_a4"></a><a class="code" href="structnjb__keyval__struct.html">njb_keyval_t</a> *key; <span class="keywordtype">int</span> j; <span class="keywordtype">int</span> chargestat; <span class="keywordtype">int</span> auxpowstat; <span class="keyword">const</span> <span class="keywordtype">char</span> *devname; <span class="keyword">const</span> <span class="keywordtype">char</span> *prodname; njb = &njbs[i]; printf(<span class="stringliteral">"Device %u: "</span>, i+1); printf(<span class="stringliteral">"\n Player device type: "</span>); njb = &njbs[i]; <span class="keywordflow">if</span> (<a name="a5"></a><a class="code" href="group__basic.html#ga631536b597d8f8cb73eeb47eff6640a">NJB_Open</a>(njb) == -1) { <a name="a6"></a><a class="code" href="group__internals.html#ge9b849a9a883fe1fd697278bd8d49585">NJB_Error_Dump</a>(njb, stderr); <span class="keywordflow">return</span> 1; } <span class="keywordflow">if</span> ((devname = <a name="a7"></a><a class="code" href="group__basic.html#g0a3239069cd6e87ec14abee9c4d06b59">NJB_Get_Device_Name</a>(njb, 0)) != NULL) { printf(<span class="stringliteral">"%s\n"</span>, devname); } <span class="keywordflow">else</span> { printf(<span class="stringliteral">"Error getting device name.\n"</span>); <span class="keywordflow">return</span> 1; } <span class="comment">/* Ping the device */</span> <a name="a8"></a><a class="code" href="group__basic.html#g14869c6979a66b0aa0e6d35081bb2fc9">NJB_Ping</a>(njb); <span class="comment">/* Retrieve the device ID */</span> <span class="keywordflow">if</span> (<a name="a9"></a><a class="code" href="group__basic.html#g9f6e12f2966bdf474c4db45af850fffd">NJB_Get_SDMI_ID</a>(njb, (u_int8_t *) &sdmiid) == 0) { printf(<span class="stringliteral">" Jukebox SDMI ID: "</span>); <span class="keywordflow">for</span> (j = 0; j < 16; j++) { printf(<span class="stringliteral">"%02X"</span>, sdmiid[j]); } printf(<span class="stringliteral">"\n"</span>); } <span class="keywordflow">else</span> { printf(<span class="stringliteral">" Error getting SDMI ID.\n"</span>); } <span class="keywordflow">if</span> (njb-><a name="a10"></a><a class="code" href="structnjb__struct.html#405f9cb824196553362aa8d4ad546c07">device_type</a> == <a name="a11"></a><a class="code" href="group__njbboxes.html#gd84011f40d11f1eae13f708cdc3c29fb">NJB_DEVICE_NJB1</a>) { u_int8_t major, minor, release; <span class="keywordflow">if</span> (<a name="a12"></a><a class="code" href="group__basic.html#g7016704848a564e396f2b2439f21f0df">NJB_Get_Firmware_Revision</a>(njb, &major, &minor, &release) == 0) { printf(<span class="stringliteral">" Firmware: %u.%u\n"</span>, major, minor); } <span class="preprocessor">#ifdef __WIN32__</span> <span class="preprocessor"></span> printf(<span class="stringliteral">" Library counter: %I64u\n"</span>, <a name="a13"></a><a class="code" href="group__basic.html#g3bd68306e995f6775e605906b90dc5aa">NJB_Get_NJB1_Libcounter</a>(njb)); <span class="preprocessor">#else</span> <span class="preprocessor"></span> printf(<span class="stringliteral">" Library counter: %llu\n"</span>, <a class="code" href="group__basic.html#g3bd68306e995f6775e605906b90dc5aa">NJB_Get_NJB1_Libcounter</a>(njb)); <span class="preprocessor">#endif</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { u_int8_t major, minor, release; <span class="keywordflow">if</span> (<a class="code" href="group__basic.html#g7016704848a564e396f2b2439f21f0df">NJB_Get_Firmware_Revision</a>(njb, &major, &minor, &release) == 0) { printf(<span class="stringliteral">" Firmware: %u.%u.%u\n"</span>, major, minor, release); } <span class="keywordflow">if</span> (<a name="a14"></a><a class="code" href="group__basic.html#g6f4161a855d8a067a2c83de13b826b0f">NJB_Get_Hardware_Revision</a>(njb, &major, &minor, &release) == 0) { printf(<span class="stringliteral">" Hardware: %u.%u.%u\n"</span>, major, minor, release); } } <span class="keywordflow">if</span> ((prodname = <a class="code" href="group__basic.html#g0a3239069cd6e87ec14abee9c4d06b59">NJB_Get_Device_Name</a>(njb, 1)) != NULL) { printf(<span class="stringliteral">" Product name: %s\n"</span>, prodname); } <span class="keywordflow">else</span> { printf(<span class="stringliteral">" Error getting product name.\n"</span>); <span class="keywordflow">return</span> 1; } <span class="comment">/* Auxiliary power status */</span> auxpowstat = <a name="a15"></a><a class="code" href="group__basic.html#g9f03a2404de7dfd084adea3c68fdb0f9">NJB_Get_Auxpower</a>(njb); <span class="keywordflow">if</span> (auxpowstat == -1) { printf(<span class="stringliteral">" Failure getting auxilary power status\n"</span>); <span class="keywordflow">return</span> 1; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (auxpowstat == 1) { printf(<span class="stringliteral">" Device is on auxiliary power (AC charger or USB)\n"</span>); } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (auxpowstat == 0) { printf(<span class="stringliteral">" Device is disconnected from auxiliary power\n"</span>); } <span class="comment">/* Battery charging status */</span> chargestat = <a name="a16"></a><a class="code" href="group__basic.html#ga5b633ed905de58a13b5682fa14c5113">NJB_Get_Battery_Charging</a>(njb); <span class="keywordflow">if</span> (chargestat == -1) { printf(<span class="stringliteral">" Failure getting battery charging status\n"</span>); <span class="keywordflow">return</span> 1; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chargestat == 1) { printf(<span class="stringliteral">" Battery is charging\n"</span>); } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chargestat == 0) { printf(<span class="stringliteral">" Battery is not charging\n"</span>); } <span class="keywordflow">if</span> (njb-><a class="code" href="structnjb__struct.html#405f9cb824196553362aa8d4ad546c07">device_type</a> != <a class="code" href="group__njbboxes.html#gd84011f40d11f1eae13f708cdc3c29fb">NJB_DEVICE_NJB1</a>) { <span class="comment">/* This is only well implemented for the series 3 devices. */</span> <span class="keywordtype">int</span> battery_level = <a name="a17"></a><a class="code" href="group__basic.html#g9e284653140092c2fe42fbb20e73265d">NJB_Get_Battery_Level</a>(njb); <span class="keywordflow">if</span> (battery_level == -1) { printf(<span class="stringliteral">" Failure getting battery level\n"</span>); <span class="keywordflow">return</span> 1; } <span class="keywordflow">else</span> { printf(<span class="stringliteral">" Battery level: %d%%\n"</span>, battery_level); } } key = <a name="a18"></a><a class="code" href="group__basic.html#geb93aded391e59cd53d6619a5c4e0151">NJB_Get_Keys</a>(njb); <span class="keywordflow">while</span> (key != NULL) { printf(<span class="stringliteral">" Device key: %s = %08X, %08X\n"</span>, key-><a name="a19"></a><a class="code" href="structnjb__keyval__struct.html#af16336286ef5d2e8aadf9399be2e0cd">key</a>, key-><a name="a20"></a><a class="code" href="structnjb__keyval__struct.html#e1865d8a5afc4107d9f99d18de7b3b66">value1</a>, key-><a name="a21"></a><a class="code" href="structnjb__keyval__struct.html#6cc3035cff99e76005061d0fe246fe20">value2</a>); key = key-><a name="a22"></a><a class="code" href="structnjb__keyval__struct.html#de5a69af8470cfb5935b078b4feae737">next</a>; } <a name="a23"></a><a class="code" href="group__basic.html#g13a9c926c430f38f3a6535ecaaf3e9b9">NJB_Close</a>(njb); } <span class="keywordflow">return</span> 0; } </pre></div> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 26 17:17:26 2009 for libnjb by <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>