<!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.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>LIRC libraries: Client API</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="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</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="projectlogo"><img alt="Logo" src="diode-2.gif"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">LIRC libraries </div> <div id="projectbrief">LinuxInfraredRemoteControl</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&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&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 --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('group__lirc__client.html','');}); /* @license-end */ </script> <div id="doc-content"> <!-- 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="#files">Files</a> | <a href="#nested-classes">Classes</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Client API</div> </div> </div><!--header--> <div class="contents"> <p>Basic interface to 3-rd party applications. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> Files</h2></td></tr> <tr class="memitem:lirc__client_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="lirc__client_8h.html">lirc_client.h</a></td></tr> <tr class="memdesc:lirc__client_8h"><td class="mdescLeft"> </td><td class="mdescRight">3-rd party application interface. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The data needed to run a command on remote server. <a href="structlirc__cmd__ctx.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </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:gaf92c865f0895259aa40e2aed51c71001"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gaf92c865f0895259aa40e2aed51c71001">lirc_init</a> (const char *prog, int verbose)</td></tr> <tr class="memdesc:gaf92c865f0895259aa40e2aed51c71001"><td class="mdescLeft"> </td><td class="mdescRight">Initial setup: connect to lircd socket. <a href="#gaf92c865f0895259aa40e2aed51c71001">More...</a><br /></td></tr> <tr class="separator:gaf92c865f0895259aa40e2aed51c71001"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga50999022b09857ba43aa2f3f29c72b9e"><td class="memItemLeft" align="right" valign="top"><a id="ga50999022b09857ba43aa2f3f29c72b9e"></a> int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga50999022b09857ba43aa2f3f29c72b9e">lirc_deinit</a> (void)</td></tr> <tr class="memdesc:ga50999022b09857ba43aa2f3f29c72b9e"><td class="mdescLeft"> </td><td class="mdescRight">Release resources allocated by <a class="el" href="group__lirc__client.html#gaf92c865f0895259aa40e2aed51c71001" title="Initial setup: connect to lircd socket.">lirc_init()</a>, basically disconnect from socket. <br /></td></tr> <tr class="separator:ga50999022b09857ba43aa2f3f29c72b9e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga62e50c43a39bd8858d42bc11adf40972"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972">lirc_readconfig</a> (const char *path, struct <a class="el" href="structlirc__config.html">lirc_config</a> **config, int(check)(char *s))</td></tr> <tr class="memdesc:ga62e50c43a39bd8858d42bc11adf40972"><td class="mdescLeft"> </td><td class="mdescRight">Parse a lircrc configuration file. <a href="#ga62e50c43a39bd8858d42bc11adf40972">More...</a><br /></td></tr> <tr class="separator:ga62e50c43a39bd8858d42bc11adf40972"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga771f0592a8d378bc2ea314fdf4efa233"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga771f0592a8d378bc2ea314fdf4efa233">lirc_freeconfig</a> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config)</td></tr> <tr class="memdesc:ga771f0592a8d378bc2ea314fdf4efa233"><td class="mdescLeft"> </td><td class="mdescRight">Deallocate an object retrieved using <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a>. <a href="#ga771f0592a8d378bc2ea314fdf4efa233">More...</a><br /></td></tr> <tr class="separator:ga771f0592a8d378bc2ea314fdf4efa233"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafab5b5f56fb8bfb65b67d56d8426c2e1"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gafab5b5f56fb8bfb65b67d56d8426c2e1">lirc_nextir</a> (void)</td></tr> <tr class="separator:gafab5b5f56fb8bfb65b67d56d8426c2e1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab9031bb1af5f068bacb1fe0d1fc6ca81"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gab9031bb1af5f068bacb1fe0d1fc6ca81">lirc_ir2char</a> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config, char *code)</td></tr> <tr class="separator:gab9031bb1af5f068bacb1fe0d1fc6ca81"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf352dc9bb17d32c0f867ce5ca8a2f2d3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gaf352dc9bb17d32c0f867ce5ca8a2f2d3">lirc_nextcode</a> (char **code)</td></tr> <tr class="memdesc:gaf352dc9bb17d32c0f867ce5ca8a2f2d3"><td class="mdescLeft"> </td><td class="mdescRight">Get next available code from the lircd daemon. <a href="#gaf352dc9bb17d32c0f867ce5ca8a2f2d3">More...</a><br /></td></tr> <tr class="separator:gaf352dc9bb17d32c0f867ce5ca8a2f2d3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8cb15780179dec56adc42559ee964a68"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga8cb15780179dec56adc42559ee964a68">lirc_code2char</a> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config, char *code, char **string)</td></tr> <tr class="memdesc:ga8cb15780179dec56adc42559ee964a68"><td class="mdescLeft"> </td><td class="mdescRight">Translate a code string to an application string using .lircrc. <a href="#ga8cb15780179dec56adc42559ee964a68">More...</a><br /></td></tr> <tr class="separator:ga8cb15780179dec56adc42559ee964a68"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga94642edfbd32527a6a9b9c761be9ad90"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga94642edfbd32527a6a9b9c761be9ad90">lirc_readconfig_only</a> (const char *file, struct <a class="el" href="structlirc__config.html">lirc_config</a> **config, int(check)(char *s))</td></tr> <tr class="memdesc:ga94642edfbd32527a6a9b9c761be9ad90"><td class="mdescLeft"> </td><td class="mdescRight">Parse a lircrc configuration file without connecting to lircrcd. <a href="#ga94642edfbd32527a6a9b9c761be9ad90">More...</a><br /></td></tr> <tr class="separator:ga94642edfbd32527a6a9b9c761be9ad90"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga5d24b619ef689329ae2d085aa2bd412b"><td class="memItemLeft" align="right" valign="top"><a id="ga5d24b619ef689329ae2d085aa2bd412b"></a> int </td><td class="memItemRight" valign="bottom"><b>lirc_code2charprog</b> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config, char *code, char **string, char **prog)</td></tr> <tr class="separator:ga5d24b619ef689329ae2d085aa2bd412b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac572a64d1d7abbe776957c4fc7273bb7"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gac572a64d1d7abbe776957c4fc7273bb7">lirc_getsocketname</a> (const char *id, char *buf, size_t size)</td></tr> <tr class="memdesc:gac572a64d1d7abbe776957c4fc7273bb7"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve default lircrcd socket path. <a href="#gac572a64d1d7abbe776957c4fc7273bb7">More...</a><br /></td></tr> <tr class="separator:gac572a64d1d7abbe776957c4fc7273bb7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga5161b44df0f73abbc48db605c98c9279"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga5161b44df0f73abbc48db605c98c9279">lirc_getmode</a> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config)</td></tr> <tr class="memdesc:ga5161b44df0f73abbc48db605c98c9279"><td class="mdescLeft"> </td><td class="mdescRight">Get mode defined in lircrc. <a href="#ga5161b44df0f73abbc48db605c98c9279">More...</a><br /></td></tr> <tr class="separator:ga5161b44df0f73abbc48db605c98c9279"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga28252340557d024ff5238c69f3875a38"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga28252340557d024ff5238c69f3875a38">lirc_setmode</a> (struct <a class="el" href="structlirc__config.html">lirc_config</a> *config, const char *mode)</td></tr> <tr class="memdesc:ga28252340557d024ff5238c69f3875a38"><td class="mdescLeft"> </td><td class="mdescRight">Set mode defined in lircrc. <a href="#ga28252340557d024ff5238c69f3875a38">More...</a><br /></td></tr> <tr class="separator:ga28252340557d024ff5238c69f3875a38"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3787c58d32391a5b7c40337fdbee95fc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga3787c58d32391a5b7c40337fdbee95fc">lirc_command_init</a> (<a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> *ctx, const char *fmt,...)</td></tr> <tr class="memdesc:ga3787c58d32391a5b7c40337fdbee95fc"><td class="mdescLeft"> </td><td class="mdescRight">Initiate a <a class="el" href="structlirc__cmd__ctx.html" title="The data needed to run a command on remote server.">lirc_cmd_ctx</a> to run a command. <a href="#ga3787c58d32391a5b7c40337fdbee95fc">More...</a><br /></td></tr> <tr class="separator:ga3787c58d32391a5b7c40337fdbee95fc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga888d275e1b0cf4988e44fb15f24d2a99"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga888d275e1b0cf4988e44fb15f24d2a99">lirc_command_run</a> (<a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> *ctx, int fd)</td></tr> <tr class="memdesc:ga888d275e1b0cf4988e44fb15f24d2a99"><td class="mdescLeft"> </td><td class="mdescRight">Run a command in non-blocking mode. <a href="#ga888d275e1b0cf4988e44fb15f24d2a99">More...</a><br /></td></tr> <tr class="separator:ga888d275e1b0cf4988e44fb15f24d2a99"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gace4d40f00918d8bdf9a4f6df0fb0155d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gace4d40f00918d8bdf9a4f6df0fb0155d">lirc_command_reply_to_stdout</a> (<a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> *ctx)</td></tr> <tr class="memdesc:gace4d40f00918d8bdf9a4f6df0fb0155d"><td class="mdescLeft"> </td><td class="mdescRight">Set command_ctx write_to_stdout flag. <a href="#gace4d40f00918d8bdf9a4f6df0fb0155d">More...</a><br /></td></tr> <tr class="separator:gace4d40f00918d8bdf9a4f6df0fb0155d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0e86e3a29c14dc8047651e0bb9c49b31"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga0e86e3a29c14dc8047651e0bb9c49b31">lirc_send_one</a> (int fd, const char *remote, const char *keysym)</td></tr> <tr class="memdesc:ga0e86e3a29c14dc8047651e0bb9c49b31"><td class="mdescLeft"> </td><td class="mdescRight">Send keysym using given remote. <a href="#ga0e86e3a29c14dc8047651e0bb9c49b31">More...</a><br /></td></tr> <tr class="separator:ga0e86e3a29c14dc8047651e0bb9c49b31"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad5d41d33e0c1fc3002cdf8c0d9aa43d5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#gad5d41d33e0c1fc3002cdf8c0d9aa43d5">lirc_simulate</a> (int fd, const char *remote, const char *keysym, int scancode, int repeat)</td></tr> <tr class="memdesc:gad5d41d33e0c1fc3002cdf8c0d9aa43d5"><td class="mdescLeft"> </td><td class="mdescRight">Send a simulated lirc event.This call might block for some time since it involves communication with lircd. <a href="#gad5d41d33e0c1fc3002cdf8c0d9aa43d5">More...</a><br /></td></tr> <tr class="separator:gad5d41d33e0c1fc3002cdf8c0d9aa43d5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga81b8a02fdab2ef6d21930bbefabedf30"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga81b8a02fdab2ef6d21930bbefabedf30">lirc_get_remote_socket</a> (const char *address, int port, int quiet)</td></tr> <tr class="memdesc:ga81b8a02fdab2ef6d21930bbefabedf30"><td class="mdescLeft"> </td><td class="mdescRight">Return an opened and connected file descriptor to remote lirc socket. <a href="#ga81b8a02fdab2ef6d21930bbefabedf30">More...</a><br /></td></tr> <tr class="separator:ga81b8a02fdab2ef6d21930bbefabedf30"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga13cf4c784df60143d2b171645f4e84c1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__lirc__client.html#ga13cf4c784df60143d2b171645f4e84c1">lirc_get_local_socket</a> (const char *path, int quiet)</td></tr> <tr class="memdesc:ga13cf4c784df60143d2b171645f4e84c1"><td class="mdescLeft"> </td><td class="mdescRight">Return an opened and connected file descriptor to local lirc socket. <a href="#ga13cf4c784df60143d2b171645f4e84c1">More...</a><br /></td></tr> <tr class="separator:ga13cf4c784df60143d2b171645f4e84c1"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Basic interface to 3-rd party applications. </p> <p>The lirc_client interface is the basic interface for 3-rd party applications using lirc. It provides functions to retrieve , send and control button events to/from remotes.</p> <p>Receiving events from remotes could be done according to the following example, a stripped down version of the irexec(1) tool. </p><pre class="fragment"> #include "lirc_client.h" int main(int argc, char* argv[]) { const char* lircrc_path; struct lirc_config* config; char* code; char* s; // Check arguments... use argv[1] as lircrc config file path. lircrc_path = argc == 2 ? argv[1] : NULL; if (lirc_init("mythtv", 1) == -1) { // Process error and exit } if (lirc_readconfig(lircrc_path, &config, NULL) != 0) { // Process error and exit. } while (lirc_nextcode(&code) == 0) { if (code == NULL) continue; while (lirc_code2char(config, code, &s) == 0 && s != NULL) { // Do something with string s. } free(code); } lirc_freeconfig(config); lirc_deinit(); exit(0); } </pre><p>Some notes:</p><ul> <li><a class="el" href="group__lirc__client.html#gaf92c865f0895259aa40e2aed51c71001" title="Initial setup: connect to lircd socket.">lirc_init()</a> connects to the lircd daemon socket. The program given as argument is used when we later call <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a> to determine what translation(s) to use. Thus it should match the <code>program = ...</code> items in the lircrc config file.</li> <li><a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a> parses the lircrc config file into &config. Using NULL as path means that the default lircrc file is used.</li> <li><a class="el" href="group__lirc__client.html#gaf352dc9bb17d32c0f867ce5ca8a2f2d3" title="Get next available code from the lircd daemon.">lirc_nextcode()</a> reads the next button event from lircd. For the purposes here the returned code is just an opaque handle. It will sometimes return on a timeout without any data available, thus the <code>if (code == NULL) continue</code> statement.</li> <li><a class="el" href="group__lirc__client.html#ga8cb15780179dec56adc42559ee964a68" title="Translate a code string to an application string using .lircrc.">lirc_code2char()</a> translates the code handle to one ore more application specific string as defined in the licrrc file. Since more than one string can be returned <a class="el" href="group__lirc__client.html#ga8cb15780179dec56adc42559ee964a68" title="Translate a code string to an application string using .lircrc.">lirc_code2char()</a> should be called until it returns a NULL string.</li> <li>The complete source for this example is in <a class="el" href="irexec_8cpp-example.html">irexec.cpp</a></li> </ul> <p>Sending (blasting) is done according to following: </p><pre class="fragment">#include "lirc_client.h" int main(int argc, char** argv) { int fd; fd = lirc_get_local_socket(NULL, 0); if (fd < 0) { // Process error } if (lirc_send_one(fd, "name of remote", "Key symbol") == -1) { // Process errors }; } </pre><p>Notes:</p><ul> <li>Feeding NULL to <a class="el" href="group__lirc__client.html#ga13cf4c784df60143d2b171645f4e84c1" title="Return an opened and connected file descriptor to local lirc socket.">lirc_get_local_socket()</a> will make it use the default lircd socket. Doing so, it respects the LIRC_SOCKET_PATH environment variable.</li> <li>"Name of remote" is the mandatory name attribute in the lircd.conf config file.</li> <li>"Key symbol" is the name of a key definition in the lircd.conf file.</li> <li><a class="el" href="group__lirc__client.html#ga0e86e3a29c14dc8047651e0bb9c49b31" title="Send keysym using given remote.">lirc_send_one()</a> and <a class="el" href="group__lirc__client.html#gad5d41d33e0c1fc3002cdf8c0d9aa43d5" title="Send a simulated lirc event.This call might block for some time since it involves communication with ...">lirc_simulate()</a> are blocking. If you need to do non-blocking IO and/or access other functionality available you need to use <a class="el" href="group__lirc__client.html#ga3787c58d32391a5b7c40337fdbee95fc" title="Initiate a lirc_cmd_ctx to run a command.">lirc_command_init()</a> and <a class="el" href="group__lirc__client.html#ga888d275e1b0cf4988e44fb15f24d2a99" title="Run a command in non-blocking mode.">lirc_command_run()</a>. Example code is in <a class="el" href="irsend_8cpp-example.html">irsend.cpp</a>. </li> </ul> <h2 class="groupheader">Function Documentation</h2> <a id="ga8cb15780179dec56adc42559ee964a68"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga8cb15780179dec56adc42559ee964a68">◆ </a></span>lirc_code2char()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_code2char </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> * </td> <td class="paramname"><em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>code</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"><em>string</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Translate a code string to an application string using .lircrc. </p> <p>An translation might return more than one string so this function should be called several times until *string == NULL.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">config</td><td>Parsed lircrc data from e. g. <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a>. </td></tr> <tr><td class="paramname">code</td><td>Code string e. g., as from <a class="el" href="group__lirc__client.html#gaf352dc9bb17d32c0f867ce5ca8a2f2d3" title="Get next available code from the lircd daemon.">lirc_nextcode()</a>. </td></tr> <tr><td class="paramname">string</td><td>On successfull exit points to a static application string, NULL if no more translations are available. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01811">1811</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga3787c58d32391a5b7c40337fdbee95fc"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga3787c58d32391a5b7c40337fdbee95fc">◆ </a></span>lirc_command_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_command_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initiate a <a class="el" href="structlirc__cmd__ctx.html" title="The data needed to run a command on remote server.">lirc_cmd_ctx</a> to run a command. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Undefined om input, ready to execute on exit. </td></tr> <tr><td class="paramname">fmt,...</td><td>printf-style formatting for command. Don't forget trailing "\n"! </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on OK, else a kernel error code. </dd></dl> <dl class="section note"><dt>Note</dt><dd>Simple example: <code>lirc_command_init(&ctx, "CODE %s\n", code)</code>; </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l00110">110</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gace4d40f00918d8bdf9a4f6df0fb0155d"></a> <h2 class="memtitle"><span class="permalink"><a href="#gace4d40f00918d8bdf9a4f6df0fb0155d">◆ </a></span>lirc_command_reply_to_stdout()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lirc_command_reply_to_stdout </td> <td>(</td> <td class="paramtype"><a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set command_ctx write_to_stdout flag. </p> <p>When set, the reply payload is written to stdout instead of the default behavior to store it in ctx->reply. </p><dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l00127">127</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga888d275e1b0cf4988e44fb15f24d2a99"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga888d275e1b0cf4988e44fb15f24d2a99">◆ </a></span>lirc_command_run()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_command_run </td> <td>(</td> <td class="paramtype"><a class="el" href="structlirc__cmd__ctx.html">lirc_cmd_ctx</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>fd</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Run a command in non-blocking mode. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Initiated data on enter, possibly reply payload in ctx->reply on exit. </td></tr> <tr><td class="paramname">fd</td><td>Open file connected to a lircd output socket. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on OK, else a kernel error code (possibly EAGAIN). </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l00190">190</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga771f0592a8d378bc2ea314fdf4efa233"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga771f0592a8d378bc2ea314fdf4efa233">◆ </a></span>lirc_freeconfig()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lirc_freeconfig </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> * </td> <td class="paramname"><em>config</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Deallocate an object retrieved using <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a>. </p> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01532">1532</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga13cf4c784df60143d2b171645f4e84c1"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga13cf4c784df60143d2b171645f4e84c1">◆ </a></span>lirc_get_local_socket()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_get_local_socket </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>quiet</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Return an opened and connected file descriptor to local lirc socket. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>Path to socket. If NULL use LIRC_SOCKET_PATH in environment, falling back to a hardcoded lircd default. </td></tr> <tr><td class="paramname">quiet</td><td>If true, don't write error messages on stderr. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>positive file descriptor on success, else a negated kernel error code. </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l02054">2054</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga81b8a02fdab2ef6d21930bbefabedf30"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga81b8a02fdab2ef6d21930bbefabedf30">◆ </a></span>lirc_get_remote_socket()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_get_remote_socket </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>address</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>port</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>quiet</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Return an opened and connected file descriptor to remote lirc socket. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">address</td><td>Remote host to connect to. </td></tr> <tr><td class="paramname">port</td><td>TCP port. If <= 0 uses hardcoded default LIRC_INET_PORT. </td></tr> <tr><td class="paramname">quiet</td><td>If true, don't write error messages on stderr. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>positive file descriptor on success, else a negated kernel error code. </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l02076">2076</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga5161b44df0f73abbc48db605c98c9279"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga5161b44df0f73abbc48db605c98c9279">◆ </a></span>lirc_getmode()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* lirc_getmode </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> * </td> <td class="paramname"><em>config</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get mode defined in lircrc. </p> <p>Will use lircrcd if available, else local data.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">config</td><td>Parsed lircrc file as obtained from <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a> or <a class="el" href="group__lirc__client.html#ga94642edfbd32527a6a9b9c761be9ad90" title="Parse a lircrc configuration file without connecting to lircrcd.">lirc_readconfig_only()</a>. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Current mode or NULL on errors. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01944">1944</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gac572a64d1d7abbe776957c4fc7273bb7"></a> <h2 class="memtitle"><span class="permalink"><a href="#gac572a64d1d7abbe776957c4fc7273bb7">◆ </a></span>lirc_getsocketname()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t lirc_getsocketname </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>size</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Retrieve default lircrcd socket path. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">id</td><td>Optional socket id, defaults (id == NULL) to "default". </td></tr> <tr><td class="paramname">buf</td><td>Return buffer. </td></tr> <tr><td class="paramname">size</td><td>Size of return buffer. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01935">1935</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gaf92c865f0895259aa40e2aed51c71001"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaf92c865f0895259aa40e2aed51c71001">◆ </a></span>lirc_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_init </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>prog</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>verbose</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initial setup: connect to lircd socket. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">prog</td><td>Name of client in logging contexts. </td></tr> <tr><td class="paramname">verbose</td><td>Amount of debug info on stdout. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>positive file descriptor or -1 + error in global errno. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l00344">344</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gab9031bb1af5f068bacb1fe0d1fc6ca81"></a> <h2 class="memtitle"><span class="permalink"><a href="#gab9031bb1af5f068bacb1fe0d1fc6ca81">◆ </a></span>lirc_ir2char()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* lirc_ir2char </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> * </td> <td class="paramname"><em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>code</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>obsolete </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01724">1724</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gaf352dc9bb17d32c0f867ce5ca8a2f2d3"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaf352dc9bb17d32c0f867ce5ca8a2f2d3">◆ </a></span>lirc_nextcode()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_nextcode </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"><em>code</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get next available code from the lircd daemon. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">code</td><td>Undefined on enter. On exit either NULL if no complete code was available, else a pointer to a malloc()'d code string. Caller should eventually free() this. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0 indicating either a complete code in *code or that nothing was available. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01877">1877</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gafab5b5f56fb8bfb65b67d56d8426c2e1"></a> <h2 class="memtitle"><span class="permalink"><a href="#gafab5b5f56fb8bfb65b67d56d8426c2e1">◆ </a></span>lirc_nextir()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* lirc_nextir </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>obsolete </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01859">1859</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga62e50c43a39bd8858d42bc11adf40972"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga62e50c43a39bd8858d42bc11adf40972">◆ </a></span>lirc_readconfig()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_readconfig </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> ** </td> <td class="paramname"><em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(check)(char *s) </td> <td class="paramname"> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Parse a lircrc configuration file. </p> <p>This function will also try to connect to a lircrcd instance on the default socket which is derived from path.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>Path to lircrc config file. If NULL the default file is used. </td></tr> <tr><td class="paramname">config</td><td>Undefined omn enter, on successfull exit a pointer to an allocated <a class="el" href="structlirc__config.html">lirc_config</a> instance. </td></tr> <tr><td class="paramname">check</td><td>Callback function called with each configured application string as argument. Returns 0 if string is OK, else -1. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01445">1445</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga94642edfbd32527a6a9b9c761be9ad90"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga94642edfbd32527a6a9b9c761be9ad90">◆ </a></span>lirc_readconfig_only()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_readconfig_only </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> ** </td> <td class="paramname"><em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(check)(char *s) </td> <td class="paramname"> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Parse a lircrc configuration file without connecting to lircrcd. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>Path to lircrc config file. If NULL the default file is used. </td></tr> <tr><td class="paramname">config</td><td>Undefined omn enter, on successfull exit a pointer to an allocated <a class="el" href="structlirc__config.html">lirc_config</a> instance. </td></tr> <tr><td class="paramname">check</td><td>Callback function called with each configured application string as argument. Returns o if string is OK, else -1. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01524">1524</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga0e86e3a29c14dc8047651e0bb9c49b31"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga0e86e3a29c14dc8047651e0bb9c49b31">◆ </a></span>lirc_send_one()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_send_one </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>remote</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>keysym</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Send keysym using given remote. </p> <p>This call might block for some time since it involves communication with lircd.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">fd</td><td>File descriptor for lircd socket. This must not be the descriptor returned by <a class="el" href="group__lirc__client.html#gaf92c865f0895259aa40e2aed51c71001" title="Initial setup: connect to lircd socket.">lirc_init()</a>; open the socket using <a class="el" href="group__lirc__client.html#ga13cf4c784df60143d2b171645f4e84c1" title="Return an opened and connected file descriptor to local lirc socket.">lirc_get_local_socket()</a> or <a class="el" href="group__lirc__client.html#ga81b8a02fdab2ef6d21930bbefabedf30" title="Return an opened and connected file descriptor to remote lirc socket.">lirc_get_remote_socket()</a>k instead. </td></tr> <tr><td class="paramname">remote</td><td>Name of remote, the 'name' attribute in the config file. </td></tr> <tr><td class="paramname">keysym</td><td>The code to send, as defined in the config file. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01993">1993</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="ga28252340557d024ff5238c69f3875a38"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga28252340557d024ff5238c69f3875a38">◆ </a></span>lirc_setmode()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* lirc_setmode </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structlirc__config.html">lirc_config</a> * </td> <td class="paramname"><em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>mode</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set mode defined in lircrc. </p> <p>Will use lircrcd if available, else use local data.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">config</td><td>Parsed lircrc file as obtained from <a class="el" href="group__lirc__client.html#ga62e50c43a39bd8858d42bc11adf40972" title="Parse a lircrc configuration file.">lirc_readconfig()</a> or <a class="el" href="group__lirc__client.html#ga94642edfbd32527a6a9b9c761be9ad90" title="Parse a lircrc configuration file without connecting to lircrcd.">lirc_readconfig_only()</a>. </td></tr> <tr><td class="paramname">mode</td><td>A new mode defined in lircrc. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>New mode, should match mode unless there is errors. </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l01965">1965</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> <a id="gad5d41d33e0c1fc3002cdf8c0d9aa43d5"></a> <h2 class="memtitle"><span class="permalink"><a href="#gad5d41d33e0c1fc3002cdf8c0d9aa43d5">◆ </a></span>lirc_simulate()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lirc_simulate </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>remote</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>keysym</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>scancode</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>repeat</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Send a simulated lirc event.This call might block for some time since it involves communication with lircd. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">fd</td><td>File descriptor for lircd socket. This must not be the descriptor returned by lirc_init; open the socket using <a class="el" href="group__lirc__client.html#ga13cf4c784df60143d2b171645f4e84c1" title="Return an opened and connected file descriptor to local lirc socket.">lirc_get_local_socket()</a> or <a class="el" href="group__lirc__client.html#ga81b8a02fdab2ef6d21930bbefabedf30" title="Return an opened and connected file descriptor to remote lirc socket.">lirc_get_remote_socket()</a> instead. </td></tr> <tr><td class="paramname">remote</td><td>Name of remote, the 'name' attribute in the config file. </td></tr> <tr><td class="paramname">keysym</td><td>The code to send, as defined in the config file. </td></tr> <tr><td class="paramname">scancode</td><td>The code bound the keysym in the config file. </td></tr> <tr><td class="paramname">repeat</td><td>Number indicating how many times this code has been repeated, starts at 0, increased for each repetition. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 on errors, else 0. </dd></dl> <dl class="section since"><dt>Since</dt><dd>0.9.2 </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc__client_8c_source.html#l02008">2008</a> of file <a class="el" href="lirc__client_8c_source.html">lirc_client.c</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li> </ul> </div> </body> </html>