LIRC libraries
LinuxInfraredRemoteControl
driver.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** driver.h **************************************************************
3 ****************************************************************************
4 *
5 * Copyright (C) 1999 Christoph Bartelmus <lirc@bartelmus.de>
6 *
7 */
8 
20 #ifndef _HARDWARE_H
21 #define _HARDWARE_H
22 
23 #include <glob.h>
24 
25 #ifdef HAVE_KERNEL_LIRC_H
26 #include <linux/lirc.h>
27 #else
28 #include "include/media/lirc.h"
29 #endif
30 
31 #include "lirc/ir_remote_types.h"
32 #include "lirc/curl_poll.h"
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
39 #define DRV_ERR_NOT_IMPLEMENTED 1
40 
42 int default_open(const char* path);
43 
45 int default_close(void);
46 
48 int default_drvctl(unsigned int cmd, void* arg);
49 
51 void glob_t_init(glob_t* glob);
52 
54 void glob_t_free(glob_t* glob);
55 
57 void glob_t_add_path(glob_t* glob, const char* path);
58 
60 struct option_t {
61  char key[32];
62  char value[64];
63 };
64 
69 int drv_handle_options(const char* options);
70 
71 
73 #define DRVCTL_GET_STATE 1
74 
76 #define DRVCTL_SEND_SPACE 2
77 
79 #define DRVCTL_SET_OPTION 3
80 
85 #define DRVCTL_GET_RAW_CODELENGTH 4
86 
96 #define DRVCTL_GET_DEVICES 5
97 
99 #define DRVCTL_FREE_DEVICES 6
100 
106 #define DRVCTL_NOTIFY_DECODE 7
107 
109 #define DRVCTL_MAX 128
110 
112 #define DRV_ERR_NOT_IMPLEMENTED 1
113 
115 #define DRV_ERR_BAD_STATE 2
116 
118 #define DRV_ERR_BAD_OPTION 3
119 
121 #define DRV_ERR_BAD_VALUE 4
122 
127 struct driver {
128 // Old-style implicit API version 1:
129 
134  const char* device;
135 
137  int fd;
138 
140  __u32 features;
141 
146  __u32 send_mode;
147 
152  __u32 rec_mode;
153 
155  const __u32 code_length;
156 
163  int (*const open_func) (const char* device);
164 
169  int (*const init_func)(void);
170 
175  int (*const deinit_func) (void);
176 
183  int (*const send_func)(struct ir_remote* remote,
184  struct ir_ncode* code);
185 
192  char* (*const rec_func)(struct ir_remote* remotes);
193 
197  int (*const decode_func)(struct ir_remote* remote,
198  struct decode_ctx_t* ctx);
199 
204  int (*const drvctl_func)(unsigned int cmd, void* arg);
205 
213  lirc_t (*const readdata)(lirc_t timeout);
214 
219  const char* name;
220 
225  unsigned int resolution;
226 
227 /* API version 2 addons: */
228 
229  const int api_version;
230  const char* driver_version;
231  const char* info;
233  int (*const close_func)(void);
235 /* API version 3 addons: */
249  const char* const device_hint;
250 };
251 
254 #ifdef IN_DRIVER
255 
256 extern struct driver drv;
257 #endif
258 
260 extern const struct driver* const curr_driver;
261 
262 
263 #ifdef __cplusplus
264 }
265 #endif
266 
267 #endif
__u32 features
Definition: driver.h:140
int default_close(void)
Definition: driver.c:79
int fd
Definition: driver.h:137
const char * info
Definition: driver.h:231
const struct driver *const curr_driver
Definition: driver.c:28
unsigned int resolution
Definition: driver.h:225
void glob_t_init(glob_t *glob)
Definition: driver.c:34
const __u32 code_length
Definition: driver.h:155
struct driver drv
Definition: driver.c:22
const char * driver_version
Definition: driver.h:230
const int api_version
Definition: driver.h:229
char *(*const rec_func)(struct ir_remote *remotes)
Definition: driver.h:192
int default_drvctl(unsigned int cmd, void *arg)
Definition: driver.c:84
Definition: driver.h:127
void glob_t_add_path(glob_t *glob, const char *path)
Definition: driver.c:42
int drv_handle_options(const char *options)
Definition: driver.c:90
const char *const device_hint
Definition: driver.h:249
const char * name
Definition: driver.h:219
__u32 send_mode
Definition: driver.h:146
int default_open(const char *path)
Definition: driver.c:64
ir_code code
__u32 rec_mode
Definition: driver.h:152
const char * device
Definition: driver.h:134
void glob_t_free(glob_t *glob)
Definition: driver.c:54