LIRC libraries LinuxInfraredRemoteControl

- Main Page
- Related Pages
- Modules
- Data Structures
- Files
- Examples

Files | Data Structures | Macros | Functions | Variables
User-space driver API

User-space driver API. More...

## Files
file | driver.h
| Interface to the userspace drivers.
file | ir_remote.h
| Describes and decodes the signals from IR remotes.
file | lirc_config.h
| Local configuration constants not managed by autotools.
file | lirc_log.h
| Logging functionality.
file | receive.h
| Functions that decode IR codes.
file | serial.h
| Common routines for hw that uses the standard serial port driver.
file | transmit.h
| Functions that prepare IR codes for transmitting.

## Data Structures
struct | option_t
struct | driver

## Macros
#define | DRV_ERR_NOT_IMPLEMENTED 1
#define | DRVCTL_GET_STATE 1
#define | DRVCTL_SEND_SPACE 2
#define | DRVCTL_SET_OPTION 3
#define | DRVCTL_MAX 128
#define | DRV_ERR_BAD_STATE 2
#define | DRV_ERR_BAD_OPTION 3
#define | DRV_ERR_BAD_VALUE 4
#define | MIN_RECEIVE_TIMEOUT 100000
#define | WBUF_SIZE 256

## Functions
int | default_open (const char *path)
int | default_close (void)
int | default_drvctl (unsigned int cmd, void *arg)
int | drv_handle_options (const char *options)
struct ir_ncode * | ncode_dup (struct ir_ncode *ncode)
void | ncode_free (struct ir_ncode *ncode)
const struct ir_remote * | is_in_remotes (const struct ir_remote *remotes, const struct ir_remote *remote)
struct ir_remote * | get_ir_remote (const struct ir_remote *remotes, const char *name)
void | get_frequency_range (const struct ir_remote *remotes, unsigned int *min_freq, unsigned int *max_freq)
void | get_filter_parameters (const struct ir_remote *remotes, lirc_t *max_gap_lengthp, lirc_t *min_pulse_lengthp, lirc_t *min_space_lengthp, lirc_t *max_pulse_lengthp, lirc_t *max_space_lengthp)
int | map_code (const struct ir_remote *remote, struct decode_ctx_t *ctx, int pre_bits, ir_code pre, int bits, ir_code code, int post_bits, ir_code post)
void | map_gap (const struct ir_remote *remote, struct decode_ctx_t *ctx, const struct timeval *start, const struct timeval *last, lirc_t signal_length)
struct ir_ncode * | get_code_by_name (const struct ir_remote *remote, const char *name)
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)
char * | decode_all (struct ir_remote *remotes)
int | send_ir_ncode (struct ir_remote *remote, struct ir_ncode *code, int delay)
void | ir_remote_init (int use_dyncodes)
const struct ir_remote * | get_decoding (void)
void | rec_set_update_mode (int mode)
void | rec_buffer_set_logfile (FILE *f)
int | waitfordata (__u32 maxusec)
void | rec_buffer_init (void)
int | rec_buffer_clear (void)
int | receive_decode (struct ir_remote *remote, struct decode_ctx_t *ctx)
void | rec_buffer_rewind (void)
void | rec_buffer_reset_wptr (void)
int | tty_reset (int fd)
int | tty_setrtscts (int fd, int enable)
int | tty_setdtr (int fd, int enable)
int | tty_setbaud (int fd, int baud)
int | tty_setcsize (int fd, int csize)
int | tty_create_lock (const char *name)
int | tty_delete_lock (void)
int | tty_set (int fd, int rts, int dtr)
int | tty_clear (int fd, int rts, int dtr)
int | tty_write (int fd, char byte)
int | tty_read (int fd, char *byte)
int | tty_write_echo (int fd, char byte)
void | send_buffer_init (void)
int | send_buffer_put (struct ir_remote *remote, struct ir_ncode *code)
int | send_buffer_length (void)
const lirc_t * | send_buffer_data (void)
lirc_t | send_buffer_sum (void)

## Variables
struct ir_remote * | last_remote
struct ir_remote * | repeat_remote
struct ir_ncode * | repeat_code

## Detailed Description

User-space driver API.

Basic interface for user-space drivers, aimed to be included in each driver. It provides basic functionality for sending, receiving and logging.

## Macro Definition Documentation

#define DRV_ERR_BAD_OPTION 3

drvctl error:

