// SPDX-License-Identifier: GPL-2.0-only /* ir-xmp-decoder.c - handle XMP IR Pulse/Space protocol * * Copyright (C) 2014 by Marcel Mol * * - Based on info from http://www.hifi-remote.com * - Ignore Toggle=9 frames * - Ignore XMP-1 XMP-2 difference, always store 16 bit OBC */ #include <linux/bitrev.h> #include <linux/module.h> #include "rc-core-priv.h" #define XMP_UNIT … #define XMP_LEADER … #define XMP_NIBBLE_PREFIX … #define XMP_HALFFRAME_SPACE … /* should be 80ms but not all duration supliers can go that high */ #define XMP_TRAILER_SPACE … enum xmp_state { … }; /** * ir_xmp_decode() - Decode one XMP pulse or space * @dev: the struct rc_dev descriptor of the device * @ev: the struct ir_raw_event descriptor of the pulse/space * * This function returns -EINVAL if the pulse violates the state machine */ static int ir_xmp_decode(struct rc_dev *dev, struct ir_raw_event ev) { … } static struct ir_raw_handler xmp_handler = …; static int __init ir_xmp_decode_init(void) { … } static void __exit ir_xmp_decode_exit(void) { … } module_init(…) …; module_exit(ir_xmp_decode_exit); MODULE_LICENSE(…) …; MODULE_AUTHOR(…) …; MODULE_AUTHOR(…) …; MODULE_DESCRIPTION(…) …;