239
241
int addSignal(struct void_array *signals, char *val)
243
t=s_strtolirc_t(val);
244
if(parse_error) return(0);
245
if(!add_void_array(signals, &t)){
248
if (!add_void_array(signals, &t))
251
254
struct ir_ncode *defineCode(char *key, char *val, struct ir_ncode *code)
253
256
memset(code, 0, sizeof(*code));
264
267
struct ir_code_node *defineNode(struct ir_ncode *code, const char *val)
266
269
struct ir_code_node *node;
268
271
node=s_malloc(sizeof(*node));
269
272
if(node==NULL) return NULL;
271
274
node->code=s_strtocode(val);
274
277
# ifdef LONG_IR_CODE
275
278
LOGPRINTF(3," 0x%016llX", node->code);
442
445
rem->toggle_bit=s_strtoi(val);
448
else if (strcasecmp("suppress_repeat",key)==0){
449
rem->suppress_repeat=s_strtoi(val);
445
452
else if (strcasecmp("min_repeat",key)==0){
446
453
rem->min_repeat=s_strtoi(val);
1221
1229
return (top_rem);
1232
void calculate_signal_lengths(struct ir_remote *remote)
1234
if(is_const(remote))
1236
remote->min_total_signal_length = min_gap(remote);
1237
remote->max_total_signal_length = max_gap(remote);
1241
remote->min_gap_length = min_gap(remote);
1242
remote->max_gap_length = max_gap(remote);
1245
lirc_t min_signal_length = 0, max_signal_length = 0;
1246
lirc_t max_pulse = 0, max_space = 0;
1248
struct ir_ncode *c = remote->codes;
1253
struct ir_ncode code = *c;
1254
struct ir_code_node *next = code.next;
1264
code.code = next->code;
1267
for(repeat = 0; repeat < 2; repeat++)
1269
if(init_sim(remote, &code, repeat))
1271
lirc_t sum = send_buffer.sum;
1276
sum < min_signal_length)
1278
min_signal_length = sum;
1281
sum > max_signal_length)
1283
max_signal_length = sum;
1287
for(i=0; i<send_buffer.wptr; i++)
1291
if(send_buffer.data[i] > max_space)
1293
max_space = send_buffer.data[i];
1298
if(send_buffer.data[i] > max_pulse)
1300
max_pulse = send_buffer.data[i];
1311
/* no timing data, so assume gap is the actual total
1313
remote->min_total_signal_length = min_gap(remote);
1314
remote->max_total_signal_length = max_gap(remote);
1315
remote->min_gap_length = min_gap(remote);
1316
remote->max_gap_length = max_gap(remote);
1318
else if(is_const(remote))
1320
if(remote->min_total_signal_length > max_signal_length)
1322
remote->min_gap_length =
1323
remote->min_total_signal_length
1324
- max_signal_length;
1328
logprintf(LOG_WARNING, "min_gap_length is 0 for "
1329
"'%s' remote", remote->name);
1330
remote->min_gap_length = 0;
1332
if(remote->max_total_signal_length > min_signal_length)
1334
remote->max_gap_length =
1335
remote->max_total_signal_length
1336
- min_signal_length;
1340
logprintf(LOG_WARNING, "max_gap_length is 0 for "
1341
"'%s' remote", remote->name);
1342
remote->max_gap_length = 0;
1347
remote->min_total_signal_length = min_signal_length +
1348
remote->min_gap_length;
1349
remote->max_total_signal_length = max_signal_length +
1350
remote->max_gap_length;
1352
LOGPRINTF(1, "lengths: %lu %lu %lu %lu",
1353
remote->min_total_signal_length,
1354
remote->max_total_signal_length,
1355
remote->min_gap_length,
1356
remote->max_gap_length);
1224
1359
void free_config(struct ir_remote *remotes)
1226
1361
struct ir_remote *next;
1227
1362
struct ir_ncode *codes;
1229
1364
while(remotes!=NULL)
1231
1366
next=remotes->next;