1 /*      $Id: lircd.h,v 5.19 2010/03/20 16:18:30 lirc Exp $      */
2 
3 /****************************************************************************
4  ** lircd.h *****************************************************************
5  ****************************************************************************
6  *
7  */
8 
9 #ifndef _LIRCD_H
10 #define _LIRCD_H
11 
12 #include <syslog.h>
13 #include <sys/time.h>
14 
15 #include "ir_remote.h"
16 
17 #define PACKET_SIZE (256)
18 #define WHITE_SPACE " \t"
19 
20 struct peer_connection {
21 	char *host;
22 	unsigned short port;
23 	struct timeval reconnect;
24 	int connection_failure;
25 	int socket;
26 };
27 
28 extern int debug;
29 
30 void sigterm(int sig);
31 void dosigterm(int sig);
32 void sighup(int sig);
33 void dosighup(int sig);
34 int setup_uinput(const char *name);
35 void config(void);
36 void nolinger(int sock);
37 void remove_client(int fd);
38 void add_client(int);
39 int add_peer_connection(char *server);
40 void connect_to_peers();
41 int get_peer_message(struct peer_connection *peer);
42 void start_server(mode_t permission, int nodaemon);
43 
44 #ifdef DEBUG
45 #define LOGPRINTF(level,fmt,args...)	\
46   if(level<=debug) logprintf(LOG_DEBUG,fmt, ## args )
47 #define LOGPERROR(level,s) \
48   if(level<=debug) logperror(LOG_DEBUG,s)
49 #else
50 #define LOGPRINTF(level,fmt,args...)	\
51   do {} while(0)
52 #define LOGPERROR(level,s) \
53   do {} while(0)
54 #endif
55 
56 void logprintf(int prio, const char *format_str, ...);
57 void logperror(int prio, const char *s);
58 
59 void daemonize(void);
60 void sigalrm(int sig);
61 void dosigalrm(int sig);
62 int parse_rc(int fd, char *message, char *arguments, struct ir_remote **remote, struct ir_ncode **code, int *reps,
63 	     int n, int *err);
64 int send_success(int fd, char *message);
65 int send_error(int fd, char *message, char *format_str, ...);
66 int send_remote_list(int fd, char *message);
67 int send_remote(int fd, char *message, struct ir_remote *remote);
68 int send_name(int fd, char *message, struct ir_ncode *code);
69 int list(int fd, char *message, char *arguments);
70 int set_transmitters(int fd, char *message, char *arguments);
71 int simulate(int fd, char *message, char *arguments);
72 int send_once(int fd, char *message, char *arguments);
73 int send_start(int fd, char *message, char *arguments);
74 int send_stop(int fd, char *message, char *arguments);
75 int send_core(int fd, char *message, char *arguments, int once);
76 int version(int fd, char *message, char *arguments);
77 int get_pid(int fd, char *message, char *arguments);
78 int get_command(int fd);
79 void input_message(const char *message, const char *remote_name, const char *button_name, int reps, int release);
80 void broadcast_message(const char *message);
81 int waitfordata(long maxusec);
82 void loop(void);
83 
84 struct protocol_directive {
85 	char *name;
86 	int (*function) (int fd, char *message, char *arguments);
87 };
88 
89 #endif /* _LIRCD_H */
90