|  | LIRC libraries
    LinuxInfraredRemoteControl | 
Basic interface to 3-rd party applications. More...
| Files | |
| file | lirc_client.h | 
| 3-rd party application interface. | |
| Classes | |
| struct | lirc_cmd_ctx | 
| The data needed to run a command on remote server.  More... | |
| Functions | |
| int | lirc_init (const char *prog, int verbose) | 
| Initial setup: connect to lircd socket.  More... | |
| int | lirc_deinit (void) | 
| Release resources allocated by lirc_init(), basically disconnect from socket. | |
| int | lirc_readconfig (const char *path, struct lirc_config **config, int(check)(char *s)) | 
| Parse a lircrc configuration file.  More... | |
| void | lirc_freeconfig (struct lirc_config *config) | 
| Deallocate an object retrieved using lirc_readconfig().  More... | |
| char * | lirc_nextir (void) | 
| char * | lirc_ir2char (struct lirc_config *config, char *code) | 
| int | lirc_nextcode (char **code) | 
| Get next available code from the lircd daemon.  More... | |
| int | lirc_code2char (struct lirc_config *config, char *code, char **string) | 
| Translate a code string to an application string using .lircrc.  More... | |
| int | lirc_readconfig_only (const char *file, struct lirc_config **config, int(check)(char *s)) | 
| Parse a lircrc configuration file without connecting to lircrcd.  More... | |
| int | lirc_code2charprog (struct lirc_config *config, char *code, char **string, char **prog) | 
| size_t | lirc_getsocketname (const char *id, char *buf, size_t size) | 
| Retrieve default lircrcd socket path.  More... | |
| const char * | lirc_getmode (struct lirc_config *config) | 
| Get mode defined in lircrc.  More... | |
| const char * | lirc_setmode (struct lirc_config *config, const char *mode) | 
| Set mode defined in lircrc.  More... | |
| int | lirc_command_init (lirc_cmd_ctx *ctx, const char *fmt,...) | 
| Initiate a lirc_cmd_ctx to run a command.  More... | |
| int | lirc_command_run (lirc_cmd_ctx *ctx, int fd) | 
| Run a command in non-blocking mode.  More... | |
| void | lirc_command_reply_to_stdout (lirc_cmd_ctx *ctx) | 
| Set command_ctx write_to_stdout flag.  More... | |
| int | lirc_send_one (int fd, const char *remote, const char *keysym) | 
| Send keysym using given remote.  More... | |
| int | lirc_simulate (int fd, const char *remote, const char *keysym, int scancode, int repeat) | 
| Send a simulated lirc event.This call might block for some time since it involves communication with lircd.  More... | |
| int | lirc_get_remote_socket (const char *address, int port, int quiet) | 
| Return an opened and connected file descriptor to remote lirc socket.  More... | |
| int | lirc_get_local_socket (const char *path, int quiet) | 
| Return an opened and connected file descriptor to local lirc socket.  More... | |
Basic interface to 3-rd party applications.
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.
Receiving events from remotes could be done according to the following example, a stripped down version of the irexec(1) tool.
   #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);
   }
