Loading...
Searching...
No Matches
lirc_client.h
Go to the documentation of this file.
/****************************************************************************
** lirc_client.h ***********************************************************
****************************************************************************
*
* Copyright (C) 1998 Trent Piepho <xyzzy@u.washington.edu>
* Copyright (C) 1998 Christoph Bartelmus <lirc@bartelmus.de>
*
*/
#ifndef LIRC_CLIENT_H
#define LIRC_CLIENT_H
#include <errno.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <unistd.h>
#include "lirc/paths.h"
#include "lirc/lirc_config.h"
#include "lirc/curl_poll.h"
#ifdef __cplusplus
extern "C" {
#endif
#define LIRC_RET_SUCCESS (0)
#define LIRC_RET_ERROR (-1)
#define LIRC_ALL ((char*)(-1))
enum lirc_flags { none = 0x00,
once = 0x01,
quit = 0x02,
mode = 0x04,
ecno = 0x08,
startup_mode = 0x10,
toggle_reset = 0x20, };
struct lirc_list {
char* string;
struct lirc_list* next;
};
struct lirc_code {
char* remote;
char* button;
struct lirc_code* next;
};
struct lirc_config {
char* lircrc_class;
char* current_mode;
struct lirc_config_entry* next;
struct lirc_config_entry* first;
int sockfd;
};
struct lirc_config_entry {
char* prog;
struct lirc_code* code;
unsigned int rep_delay;
unsigned int ign_first_events;
unsigned int rep;
struct lirc_list* config;
char* change_mode;
unsigned int flags;
char* mode;
struct lirc_list* next_config;
struct lirc_code* next_code;
struct lirc_config_entry* next;
};
typedef struct {
char packet[PACKET_SIZE + 1];
char buffer[PACKET_SIZE + 1];
char reply[PACKET_SIZE + 1];
int head;
int reply_to_stdout;
char* next;
} lirc_cmd_ctx;
int lirc_init(const char* prog, int verbose);
void lirc_set_verbose(int verbose);
int lirc_deinit(void);
int lirc_readconfig(const char* path,
struct lirc_config** config,
int (check) (char* s));
void lirc_freeconfig(struct lirc_config* config);
char* lirc_nextir(void);
char* lirc_ir2char(struct lirc_config* config, char* code);
int lirc_nextcode(char** code);
int lirc_code2char(struct lirc_config* config, char* code, char** string);
/* new interface for client daemon */
int lirc_readconfig_only(const char* file,
struct lirc_config** config,
int (check) (char* s));
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);
const char* lirc_getmode(struct lirc_config* config);
const char* lirc_setmode(struct lirc_config* config, const char* mode);
/* 0.9.2: New interface for sending data. */
int lirc_command_init(lirc_cmd_ctx* ctx, const char* fmt, ...);
int lirc_command_run(lirc_cmd_ctx* ctx, int fd);
void lirc_command_reply_to_stdout(lirc_cmd_ctx* ctx);
int lirc_send_one(int fd, const char* remote, const char* keysym);
int lirc_simulate(int fd,
const char* remote,
const char* keysym,
int scancode,
int repeat);
int lirc_get_remote_socket(const char* address, int port, int quiet);
int lirc_get_local_socket(const char* path, int quiet);
#ifdef __cplusplus
}
#endif
#endif
lirc_send_one
int lirc_send_one(int fd, const char *remote, const char *keysym)
Send keysym using given remote.
Definition lirc_client.c:1995
lirc_get_local_socket
int lirc_get_local_socket(const char *path, int quiet)
Return an opened and connected file descriptor to local lirc socket.
Definition lirc_client.c:2056
lirc_nextir
char * lirc_nextir(void)
Definition lirc_client.c:1861
lirc_command_init
int lirc_command_init(lirc_cmd_ctx *ctx, const char *fmt,...)
Initiate a lirc_cmd_ctx to run a command.
Definition lirc_client.c:110
lirc_setmode
const char * lirc_setmode(struct lirc_config *config, const char *mode)
Set mode defined in lircrc.
Definition lirc_client.c:1967
lirc_deinit
int lirc_deinit(void)
Release resources allocated by lirc_init(), basically disconnect from socket.
Definition lirc_client.c:365
lirc_set_verbose
void lirc_set_verbose(int verbose)
Dynamically change the verbose level defined by lirc_init().
Definition lirc_client.c:384
lirc_readconfig
int lirc_readconfig(const char *path, struct lirc_config **config, int(check)(char *s))
Parse a lircrc configuration file.
Definition lirc_client.c:1447
lirc_ir2char
char * lirc_ir2char(struct lirc_config *config, char *code)
Definition lirc_client.c:1726
lirc_freeconfig
void lirc_freeconfig(struct lirc_config *config)
Deallocate an object retrieved using lirc_readconfig().
Definition lirc_client.c:1534
lirc_get_remote_socket
int lirc_get_remote_socket(const char *address, int port, int quiet)
Return an opened and connected file descriptor to remote lirc socket.
Definition lirc_client.c:2078
lirc_command_run
int lirc_command_run(lirc_cmd_ctx *ctx, int fd)
Run a command in non-blocking mode.
Definition lirc_client.c:190
lirc_code2char
int lirc_code2char(struct lirc_config *config, char *code, char **string)
Translate a code string to an application string using .lircrc.
Definition lirc_client.c:1813
lirc_readconfig_only
int lirc_readconfig_only(const char *file, struct lirc_config **config, int(check)(char *s))
Parse a lircrc configuration file without connecting to lircrcd.
Definition lirc_client.c:1526
lirc_getmode
const char * lirc_getmode(struct lirc_config *config)
Get mode defined in lircrc.
Definition lirc_client.c:1946
lirc_getsocketname
size_t lirc_getsocketname(const char *id, char *buf, size_t size)
Retrieve default lircrcd socket path.
Definition lirc_client.c:1937
lirc_command_reply_to_stdout
void lirc_command_reply_to_stdout(lirc_cmd_ctx *ctx)
Set command_ctx write_to_stdout flag.
Definition lirc_client.c:127
lirc_simulate
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 ...
Definition lirc_client.c:2010
lirc_nextcode
int lirc_nextcode(char **code)
Get next available code from the lircd daemon.
Definition lirc_client.c:1879
lirc_init
int lirc_init(const char *prog, int verbose)
Initial setup: connect to lircd socket.
Definition lirc_client.c:344
PACKET_SIZE
#define PACKET_SIZE
IR transmission packet size.
Definition lirc_config.h:84
lirc_cmd_ctx
The data needed to run a command on remote server.
Definition lirc_client.h:188
lirc_cmd_ctx::buffer
char buffer[PACKET_SIZE+1]
Reply IO buffer.
Definition lirc_client.h:190
lirc_cmd_ctx::reply_to_stdout
int reply_to_stdout
If true, write reply on stdout.
Definition lirc_client.h:193
lirc_cmd_ctx::next
char * next
Next newline-separated word in buffer.
Definition lirc_client.h:194
lirc_cmd_ctx::head
int head
First free buffer index.
Definition lirc_client.h:192
lirc_cmd_ctx::packet
char packet[PACKET_SIZE+1]
The packet to send.
Definition lirc_client.h:189
lirc_cmd_ctx::reply
char reply[PACKET_SIZE+1]
Command reply payload.
Definition lirc_client.h:191
lirc_code
Definition lirc_client.h:150
lirc_config_entry
Definition lirc_client.h:165
lirc_config
Definition lirc_client.h:156
lirc_config::lircrc_class
char * lircrc_class
The lircrc instance used, if any.
Definition lirc_client.h:157
lirc_list
Definition lirc_client.h:145