25 #ifdef HAVE_KERNEL_LIRC_H 26 #include <linux/lirc.h> 28 #include "include/media/lirc.h" 31 #include "lirc/release.h" 32 #include "lirc/receive.h" 33 #include "lirc/lirc_log.h" 37 static struct timeval release_time;
39 static struct ir_ncode* release_ncode;
41 static int release_reps;
42 static lirc_t release_gap;
45 static struct ir_ncode* release_ncode2;
50 void register_input(
void)
54 if (release_remote == NULL)
58 gap.tv_usec = release_gap;
60 gettimeofday(&release_time, NULL);
61 timeradd(&release_time, &gap, &release_time);
66 if (reps == 0 && release_remote != NULL) {
67 release_remote2 = release_remote;
68 release_ncode2 = release_ncode;
69 release_code2 = release_code;
72 release_remote = remote;
73 release_ncode = ncode;
77 release_gap = upper_limit(remote,
79 + receive_timeout(upper_limit(remote, remote->
min_gap_length)) + 10000;
81 log_trace(
"release_gap: %lu", release_gap);
86 void get_release_data(
const char** remote_name,
const char** button_name,
int* reps)
88 if (release_remote != NULL) {
89 *remote_name = release_remote->
name;
90 *button_name = release_ncode->
name;
93 *remote_name = *button_name =
"(NULL)";
98 void set_release_suffix(
const char* s)
103 void get_release_time(
struct timeval* tv)
108 const char* check_release_event(
const char** remote_name,
const char** button_name)
112 if (release_remote2 != NULL) {
113 *remote_name = release_remote2->
name;
114 *button_name = release_ncode2->
name;
117 release_remote2->
name,
118 release_ncode2->
name,
122 release_remote2 = NULL;
123 release_ncode2 = NULL;
137 const char* trigger_release_event(
const char** remote_name,
const char** button_name)
141 if (release_remote != NULL) {
143 *remote_name = release_remote->
name;
144 *button_name = release_ncode->
name;
147 release_remote->
name,
152 timerclear(&release_time);
153 release_remote = NULL;
154 release_ncode = NULL;
167 const char* release_map_remotes(
struct ir_remote* old,
struct ir_remote*
new,
const char** remote_name,
168 const char** button_name)
173 if (release_remote2 != NULL) {
175 log_error(
"release_remote2 still in use");
176 release_remote2 = NULL;
182 if (remote && ncode) {
183 release_remote = remote;
184 release_ncode = ncode;
186 return trigger_release_event(remote_name, button_name);
lirc_t max_total_signal_length
struct ir_ncode * get_code_by_name(const struct ir_remote *remote, const char *name)
struct ir_remote * get_ir_remote(const struct ir_remote *remotes, const char *name)
#define log_trace2(fmt,...)
#define log_error(fmt,...)
int write_message(char *buffer, size_t size, const char *remote_name, const char *button_name, const char *button_suffix, ir_code code, int reps)
#define log_trace(fmt,...)
const struct ir_remote * is_in_remotes(const struct ir_remote *remotes, const struct ir_remote *remote)
#define LIRC_RELEASE_SUFFIX