21 #ifdef TIME_WITH_SYS_TIME
22 # include <sys/time.h>
25 # ifdef HAVE_SYS_TIME_H
26 # include <sys/time.h>
33 #include "include/media/lirc.h"
34 #include "lirc/config_file.h"
35 #include "lirc/dump_config.h"
36 #include "lirc/config_flags.h"
37 #include "lirc/ir_remote_types.h"
39 void fprint_comment(FILE * f,
const struct ir_remote *rem,
const char* commandline)
47 p = popen(
"uname -r",
"r");
49 strcat(uname,
"Cannot run uname -r(!)");
51 if (fgets(uname,
sizeof(uname), p) != uname)
52 strcat(uname,
"Cannot run uname -r (!)");
56 snprintf(cmd,
sizeof(cmd),
"%s", commandline);
61 tmp = localtime(&timet);
64 "# This config file was automatically generated\n"
65 "# using lirc-%s(%s) on %s"
66 "# Command line used: %s\n"
67 "# Kernel version (uname -r): %s"
69 "# Remote name (as of config file): %s\n"
70 "# Brand of remote device, the thing you hold in your hand:\n"
71 "# Remote device model nr: \n"
72 "# Remote device info url: \n"
73 "# Does remote device has a bundled capture device e. g., a usb\n"
75 "# For bundled USB capture devices: usb vendor id, product id \n"
76 "# and device string (use dmesg or lsusb): \n"
77 "# Type of device controlled \n"
78 "# (TV, VCR, Audio, DVD, Satellite, Cable, PVR, HTPC, ...) : \n"
79 "# Device(s) controlled by this remote: \n\n",
83 void fprint_flags(FILE * f,
int flags)
92 fprintf(f,
" flags ");
103 void fprint_remotes(FILE * f,
const struct ir_remote *all,
const char* commandline)
106 fprint_remote(f, all, commandline);
112 void fprint_remote_gap(FILE * f,
const struct ir_remote *rem)
114 if (rem->
gap2 != 0) {
115 fprintf(f,
" gap %u %u\n", (__u32) rem->
gap, (__u32) rem->
gap2);
117 fprintf(f,
" gap %u\n", (__u32) rem->
gap);
121 void fprint_remote_head(FILE * f,
const struct ir_remote *rem)
123 fprintf(f,
"begin remote\n\n");
124 fprintf(f,
" name %s\n", rem->
name);
129 fprintf(f,
" driver %s\n", rem->
driver);
132 fprintf(f,
" bits %5d\n", rem->
bits);
134 fprint_flags(f, rem->
flags);
135 fprintf(f,
" eps %5d\n", rem->
eps);
136 fprintf(f,
" aeps %5d\n\n", rem->
aeps);
138 if (has_header(rem)) {
139 fprintf(f,
" header %5u %5u\n", (__u32) rem->phead, (__u32) rem->
shead);
141 if (rem->pthree != 0 || rem->
sthree != 0)
142 fprintf(f,
" three %5u %5u\n", (__u32) rem->pthree, (__u32) rem->
sthree);
143 if (rem->ptwo != 0 || rem->
stwo != 0)
144 fprintf(f,
" two %5u %5u\n", (__u32) rem->ptwo, (__u32) rem->
stwo);
145 fprintf(f,
" one %5u %5u\n", (__u32) rem->pone, (__u32) rem->
sone);
146 fprintf(f,
" zero %5u %5u\n", (__u32) rem->pzero, (__u32) rem->
szero);
149 fprintf(f,
" ptrail %5u\n", (__u32) rem->
ptrail);
152 if (rem->
plead != 0) {
153 fprintf(f,
" plead %5u\n", (__u32) rem->
plead);
156 fprintf(f,
" foot %5u %5u\n", (__u32) rem->pfoot, (__u32) rem->
sfoot);
159 if (has_repeat(rem)) {
160 fprintf(f,
" repeat %5u %5u\n", (__u32) rem->prepeat, (__u32) rem->
srepeat);
165 fprintf(f,
" pre_data 0x%llX\n", (
unsigned long long)rem->
pre_data);
169 fprintf(f,
" post_data 0x%llX\n", (
unsigned long long)rem->
post_data);
171 if (rem->pre_p != 0 && rem->
pre_s != 0) {
172 fprintf(f,
" pre %5u %5u\n", (__u32) rem->pre_p, (__u32) rem->
pre_s);
174 if (rem->post_p != 0 && rem->
post_s != 0) {
175 fprintf(f,
" post %5u %5u\n", (__u32) rem->post_p, (__u32) rem->
post_s);
178 fprint_remote_gap(f, rem);
179 if (has_repeat_gap(rem)) {
180 fprintf(f,
" repeat_gap %u\n", (__u32) rem->
repeat_gap);
186 fprintf(f,
" min_repeat %d\n", rem->
min_repeat);
188 fprintf(f,
"# suppress_repeat %d\n", rem->
min_repeat);
189 fprintf(f,
"# uncomment to suppress unwanted repeats\n");
196 fprintf(f,
" toggle_bit_mask 0x%llX\n", (
unsigned long long)rem->
toggle_bit_mask);
197 if (has_toggle_mask(rem)) {
198 fprintf(f,
" toggle_mask 0x%llX\n", (
unsigned long long)rem->
toggle_mask);
201 fprintf(f,
" repeat_mask 0x%llX\n", (
unsigned long long)rem->
repeat_mask);
204 fprintf(f,
" rc6_mask 0x%llX\n", (
unsigned long long)rem->
rc6_mask);
206 if (has_ignore_mask(rem)) {
207 fprintf(f,
" ignore_mask 0x%llX\n", (
unsigned long long)rem->
ignore_mask);
209 if (is_serial(rem)) {
210 fprintf(f,
" baud %d\n", rem->
baud);
215 if (rem->
freq != 0) {
216 fprintf(f,
" frequency %u\n", rem->
freq);
219 fprintf(f,
" duty_cycle %u\n", rem->
duty_cycle);
224 void fprint_remote_foot(FILE * f,
const struct ir_remote *rem)
226 fprintf(f,
"end remote\n");
229 void fprint_remote_signal_head(FILE * f,
const struct ir_remote *rem)
232 fprintf(f,
" begin codes\n");
234 fprintf(f,
" begin raw_codes\n\n");
237 void fprint_remote_signal_foot(FILE * f,
const struct ir_remote *rem)
240 fprintf(f,
" end codes\n\n");
242 fprintf(f,
" end raw_codes\n\n");
245 void fprint_remote_signal(FILE * f,
const struct ir_remote *rem,
const struct ir_ncode *codes)
253 sprintf(format,
" %%-24s 0x%%0%dllX", (rem->
bits + 3) / 4);
254 fprintf(f, format, codes->
name, codes->
code);
255 sprintf(format,
" 0x%%0%dlX", (rem->
bits + 3) / 4);
256 for (loop = codes->
next; loop != NULL; loop = loop->next) {
257 fprintf(f, format, loop->code);
262 fprintf(f,
" name %s\n", codes->
name);
264 for (i = 0; i < codes->
length; i++) {
266 fprintf(f,
" %7u", (__u32) codes->
signals[i]);
268 fprintf(f,
" %7u", (__u32) codes->
signals[i]);
270 fprintf(f,
" %7u\n", (__u32) codes->
signals[i]);
285 void fprint_remote_signals(FILE * f,
const struct ir_remote *rem)
289 fprint_remote_signal_head(f, rem);
291 while (codes->
name != NULL) {
292 fprint_remote_signal(f, rem, codes);
295 fprint_remote_signal_foot(f, rem);
298 void fprint_remote(FILE * f,
const struct ir_remote *rem,
const char* commandline)
300 fprint_comment(f, rem, commandline);
301 fprint_remote_head(f, rem);
302 fprint_remote_signals(f, rem);
303 fprint_remote_foot(f, rem);
struct ir_code_node * next
unsigned int min_code_repeat
const struct flaglist all_flags[]
const struct driver const * curr_driver
unsigned int bits_in_byte