application: set keymap of 2 remotes for animations

This commit is contained in:
King Kévin 2018-10-28 22:26:52 +01:00
parent ba5ea0a6b2
commit e78e67c0e8
1 changed files with 120 additions and 19 deletions

View File

@ -306,25 +306,126 @@ static void ir_action(const struct ir_nec_code_t* code)
if (code->repeat) { // don't handle long button press repeating the code
return;
}
if (0 != code->address) { // current remote uses this address
return;
}
switch (code->command) {
case 0x30: // power button
strobe_toggle();
printf("toggle strobe\n");
break;
case 0x88: // 1 button
strobe_play(strobe_single, LENGTH(strobe_single));
printf("strobe animation 1\n");
break;
case 0x48: // 2 button
strobe_play(strobe_double, LENGTH(strobe_double));
printf("strobe animation 2\n");
break;
default:
printf("unknown code\n");
break;
if (0x00f7 == code->address) { // flat LED IR remote
switch (code->command) { // choose animation depending on button
case 0x00: // UP
strobe_toggle();
printf("toggle strobe\n");
break;
case 0x80: // DOWN
printf("start flickering\n");
flicker_off = false; // let flickering happen in main loop
break;
case 0xc0: // ON
strobe_on();
printf("light on\n");
break;
case 0x40: // OFF
strobe_off();
flicker_off = true; // stop flickering
printf("light off\n");
break;
case 0x20: // red
case 0x10: // orange
case 0x30: // orange
case 0x08: // orange
case 0x28: // organe
printf("1 strobe\n");
strobe_play(strobe1, LENGTH(strobe1));
break;
case 0xa0: // green
case 0x90: // green
case 0xb0: // green
case 0x88: // green
case 0xa8: // green
printf("2 strobes\n");
strobe_play(strobe2, LENGTH(strobe2));
break;
case 0x60: // blue
case 0x50: // blue
case 0x70: // blue
case 0x48: // blue
case 0x68: // blue
printf("3 strobes\n");
strobe_play(strobe3, LENGTH(strobe3));
break;
case 0xe0: // W
case 0xd0: // flash
case 0xc8: // fade
case 0xf0: // strobe
printf("5 strobes\n");
strobe_play(strobe5, LENGTH(strobe5));
break;
case 0xe8: // smooth
printf("10 strobes\n");
strobe_play(strobe10, LENGTH(strobe10));
break;
default:
printf("unknown code\n");
break;
}
} else if (0x407f == code->address) { // iDual remote
switch (code->command) { // choose animation depending on button
case 0x08: // brightness down
strobe_toggle();
printf("toggle strobe\n");
break;
case 0x90: // brightness up
printf("start flickering\n");
flicker_off = false; // let flickering happen in main loop
break;
case 0x80: // ON
strobe_on();
printf("light on\n");
break;
case 0x40: // OFF
strobe_off();
flicker_off = true; // stop flickering
printf("light off\n");
break;
case 0x88: // left
case 0x48:
case 0xc8:
case 0x28:
printf("1 strobe\n");
strobe_play(strobe1, LENGTH(strobe1));
break;
case 0x68: // middle-left
case 0xe8:
case 0x18:
case 0x98:
printf("2 strobes\n");
strobe_play(strobe2, LENGTH(strobe2));
break;
case 0x50: // middle-right
case 0xd0:
case 0x30:
case 0xb0:
printf("3 strobes\n");
strobe_play(strobe3, LENGTH(strobe3));
break;
case 0xc0: // right
case 0x20:
case 0xa0:
case 0x60:
printf("5 strobes\n");
strobe_play(strobe5, LENGTH(strobe5));
break;
case 0x70: // circle
case 0xa8:
case 0x58:
case 0xf0:
case 0xe0:
case 0x10:
printf("10 strobes\n");
strobe_play(strobe10, LENGTH(strobe10));
break;
default:
printf("unknown code\n");
break;
}
} else {
printf("unknown remote\n");
}
}