1 // SPDX-License-Identifier: GPL-2.0 2 // test ir decoder 3 // 4 // Copyright (C) 2018 Sean Young <sean@mess.org> 5 6 #include <linux/bpf.h> 7 #include <linux/lirc.h> 8 #include <bpf/bpf_helpers.h> 9 10 SEC("lirc_mode2") 11 int bpf_decoder(unsigned int *sample) 12 { 13 if (LIRC_IS_PULSE(*sample)) { 14 unsigned int duration = LIRC_VALUE(*sample); 15 16 if (duration & 0x10000) 17 bpf_rc_keydown(sample, 0x40, duration & 0xffff, 0); 18 if (duration & 0x20000) 19 bpf_rc_pointer_rel(sample, (duration >> 8) & 0xff, 20 duration & 0xff); 21 } 22 23 return 0; 24 } 25 26 char _license[] SEC("license") = "GPL"; 27