/usr/share/doc/libirman/examples/test_io.c is in libirman-dev 0.5.2-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | /* test_io.c - test/demo of LIBIRMAN's low level functions */
/* Copyright (C) 1998 Tom Wheeley, see file COPYING for details */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <termios.h>
#include <unistd.h>
#include "irman.h"
int main(int argc, char **argv)
{
int datum;
int i;
int fd;
if (argc < 2) {
fprintf(stderr, "usage: test_io device\n");
fprintf(stderr, " where device is the serial port at which the infra red receiver resides\n");
fprintf(stderr, " eg /dev/ttyS1 for COM2 on a PC running Linux\n");
exit(0);
}
errno = 0;
if ((fd = ir_open_port(argv[1])) < 0) {
fprintf(stderr, "unable to open port `%s' (%s)\n", argv[1], ir_strerror(errno));
return 1;
}
/* read garbage */
while ((datum = ir_read_char(IR_GARBAGE_TIMEOUT)) >= 0)
;
errno = 0;
ir_write_char('I'); putchar('I');
tcdrain(fd);
ir_usleep(IR_HANDSHAKE_GAP);
ir_write_char('R'); putchar('R');
putchar('\n');
if (errno) {
fprintf(stderr, "error writing handshake (%s)\n", ir_strerror(errno));
}
errno = 0;
while ((datum = ir_read_char(IR_HANDSHAKE_TIMEOUT)) != 'O') {
if (datum < 0) {
fprintf(stderr, "error reading handshake (%s)\n", ir_strerror(errno));
exit(1);
} else {
putchar(datum);
putchar('!');
fflush(stdout);
}
}
putchar('O'); fflush(stdout);
errno = 0;
datum = ir_read_char(IR_HANDSHAKE_TIMEOUT);
if (datum < 0) {
fprintf(stderr, "error reading handshake (%s)\n", ir_strerror(errno));
exit(1);
} else {
putchar(datum);
if (datum != 'K') putchar('!');
}
putchar('\n');
for (;;) {
for (i=0; i<IR_CODE_LEN; i++) {
datum = ir_read_char(IR_BLOCKING);
if (datum < 0) {
fprintf(stderr, "error reading data: `%s'\n", ir_strerror(errno));
errno = 0;
} else {
printf("[%02x]", datum);
}
}
putchar('\n');
}
ir_close_port();
return 0;
}
/* end of test_io.c */
|