diff -Nru irmplircd-2.2.3-git2013112/COPYING irmplircd-2.2.3-git20151022/COPYING --- irmplircd-2.2.3-git2013112/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ irmplircd-2.2.3-git20151022/COPYING 2015-10-22 19:08:12.000000000 +0000 @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff -Nru irmplircd-2.2.3-git2013112/debian/changelog irmplircd-2.2.3-git20151022/debian/changelog --- irmplircd-2.2.3-git2013112/debian/changelog 2016-06-19 17:16:17.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/changelog 2016-07-11 13:34:34.000000000 +0000 @@ -1,3 +1,15 @@ +irmplircd (2.2.3-git20151022-1yavdr0~trusty) trusty; urgency=medium + + * cleanup package + + -- Alexander Grothe Mon, 11 Jul 2016 15:34:15 +0200 + +irmplircd (2.2.3-git20151022-0yavdr0~trusty) trusty; urgency=medium + + * new upstream snapshot + + -- Alexander Grothe Sat, 09 Jul 2016 13:29:50 +0200 + irmplircd (2.2.3-git2013112-18yavdr0~trusty) trusty; urgency=medium * update udev rule diff -Nru irmplircd-2.2.3-git2013112/debian/control irmplircd-2.2.3-git20151022/debian/control --- irmplircd-2.2.3-git2013112/debian/control 2014-01-20 13:34:16.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/control 2016-07-11 13:25:20.000000000 +0000 @@ -2,7 +2,8 @@ Section: video Priority: extra Maintainer: Alexander Grothe -Build-Depends: debhelper (>= 8.0.0), liblircclient-dev +Homepage: https://github.com/realglotzi/irmplircd +Build-Depends: debhelper (>= 9.0.0), liblircclient-dev Standards-Version: 3.9.4 Package: irmplircd diff -Nru irmplircd-2.2.3-git2013112/debian/copyright irmplircd-2.2.3-git20151022/debian/copyright --- irmplircd-2.2.3-git2013112/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/copyright 2016-07-11 13:29:16.000000000 +0000 @@ -0,0 +1,12 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: irmplircd +Upstream-Contact: Dirk E. Wanger +Source: https://github.com/realglotzi/irmplircd + +Files: * +Copyright: 2011-2015 Dirk E. Wagner +License: GPL-2+ + +Files: debian/* +Copyright: 2016 Alexander Grothe +License: GPL-2+ diff -Nru irmplircd-2.2.3-git2013112/debian/easyvdr-irmplircd.conf irmplircd-2.2.3-git20151022/debian/easyvdr-irmplircd.conf --- irmplircd-2.2.3-git2013112/debian/easyvdr-irmplircd.conf 2014-01-02 08:56:05.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/easyvdr-irmplircd.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -# initial version 30.12.13 - -description "irmplircd Daemon" -author "C.B." - -start on starting easyvdr-vdr or simu-start-vdr -stop on runlevel [016] - -respawn -respawn limit 5 10 -normal exit 0 ABRT - -env LOGGER="logger -t irmplircd" - -script - - . /usr/lib/vdr/easyvdr-config-loader - - [ -f /usr/bin/irmplircd ] || { stop; exit 0; } - [ -f $CFG_DIR/sysconfig ] && . $CFG_DIR/sysconfig || { stop; exit 0; } - [ x"$LIRC_HW_CONF" = x"irmp_lirc" ] || { stop; exit 0; } - [ ! -d /var/run/lirc ] && mkdir -p /var/run/lirc - $LOGGER "Starting irmplircd" - - [ -f /var/lib/vdr/irmp_keymap ] && KEY_OPTION="-t /var/lib/vdr/irmp_keymap" || KEY_OPTION="" - - exec /usr/bin/irmplircd -f $KEY_OPTION /dev/input/ir-auto_dtc - -end script - diff -Nru irmplircd-2.2.3-git2013112/debian/patches/fix_hashmap.h_include irmplircd-2.2.3-git20151022/debian/patches/fix_hashmap.h_include --- irmplircd-2.2.3-git2013112/debian/patches/fix_hashmap.h_include 2014-01-17 11:13:14.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/patches/fix_hashmap.h_include 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -Index: easyvdr-usb-irmp-2.2.3-git2013112/irmplircd.c -=================================================================== ---- easyvdr-usb-irmp-2.2.3-git2013112.orig/irmplircd.c 2014-01-01 16:48:26.000000000 +0100 -+++ easyvdr-usb-irmp-2.2.3-git2013112/irmplircd.c 2014-01-17 12:11:17.988812604 +0100 -@@ -47,7 +47,7 @@ - #include - - #include "debug.h" --#include "hashmap.h" -+#include "c_hashmap/hashmap.h" - #include "mapping.h" - - typedef struct { -Index: easyvdr-usb-irmp-2.2.3-git2013112/mapping.c -=================================================================== ---- easyvdr-usb-irmp-2.2.3-git2013112.orig/mapping.c 2014-01-01 16:48:26.000000000 +0100 -+++ easyvdr-usb-irmp-2.2.3-git2013112/mapping.c 2014-01-17 12:12:40.613066396 +0100 -@@ -39,7 +39,7 @@ - #include - - #include "debug.h" --#include "hashmap.h" -+#include "c_hashmap/hashmap.h" - #include "mapping.h" - - bool parse_translation_table(const char *path, map_t mymap) { -Index: easyvdr-usb-irmp-2.2.3-git2013112/irmpexec.c -=================================================================== ---- easyvdr-usb-irmp-2.2.3-git2013112.orig/irmpexec.c 2014-01-01 16:48:26.000000000 +0100 -+++ easyvdr-usb-irmp-2.2.3-git2013112/irmpexec.c 2014-01-17 12:13:10.627689252 +0100 -@@ -50,7 +50,7 @@ - #include - - #include "debug.h" --#include "hashmap.h" -+#include "c_hashmap/hashmap.h" - #include "mapping.h" - - static int lirc_fd = -1; diff -Nru irmplircd-2.2.3-git2013112/debian/patches/series irmplircd-2.2.3-git20151022/debian/patches/series --- irmplircd-2.2.3-git2013112/debian/patches/series 2014-01-20 12:59:49.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -fix_hashmap.h_include diff -Nru irmplircd-2.2.3-git2013112/debian/patches/test_Makefile irmplircd-2.2.3-git20151022/debian/patches/test_Makefile --- irmplircd-2.2.3-git2013112/debian/patches/test_Makefile 2014-01-20 12:58:19.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/patches/test_Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -Index: easyvdr-usb-irmp-2.2.3-git2013112/Makefile -=================================================================== ---- easyvdr-usb-irmp-2.2.3-git2013112.orig/Makefile 2014-01-01 16:48:26.000000000 +0100 -+++ easyvdr-usb-irmp-2.2.3-git2013112/Makefile 2014-01-20 13:58:15.631220597 +0100 -@@ -15,6 +15,7 @@ - all: $(SBIN_IRMPLIRCD) $(SBIN_IRMPEXEC) - - irmplircd.o: irmplircd.c debug.h -+ echo $CFLAGS - $(CC) $(CFLAGS) -c $< - - irmpexec.o: irmpexec.c debug.h diff -Nru irmplircd-2.2.3-git2013112/debian/rules irmplircd-2.2.3-git20151022/debian/rules --- irmplircd-2.2.3-git2013112/debian/rules 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/debian/rules 2016-07-11 13:31:11.000000000 +0000 @@ -15,7 +15,14 @@ # This has to be exported to make some magic below work. export DH_OPTIONS +MAKE_OPTIONS=PREFIX=/usr %: dh $@ + +override_dh_auto_install: + dh_auto_install -- $(MAKE_OPTIONS) + +override_dh_installinit: + dh_installinit --no-start -r diff -Nru irmplircd-2.2.3-git2013112/irmpexec.c irmplircd-2.2.3-git20151022/irmpexec.c --- irmplircd-2.2.3-git2013112/irmpexec.c 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/irmpexec.c 2015-10-22 19:08:12.000000000 +0000 @@ -203,8 +203,7 @@ int opt; bool foreground = false; bool irw_mode = false; - bool use_translationtable = false; - + while ((opt = getopt(argc, argv, "whd:fu:t:")) != -1) { switch (opt) { case 'd': @@ -217,7 +216,6 @@ foreground = true; break; case 't': - use_translationtable = true; translation_path = strdup (optarg); break; case 'w': @@ -235,7 +233,7 @@ mymap = hashmap_new(); - if (use_translationtable && !parse_translation_table(translation_path, mymap)) { + if (!parse_translation_table(translation_path, mymap)) { hashmap_free(mymap); return EX_OSERR; } diff -Nru irmplircd-2.2.3-git2013112/irmplircd.8 irmplircd-2.2.3-git20151022/irmplircd.8 --- irmplircd-2.2.3-git2013112/irmplircd.8 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/irmplircd.8 2015-10-22 19:08:12.000000000 +0000 @@ -63,6 +63,7 @@ Provides the path to a file containing a mapping between input event key names and the commands which should be reported via lirc. The files should contain lines of the form .Pa KEY_FOO = bar . +Lines starting with the pound sign ('#') are ignored. This is useful for backward compatibility. The default is not to use a translation table. .It Ar device diff -Nru irmplircd-2.2.3-git2013112/irmplircd.c irmplircd-2.2.3-git20151022/irmplircd.c --- irmplircd-2.2.3-git2013112/irmplircd.c 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/irmplircd.c 2015-10-22 19:08:12.000000000 +0000 @@ -1,7 +1,7 @@ /* irmplircd -- zeroconf LIRC daemon that reads IRMP events from the USB IR Remote Receiver http://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver - Copyright (C) 2011-2012 Dirk E. Wagner + Copyright (C) 2011-2014 Dirk E. Wagner based on: inputlircd -- zeroconf LIRC daemon that reads from /dev/input/event devices @@ -50,8 +50,8 @@ #include "hashmap.h" #include "mapping.h" -typedef struct { - uint8_t dummy; // additional useless byte +typedef struct __attribute__ ((__packed__)) { + uint8_t report_id; // report id uint8_t protocol; // protocol, i.e. NEC_PROTOCOL uint16_t address; // address uint16_t command; // command @@ -79,11 +79,23 @@ static char *device = "/var/run/lirc/lircd"; static long repeat_time = 0L; -static struct timeval previous_input; + static int repeat = 0; static map_t mymap; +/* returns time since 01.01.1970 */ +static double getTime_ms(void) { + struct timeval sTime; + struct timezone tz; + double dTime_ms; + + gettimeofday(&sTime, &tz); + dTime_ms=((double) sTime.tv_sec * (double)1000); + dTime_ms+=(sTime.tv_usec/1000); + return dTime_ms; +} + static void *xalloc(size_t size) { void *buf = malloc(size); if(!buf) { @@ -170,17 +182,13 @@ clients = newclient; } -static long time_elapsed(struct timeval *last, struct timeval *current) { - long seconds = current->tv_sec - last->tv_sec; - return 1000000 * seconds + current->tv_usec - last->tv_usec; -} - static void processevent(evdev_t *evdev) { IRMP_DATA event; char hash_key[100]; char irmp_fulldata[100]; char message[100]; int len; + static double start_time = 0; client_t *client, *prev, *next; message[0]=0; @@ -190,31 +198,40 @@ exit(EX_OSERR); } - DBG ("dummy = 0x%02d, p = %02d, a = 0x%04x, c = 0x%04x, f = 0x%02x\n", event.dummy, event.protocol, event.address, event.command, event.flags); - - struct timeval current; - gettimeofday(¤t, NULL); - if(time_elapsed(&previous_input, ¤t) < repeat_time) - repeat++; - else + DBG ("report_id = 0x%02d, p = %02d, a = 0x%04x, c = 0x%04x, f = 0x%02x\n", event.report_id, event.protocol, event.address, event.command, event.flags); + + if(event.report_id != 0x01) + return; + + if(event.flags == 0) { + start_time = getTime_ms(); repeat = 0; + } else { + if((getTime_ms()-start_time) < repeat_time) { + return; + } else { + start_time=getTime_ms(); + repeat++; + } + } + snprintf (irmp_fulldata, sizeof irmp_fulldata, "%02x%04x%04x%02x", event.protocol, event.address, event.command, 0); - snprintf (irmp_fulldata, sizeof irmp_fulldata, "%02x%04x%04x%02x", event.protocol, event.address, event.command, event.flags); snprintf (hash_key, sizeof hash_key, "%02x%04x%04x%02x", event.protocol, event.address, event.command, 0); map_entry_t *map_entry; if(hashmap_get(mymap, hash_key, (void**)(&map_entry))==MAP_OK) { DBG ("MAP_OK irmpd_fulldata=%s lirc=%s\n", irmp_fulldata, map_entry->value); - len = snprintf(message, sizeof message, "%s %x %s %s\n", irmp_fulldata, event.flags, map_entry->value, "IRMP"); + + len = snprintf(message, sizeof message, "%s %x %s %s\n", irmp_fulldata, repeat, map_entry->value, "IRMP"); } else { DBG ("MAP_ERROR irmpd_fulldata=%s|\n", irmp_fulldata); + len = snprintf(message, sizeof message, "%s %x %s %s\n", irmp_fulldata, repeat, irmp_fulldata, "IRMP"); } DBG ("LIRC message=%s\n", message); - previous_input = current; for(client = clients; client; client = client->next) { if(write(client->fd, message, len) != len) { close(client->fd); @@ -242,7 +259,7 @@ printf("Options: \n"); printf("\t-d UNIX socket. The default is /var/run/lirc/lircd.\n"); printf("\t-f Run in the foreground.\n"); - printf("\t-r Repeat rate in ms.\n"); + printf("\t-r Repeat rate in ms (0 -> IR Remote repeate rate), 500 break's to 0,5s repeate rate\n"); printf("\t-g Grab the input device(s).\n"); printf("\t-u User name.\n"); printf("\t-t Path to translation table.\n"); @@ -296,8 +313,6 @@ bool foreground = false; bool use_translationtable = false; - gettimeofday(&previous_input, NULL); - while((opt = getopt(argc, argv, "d:gm:fu:r:t:")) != -1) { switch(opt) { case 'd': @@ -313,7 +328,7 @@ foreground = true; break; case 'r': - repeat_time = atoi(optarg) * 1000L; + repeat_time = atoi(optarg); break; case 't': use_translationtable = true; diff -Nru irmplircd-2.2.3-git2013112/Makefile irmplircd-2.2.3-git20151022/Makefile --- irmplircd-2.2.3-git2013112/Makefile 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/Makefile 2015-10-22 19:08:12.000000000 +0000 @@ -3,47 +3,47 @@ MAN8 = irmplircd.8 CC ?= gcc -CFLAGS ?= -Wall -g -O2 -pipe -Ic_hashmap #-DDEBUG +CFLAGS ?= -Wall -g -O2 -pipe #-DDEBUG +INCLUDES ?= -Ic_hashmap PREFIX ?= /usr/local INSTALL ?= install STRIP ?= strip -SBINDIR ?= $(PREFIX)/sbin -BINDIR ?= $(PREFIX)/bin -SHAREDIR ?= $(PREFIX)/share +BINDIR ?= $(DESTDIR)$(PREFIX)/bin +SHAREDIR ?= $(DESTDIR)$(PREFIX)/share MANDIR ?= $(SHAREDIR)/man all: $(SBIN_IRMPLIRCD) $(SBIN_IRMPEXEC) irmplircd.o: irmplircd.c debug.h - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) $(INCLUDES) -c $< irmpexec.o: irmpexec.c debug.h - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) $(INCLUDES) -c $< mapping.o: mapping.c mapping.h debug.h - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) $(INCLUDES) -c $< hashmap.o: c_hashmap/hashmap.c c_hashmap/hashmap.h - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) $(INCLUDES) -c $< irmplircd: irmplircd.o mapping.o c_hashmap/hashmap.o - $(CC) $(CFLAGS) -o $@ irmplircd.o mapping.o c_hashmap/hashmap.o + $(CC) $(CFLAGS) $(INCLUDES) -o $@ irmplircd.o mapping.o c_hashmap/hashmap.o irmpexec: irmpexec.o mapping.o c_hashmap/hashmap.o - $(CC) $(CFLAGS) -o $@ irmpexec.o mapping.o c_hashmap/hashmap.o + $(CC) $(CFLAGS) $(INCLUDES) -o $@ irmpexec.o mapping.o c_hashmap/hashmap.o -#install: install-sbin install-man -# -#install-sbin: $(SBIN_IRMPLIRCD) $(SBIN_IRMPEXEC) -# mkdir -p $(SBINDIR) -# $(STRIP) $(SBIN_IRMPLIRCD) -# $(STRIP) $(SBIN_IRMPEXEC) -# $(INSTALL) $(SBIN_IRMPLIRCD) $(SBINDIR)/ -# $(INSTALL) $(SBIN_IRMPEXEC) $(BINDIR)/ -# -#install-man: $(MAN1) $(MAN5) $(MAN8) -# mkdir -p $(DESTDIR)$(MANDIR)/man8/ -# $(INSTALL) -m 644 $(MAN8) $(DESTDIR)$(MANDIR)/man8/ +install: install-sbin install-man + +install-sbin: $(SBIN_IRMPLIRCD) $(SBIN_IRMPEXEC) + mkdir -p $(BINDIR) + $(STRIP) $(SBIN_IRMPLIRCD) + $(STRIP) $(SBIN_IRMPEXEC) + $(INSTALL) $(SBIN_IRMPLIRCD) $(BINDIR)/ + $(INSTALL) $(SBIN_IRMPEXEC) $(BINDIR)/ + +install-man: $(MAN1) $(MAN5) $(MAN8) + mkdir -p $(MANDIR)/man8/ + $(INSTALL) -m 644 $(MAN8) $(MANDIR)/man8/ clean: rm -f $(SBIN_IRMPLIRCD) $(SBIN_IRMPEXEC) *.o c_hashmap/hashmap.o diff -Nru irmplircd-2.2.3-git2013112/mapping.c irmplircd-2.2.3-git20151022/mapping.c --- irmplircd-2.2.3-git2013112/mapping.c 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/mapping.c 2015-10-22 19:08:12.000000000 +0000 @@ -62,6 +62,10 @@ } while(getline(&line, &line_size, table) >= 0) { + // Skip empty lines and lines starting with "#" + if (strcspn(line, "\n\r#") == 0) + continue; + len = sscanf(line, "%99s %99s", key, value); if(len != 2) { syslog(LOG_ERR, "line ignored: %s\n", line); diff -Nru irmplircd-2.2.3-git2013112/udev/20-usbirmp.rules irmplircd-2.2.3-git20151022/udev/20-usbirmp.rules --- irmplircd-2.2.3-git2013112/udev/20-usbirmp.rules 2014-01-01 15:48:26.000000000 +0000 +++ irmplircd-2.2.3-git20151022/udev/20-usbirmp.rules 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -#BUS=="usb", KERNEL=="hiddev?", SYSFS{idVendor}=="4243", SYSFS{idProduct}=="ee08", SYMLINK+="usb/hiddev9", GROUP="vdr", MODE="0660" -#SYSFS{idVendor}=="4243", SYSFS{idProduct}=="ee21", GROUP="lp", MODE="0660" - -KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="27d9", RUN+="/bin/mkdir /var/run/lirc", RUN+="/usr/bin/irmplircd /dev/%k", RUN+="/bin/ln -s /var/run/lirc/lircd /dev/input/ir-auto_dtc"