Definition at line 74 of file driver.h.

#define DRV_ERR_BAD_STATE 2

drvctl error:

Definition at line 71 of file driver.h.

#define DRV_ERR_BAD_VALUE 4

drvctl error:

Definition at line 77 of file driver.h.

#define DRV_ERR_NOT_IMPLEMENTED 1

drvctl definitions

drvctl error.

Definition at line 68 of file driver.h.

#define DRV_ERR_NOT_IMPLEMENTED 1

drvctl definitions

drvctl error.

Definition at line 68 of file driver.h.

#define DRVCTL_GET_STATE 1

Drvctl cmd: return current state as an int in *arg.

Definition at line 56 of file driver.h.

#define DRVCTL_MAX 128

Last well-known command. Remaining is used in driver-specific controls.

Definition at line 65 of file driver.h.

#define DRVCTL_SEND_SPACE 2

Drvctl cmd: Send long space. Arg is pulselength (us, an int).

Definition at line 59 of file driver.h.

#define DRVCTL_SET_OPTION 3

Drvctl cmd: Set driver options. Arg is *struct option_t.

Definition at line 62 of file driver.h.

#define MIN_RECEIVE_TIMEOUT 100000

Min value returned by receive_timeout.

Definition at line 34 of file receive.h.

## Function Documentation

char* decode_all | ( | struct ir_remote * | remotes | ) |

Tries to decode current signal trying all known remotes. This is non-blocking, failures could be retried later when more data is available.

Parameters

  remotes | Parsed lircd.conf file as returned by read_config()

Returns
  NULL on errors or no data available. Else a dynamically allocated string like "000000000000fad3 00 KEY_POWER apple". Caller owns string and eventually de-allocates it.

Definition at line 724 of file ir_remote.c.

int default_close | ( | void |  | ) |

For now, a placeholder.

Definition at line 43 of file driver.c.

int default_drvctl | ( | unsigned int | cmd,
|  | void * | arg
| ) |  |

Return DRVCTL_ERR_NOTIMPLEMENTED.

Definition at line 48 of file driver.c.

int default_open | ( | const char * | path | ) |

Stores path in drv.device if non-null.

Definition at line 28 of file driver.c.

int drv_handle_options | ( | const char * | options | ) |

Parse an option string "key:value;key:value..." and invoke drvctl DRV_SET_OPTION as appropriate.

Definition at line 54 of file driver.c.

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.

Definition at line 389 of file ir_remote.c.

const struct ir_remote* get_decoding | ( | void |  | ) |

Return pointer to currently decoded remote.

Definition at line 847 of file ir_remote.c.

void get_filter_parameters | ( | const struct ir_remote * | remotes,
|  | lirc_t * | max_gap_lengthp,
|  | lirc_t * | min_pulse_lengthp,
|  | lirc_t * | min_space_lengthp,
|  | lirc_t * | max_pulse_lengthp,
|  | lirc_t * | max_space_lengthp
| ) |  |

Parameters

  remotes |
  max_gap_lengthp |
  min_pulse_lengthp |
  min_space_lengthp |
  max_pulse_lengthp |
  max_space_lengthp |

Definition at line 185 of file ir_remote.c.

void get_frequency_range | ( | const struct ir_remote * | remotes,
|  | unsigned int * | min_freq,
|  | unsigned int * | max_freq
| ) |  |

Parameters

  remotes |
  min_freq |
  max_freq |

Definition at line 148 of file ir_remote.c.

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.

Definition at line 243 of file ir_remote.c.

void ir_remote_init | ( | int | use_dyncodes | ) |

Initiate: define if dynamic codes should be used.

Parameters

  use_dyncodes | Should normally reflect "lircd:dynamic-codes" option.

Definition at line 116 of file ir_remote.c.

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.

Parameters

  remotes | Head of linked list of remotes (using remote.next).
  remote | Pointer to remote to check

Returns
  1 if remote exists in remotes list, else 0

Parameters

  remotes |
  remote |

Returns

Definition at line 231 of file ir_remote.c.

int map_code | ( | const struct ir_remote * | remote,
|  | struct decode_ctx_t * | ctx,
|  | int | pre_bits,
|  | ir_code | pre,
|  | int | bits,
|  | ir_code | code,
|  | int | post_bits,
|  | ir_code | post
| ) |  |

Parameters

  remote |
  prep |
  codep |
  postp |
  pre_bits |
  pre |
  bits |
  code |
  post_bits |
  post |

