libx52/group__libx52io.html

965 lines
67 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>x52pro-linux: IO Library APIs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">x52pro-linux
&#160;<span id="projectnumber">0.2.1</span>
</div>
<div id="projectbrief">Saitek X52/X52Pro drivers for Linux/Unix</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">IO Library APIs</div> </div>
</div><!--header-->
<div class="contents">
<p>These functions allow an application to connect to a supported X52/X52Pro joystick and read the state of the buttons and axes.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlibx52io__report.html">libx52io_report</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">X52 HID Report. <a href="structlibx52io__report.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gad29a5b097b9d5223c332609a10a296d1"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a></td></tr>
<tr class="memdesc:gad29a5b097b9d5223c332609a10a296d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device context structure used by libx52io. <a href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">More...</a><br /></td></tr>
<tr class="separator:gad29a5b097b9d5223c332609a10a296d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga97c754361b4ac2fff7afb12598c8b344"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga97c754361b4ac2fff7afb12598c8b344">libx52io_error_code</a> { <br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a>,
<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a14ff8cd7a44886cb16fc51cbeb89c148">LIBX52IO_ERROR_INIT_FAILURE</a>,
<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a>,
<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a1e21c76a7ca47be35f8978d4716a810c">LIBX52IO_ERROR_CONN</a>,
<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a3d76f4416444857fc9740ac9e240f0a5">LIBX52IO_ERROR_IO</a>,
<a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344ac7f51d12f0f2d011408bbf7c78ddb69a">LIBX52IO_ERROR_TIMEOUT</a>
<br />
}</td></tr>
<tr class="memdesc:ga97c754361b4ac2fff7afb12598c8b344"><td class="mdescLeft">&#160;</td><td class="mdescRight">libx52 IO error codes <a href="group__libx52io.html#ga97c754361b4ac2fff7afb12598c8b344">More...</a><br /></td></tr>
<tr class="separator:ga97c754361b4ac2fff7afb12598c8b344"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga89b8918a3e029eaf51676171f97b57b6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a> { <br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a060ef07b6eb7a8645df391612564469e">LIBX52IO_AXIS_X</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a9d97a4140136c1307ea43c2be9be5771">LIBX52IO_AXIS_Y</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a69b7a4fcbb96227948a021d101c3c57d">LIBX52IO_AXIS_RZ</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6abd017592870a9b37f577652cb364aebd">LIBX52IO_AXIS_Z</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a5f17e58a8720a162b76cced5293c790d">LIBX52IO_AXIS_RX</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6ad086993617bb9cc822cb4a0a551be49e">LIBX52IO_AXIS_RY</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a81194d60295150569d8373b75db9184f">LIBX52IO_AXIS_SLIDER</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6aa4d9091952cda83e83af92359ef83bd8">LIBX52IO_AXIS_THUMBX</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a53b5cd86b439f1349bf4de0f0fb80221">LIBX52IO_AXIS_THUMBY</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6a853732efcadaa2fc9cc33ec1bfe2f805">LIBX52IO_AXIS_HATX</a>,
<a class="el" href="group__libx52io.html#gga89b8918a3e029eaf51676171f97b57b6af6746adebf71f362983e449f7281cd6e">LIBX52IO_AXIS_HATY</a>
<br />
}</td></tr>
<tr class="memdesc:ga89b8918a3e029eaf51676171f97b57b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">X52 Axis definitions. <a href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">More...</a><br /></td></tr>
<tr class="separator:ga89b8918a3e029eaf51676171f97b57b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga353d02ab22bf3e4cbf5d6514b298cb56"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">libx52io_button</a> { <br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a74b765d12f9dd3d235ebb348f23e38ae">LIBX52IO_BTN_TRIGGER</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a264e3b52ded783f31662be5666b7b701">LIBX52IO_BTN_TRIGGER_2</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a1e456775da2a72231f1611acb7bcafde">LIBX52IO_BTN_FIRE</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ad34776f621e04831f06a97d6288eb3a9">LIBX52IO_BTN_PINKY</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a5689c337d3dd6f829a98996326106d2c">LIBX52IO_BTN_A</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a576e3d180fd939fd45d2e56a8bfe2b5f">LIBX52IO_BTN_B</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56adc44ccc8a2127abb7328e144e0db7cae">LIBX52IO_BTN_C</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ae7ba732e5938c8252e27ca294ee31fb3">LIBX52IO_BTN_D</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56aa85dbec03b40dc43a01a94dfec235598">LIBX52IO_BTN_E</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56acd14e0debf6f174a519093513811f524">LIBX52IO_BTN_T1_UP</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a1ee6bbc00bdfb903c295511142548da4">LIBX52IO_BTN_T1_DN</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56afb826868cba883352fa6cf920ecf9b58">LIBX52IO_BTN_T2_UP</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a71da77d63cefda8adafb6f72a327c626">LIBX52IO_BTN_T2_DN</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a3a5742fbf1a6902f8232d5db0e29467a">LIBX52IO_BTN_T3_UP</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ad13d5e92b7de00a87080e6e475adec3b">LIBX52IO_BTN_T3_DN</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ab082b52e0944bc0c71e9e12da0d90fec">LIBX52IO_BTN_POV_1_N</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56abe9ea9ad3c09a3da6a238f6a848a4cd2">LIBX52IO_BTN_POV_1_E</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a309643bd8eaf8cb5fb7ec8f203c2b4e7">LIBX52IO_BTN_POV_1_S</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ae44586d598c43858d072157e2f190167">LIBX52IO_BTN_POV_1_W</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ab554b077f2c0beb57ad8ab3d7a89f2a6">LIBX52IO_BTN_POV_2_N</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a8d9cd3f6a7eaa0fd5b37c4359707fddd">LIBX52IO_BTN_POV_2_E</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a66a65f540c00664d91b064d0c26e27dd">LIBX52IO_BTN_POV_2_S</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ac013701690c7312708de56a21f9c6c21">LIBX52IO_BTN_POV_2_W</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ac120842e6da8ccd79ed8c3c04f088545">LIBX52IO_BTN_CLUTCH</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a4109f7d9aec4d0708e82bfec20bf4902">LIBX52IO_BTN_MOUSE_PRIMARY</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56af35f08afd0a73847ac75b61f922efa30">LIBX52IO_BTN_MOUSE_SECONDARY</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a77241622e751f345cc88c7bd985d967a">LIBX52IO_BTN_MOUSE_SCROLL_UP</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a8dab2ad9c035da7178f4ac0224ab7ac8">LIBX52IO_BTN_MOUSE_SCROLL_DN</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ad16b57e4b8ad5d29e29ce44d8a6dca17">LIBX52IO_BTN_FUNCTION</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ae70ee79631c69a1b501a3953d9168a94">LIBX52IO_BTN_START_STOP</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ac005c06fff55df4ff25e013a36d774fc">LIBX52IO_BTN_RESET</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a5d65a0e124a7542d30b2025b87ee47d9">LIBX52IO_BTN_PG_UP</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ab64229a4571fc92e0ff5f29aa9d8cf67">LIBX52IO_BTN_PG_DN</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56afabbea3cda9ef2f94d1ea1ac3d9d8692">LIBX52IO_BTN_UP</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56aab507182793aeef631ff976b27442291">LIBX52IO_BTN_DN</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a9c4206f54653574ff6226f33b7fb0e15">LIBX52IO_BTN_SELECT</a>,
<br />
&#160;&#160;<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56a30f6cab62869a4705e93d93a685b3633">LIBX52IO_BTN_MODE_1</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56ac503573f9b1f229eace81c12c780da38">LIBX52IO_BTN_MODE_2</a>,
<a class="el" href="group__libx52io.html#gga353d02ab22bf3e4cbf5d6514b298cb56acd6846d4d4212b9e5e94b984fe4a9ac1">LIBX52IO_BTN_MODE_3</a>
<br />
}</td></tr>
<tr class="memdesc:ga353d02ab22bf3e4cbf5d6514b298cb56"><td class="mdescLeft">&#160;</td><td class="mdescRight">X52 Button definitions. <a href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">More...</a><br /></td></tr>
<tr class="separator:ga353d02ab22bf3e4cbf5d6514b298cb56"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3dd2cf8fe17324dc3a62fe1491f4cb9f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">libx52io_init</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> **ctx)</td></tr>
<tr class="memdesc:ga3dd2cf8fe17324dc3a62fe1491f4cb9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the IO library. <a href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">More...</a><br /></td></tr>
<tr class="separator:ga3dd2cf8fe17324dc3a62fe1491f4cb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga71b22837414e6d4e63c0c655c768ab4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga71b22837414e6d4e63c0c655c768ab4a">libx52io_exit</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga71b22837414e6d4e63c0c655c768ab4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exit the library and free up any resources used. <a href="group__libx52io.html#ga71b22837414e6d4e63c0c655c768ab4a">More...</a><br /></td></tr>
<tr class="separator:ga71b22837414e6d4e63c0c655c768ab4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae3ff340342486053ba94b37d8d78ddcc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gae3ff340342486053ba94b37d8d78ddcc">libx52io_open</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:gae3ff340342486053ba94b37d8d78ddcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a connection to a supported joystick. <a href="group__libx52io.html#gae3ff340342486053ba94b37d8d78ddcc">More...</a><br /></td></tr>
<tr class="separator:gae3ff340342486053ba94b37d8d78ddcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96a7ce37d39df35c9241859e8ce3c505"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga96a7ce37d39df35c9241859e8ce3c505">libx52io_close</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga96a7ce37d39df35c9241859e8ce3c505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close an existing connection to a supported joystick. <a href="group__libx52io.html#ga96a7ce37d39df35c9241859e8ce3c505">More...</a><br /></td></tr>
<tr class="separator:ga96a7ce37d39df35c9241859e8ce3c505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa6f7094a7abcf92b2f017c5df11713eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gaa6f7094a7abcf92b2f017c5df11713eb">libx52io_read_timeout</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx, <a class="el" href="structlibx52io__report.html">libx52io_report</a> *report, int timeout)</td></tr>
<tr class="memdesc:gaa6f7094a7abcf92b2f017c5df11713eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read and parse a HID report. <a href="group__libx52io.html#gaa6f7094a7abcf92b2f017c5df11713eb">More...</a><br /></td></tr>
<tr class="separator:gaa6f7094a7abcf92b2f017c5df11713eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga709adda3b1122232a8553ac5ee42729d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga709adda3b1122232a8553ac5ee42729d">libx52io_read</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx, <a class="el" href="structlibx52io__report.html">libx52io_report</a> *report)</td></tr>
<tr class="memdesc:ga709adda3b1122232a8553ac5ee42729d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read and parse a HID report. <a href="group__libx52io.html#ga709adda3b1122232a8553ac5ee42729d">More...</a><br /></td></tr>
<tr class="separator:ga709adda3b1122232a8553ac5ee42729d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad75ec9273a3ed0784568a8c290b7a5ff"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gad75ec9273a3ed0784568a8c290b7a5ff">libx52io_get_axis_range</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx, <a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a> axis, int32_t *min, int32_t *max)</td></tr>
<tr class="memdesc:gad75ec9273a3ed0784568a8c290b7a5ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the range of an axis. <a href="group__libx52io.html#gad75ec9273a3ed0784568a8c290b7a5ff">More...</a><br /></td></tr>
<tr class="separator:gad75ec9273a3ed0784568a8c290b7a5ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d067ef607c6b1cf4e7899d4c28c9f9d"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga5d067ef607c6b1cf4e7899d4c28c9f9d">libx52io_strerror</a> (<a class="el" href="group__libx52io.html#ga97c754361b4ac2fff7afb12598c8b344">libx52io_error_code</a> code)</td></tr>
<tr class="memdesc:ga5d067ef607c6b1cf4e7899d4c28c9f9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the string representation of an error code. <a href="group__libx52io.html#ga5d067ef607c6b1cf4e7899d4c28c9f9d">More...</a><br /></td></tr>
<tr class="separator:ga5d067ef607c6b1cf4e7899d4c28c9f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa11e5d5e0486011d89e000ff83b9c713"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gaa11e5d5e0486011d89e000ff83b9c713">libx52io_axis_to_str</a> (<a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a> axis)</td></tr>
<tr class="memdesc:gaa11e5d5e0486011d89e000ff83b9c713"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the string representation of an axis. <a href="group__libx52io.html#gaa11e5d5e0486011d89e000ff83b9c713">More...</a><br /></td></tr>
<tr class="separator:gaa11e5d5e0486011d89e000ff83b9c713"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f761de9fdd3dbdb7755612655aeaab5"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga5f761de9fdd3dbdb7755612655aeaab5">libx52io_button_to_str</a> (<a class="el" href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">libx52io_button</a> button)</td></tr>
<tr class="memdesc:ga5f761de9fdd3dbdb7755612655aeaab5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the string representation of a button. <a href="group__libx52io.html#ga5f761de9fdd3dbdb7755612655aeaab5">More...</a><br /></td></tr>
<tr class="separator:ga5f761de9fdd3dbdb7755612655aeaab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b3b6825174ef6aa6328e5ee9ebafaa8"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga8b3b6825174ef6aa6328e5ee9ebafaa8">libx52io_get_vendor_id</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga8b3b6825174ef6aa6328e5ee9ebafaa8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the vendor ID of the connected X52 device. <a href="group__libx52io.html#ga8b3b6825174ef6aa6328e5ee9ebafaa8">More...</a><br /></td></tr>
<tr class="separator:ga8b3b6825174ef6aa6328e5ee9ebafaa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga140f4f34fbe7ee01efe74b21b0a5a7fe"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga140f4f34fbe7ee01efe74b21b0a5a7fe">libx52io_get_product_id</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga140f4f34fbe7ee01efe74b21b0a5a7fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the product ID of the connected X52 device. <a href="group__libx52io.html#ga140f4f34fbe7ee01efe74b21b0a5a7fe">More...</a><br /></td></tr>
<tr class="separator:ga140f4f34fbe7ee01efe74b21b0a5a7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga81ecbc781c2c4e7a221d6f16bc88e91f"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga81ecbc781c2c4e7a221d6f16bc88e91f">libx52io_get_device_version</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga81ecbc781c2c4e7a221d6f16bc88e91f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the device version of the connected X52 device. <a href="group__libx52io.html#ga81ecbc781c2c4e7a221d6f16bc88e91f">More...</a><br /></td></tr>
<tr class="separator:ga81ecbc781c2c4e7a221d6f16bc88e91f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7ec13349c18855f0d258cfa01092bcb9"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga7ec13349c18855f0d258cfa01092bcb9">libx52io_get_manufacturer_string</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga7ec13349c18855f0d258cfa01092bcb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the manufacturer string of the connected X52 device. <a href="group__libx52io.html#ga7ec13349c18855f0d258cfa01092bcb9">More...</a><br /></td></tr>
<tr class="separator:ga7ec13349c18855f0d258cfa01092bcb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga16e95b7fad117f535db93ebf0c7a9b70"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#ga16e95b7fad117f535db93ebf0c7a9b70">libx52io_get_product_string</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:ga16e95b7fad117f535db93ebf0c7a9b70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the product string of the connected X52 device. <a href="group__libx52io.html#ga16e95b7fad117f535db93ebf0c7a9b70">More...</a><br /></td></tr>
<tr class="separator:ga16e95b7fad117f535db93ebf0c7a9b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad9ac5efcb55003e0c5c0f49f7e7997ef"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libx52io.html#gad9ac5efcb55003e0c5c0f49f7e7997ef">libx52io_get_serial_number_string</a> (<a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx)</td></tr>
<tr class="memdesc:gad9ac5efcb55003e0c5c0f49f7e7997ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the serial number of the connected X52 device. <a href="group__libx52io.html#gad9ac5efcb55003e0c5c0f49f7e7997ef">More...</a><br /></td></tr>
<tr class="separator:gad9ac5efcb55003e0c5c0f49f7e7997ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>These functions allow an application to connect to a supported X52/X52Pro joystick and read the state of the buttons and axes. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="gad29a5b097b9d5223c332609a10a296d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad29a5b097b9d5223c332609a10a296d1">&#9670;&nbsp;</a></span>libx52io_context</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> <a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Device context structure used by libx52io. </p>
<p>All libx52io API functions require the application to pass in a pointer to a valid device context structure. A pointer can be obtained by calling <a class="el" href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">libx52io_init</a> </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga89b8918a3e029eaf51676171f97b57b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga89b8918a3e029eaf51676171f97b57b6">&#9670;&nbsp;</a></span>libx52io_axis</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>X52 Axis definitions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a060ef07b6eb7a8645df391612564469e"></a>LIBX52IO_AXIS_X&#160;</td><td class="fielddoc"><p>Stick X axis </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a9d97a4140136c1307ea43c2be9be5771"></a>LIBX52IO_AXIS_Y&#160;</td><td class="fielddoc"><p>Stick Y axis </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a69b7a4fcbb96227948a021d101c3c57d"></a>LIBX52IO_AXIS_RZ&#160;</td><td class="fielddoc"><p>Stick twist axis </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6abd017592870a9b37f577652cb364aebd"></a>LIBX52IO_AXIS_Z&#160;</td><td class="fielddoc"><p>Throttle axis </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a5f17e58a8720a162b76cced5293c790d"></a>LIBX52IO_AXIS_RX&#160;</td><td class="fielddoc"><p>Throttle Rotary X </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6ad086993617bb9cc822cb4a0a551be49e"></a>LIBX52IO_AXIS_RY&#160;</td><td class="fielddoc"><p>Throttle Rotary Y </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a81194d60295150569d8373b75db9184f"></a>LIBX52IO_AXIS_SLIDER&#160;</td><td class="fielddoc"><p>Throttle Slider </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6aa4d9091952cda83e83af92359ef83bd8"></a>LIBX52IO_AXIS_THUMBX&#160;</td><td class="fielddoc"><p>Thumbstick X </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a53b5cd86b439f1349bf4de0f0fb80221"></a>LIBX52IO_AXIS_THUMBY&#160;</td><td class="fielddoc"><p>Thumbstick Y </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6a853732efcadaa2fc9cc33ec1bfe2f805"></a>LIBX52IO_AXIS_HATX&#160;</td><td class="fielddoc"><p>Hat X </p>
</td></tr>
<tr><td class="fieldname"><a id="gga89b8918a3e029eaf51676171f97b57b6af6746adebf71f362983e449f7281cd6e"></a>LIBX52IO_AXIS_HATY&#160;</td><td class="fielddoc"><p>Hat Y </p>
</td></tr>
</table>
</div>
</div>
<a id="ga353d02ab22bf3e4cbf5d6514b298cb56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga353d02ab22bf3e4cbf5d6514b298cb56">&#9670;&nbsp;</a></span>libx52io_button</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">libx52io_button</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>X52 Button definitions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a74b765d12f9dd3d235ebb348f23e38ae"></a>LIBX52IO_BTN_TRIGGER&#160;</td><td class="fielddoc"><p>Primary trigger </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a264e3b52ded783f31662be5666b7b701"></a>LIBX52IO_BTN_TRIGGER_2&#160;</td><td class="fielddoc"><p>Secondary trigger </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a1e456775da2a72231f1611acb7bcafde"></a>LIBX52IO_BTN_FIRE&#160;</td><td class="fielddoc"><p>Fire button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ad34776f621e04831f06a97d6288eb3a9"></a>LIBX52IO_BTN_PINKY&#160;</td><td class="fielddoc"><p>Pinky trigger </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a5689c337d3dd6f829a98996326106d2c"></a>LIBX52IO_BTN_A&#160;</td><td class="fielddoc"><p>A button, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a576e3d180fd939fd45d2e56a8bfe2b5f"></a>LIBX52IO_BTN_B&#160;</td><td class="fielddoc"><p>B button, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56adc44ccc8a2127abb7328e144e0db7cae"></a>LIBX52IO_BTN_C&#160;</td><td class="fielddoc"><p>C button, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ae7ba732e5938c8252e27ca294ee31fb3"></a>LIBX52IO_BTN_D&#160;</td><td class="fielddoc"><p>D button, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56aa85dbec03b40dc43a01a94dfec235598"></a>LIBX52IO_BTN_E&#160;</td><td class="fielddoc"><p>E button, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56acd14e0debf6f174a519093513811f524"></a>LIBX52IO_BTN_T1_UP&#160;</td><td class="fielddoc"><p>Toggle 1 up </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a1ee6bbc00bdfb903c295511142548da4"></a>LIBX52IO_BTN_T1_DN&#160;</td><td class="fielddoc"><p>Toggle 1 down </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56afb826868cba883352fa6cf920ecf9b58"></a>LIBX52IO_BTN_T2_UP&#160;</td><td class="fielddoc"><p>Toggle 2 up </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a71da77d63cefda8adafb6f72a327c626"></a>LIBX52IO_BTN_T2_DN&#160;</td><td class="fielddoc"><p>Toggle 2 down </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a3a5742fbf1a6902f8232d5db0e29467a"></a>LIBX52IO_BTN_T3_UP&#160;</td><td class="fielddoc"><p>Toggle 3 up </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ad13d5e92b7de00a87080e6e475adec3b"></a>LIBX52IO_BTN_T3_DN&#160;</td><td class="fielddoc"><p>Toggle 3 down </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ab082b52e0944bc0c71e9e12da0d90fec"></a>LIBX52IO_BTN_POV_1_N&#160;</td><td class="fielddoc"><p>POV 1 Up, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56abe9ea9ad3c09a3da6a238f6a848a4cd2"></a>LIBX52IO_BTN_POV_1_E&#160;</td><td class="fielddoc"><p>POV 1 Right, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a309643bd8eaf8cb5fb7ec8f203c2b4e7"></a>LIBX52IO_BTN_POV_1_S&#160;</td><td class="fielddoc"><p>POV 1 Down, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ae44586d598c43858d072157e2f190167"></a>LIBX52IO_BTN_POV_1_W&#160;</td><td class="fielddoc"><p>POV 1 Left, on stick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ab554b077f2c0beb57ad8ab3d7a89f2a6"></a>LIBX52IO_BTN_POV_2_N&#160;</td><td class="fielddoc"><p>POV 2 Up, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a8d9cd3f6a7eaa0fd5b37c4359707fddd"></a>LIBX52IO_BTN_POV_2_E&#160;</td><td class="fielddoc"><p>POV 2 Right, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a66a65f540c00664d91b064d0c26e27dd"></a>LIBX52IO_BTN_POV_2_S&#160;</td><td class="fielddoc"><p>POV 2 Down, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ac013701690c7312708de56a21f9c6c21"></a>LIBX52IO_BTN_POV_2_W&#160;</td><td class="fielddoc"><p>POV 2 Left, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ac120842e6da8ccd79ed8c3c04f088545"></a>LIBX52IO_BTN_CLUTCH&#160;</td><td class="fielddoc"><p>Clutch button, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a4109f7d9aec4d0708e82bfec20bf4902"></a>LIBX52IO_BTN_MOUSE_PRIMARY&#160;</td><td class="fielddoc"><p>Primary mouse button, next to thumbstick </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56af35f08afd0a73847ac75b61f922efa30"></a>LIBX52IO_BTN_MOUSE_SECONDARY&#160;</td><td class="fielddoc"><p>Secondary mouse button, press scroll wheel on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a77241622e751f345cc88c7bd985d967a"></a>LIBX52IO_BTN_MOUSE_SCROLL_UP&#160;</td><td class="fielddoc"><p>Scroll wheel up, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a8dab2ad9c035da7178f4ac0224ab7ac8"></a>LIBX52IO_BTN_MOUSE_SCROLL_DN&#160;</td><td class="fielddoc"><p>Scroll wheel down, on throttle </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ad16b57e4b8ad5d29e29ce44d8a6dca17"></a>LIBX52IO_BTN_FUNCTION&#160;</td><td class="fielddoc"><p>Function button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ae70ee79631c69a1b501a3953d9168a94"></a>LIBX52IO_BTN_START_STOP&#160;</td><td class="fielddoc"><p>Start/Stop button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ac005c06fff55df4ff25e013a36d774fc"></a>LIBX52IO_BTN_RESET&#160;</td><td class="fielddoc"><p>Reset button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a5d65a0e124a7542d30b2025b87ee47d9"></a>LIBX52IO_BTN_PG_UP&#160;</td><td class="fielddoc"><p>Page Up button, X52 Pro only </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ab64229a4571fc92e0ff5f29aa9d8cf67"></a>LIBX52IO_BTN_PG_DN&#160;</td><td class="fielddoc"><p>Page Down button, X52 Pro only </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56afabbea3cda9ef2f94d1ea1ac3d9d8692"></a>LIBX52IO_BTN_UP&#160;</td><td class="fielddoc"><p>Up button, X52 Pro only </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56aab507182793aeef631ff976b27442291"></a>LIBX52IO_BTN_DN&#160;</td><td class="fielddoc"><p>Down button, X52 Pro only </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a9c4206f54653574ff6226f33b7fb0e15"></a>LIBX52IO_BTN_SELECT&#160;</td><td class="fielddoc"><p>Select button, X52 Pro only </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56a30f6cab62869a4705e93d93a685b3633"></a>LIBX52IO_BTN_MODE_1&#160;</td><td class="fielddoc"><p>Mode 1 - reported as a button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56ac503573f9b1f229eace81c12c780da38"></a>LIBX52IO_BTN_MODE_2&#160;</td><td class="fielddoc"><p>Mode 2 - reported as a button </p>
</td></tr>
<tr><td class="fieldname"><a id="gga353d02ab22bf3e4cbf5d6514b298cb56acd6846d4d4212b9e5e94b984fe4a9ac1"></a>LIBX52IO_BTN_MODE_3&#160;</td><td class="fielddoc"><p>Mode 3 - reported as a button </p>
</td></tr>
</table>
</div>
</div>
<a id="ga97c754361b4ac2fff7afb12598c8b344"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga97c754361b4ac2fff7afb12598c8b344">&#9670;&nbsp;</a></span>libx52io_error_code</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__libx52io.html#ga97c754361b4ac2fff7afb12598c8b344">libx52io_error_code</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>libx52 IO error codes </p>
<p>Error codes returned by libx52io </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3"></a>LIBX52IO_SUCCESS&#160;</td><td class="fielddoc"><p>No error, indicates success </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344a14ff8cd7a44886cb16fc51cbeb89c148"></a>LIBX52IO_ERROR_INIT_FAILURE&#160;</td><td class="fielddoc"><p>Initialization failure </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278"></a>LIBX52IO_ERROR_NO_DEVICE&#160;</td><td class="fielddoc"><p>No compatible device found </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42"></a>LIBX52IO_ERROR_INVALID&#160;</td><td class="fielddoc"><p>Invalid arguments for function </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344a1e21c76a7ca47be35f8978d4716a810c"></a>LIBX52IO_ERROR_CONN&#160;</td><td class="fielddoc"><p>Connection error </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344a3d76f4416444857fc9740ac9e240f0a5"></a>LIBX52IO_ERROR_IO&#160;</td><td class="fielddoc"><p>Read error from device </p>
</td></tr>
<tr><td class="fieldname"><a id="gga97c754361b4ac2fff7afb12598c8b344ac7f51d12f0f2d011408bbf7c78ddb69a"></a>LIBX52IO_ERROR_TIMEOUT&#160;</td><td class="fielddoc"><p>Timeout during read from device </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="gaa11e5d5e0486011d89e000ff83b9c713"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa11e5d5e0486011d89e000ff83b9c713">&#9670;&nbsp;</a></span>libx52io_axis_to_str()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_axis_to_str </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a>&#160;</td>
<td class="paramname"><em>axis</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the string representation of an axis. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">axis</td><td>Axis ID - see <a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>String representation of the axis. This pointer must not be freed. If axis is outside the defined range, then this returns NULL. </dd></dl>
</div>
</div>
<a id="ga5f761de9fdd3dbdb7755612655aeaab5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5f761de9fdd3dbdb7755612655aeaab5">&#9670;&nbsp;</a></span>libx52io_button_to_str()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_button_to_str </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">libx52io_button</a>&#160;</td>
<td class="paramname"><em>button</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the string representation of a button. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">button</td><td>Button ID - see <a class="el" href="group__libx52io.html#ga353d02ab22bf3e4cbf5d6514b298cb56">libx52io_button</a></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>String representation of the button. This pointer must not be freed. If button is outside the defined range, then this returns NULL. </dd></dl>
</div>
</div>
<a id="ga96a7ce37d39df35c9241859e8ce3c505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga96a7ce37d39df35c9241859e8ce3c505">&#9670;&nbsp;</a></span>libx52io_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close an existing connection to a supported joystick. </p>
<p>This function closes any existing connection to a joystick. It is acceptable to call this function if no connection exists.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a> on closing, or if the connection is already closed.</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a> if the context pointer is not valid </li>
</ul>
</dd></dl>
</div>
</div>
<a id="ga71b22837414e6d4e63c0c655c768ab4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga71b22837414e6d4e63c0c655c768ab4a">&#9670;&nbsp;</a></span>libx52io_exit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void libx52io_exit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Exit the library and free up any resources used. </p>
<p>This function releases any resources allocated by <a class="el" href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">libx52io_init</a> and terminates the library. Using the freed device now is invalid and can cause errors.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None </dd></dl>
</div>
</div>
<a id="gad75ec9273a3ed0784568a8c290b7a5ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad75ec9273a3ed0784568a8c290b7a5ff">&#9670;&nbsp;</a></span>libx52io_get_axis_range()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_get_axis_range </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a>&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t *&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t *&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the range of an axis. </p>
<p>This saves the minimum and maximum values of the requested axis in the output parameters. This will only be valid if the device is connected.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">axis</td><td>Axis identifier - see <a class="el" href="group__libx52io.html#ga89b8918a3e029eaf51676171f97b57b6">libx52io_axis</a> </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">min</td><td>Pointer to save the axis minimum value </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">max</td><td>Pointer to save the axis maximum value</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a> on read and parse success</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a> if the context or output pointers are not valid, or the requested axis is not a valid axis identifier</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a> if the device is disconnected </li>
</ul>
</dd></dl>
</div>
</div>
<a id="ga81ecbc781c2c4e7a221d6f16bc88e91f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga81ecbc781c2c4e7a221d6f16bc88e91f">&#9670;&nbsp;</a></span>libx52io_get_device_version()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t libx52io_get_device_version </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the device version of the connected X52 device. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Device version of the connected device. Returns 0 if no device is connected. </dd></dl>
</div>
</div>
<a id="ga7ec13349c18855f0d258cfa01092bcb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7ec13349c18855f0d258cfa01092bcb9">&#9670;&nbsp;</a></span>libx52io_get_manufacturer_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_get_manufacturer_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the manufacturer string of the connected X52 device. </p>
<p>Returns a pointer to a string which can be passed to <code>printf</code> or <code>puts</code>. This pointer must not be freed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the manufacturer string, which may be NULL. Return value is always NULL if no device is connected. </dd></dl>
</div>
</div>
<a id="ga140f4f34fbe7ee01efe74b21b0a5a7fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga140f4f34fbe7ee01efe74b21b0a5a7fe">&#9670;&nbsp;</a></span>libx52io_get_product_id()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t libx52io_get_product_id </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the product ID of the connected X52 device. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Product ID of the connected device. Returns 0 if no device is connected. </dd></dl>
</div>
</div>
<a id="ga16e95b7fad117f535db93ebf0c7a9b70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga16e95b7fad117f535db93ebf0c7a9b70">&#9670;&nbsp;</a></span>libx52io_get_product_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_get_product_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the product string of the connected X52 device. </p>
<p>Returns a pointer to a string which can be passed to <code>printf</code> or <code>puts</code>. This pointer must not be freed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the product string, which may be NULL. Return value is always NULL if no device is connected. </dd></dl>
</div>
</div>
<a id="gad9ac5efcb55003e0c5c0f49f7e7997ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad9ac5efcb55003e0c5c0f49f7e7997ef">&#9670;&nbsp;</a></span>libx52io_get_serial_number_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_get_serial_number_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the serial number of the connected X52 device. </p>
<p>Returns a pointer to a string which can be passed to <code>printf</code> or <code>puts</code>. This pointer must not be freed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the serial number string, which may be NULL. Return value is always NULL if no device is connected. </dd></dl>
</div>
</div>
<a id="ga8b3b6825174ef6aa6328e5ee9ebafaa8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8b3b6825174ef6aa6328e5ee9ebafaa8">&#9670;&nbsp;</a></span>libx52io_get_vendor_id()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t libx52io_get_vendor_id </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the vendor ID of the connected X52 device. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Vendor ID of the connected device. Returns 0 if no device is connected. </dd></dl>
</div>
</div>
<a id="ga3dd2cf8fe17324dc3a62fe1491f4cb9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">&#9670;&nbsp;</a></span>libx52io_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> **&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the IO library. </p>
<p>This function initializes the libx52io library, sets up any internal data structures to access the joystick, and returns a <a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> pointer in the output parameter. All calls to libx52io use the returned pointer to control the device.</p>
<dl class="section user"><dt>Example</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">int</span> rc;</div>
<div class="line"><a class="code" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *ctx;</div>
<div class="line">rc = <a class="code" href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">libx52io_init</a>(&amp;ctx);</div>
<div class="line"><span class="keywordflow">if</span> (rc != <a class="code" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a>) {</div>
<div class="line"> <span class="comment">// Error handling omitted for brevity</span></div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Save ctx for use later</span></div>
</div><!-- fragment --></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">ctx</td><td>Pointer to a <a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *. This function will allocate a device context and return the pointer to the context in this variable.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>libx52io_error_code</code> indicating status </dd></dl>
</div>
</div>
<a id="gae3ff340342486053ba94b37d8d78ddcc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae3ff340342486053ba94b37d8d78ddcc">&#9670;&nbsp;</a></span>libx52io_open()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_open </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open a connection to a supported joystick. </p>
<p>This function scans for and opens a connection to a supported X52/X52Pro joystick. If no supported joystick is found, it will return <a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a> on successful opening</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a> if the context pointer is not valid</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a> if no supported joystick is found</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a1e21c76a7ca47be35f8978d4716a810c">LIBX52IO_ERROR_CONN</a> if the connection fails </li>
</ul>
</dd></dl>
</div>
</div>
<a id="ga709adda3b1122232a8553ac5ee42729d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga709adda3b1122232a8553ac5ee42729d">&#9670;&nbsp;</a></span>libx52io_read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structlibx52io__report.html">libx52io_report</a> *&#160;</td>
<td class="paramname"><em>report</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read and parse a HID report. </p>
<p>This behaves the same as <a class="el" href="group__libx52io.html#gaa6f7094a7abcf92b2f017c5df11713eb">libx52io_read_timeout</a> with a timeout of <code>-1</code>. This function will block until some data is available from the joystick.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">report</td><td>Pointer to save the decoded HID report</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a> on read and parse success</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a> if the context or report pointers are not valid</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a> if the device is disconnected</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a3d76f4416444857fc9740ac9e240f0a5">LIBX52IO_ERROR_IO</a> if there was an error reading from the device, including if the device was disconnected during the read. </li>
</ul>
</dd></dl>
</div>
</div>
<a id="gaa6f7094a7abcf92b2f017c5df11713eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa6f7094a7abcf92b2f017c5df11713eb">&#9670;&nbsp;</a></span>libx52io_read_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int libx52io_read_timeout </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a> *&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structlibx52io__report.html">libx52io_report</a> *&#160;</td>
<td class="paramname"><em>report</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read and parse a HID report. </p>
<p>This function reads and parses a HID report from a connected joystick. This function will block until some data is available from the joystick, or the timeout is hit, whichever is first.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to the device context </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">report</td><td>Pointer to save the decoded HID report </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout value in milliseconds</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a> on read and parse success</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a0ac14ec601e2b6f8990a7a1300902c42">LIBX52IO_ERROR_INVALID</a> if the context or report pointers are not valid</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a79415c3c7fadab716c1a30781ca59278">LIBX52IO_ERROR_NO_DEVICE</a> if the device is disconnected</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344a3d76f4416444857fc9740ac9e240f0a5">LIBX52IO_ERROR_IO</a> if there was an error reading from the device, including if the device was disconnected during the read.</li>
<li><a class="el" href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344ac7f51d12f0f2d011408bbf7c78ddb69a">LIBX52IO_ERROR_TIMEOUT</a> if no report was read before timeout. </li>
</ul>
</dd></dl>
</div>
</div>
<a id="ga5d067ef607c6b1cf4e7899d4c28c9f9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5d067ef607c6b1cf4e7899d4c28c9f9d">&#9670;&nbsp;</a></span>libx52io_strerror()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* libx52io_strerror </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__libx52io.html#ga97c754361b4ac2fff7afb12598c8b344">libx52io_error_code</a>&#160;</td>
<td class="paramname"><em>code</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the string representation of an error code. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">code</td><td>Return code from one of the libx52io APIs</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>String representation of the error. This pointer must not be freed. </dd></dl>
</div>
</div>
</div><!-- contents -->
<div class="ttc" id="agroup__libx52io_html_ga3dd2cf8fe17324dc3a62fe1491f4cb9f"><div class="ttname"><a href="group__libx52io.html#ga3dd2cf8fe17324dc3a62fe1491f4cb9f">libx52io_init</a></div><div class="ttdeci">int libx52io_init(libx52io_context **ctx)</div><div class="ttdoc">Initialize the IO library.</div></div>
<div class="ttc" id="agroup__libx52io_html_gad29a5b097b9d5223c332609a10a296d1"><div class="ttname"><a href="group__libx52io.html#gad29a5b097b9d5223c332609a10a296d1">libx52io_context</a></div><div class="ttdeci">struct libx52io_context libx52io_context</div><div class="ttdoc">Device context structure used by libx52io.</div><div class="ttdef"><b>Definition:</b> libx52io.h:51</div></div>
<div class="ttc" id="agroup__libx52io_html_gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3"><div class="ttname"><a href="group__libx52io.html#gga97c754361b4ac2fff7afb12598c8b344aa0e7bdbfd58024e6e9c3abdd19f62dc3">LIBX52IO_SUCCESS</a></div><div class="ttdeci">@ LIBX52IO_SUCCESS</div><div class="ttdef"><b>Definition:</b> libx52io.h:60</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>