25 #ifdef HAVE_KERNEL_LIRC_H    26 #include <linux/lirc.h>    28 #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;
    54         if (release_remote == NULL)
    58         gap.tv_usec = release_gap;
    60         gettimeofday(&release_time, NULL);
    61         timeradd(&release_time, &gap, &release_time);
    69         if (reps == 0 && release_remote != NULL) {
    70                 release_remote2 = release_remote;
    71                 release_ncode2 = release_ncode;
    72                 release_code2 = release_code;
    75         release_remote = remote;
    76         release_ncode = ncode;
    80         release_gap = upper_limit(remote,
    83                       + receive_timeout(upper_limit(remote,
    86         log_trace(
"release_gap: %lu", release_gap);
    90 void get_release_data(
const char** remote_name,
    91                       const char** button_name,
    94         if (release_remote != NULL) {
    95                 *remote_name = release_remote->
name;
    96                 *button_name = release_ncode->
name;
    99                 *remote_name = *button_name = 
"(NULL)";
   104 void set_release_suffix(
const char* s)
   114 const char* check_release_event(
const char** remote_name,
   115                                 const char** button_name)
   119         if (release_remote2 != NULL) {
   120                 *remote_name = release_remote2->
name;
   121                 *button_name = release_ncode2->
name;
   124                                     release_remote2->
name,
   125                                     release_ncode2->
name,
   129                 release_remote2 = NULL;
   130                 release_ncode2 = NULL;
   145                                   const char** button_name)
   149         if (release_remote != NULL) {
   151                 *remote_name = release_remote->
name;
   152                 *button_name = release_ncode->
name;
   155                                     release_remote->
name,
   160                 timerclear(&release_time);
   161                 release_remote = NULL;
   162                 release_ncode = NULL;
   175 const char* release_map_remotes(
struct ir_remote* old,
   177                                 const char**      remote_name,
   178                                 const char**      button_name)
   183         if (release_remote2 != NULL) {
   185                 log_error(
"release_remote2 still in use");
   186                 release_remote2 = NULL;
   192                 if (remote && ncode) {
   193                         release_remote = remote;
   194                         release_ncode = ncode;
 One remote as represented in the configuration file. 
lirc_t max_total_signal_length
how long is the longest signal including gap 
void get_release_time(struct timeval *tv)
Get time for pending release event if it exists, else a noop. 
const char * name
name of remote control 
struct ir_ncode * get_code_by_name(const struct ir_remote *remote, const char *name)
Return code with given name in remote's list of codes or NULL. 
struct ir_remote * get_ir_remote(const struct ir_remote *remotes, const char *name)
Return ir_remote with given name in remotes list, or NULL if not found. 
lirc_t min_gap_length
how long is the shortest gap 
#define PACKET_SIZE
IR transmission packet size. 
logchannel_t
Log channels used to filter messages. 
char * name
Name of command. 
#define log_trace2(fmt,...)
Log a trace2 message. 
#define log_error(fmt,...)
Log an error message. 
const char * trigger_release_event(const char **remote_name, const char **button_name)
If there is a release event pending clears the release timer and formats a complete client message...
void register_button_press(struct ir_remote *remote, struct ir_ncode *ncode, ir_code code, int reps)
Set up pending release events for given button, including the release_gap. 
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)
Formats the arguments into a readable string. 
#define log_trace(fmt,...)
Log a trace message. 
void register_input(void)
If there is a pending release event, set timer to current time + release_gap. 
const struct ir_remote * is_in_remotes(const struct ir_remote *remotes, const struct ir_remote *remote)
Test if a given remote is in a list of remotes. 
#define LIRC_RELEASE_SUFFIX
Suffix added to release events. 
IR Command, corresponding to one (command defining) line of the configuration file. 
int release_detected
set by release generator 
uint64_t ir_code
Denotes an internal coded representation for an IR transmission.