Returns

Definition at line 275 of file ir_remote.c.

void map_gap | ( | const struct ir_remote * | remote,
|  | struct decode_ctx_t * | ctx,
|  | const struct timeval * | start,
|  | const struct timeval * | last,
|  | lirc_t | signal_length
| ) |  |

Parameters

  remote |
  start |
  last |
  signal_length |
  repeat_flagp |
  min_remaining_gapp |
  max_remaining_gapp |

Definition at line 321 of file ir_remote.c.

struct ir_ncode* ncode_dup | ( | struct ir_ncode * | ncode | ) |

Create a malloc'd, deep copy of ncode. Use ncode_free() to dispose().

Create a malloc'd, deep copy of ncode. Use ncode_free() to dispose.

Definition at line 61 of file ir_remote.c.

void ncode_free | ( | struct ir_ncode * | ncode | ) |

Dispose an ir_ncode instance obtained from ncode_dup().

Definition at line 96 of file ir_remote.c.

int rec_buffer_clear | ( | void |  | ) |

Flush the internal fifo and store a single code read from the driver in it.

Definition at line 217 of file receive.c.

void rec_buffer_init | ( | void |  | ) |

Clear internal buffer to pristine state.

Definition at line 197 of file receive.c.

void rec_buffer_reset_wptr | ( | void |  | ) |

Reset internal fifo's write pointer.

Definition at line 212 of file receive.c.

void rec_buffer_rewind | ( | void |  | ) |

Reset the modules's internal fifo's read state to initial values where the nothing is read. The write pointer is not affected.

Definition at line 202 of file receive.c.

void rec_buffer_set_logfile | ( | FILE * | f | ) |

Set a file logging input from driver in same format as mode2(1).

Parameters

  f | Open file to write on or NULL to disable logging.

Definition at line 184 of file receive.c.

void rec_set_update_mode | ( | int | mode | ) |

Set update mode, where recorded pre_data is verified to match the template pre_data. By defaulöt false.

Definition at line 61 of file receive.c.

int receive_decode | ( | struct ir_remote * | remote,
|  | struct decode_ctx_t * | ctx
| ) |  |

Decode data from remote

Parameters

  ctx | Undefined on enter. On exit, the fields in the structure are defined.

Definition at line 1034 of file receive.c.

const lirc_t* send_buffer_data | ( | void |  | ) |

Returns
  Pointer to timing data in microseconds for pulses/spaces.

Definition at line 372 of file transmit.c.

void send_buffer_init | ( | void |  | ) |

Clear and re-initiate the buffer.

Initializes the global sending buffer. (Just fills it with zeros.)

Definition at line 55 of file transmit.c.

int send_buffer_length | ( | void |  | ) |

Returns
  Number of items accessible in array send_buffer_data().

Do not document this function

Definition at line 366 of file transmit.c.

int send_buffer_put | ( | struct ir_remote * | remote,
|  | struct ir_ncode * | code
| ) |  |

Initializes the global send buffer for transmitting the code in the second argument, residing in the remote in the first.

Parameters

  remote | ir_remote containing code to send.
  code | ir_ncode to send.

Returns
  0 on failures, else 1.

Definition at line 348 of file transmit.c.

lirc_t send_buffer_sum | ( | void |  | ) |

Returns
  Total length of send buffer in microseconds.

Definition at line 377 of file transmit.c.

int send_ir_ncode | ( | struct ir_remote * | remote,
|  | struct ir_ncode * | code,
|  | int | delay
| ) |  |

Transmits the actual code in the second argument by calling the current hardware driver. The processing depends on global repeat-remote. If this is not-NULL, the codes are sent using repeat formatting if the remote supports it.

Parameters

  remote | Currently active remote, used as database for timing, and as keeper of an internal state.
  code | IR code to be transmitted
  delay | If true (normal case), generate a delay corresponding to the time it takes to send the code. If not (test case), don't.

Returns
  Non-zero if success.

Definition at line 816 of file ir_remote.c.

int tty_clear | ( | int | fd,
|  | int | rts,
|  | int | dtr
| ) |  |

Clear RTS and DTR control lines.

Parameters

  fd | File opened on a serial device.
  rts | If 0 ignored, else clears RTS.
  cts | If 0 ignored, else clears CTS.

Returns
  0 on errors, else 1.

Definition at line 522 of file serial.c.