Some notes:
program = ... items in the lircrc config file.if (code == NULL) continue statement.Sending (blasting) is done according to following:
#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
    };
}
Notes:
| int lirc_code2char | ( | struct lirc_config * | config, | 
| char * | code, | ||
| char ** | string | ||
| ) | 
Translate a code string to an application string using .lircrc.
An translation might return more than one string so this function should be called several times until *string == NULL.
| config | Parsed lircrc data from e. g. lirc_readconfig(). | 
| code | Code string e. g., as from lirc_nextcode(). | 
| string | On successfull exit points to a static application string, NULL if no more translations are available. | 
Definition at line 1811 of file lirc_client.c.
| int lirc_command_init | ( | lirc_cmd_ctx * | ctx, | 
| const char * | fmt, | ||
| ... | |||
| ) | 
Initiate a lirc_cmd_ctx to run a command.
| ctx | Undefined om input, ready to execute on exit. | 
| fmt,... | printf-style formatting for command. Don't forget trailing "\n"! | 
lirc_command_init(&ctx, "CODE %s\n", code); Definition at line 110 of file lirc_client.c.
| void lirc_command_reply_to_stdout | ( | lirc_cmd_ctx * | ctx | ) | 
Set command_ctx write_to_stdout flag.
When set, the reply payload is written to stdout instead of the default behavior to store it in ctx->reply.
Definition at line 127 of file lirc_client.c.
| int lirc_command_run | ( | lirc_cmd_ctx * | ctx, | 
| int | fd | ||
| ) | 
Run a command in non-blocking mode.
| ctx | Initiated data on enter, possibly reply payload in ctx->reply on exit. | 
| fd | Open file connected to a lircd output socket. | 
Definition at line 190 of file lirc_client.c.
| void lirc_freeconfig | ( | struct lirc_config * | config | ) | 
Deallocate an object retrieved using lirc_readconfig().
Definition at line 1532 of file lirc_client.c.
| int lirc_get_local_socket | ( | const char * | path, | 
| int | quiet | ||
| ) | 
Return an opened and connected file descriptor to local lirc socket.
| path | Path to socket. If NULL use LIRC_SOCKET_PATH in environment, falling back to a hardcoded lircd default. | 
| quiet | If true, don't write error messages on stderr. | 
Definition at line 2054 of file lirc_client.c.
| int lirc_get_remote_socket | ( | const char * | address, | 
| int | port, | ||
| int | quiet | ||
| ) | 
Return an opened and connected file descriptor to remote lirc socket.
| address | Remote host to connect to. | 
| port | TCP port. If <= 0 uses hardcoded default LIRC_INET_PORT. | 
| quiet | If true, don't write error messages on stderr. | 
Definition at line 2076 of file lirc_client.c.
| const char* lirc_getmode | ( | struct lirc_config * | config | ) | 
Get mode defined in lircrc.
Will use lircrcd if available, else local data.
| config | Parsed lircrc file as obtained from lirc_readconfig() or lirc_readconfig_only(). | 
Definition at line 1944 of file lirc_client.c.
| size_t lirc_getsocketname | ( | const char * | id, | 
| char * | buf, | ||
| size_t | size | ||
| ) | 
Retrieve default lircrcd socket path.
| id | Optional socket id, defaults (id == NULL) to "default". | 
| buf | Return buffer. | 
| size | Size of return buffer. | 
Definition at line 1935 of file lirc_client.c.
| int lirc_init | ( | const char * | prog, | 
| int | verbose | ||
| ) | 
Initial setup: connect to lircd socket.
| prog | Name of client in logging contexts. | 
| verbose | Amount of debug info on stdout. | 
Definition at line 344 of file lirc_client.c.
| char* lirc_ir2char | ( | struct lirc_config * | config, | 
| char * | code | ||
| ) | 
Definition at line 1724 of file lirc_client.c.
| int lirc_nextcode | ( | char ** | code | ) | 
Get next available code from the lircd daemon.
| code | 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. | 
Definition at line 1877 of file lirc_client.c.
| char* lirc_nextir | ( | void | ) | 
Definition at line 1859 of file lirc_client.c.
| int lirc_readconfig | ( | const char * | path, | 
| struct lirc_config ** | config, | ||
| int(check)(char *s) | |||
| ) | 
Parse a lircrc configuration file.
This function will also try to connect to a lircrcd instance on the default socket which is derived from path.
| path | Path to lircrc config file. If NULL the default file is used. | 
| config | Undefined omn enter, on successfull exit a pointer to an allocated lirc_config instance. | 
| check | Callback function called with each configured application string as argument. Returns 0 if string is OK, else -1. | 
Definition at line 1445 of file lirc_client.c.
| int lirc_readconfig_only | ( | const char * | file, | 
| struct lirc_config ** | config, | ||
| int(check)(char *s) | |||
| ) | 
Parse a lircrc configuration file without connecting to lircrcd.
| path | Path to lircrc config file. If NULL the default file is used. | 
| config | Undefined omn enter, on successfull exit a pointer to an allocated lirc_config instance. | 
| check | Callback function called with each configured application string as argument. Returns o if string is OK, else -1. | 
Definition at line 1524 of file lirc_client.c.
| int lirc_send_one | ( | int | fd, | 
| const char * | remote, | ||
| const char * | keysym | ||
| ) | 
Send keysym using given remote.
This call might block for some time since it involves communication with lircd.
| fd | File descriptor for lircd socket. This must not be the descriptor returned by lirc_init(); open the socket using lirc_get_local_socket() or lirc_get_remote_socket()k instead. | 
| remote | Name of remote, the 'name' attribute in the config file. | 
| keysym | The code to send, as defined in the config file. | 
Definition at line 1993 of file lirc_client.c.
| const char* lirc_setmode | ( | struct lirc_config * | config, | 
| const char * | mode | ||
| ) | 
Set mode defined in lircrc.
Will use lircrcd if available, else use local data.
| config | Parsed lircrc file as obtained from lirc_readconfig() or lirc_readconfig_only(). | 
| mode | A new mode defined in lircrc. | 
Definition at line 1965 of file lirc_client.c.
| int lirc_simulate | ( | int | fd, | 
| const char * | remote, | ||
| const char * | keysym, | ||
| int | scancode, | ||
| int | repeat | ||
| ) | 
Send a simulated lirc event.This call might block for some time since it involves communication with lircd.
| fd | File descriptor for lircd socket. This must not be the descriptor returned by lirc_init; open the socket using lirc_get_local_socket() or lirc_get_remote_socket() instead. | 
| remote | Name of remote, the 'name' attribute in the config file. | 
| keysym | The code to send, as defined in the config file. | 
| scancode | The code bound the keysym in the config file. | 
| repeat | Number indicating how many times this code has been repeated, starts at 0, increased for each repetition. | 
Definition at line 2008 of file lirc_client.c.