int tty_create_lock | ( | const char * | name | ) |

Creates a lock file of the type /var/local/LCK.. + name

Parameters

  name | Name of the device

Returns
  non-zero if successful

See also
  http://www.pathname.com/fhs/2.2/fhs-5.9.html

Definition at line 297 of file serial.c.

int tty_delete_lock | ( | void |  | ) |

Delete any legacy lock(s) owned by this process.

Returns
  0 on errors, else 1.

See also
  http://www.pathname.com/fhs/2.2/fhs-5.9.html

Definition at line 440 of file serial.c.

int tty_read | ( | int | fd,
|  | char * | byte
| ) |  |

Read a single byte from serial device.

Parameters

  fd | File opened on a serial device.
  byte | Pointer to byte to be read.

Returns
  -1 on errors, else 1 and data stored in *byte.

Definition at line 554 of file serial.c.

int tty_reset | ( | int | fd | ) |

Set the cfmakeraw termio options.

Parameters

  fd | File opened on a serial device.

Returns
  0 on errors, else 1.

Definition at line 49 of file serial.c.

int tty_set | ( | int | fd,
|  | int | rts,
|  | int | dtr
| ) |  |

Set RTS and DTR control lines.

Parameters

  fd | File opened on a serial device.
  rts | If 0 ignored, else sets RTS.
  cts | If 0 ignored, else sets CTS.

Returns
  0 on errors, else 1.

Definition at line 508 of file serial.c.

int tty_setbaud | ( | int | fd,
|  | int | baud
| ) |  |

Set the speed a. k. a. baudrate.

Parameters

  fd | File opened on a serial device.
  baud | Speed constant as defined for termios cfsetospeed e.g., B19200

Returns
  0 on errors, else 1.

Definition at line 115 of file serial.c.

int tty_setcsize | ( | int | fd,
|  | int | csize
| ) |  |

Set the character size

Parameters

  fd | File opened on a serial device.
  Number | of data bits: CS5, CS6, CS7, or CS8.

Returns
  0 on errors, else 1.

Definition at line 260 of file serial.c.

int tty_setdtr | ( | int | fd,
|  | int | enable
| ) |  |

Set/clear DTR control line.

Parameters

  fd | File opened on a serial device.
  enable | If true sets DTR, else clears it.

Returns
  0 on errors, else 1.

Definition at line 88 of file serial.c.

int tty_setrtscts | ( | int | fd,
|  | int | enable
| ) |  |

Set/clear CTS control line.

Parameters

  enable | If true sets CTS, else clears it.

Returns
  0 on errors, else 1.

Definition at line 67 of file serial.c.

int tty_write | ( | int | fd,
|  | char | byte
| ) |  |

Write a single byte to serial device.

Parameters

  fd | File opened on a serial device.
  byte | Item to write.

Returns
  -1 on errors, else 1.

Definition at line 536 of file serial.c.

int tty_write_echo | ( | int | fd,
|  | char | byte
| ) |  |

Write a single byte and check the echo from remote party. Makes a log printout if these don't match.

Parameters

  fd | File opened on a serial device.
  byte | Byte to be written.

Returns
  1 if a byte is successfully written and read, else 0. It's thus 1 even if the echo doesn't match.

Definition at line 574 of file serial.c.

int waitfordata | ( | __u32 | maxusec | ) |

Wait until data is available in drv.fd, timeout or a signal is raised.

Parameters

  maxusec | timeout in micro seconds, given to poll(2). If <= 0, the function will block indefinitely until data is available or a signal is processed. If positive, a timeout value in microseconds.

Returns
  True (1) if there is data available in drv.fd, else 0 indicating timeout.

Definition at line 158 of file receive.c.

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.

Parameters

  buffer | Formatted string on exit.
  size | Size of buffer.
  remote_name |
  button_name |
  button_suffix |
  code |
  reps |

Returns
  snprintf(3) result code i. e., number of formatted bytes in buffer.

Definition at line 705 of file ir_remote.c.

## Variable Documentation

struct ir_remote* last_remote

TODO

Definition at line 51 of file ir_remote.c.

struct ir_ncode* repeat_code

Global pointer to the code currently repeating. Defined in ir_remote.c.

Definition at line 55 of file ir_remote.c.

struct ir_remote* repeat_remote

Global pointer to the remote that contains the code currently repeating. Defined in ir_remote.c.

Definition at line 53 of file ir_remote.c.