]> cloudbase.mooo.com Git - irmp.git/commitdiff
Version 1.1.1: optimized timings for all protocols
authorukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 16 Apr 2010 10:09:14 +0000 (10:09 +0000)
committerukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 16 Apr 2010 10:09:14 +0000 (10:09 +0000)
git-svn-id: svn://mikrocontroller.net/irmp@8 aeb2e35e-bfc4-4214-b83c-9e8de998ed28

IR-Data/Sony-RM-U305C.txt
IR-Data/Sony_Bravia_RM-ED0009_new.txt
IR-Data/recs80.txt [deleted file]
IR-Data/sony-rm-s311.txt [new file with mode: 0644]
IR-Data/sony-television-service-commander.txt [new file with mode: 0644]
IR-Data/test-suite.sh [new file with mode: 0644]
README.txt
irmp.c
irmp.exe
irmp.h
irsnd.exe

index f7f6aa50268e9713b7710dde89c015bf7793fe38..63d203d053a27844286759c45ae7dcda7cce1b20 100644 (file)
@@ -1,5 +1,5 @@
 # Test: 25, Code: SIRCS (1) Button 1 Tuner, Address: 0x00, Command: 0x16\r
-000000000000000000000000000111000000001111000000001111000000001111000000011111000000011110000000011110000000111110000000000000011110000000011110000000000000111110000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011110000000111110000000111110000000111110000000111100000001111100000001111110000000000001111100000001111100000000000001111100000000000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111110000000111110000000111110000000111110000000111110000001111100000001111100000001111100000000000001111100000001111100000000000001111100000000000001111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000011111100000011111000000011111000000011111000000011111000000111111000000000000011111000000011111000000000000111110000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000001111110000001111100000001111100000001111100000001111100000011111000000011111000000011111100000000000011111000000011111000000000000011111000000000000011111000000111111111111111\r
+000000000000000000000000001111000000001111000000001111000000001111000000011111000000011110000000011110000000111110000000000000011110000000011110000000000000111110000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011110000000111110000000111110000000111110000000111100000001111100000001111110000000000001111100000001111100000000000001111100000000000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111110000000111110000000111110000000111110000000111110000001111100000001111100000001111100000000000001111100000001111100000000000001111100000000000001111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000011111100000011111000000011111000000011111000000011111000000111111000000000000011111000000011111000000000000111110000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000001111110000001111100000001111100000001111100000001111100000011111000000011111000000011111100000000000011111000000011111000000000000011111000000000000011111000000111111111111111\r
 # Test: 26, Code: SIRCS (1) Button 2 Tuner, Address: 0x00, Command: 0x816\r
 00000000000000000000000000111100000000000000111100000000111100000001111100000001111000000001111000000001111000000011111000000000000001111000000011111000000000000011111000000000000011110000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011110000000000000111110000000111110000000111110000000111100000001111100000001111100000001111100000000000001111100000001111100000000000001111100000000000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000001111100000001111100000001111000000011111000000011111000000011111000000011111000000000000011111000000011111000000000000011111000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000001111100000001111100000001111100000011111000000011111000000011111000000011111000000000000011111000000011111000000000000111111000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000001111110000001111100000001111100000001111100000001111100000011111000000011111100000000000001111100000011111000000000000011111000000000000011111000000011111111111111111111\r
 # Test: 27, Code: SIRCS (1) Button 3 Tuner, Address: 0x00, Command: 0x416\r
index f8c6a6f001b020b3924ed52f3271c78927fb3b72..0101498a823798fc38a0bdc719d07f6e1f980693 100644 (file)
@@ -63,7 +63,7 @@
 #IR-cmd: 00010025005E\r
 0000000000000000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000000000001111000000000000001111100000001111100000001111100000001111100000000000000111100000001111100000001111100000000000000111110000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111000000000000001111100000001111100000000000001111100000000000000111100000000000000111110000000000000111110000000011110000000111110000000111110000000000000011111000000011111000000011111000000000000011111000000011111000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000000000001111000000000000001111100000001111100000001111100000001111100000000000001111100000001111100000001111100000000000000111100000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111000000000000001111100000001111100000000000001111100000000000000111100000000000000111110000000000000011110000000111110000000011110000000111110000000000000011111000000011111000000011110000000000000011111000000011111000000000000011111111111111111\r
 #IR-cmd: 00010010001D\r
-00000000000000000000000001111100000001111100000001111100000000000000111100000000000000111110000000000000111110000000111110000000000000111110000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111100000001111100000001111100000000000000111110000000000000111110000000000000111110000000011110000000000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000111110000000111110000000000000011111000000000000011111000000000000001111000000001111000000000000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000001111000000011111000000000000001111100000000000001111100000000000000111110000000111100000000000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101111111111111100000000000000000000000000111100000000111100000001111100000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111\r
+00000000000000000000000001111100000001111100000001111100000000000000111100000000000000111110000000000000111110000000111110000000000000111110000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111100000001111100000001111100000000000000111110000000000000111110000000000000111110000000011110000000000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000111110000000111110000000000000011111000000000000011111000000000000001111000000001111000000000000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000001111000000011111000000000000001111100000000000001111100000000000000111110000000111100000000000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111100000000111100000001111100000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111\r
 #IR-cmd: 00010014001D\r
 00000000000000000000000001111100000001111100000001111100000000000001111100000000000000111110000000000000111110000000111110000000000000011110000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000111110000000111110000000000000111110000000000000011111000000000000011111000000011111000000000000011111000000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111000000001111000000001111000000000000001111100000000000001111100000000000000111100000000111100000000000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000111110000000111110000000000000111110000000000000011110000000000000011111000000011111000000000000011111000000000000001111000000001111000000001111000000001111000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011111000000011111000000000000001111000000000000001111100000000000001111100000001111100000000000000111100000000000000111110000000111110000000111110000000111110000000111111111111111\r
 #IR-cmd: 00010010001D\r
 #IR-cmd: 00010065006D\r
 0000000000000000000000000011111000000000000011111000000000000011111000000011111000000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000000001111100000000000001111100000001111100000000000000111110000000000000111110000000111110000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000011111000000001111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000000011111000000000000011111000000011111000000000000001111100000000000001111100000001111100000000000001111100000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111\r
 #IR-cmd: 00010025006D\r
-0000000000000000000000000011111000000000000011111000000000000011111000000011111000000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000000111110000000000000111110000000111110000000000000111110000000000000011111000000011111000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000011111000000000000001111100000001111100000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110011100000000000000000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000000000000111111111111111\r
+0000000000000000000000000011111000000000000011111000000000000011111000000011111000000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000000111110000000000000111110000000111110000000000000111110000000000000011111000000011111000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000011111000000000000001111100000001111100000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000000000000111111111111111\r
 #IR-cmd: 00010025007D\r
 0000000000000000000000000011111000000000000011111000000000000001111100000001111100000000000001111100000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000011111000000011111000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000111110000000000000111110000000111110000000000000011111000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000000000001111100000000000001111100000001111100000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000000000011111000000011111000000011111000000000000011111000000011111000000000000001111111111111111\r
 #IR-cmd: 000100100052\r
 #IR-cmd: 000100100016\r
 000000000000000000000000011111000000011111000000011111000000000000011111100000011111100000000000001111100000000000001111100000001111100000000000001111110000001111110000001111110000001111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000001111100000000000001111100000001111100000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000001111110000000111110000000000000111110000000111110000000000000111111000000000000011111000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111\r
 #IR-cmd: 000100100016\r
-0000000000000000000000000011111000000111111000000011111000000000000011111000000011111000000000000011111100000000000001111100000001111100000000000001111100000001111100000001111100000001111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011111000000011111000000000000011111100000011111100000000000001111100000000000001111100000001111100000000000001111110000000111110000000111110000001111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000001111100000000000001111100000001111100000000000001111110000000000000111110000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111\r
-#IR-cmd: 000100100066\r
+0000000000000000000000000011111000000111111000000011111000000000000011111000000011111000000000000011111100000000000001111100000001111100000000000001111100000001111100000001111100000001111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011111000000011111000000000000011111100000011111100000000000001111100000000000001111100000001111100000000000001111110000000111110000000111110000001111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000001111100000000000001111100000001111100000000000001111110000000000000111110000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r
+#IR-cmd: 000100100066 1\r
 00000000000000000000000001111100000000000001111100000000000001111110000000111110000001111100000000000000111110000000000000111110000000111110000000000000111111000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000111110000000000000111111000000111111000000111111000000000000011111000000000000011111000000011111000000000000001111100000011111100000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111111000000000000011111000000000000011111000000011111000000011111000000000000011111100000000000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000001111100000000000000111110000001111110000001111110000000000000111110000000000000111110000000111110000000000000111111000000111111000000011111000000111110000000111111111111111111\r
-#IR-cmd: 000100100066\r
+#IR-cmd: 000100100066 2\r
 00000000000000000000000001111100000000000001111110000000000000111110000000111110000000111110000000000000111110000000000000111111000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111111000000000000011111000000000000011111000000011111000000011111000000000000001111100000000000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000001111100000000000001111110000001111110000001111110000000000000111110000000000000111111000000111111000000000000011111000000011111000000011111000000011111000000011111111111111111\r
-#IR-cmd: 000100100066\r
+#IR-cmd: 000100100066 3\r
 00000000000000000000000001111100000000000001111110000000000000111110000000111110000000111110000000000000111111000000000000111111000000111111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000011111000000000000011111100000001111100000011111100000000000001111100000000000001111100000001111100000000000001111110000001111110000001111110000001111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000001111100000000000000111110000000111110000000111110000000000000111110000000000000111111000000111111000000000000011111000000011111000000011111000000011111000000011111111111111111\r
 #IR-cmd: 000100100057\r
 0000000000000000000000000111110000000000000011111000000011111000000000000011111000000011111000000000000011111100000000000001111100000000000001111100000000000001111110000001111110000001111110000001111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111100000000000001111100000001111100000000000001111100000001111100000000000001111110000000000000111110000000000000111110000000000000011111000000111111000000111111000000111111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111110000000000000111110000000111110000000000000111110000000111110000000000000011111000000000000011111000000000000011111000000000000001111100000001111100000001111100000011111100000011111111111111111111\r
 #IR-cmd: 000100100024\r
 000000000000000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000011110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000111110000000000000111110000000111110000000111110000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111\r
 #IR-cmd: 000100120064\r
-0000000000000000000000000111110000000000000011111000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000000001111100000000000001111100000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011110000000000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000000111110000000000000111110000000111110000000111110000000000000111110000000011110000000111110000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101111111111111111111\r
+0000000000000000000000000111110000000000000011111000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000000001111100000000000001111100000001111100000001111100000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011110000000000000011111000000000000011111000000011111000000011111000000000000001111100000001111100000001111100000000000001111100000001111100000001111100000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111100000000000000111110000000000000111110000000111110000000111110000000000000111110000000011110000000111110000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r
 #IR-cmd: 000100100064\r
 00000000000000000000000000111110000000000000111110000000000000011110000000011110000000011110000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000000000001111000000000000001111100000001111100000001111100000000000001111100000001111100000001111100000000000000111110000000111110000000111110000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000111110000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000000000011111000000011111000000011111000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000011111000000000000001111100000000000001111100000001111100000001111100000000000001111100000001111100000001111100000000000000111110000000111110000000111110000000111110000000111111111111111111111\r
 #IR-cmd: 000100100064\r
diff --git a/IR-Data/recs80.txt b/IR-Data/recs80.txt
deleted file mode 100644 (file)
index b67ac7d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-__---------------------------------------------------__---------------------------------------------------__---------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__---------------------------------------------------\r
-__---------------------------------------------------__---------------------------------------------------__---------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__----------------------------------------------------------------------------__---------------------------------------------------__---------------------------------------------------\r
diff --git a/IR-Data/sony-rm-s311.txt b/IR-Data/sony-rm-s311.txt
new file mode 100644 (file)
index 0000000..32767a1
--- /dev/null
@@ -0,0 +1,5 @@
+# CD/Play (kurz)\r
+0000000000000000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111110000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000000111110000000111110000000000000111111000000111111000000111111000000000000111111000000111111000000111111000000111111000000111111000000111111000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111111000000000000111111000000111111000000000000111111000000111111000000111111000000000000111111000000111111000000111111000000111111000000111111000000111111000000000000111111111111111111111\r
+# CD/Play (laaaaang) 3 bis 4 sek\r
+0000000000000000000000001111110000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111110000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111110000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000111110000000111110000000111110000000111110000000111111000000000000111111111111111111111\r
+0000000000000000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000000000111110000000111110000000000000111110000000111110000000111110000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000111110000000111110000000000000111110000000111110000000111110000000000000111110000000000000111111000000111111000000000000111111000000111111000000111111000000111111000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111111000000111111000000000000111111000000111111000000111111000000000000111111000000000000111111000000111111000000000000111111000000111111000000111111000000111111000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111111000000111111000000000000111111000000111111000000111111000000000000111111000000000000111111000000111111000000000000111111000000111111000000111111000000111111000000000000111111111111111111\r
diff --git a/IR-Data/sony-television-service-commander.txt b/IR-Data/sony-television-service-commander.txt
new file mode 100644 (file)
index 0000000..02445b7
--- /dev/null
@@ -0,0 +1,4 @@
+# Raute\r
+0000000000000000000000001111110000001111110000001111110000001111110000000000001111100000000000001111100000000000001111100000000000001111100000000000011111100000011111100000011111100000011111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111111000000111111000000111111000000111111000000000000111110000000000000111110000000000000111110000000000000111110000000000001111110000001111110000001111110000001111110000001111111111111111\r
+# TT\r
+000000000000000000000000111111000000000000111111000000000000111111000000000000111111000000000000111111000000000000111110000000000000111110000000000000111110000000000000111110000001111110000001111110000001111110000001111111111111111111\r
diff --git a/IR-Data/test-suite.sh b/IR-Data/test-suite.sh
new file mode 100644 (file)
index 0000000..60a1b02
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh\r
+for j in                                    \\r
+            DK_Digital.txt                  \\r
+            Matsushita.txt                  \\r
+            Panasonic-Blue-Ray.txt          \\r
+            RC5-Taste.txt                   \\r
+            Samsung_DVD_Rec_00062C.txt      \\r
+            Samsung_TV.txt                  \\r
+            Sony-RM-S-310.txt               \\r
+            Sony-RM-U305C.txt               \\r
+            Sony-RMT-D142P-DVD.txt          \\r
+            Sony-RMT-V406.txt               \\r
+            Sony_Bravia_RM-ED0009.txt       \\r
+            Sony_Bravia_RM-ED0009_new.txt   \\r
+            Yamaha-RAV388.txt               \\r
+            apple.txt                       \\r
+            bo_beolink1000-10kHz.txt        \\r
+            denon.txt                       \\r
+            elta_radio.txt                  \\r
+            nec-repetition.txt              \\r
+            nec.txt                         \\r
+            nubert-subwoofer.txt            \\r
+            orion_vcr_07660BM070.txt        \\r
+            panasonic-scan.txt              \\r
+            rc5.txt                         \\r
+            rc5x-79.txt                     \\r
+            rc5x.txt                        \\r
+            rc6-hold.txt                    \\r
+            rc6.txt                         \\r
+            sharp-denon.txt                 \\r
+            sharp-denon2.txt\r
+do\r
+    echo "testing $j ..."\r
+    if ../irmp < $j | grep -q error\r
+    then\r
+        ../irmp < $j | grep error\r
+        echo "test failed"\r
+        exit 1\r
+    fi\r
+done\r
+echo "all tests successful"\r
+exit 0\r
index 7b390d5b3df663aaf4de120821f6ed4c51aac0ef..40d9a36cf203b5d9de5d14e81a543b9a7b765e38 100644 (file)
@@ -1,7 +1,8 @@
 IRMP - Infrared Multi Protocol Decoder\r
 --------------------------------------\r
 \r
-Version: 1.1  12.04.2010\r
+Version IRMP:  1.1.1  16.04.2010\r
+Version IRSND: 1.1.1  16.04.2010\r
 \r
 Dokumentation:\r
  \r
diff --git a/irmp.c b/irmp.c
index 08ceada074be1a66314a32ef004ea4e95d1eb2b9..f74363ff79faab40a07b83bc3f5702733ba6a329 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.16 2010/04/12 13:26:46 fm Exp $\r
+ * $Id: irmp.c,v 1.17 2010/04/16 09:23:29 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -20,6 +20,7 @@
  * RC6        - Philips and other European manufacturers\r
  * APPLE      - Apple\r
  * NUBERT     - Nubert Subwoofer System\r
+ * B&O        - Bang & Olufsen\r
  * PANASONIC  - Panasonic (older, yet not implemented)\r
  *\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
@@ -290,9 +291,18 @@ typedef unsigned int16  uint16_t;
 #define IRMP_TIMEOUT_LEN                        (uint8_t)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5)\r
 #define IRMP_REPETITION_TIME                    (uint16_t)(F_INTERRUPTS * 100.0e-3 + 0.5)  // autodetect key repetition within 100 msec\r
 \r
+#define MIN_TOLERANCE_00                        1.0                           // -0%\r
+#define MAX_TOLERANCE_00                        1.0                           // +0%\r
+\r
+#define MIN_TOLERANCE_05                        0.95                          // -5%\r
+#define MAX_TOLERANCE_05                        1.05                          // +5%\r
+\r
 #define MIN_TOLERANCE_10                        0.9                           // -10%\r
 #define MAX_TOLERANCE_10                        1.1                           // +10%\r
 \r
+#define MIN_TOLERANCE_15                        0.85                          // -15%\r
+#define MAX_TOLERANCE_15                        1.15                          // +15%\r
+\r
 #define MIN_TOLERANCE_20                        0.8                           // -20%\r
 #define MAX_TOLERANCE_20                        1.2                           // +20%\r
 \r
@@ -308,145 +318,145 @@ typedef unsigned int16  uint16_t;
 #define MIN_TOLERANCE_60                        0.4                           // -60%\r
 #define MAX_TOLERANCE_60                        1.6                           // +60%\r
 \r
-#define SIRCS_START_BIT_PULSE_LEN_MIN           (uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define SIRCS_START_BIT_PULSE_LEN_MAX           (uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define SIRCS_START_BIT_PAUSE_LEN_MIN           (uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SIRCS_START_BIT_PAUSE_LEN_MAX           (uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define SIRCS_1_PULSE_LEN_MIN                   (uint8_t)(F_INTERRUPTS * SIRCS_1_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define SIRCS_1_PULSE_LEN_MAX                   (uint8_t)(F_INTERRUPTS * SIRCS_1_PULSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define SIRCS_0_PULSE_LEN_MIN                   (uint8_t)(F_INTERRUPTS * SIRCS_0_PULSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SIRCS_0_PULSE_LEN_MAX                   (uint8_t)(F_INTERRUPTS * SIRCS_0_PULSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-#define SIRCS_PAUSE_LEN_MIN                     (uint8_t)(F_INTERRUPTS * SIRCS_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SIRCS_PAUSE_LEN_MAX                     (uint8_t)(F_INTERRUPTS * SIRCS_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-\r
-#define NEC_START_BIT_PULSE_LEN_MIN             (uint8_t)(F_INTERRUPTS * NEC_START_BIT_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_START_BIT_PULSE_LEN_MAX             (uint8_t)(F_INTERRUPTS * NEC_START_BIT_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NEC_START_BIT_PAUSE_LEN_MIN             (uint8_t)(F_INTERRUPTS * NEC_START_BIT_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_START_BIT_PAUSE_LEN_MAX             (uint8_t)(F_INTERRUPTS * NEC_START_BIT_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NEC_REPEAT_START_BIT_PAUSE_LEN_MIN      (uint8_t)(F_INTERRUPTS * NEC_REPEAT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_REPEAT_START_BIT_PAUSE_LEN_MAX      (uint8_t)(F_INTERRUPTS * NEC_REPEAT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NEC_PULSE_LEN_MIN                       (uint8_t)(F_INTERRUPTS * NEC_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_PULSE_LEN_MAX                       (uint8_t)(F_INTERRUPTS * NEC_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NEC_1_PAUSE_LEN_MIN                     (uint8_t)(F_INTERRUPTS * NEC_1_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_1_PAUSE_LEN_MAX                     (uint8_t)(F_INTERRUPTS * NEC_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NEC_0_PAUSE_LEN_MIN                     (uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NEC_0_PAUSE_LEN_MAX                     (uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-\r
-#define SAMSUNG_START_BIT_PULSE_LEN_MIN         (uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define SAMSUNG_START_BIT_PULSE_LEN_MAX         (uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define SAMSUNG_START_BIT_PAUSE_LEN_MIN         (uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define SAMSUNG_START_BIT_PAUSE_LEN_MAX         (uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define SAMSUNG_PULSE_LEN_MIN                   (uint8_t)(F_INTERRUPTS * SAMSUNG_PULSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SAMSUNG_PULSE_LEN_MAX                   (uint8_t)(F_INTERRUPTS * SAMSUNG_PULSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-#define SAMSUNG_1_PAUSE_LEN_MIN                 (uint8_t)(F_INTERRUPTS * SAMSUNG_1_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SAMSUNG_1_PAUSE_LEN_MAX                 (uint8_t)(F_INTERRUPTS * SAMSUNG_1_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-#define SAMSUNG_0_PAUSE_LEN_MIN                 (uint8_t)(F_INTERRUPTS * SAMSUNG_0_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define SAMSUNG_0_PAUSE_LEN_MAX                 (uint8_t)(F_INTERRUPTS * SAMSUNG_0_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-\r
-#define MATSUSHITA_START_BIT_PULSE_LEN_MIN      (uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define MATSUSHITA_START_BIT_PULSE_LEN_MAX      (uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define MATSUSHITA_START_BIT_PAUSE_LEN_MIN      (uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define MATSUSHITA_START_BIT_PAUSE_LEN_MAX      (uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define MATSUSHITA_PULSE_LEN_MIN                (uint8_t)(F_INTERRUPTS * MATSUSHITA_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define MATSUSHITA_PULSE_LEN_MAX                (uint8_t)(F_INTERRUPTS * MATSUSHITA_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define MATSUSHITA_1_PAUSE_LEN_MIN              (uint8_t)(F_INTERRUPTS * MATSUSHITA_1_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define MATSUSHITA_1_PAUSE_LEN_MAX              (uint8_t)(F_INTERRUPTS * MATSUSHITA_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define MATSUSHITA_0_PAUSE_LEN_MIN              (uint8_t)(F_INTERRUPTS * MATSUSHITA_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define MATSUSHITA_0_PAUSE_LEN_MAX              (uint8_t)(F_INTERRUPTS * MATSUSHITA_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-\r
-#define KASEIKYO_START_BIT_PULSE_LEN_MIN        (uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PULSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define KASEIKYO_START_BIT_PULSE_LEN_MAX        (uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PULSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define KASEIKYO_START_BIT_PAUSE_LEN_MIN        (uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define KASEIKYO_START_BIT_PAUSE_LEN_MAX        (uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define KASEIKYO_PULSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * KASEIKYO_PULSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define KASEIKYO_PULSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * KASEIKYO_PULSE_TIME * MAX_TOLERANCE_60 + 0.5)\r
-#define KASEIKYO_1_PAUSE_LEN_MIN                (uint8_t)(F_INTERRUPTS * KASEIKYO_1_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define KASEIKYO_1_PAUSE_LEN_MAX                (uint8_t)(F_INTERRUPTS * KASEIKYO_1_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-#define KASEIKYO_0_PAUSE_LEN_MIN                (uint8_t)(F_INTERRUPTS * KASEIKYO_0_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define KASEIKYO_0_PAUSE_LEN_MAX                (uint8_t)(F_INTERRUPTS * KASEIKYO_0_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-\r
-#define RECS80_START_BIT_PULSE_LEN_MIN          (uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RECS80_START_BIT_PULSE_LEN_MAX          (uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RECS80_START_BIT_PAUSE_LEN_MIN          (uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80_START_BIT_PAUSE_LEN_MAX          (uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define RECS80_PULSE_LEN_MIN                    (uint8_t)(F_INTERRUPTS * RECS80_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RECS80_PULSE_LEN_MAX                    (uint8_t)(F_INTERRUPTS * RECS80_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RECS80_1_PAUSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * RECS80_1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80_1_PAUSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * RECS80_1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define RECS80_0_PAUSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80_0_PAUSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-\r
-#define RC5_START_BIT_LEN_MIN                   (uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RC5_START_BIT_LEN_MAX                   (uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RC5_BIT_LEN_MIN                         (uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RC5_BIT_LEN_MAX                         (uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_20 + 0.5)\r
-\r
-#define DENON_PULSE_LEN_MIN                     (uint8_t)(F_INTERRUPTS * DENON_PULSE_TIME * MIN_TOLERANCE_50 + 0.5)\r
-#define DENON_PULSE_LEN_MAX                     (uint8_t)(F_INTERRUPTS * DENON_PULSE_TIME * MAX_TOLERANCE_50 + 0.5)\r
-#define DENON_1_PAUSE_LEN_MIN                   (uint8_t)(F_INTERRUPTS * DENON_1_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define DENON_1_PAUSE_LEN_MAX                   (uint8_t)(F_INTERRUPTS * DENON_1_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define DENON_0_PAUSE_LEN_MIN                   (uint8_t)(F_INTERRUPTS * DENON_0_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define DENON_0_PAUSE_LEN_MAX                   (uint8_t)(F_INTERRUPTS * DENON_0_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-\r
-#define RC6_START_BIT_PULSE_LEN_MIN             (uint8_t)(F_INTERRUPTS * RC6_START_BIT_PULSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define RC6_START_BIT_PULSE_LEN_MAX             (uint8_t)(F_INTERRUPTS * RC6_START_BIT_PULSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define RC6_START_BIT_PAUSE_LEN_MIN             (uint8_t)(F_INTERRUPTS * RC6_START_BIT_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define RC6_START_BIT_PAUSE_LEN_MAX             (uint8_t)(F_INTERRUPTS * RC6_START_BIT_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5)\r
-#define RC6_TOGGLE_BIT_LEN_MIN                  (uint8_t)(F_INTERRUPTS * RC6_TOGGLE_BIT_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RC6_TOGGLE_BIT_LEN_MAX                  (uint8_t)(F_INTERRUPTS * RC6_TOGGLE_BIT_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RC6_BIT_LEN_MIN                         (uint8_t)(F_INTERRUPTS * RC6_BIT_TIME * MIN_TOLERANCE_30 + 0.5)\r
-#define RC6_BIT_LEN_MAX                         (uint8_t)(F_INTERRUPTS * RC6_BIT_TIME * MAX_TOLERANCE_30 + 0.5)\r
-\r
-#define RECS80EXT_START_BIT_PULSE_LEN_MIN       (uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RECS80EXT_START_BIT_PULSE_LEN_MAX       (uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RECS80EXT_START_BIT_PAUSE_LEN_MIN       (uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80EXT_START_BIT_PAUSE_LEN_MAX       (uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define RECS80EXT_PULSE_LEN_MIN                 (uint8_t)(F_INTERRUPTS * RECS80EXT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define RECS80EXT_PULSE_LEN_MAX                 (uint8_t)(F_INTERRUPTS * RECS80EXT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define RECS80EXT_1_PAUSE_LEN_MIN               (uint8_t)(F_INTERRUPTS * RECS80EXT_1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80EXT_1_PAUSE_LEN_MAX               (uint8_t)(F_INTERRUPTS * RECS80EXT_1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define RECS80EXT_0_PAUSE_LEN_MIN               (uint8_t)(F_INTERRUPTS * RECS80EXT_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define RECS80EXT_0_PAUSE_LEN_MAX               (uint8_t)(F_INTERRUPTS * RECS80EXT_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-\r
-#define NUBERT_START_BIT_PULSE_LEN_MIN          (uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_START_BIT_PULSE_LEN_MAX          (uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NUBERT_START_BIT_PAUSE_LEN_MIN          (uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_START_BIT_PAUSE_LEN_MAX          (uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NUBERT_1_PULSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * NUBERT_1_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_1_PULSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * NUBERT_1_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NUBERT_1_PAUSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * NUBERT_1_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_1_PAUSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * NUBERT_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NUBERT_0_PULSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * NUBERT_0_PULSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_0_PULSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * NUBERT_0_PULSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-#define NUBERT_0_PAUSE_LEN_MIN                  (uint8_t)(F_INTERRUPTS * NUBERT_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5)\r
-#define NUBERT_0_PAUSE_LEN_MAX                  (uint8_t)(F_INTERRUPTS * NUBERT_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5)\r
-\r
-#define BANG_OLUFSEN_START_BIT1_PULSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT1_PULSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT2_PULSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT2_PULSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MIN   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MAX   (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_PULSE_LEN_MIN              (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_PULSE_TIME * MIN_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_PULSE_LEN_MAX              (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_PULSE_TIME * MAX_TOLERANCE_20 + 0.5)\r
-#define BANG_OLUFSEN_1_PAUSE_LEN_MIN            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_1_PAUSE_LEN_MAX            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_0_PAUSE_LEN_MIN            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_0_PAUSE_LEN_MAX            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_R_PAUSE_LEN_MIN            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_R_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_R_PAUSE_LEN_MAX            (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_R_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MIN  (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5)\r
-#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MAX  (uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5)\r
+#define SIRCS_START_BIT_PULSE_LEN_MIN           ((uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SIRCS_START_BIT_PULSE_LEN_MAX           ((uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define SIRCS_START_BIT_PAUSE_LEN_MIN           ((uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define SIRCS_START_BIT_PAUSE_LEN_MAX           ((uint8_t)(F_INTERRUPTS * SIRCS_START_BIT_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1) // only 5% to avoid conflict with RC6\r
+#define SIRCS_1_PULSE_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * SIRCS_1_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SIRCS_1_PULSE_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * SIRCS_1_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define SIRCS_0_PULSE_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * SIRCS_0_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SIRCS_0_PULSE_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * SIRCS_0_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define SIRCS_PAUSE_LEN_MIN                     ((uint8_t)(F_INTERRUPTS * SIRCS_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SIRCS_PAUSE_LEN_MAX                     ((uint8_t)(F_INTERRUPTS * SIRCS_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+\r
+#define NEC_START_BIT_PULSE_LEN_MIN             ((uint8_t)(F_INTERRUPTS * NEC_START_BIT_PULSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_START_BIT_PULSE_LEN_MAX             ((uint8_t)(F_INTERRUPTS * NEC_START_BIT_PULSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define NEC_START_BIT_PAUSE_LEN_MIN             ((uint8_t)(F_INTERRUPTS * NEC_START_BIT_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_START_BIT_PAUSE_LEN_MAX             ((uint8_t)(F_INTERRUPTS * NEC_START_BIT_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define NEC_REPEAT_START_BIT_PAUSE_LEN_MIN      ((uint8_t)(F_INTERRUPTS * NEC_REPEAT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_REPEAT_START_BIT_PAUSE_LEN_MAX      ((uint8_t)(F_INTERRUPTS * NEC_REPEAT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define NEC_PULSE_LEN_MIN                       ((uint8_t)(F_INTERRUPTS * NEC_PULSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_PULSE_LEN_MAX                       ((uint8_t)(F_INTERRUPTS * NEC_PULSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define NEC_1_PAUSE_LEN_MIN                     ((uint8_t)(F_INTERRUPTS * NEC_1_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_1_PAUSE_LEN_MAX                     ((uint8_t)(F_INTERRUPTS * NEC_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define NEC_0_PAUSE_LEN_MIN                     ((uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define NEC_0_PAUSE_LEN_MAX                     ((uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+\r
+#define SAMSUNG_START_BIT_PULSE_LEN_MIN         ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SAMSUNG_START_BIT_PULSE_LEN_MAX         ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define SAMSUNG_START_BIT_PAUSE_LEN_MIN         ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define SAMSUNG_START_BIT_PAUSE_LEN_MAX         ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define SAMSUNG_PULSE_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * SAMSUNG_PULSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define SAMSUNG_PULSE_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * SAMSUNG_PULSE_TIME * MAX_TOLERANCE_50 + 0.5) + 1)\r
+#define SAMSUNG_1_PAUSE_LEN_MIN                 ((uint8_t)(F_INTERRUPTS * SAMSUNG_1_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define SAMSUNG_1_PAUSE_LEN_MAX                 ((uint8_t)(F_INTERRUPTS * SAMSUNG_1_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5) + 1)\r
+#define SAMSUNG_0_PAUSE_LEN_MIN                 ((uint8_t)(F_INTERRUPTS * SAMSUNG_0_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define SAMSUNG_0_PAUSE_LEN_MAX                 ((uint8_t)(F_INTERRUPTS * SAMSUNG_0_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5) + 1)\r
+\r
+#define MATSUSHITA_START_BIT_PULSE_LEN_MIN      ((uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define MATSUSHITA_START_BIT_PULSE_LEN_MAX      ((uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define MATSUSHITA_START_BIT_PAUSE_LEN_MIN      ((uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define MATSUSHITA_START_BIT_PAUSE_LEN_MAX      ((uint8_t)(F_INTERRUPTS * MATSUSHITA_START_BIT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define MATSUSHITA_PULSE_LEN_MIN                ((uint8_t)(F_INTERRUPTS * MATSUSHITA_PULSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define MATSUSHITA_PULSE_LEN_MAX                ((uint8_t)(F_INTERRUPTS * MATSUSHITA_PULSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define MATSUSHITA_1_PAUSE_LEN_MIN              ((uint8_t)(F_INTERRUPTS * MATSUSHITA_1_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define MATSUSHITA_1_PAUSE_LEN_MAX              ((uint8_t)(F_INTERRUPTS * MATSUSHITA_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define MATSUSHITA_0_PAUSE_LEN_MIN              ((uint8_t)(F_INTERRUPTS * MATSUSHITA_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define MATSUSHITA_0_PAUSE_LEN_MAX              ((uint8_t)(F_INTERRUPTS * MATSUSHITA_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+\r
+#define KASEIKYO_START_BIT_PULSE_LEN_MIN        ((uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define KASEIKYO_START_BIT_PULSE_LEN_MAX        ((uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define KASEIKYO_START_BIT_PAUSE_LEN_MIN        ((uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define KASEIKYO_START_BIT_PAUSE_LEN_MAX        ((uint8_t)(F_INTERRUPTS * KASEIKYO_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define KASEIKYO_PULSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * KASEIKYO_PULSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define KASEIKYO_PULSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * KASEIKYO_PULSE_TIME * MAX_TOLERANCE_60 + 0.5) + 1)\r
+#define KASEIKYO_1_PAUSE_LEN_MIN                ((uint8_t)(F_INTERRUPTS * KASEIKYO_1_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define KASEIKYO_1_PAUSE_LEN_MAX                ((uint8_t)(F_INTERRUPTS * KASEIKYO_1_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5) + 1)\r
+#define KASEIKYO_0_PAUSE_LEN_MIN                ((uint8_t)(F_INTERRUPTS * KASEIKYO_0_PAUSE_TIME * MIN_TOLERANCE_50 + 0.5) - 1)\r
+#define KASEIKYO_0_PAUSE_LEN_MAX                ((uint8_t)(F_INTERRUPTS * KASEIKYO_0_PAUSE_TIME * MAX_TOLERANCE_50 + 0.5) + 1)\r
+\r
+#define RECS80_START_BIT_PULSE_LEN_MIN          ((uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PULSE_TIME * MIN_TOLERANCE_00 + 0.5) - 1)\r
+#define RECS80_START_BIT_PULSE_LEN_MAX          ((uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80_START_BIT_PAUSE_LEN_MIN          ((uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80_START_BIT_PAUSE_LEN_MAX          ((uint8_t)(F_INTERRUPTS * RECS80_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80_PULSE_LEN_MIN                    ((uint8_t)(F_INTERRUPTS * RECS80_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80_PULSE_LEN_MAX                    ((uint8_t)(F_INTERRUPTS * RECS80_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80_1_PAUSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * RECS80_1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80_1_PAUSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * RECS80_1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80_0_PAUSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80_0_PAUSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+\r
+#define RC5_START_BIT_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define RC5_START_BIT_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define RC5_BIT_LEN_MIN                         ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define RC5_BIT_LEN_MAX                         ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+\r
+#define DENON_PULSE_LEN_MIN                     ((uint8_t)(F_INTERRUPTS * DENON_PULSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define DENON_PULSE_LEN_MAX                     ((uint8_t)(F_INTERRUPTS * DENON_PULSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define DENON_1_PAUSE_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * DENON_1_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define DENON_1_PAUSE_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * DENON_1_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define DENON_0_PAUSE_LEN_MIN                   ((uint8_t)(F_INTERRUPTS * DENON_0_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define DENON_0_PAUSE_LEN_MAX                   ((uint8_t)(F_INTERRUPTS * DENON_0_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+\r
+#define RC6_START_BIT_PULSE_LEN_MIN             ((uint8_t)(F_INTERRUPTS * RC6_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RC6_START_BIT_PULSE_LEN_MAX             ((uint8_t)(F_INTERRUPTS * RC6_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RC6_START_BIT_PAUSE_LEN_MIN             ((uint8_t)(F_INTERRUPTS * RC6_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RC6_START_BIT_PAUSE_LEN_MAX             ((uint8_t)(F_INTERRUPTS * RC6_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RC6_TOGGLE_BIT_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * RC6_TOGGLE_BIT_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RC6_TOGGLE_BIT_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * RC6_TOGGLE_BIT_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RC6_BIT_LEN_MIN                         ((uint8_t)(F_INTERRUPTS * RC6_BIT_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RC6_BIT_LEN_MAX                         ((uint8_t)(F_INTERRUPTS * RC6_BIT_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+\r
+#define RECS80EXT_START_BIT_PULSE_LEN_MIN       ((uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PULSE_TIME * MIN_TOLERANCE_00 + 0.5) - 1)\r
+#define RECS80EXT_START_BIT_PULSE_LEN_MAX       ((uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PULSE_TIME * MAX_TOLERANCE_00 + 0.5) + 1)\r
+#define RECS80EXT_START_BIT_PAUSE_LEN_MIN       ((uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define RECS80EXT_START_BIT_PAUSE_LEN_MAX       ((uint8_t)(F_INTERRUPTS * RECS80EXT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define RECS80EXT_PULSE_LEN_MIN                 ((uint8_t)(F_INTERRUPTS * RECS80EXT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80EXT_PULSE_LEN_MAX                 ((uint8_t)(F_INTERRUPTS * RECS80EXT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80EXT_1_PAUSE_LEN_MIN               ((uint8_t)(F_INTERRUPTS * RECS80EXT_1_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80EXT_1_PAUSE_LEN_MAX               ((uint8_t)(F_INTERRUPTS * RECS80EXT_1_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define RECS80EXT_0_PAUSE_LEN_MIN               ((uint8_t)(F_INTERRUPTS * RECS80EXT_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define RECS80EXT_0_PAUSE_LEN_MAX               ((uint8_t)(F_INTERRUPTS * RECS80EXT_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+\r
+#define NUBERT_START_BIT_PULSE_LEN_MIN          ((uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PULSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_START_BIT_PULSE_LEN_MAX          ((uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PULSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define NUBERT_START_BIT_PAUSE_LEN_MIN          ((uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_START_BIT_PAUSE_LEN_MAX          ((uint8_t)(F_INTERRUPTS * NUBERT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define NUBERT_1_PULSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * NUBERT_1_PULSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_1_PULSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * NUBERT_1_PULSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define NUBERT_1_PAUSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * NUBERT_1_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_1_PAUSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * NUBERT_1_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define NUBERT_0_PULSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * NUBERT_0_PULSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_0_PULSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * NUBERT_0_PULSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define NUBERT_0_PAUSE_LEN_MIN                  ((uint8_t)(F_INTERRUPTS * NUBERT_0_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define NUBERT_0_PAUSE_LEN_MAX                  ((uint8_t)(F_INTERRUPTS * NUBERT_0_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+\r
+#define BANG_OLUFSEN_START_BIT1_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PULSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT1_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PULSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT1_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT2_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PULSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT2_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PULSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT2_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_PULSE_LEN_MIN              ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_PULSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_PULSE_LEN_MAX              ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_PULSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_1_PAUSE_LEN_MIN            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_1_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_1_PAUSE_LEN_MAX            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_1_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_0_PAUSE_LEN_MIN            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_0_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_0_PAUSE_LEN_MAX            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_0_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_R_PAUSE_LEN_MIN            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_R_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_R_PAUSE_LEN_MAX            ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_R_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MIN  ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MAX  ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
 \r
 #define AUTO_REPETITION_LEN                     (uint16_t)(F_INTERRUPTS * AUTO_REPETITION_TIME + 0.5)       // use uint16_t!\r
 \r
@@ -1855,6 +1865,45 @@ irmp_ISR (void)
 //\r
 // usage: ./irmp [-v|-s|-a] < file\r
 \r
+static void\r
+print_timings (void)\r
+{\r
+    printf ("PROTOCOL       START BIT NO.   START BIT PULSE     START BIT PAUSE\n");\r
+    printf ("====================================================================================\n");\r
+    printf ("SIRCS          1               %3d - %3d           %3d - %3d\n",\r
+            SIRCS_START_BIT_PULSE_LEN_MIN, SIRCS_START_BIT_PULSE_LEN_MAX, SIRCS_START_BIT_PAUSE_LEN_MIN, SIRCS_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("NEC            1               %3d - %3d           %3d - %3d\n",\r
+            NEC_START_BIT_PULSE_LEN_MIN, NEC_START_BIT_PULSE_LEN_MAX, NEC_START_BIT_PAUSE_LEN_MIN, NEC_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("NEC (rep)      1               %3d - %3d           %3d - %3d\n",\r
+            NEC_START_BIT_PULSE_LEN_MIN, NEC_START_BIT_PULSE_LEN_MAX, NEC_REPEAT_START_BIT_PAUSE_LEN_MIN, NEC_REPEAT_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("SAMSUNG        1               %3d - %3d           %3d - %3d\n",\r
+            SAMSUNG_START_BIT_PULSE_LEN_MIN, SAMSUNG_START_BIT_PULSE_LEN_MAX, SAMSUNG_START_BIT_PAUSE_LEN_MIN, SAMSUNG_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("MATSUSHITA     1               %3d - %3d           %3d - %3d\n",\r
+            MATSUSHITA_START_BIT_PULSE_LEN_MIN, MATSUSHITA_START_BIT_PULSE_LEN_MAX, MATSUSHITA_START_BIT_PAUSE_LEN_MIN, MATSUSHITA_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("KASEIKYO       1               %3d - %3d           %3d - %3d\n",\r
+            KASEIKYO_START_BIT_PULSE_LEN_MIN, KASEIKYO_START_BIT_PULSE_LEN_MAX, KASEIKYO_START_BIT_PAUSE_LEN_MIN, KASEIKYO_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("RECS80         1               %3d - %3d           %3d - %3d\n",\r
+            RECS80_START_BIT_PULSE_LEN_MIN, RECS80_START_BIT_PULSE_LEN_MAX, RECS80_START_BIT_PAUSE_LEN_MIN, RECS80_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("RC5            1               %3d - %3d           %3d - %3d\n",\r
+            RC5_START_BIT_LEN_MIN, RC5_START_BIT_LEN_MAX, RC5_START_BIT_LEN_MIN, RC5_START_BIT_LEN_MAX);\r
+    printf ("DENON          1               %3d - %3d           %3d - %3d or %3d - %3d\n",\r
+            DENON_PULSE_LEN_MIN, DENON_PULSE_LEN_MAX, DENON_1_PAUSE_LEN_MIN, DENON_1_PAUSE_LEN_MAX, DENON_0_PAUSE_LEN_MIN, DENON_0_PAUSE_LEN_MAX);\r
+    printf ("RC6            1               %3d - %3d           %3d - %3d\n",\r
+            RC6_START_BIT_PULSE_LEN_MIN, RC6_START_BIT_PULSE_LEN_MAX, RC6_START_BIT_PAUSE_LEN_MIN, RC6_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("RECS80EXT      1               %3d - %3d           %3d - %3d\n",\r
+            RECS80EXT_START_BIT_PULSE_LEN_MIN, RECS80EXT_START_BIT_PULSE_LEN_MAX, RECS80EXT_START_BIT_PAUSE_LEN_MIN, RECS80EXT_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("NUBERT         1               %3d - %3d           %3d - %3d\n",\r
+            NUBERT_START_BIT_PULSE_LEN_MIN, NUBERT_START_BIT_PULSE_LEN_MAX, NUBERT_START_BIT_PAUSE_LEN_MIN, NUBERT_START_BIT_PAUSE_LEN_MAX);\r
+    printf ("BANG_OLUFSEN   1               %3d - %3d           %3d - %3d\n",\r
+            BANG_OLUFSEN_START_BIT1_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PULSE_LEN_MAX, BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MAX);\r
+    printf ("BANG_OLUFSEN   2               %3d - %3d           %3d - %3d\n",\r
+            BANG_OLUFSEN_START_BIT2_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT2_PULSE_LEN_MAX, BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MAX);\r
+    printf ("BANG_OLUFSEN   3               %3d - %3d           %3d - %3d\n",\r
+            BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX, BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX);\r
+    printf ("BANG_OLUFSEN   4               %3d - %3d           %3d - %3d\n",\r
+            BANG_OLUFSEN_START_BIT4_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT4_PULSE_LEN_MAX, BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MAX);\r
+}\r
+\r
 int\r
 main (int argc, char ** argv)\r
 {\r
@@ -1916,6 +1965,11 @@ main (int argc, char ** argv)
         {\r
             silent = TRUE;\r
         }\r
+        else if (! strcmp (argv[1], "-p"))\r
+        {\r
+            print_timings ();\r
+            return (0);\r
+        }\r
     }\r
 \r
     IRMP_PIN = 0xFF;\r
index ba9c43f622881cf74dd8bd19b654fb6c00fba95f..62f1033383137ef254e2825f15fa815277671ee0 100644 (file)
Binary files a/irmp.exe and b/irmp.exe differ
diff --git a/irmp.h b/irmp.h
index 8820cf237aa6e231b6933fb6f3215f37574eddb7..67a9895ad5f0521c5179dc245f8b6810eb16e61e 100644 (file)
--- a/irmp.h
+++ b/irmp.h
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.h,v 1.12 2010/04/12 10:15:40 fm Exp $\r
+ * $Id: irmp.h,v 1.13 2010/04/16 09:23:29 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -191,19 +191,19 @@ extern "C"
 #define NUBERT_STOP_BIT                         1                             // has stop bit\r
 #define NUBERT_LSB                              0                             // MSB?\r
 \r
-#define BANG_OLUFSEN_START_BIT1_PULSE_TIME       210.0e-6                     //   210 usec pulse\r
-#define BANG_OLUFSEN_START_BIT1_PAUSE_TIME      3000.0e-6                     //  3000 usec pause\r
-#define BANG_OLUFSEN_START_BIT2_PULSE_TIME       210.0e-6                     //   210 usec pulse\r
-#define BANG_OLUFSEN_START_BIT2_PAUSE_TIME      3000.0e-6                     //  3000 usec pause\r
-#define BANG_OLUFSEN_START_BIT3_PULSE_TIME       210.0e-6                     //   210 usec pulse\r
-#define BANG_OLUFSEN_START_BIT3_PAUSE_TIME     15000.0e-6                     // 15000 usec pause\r
-#define BANG_OLUFSEN_START_BIT4_PULSE_TIME       210.0e-6                     //   210 usec pulse\r
-#define BANG_OLUFSEN_START_BIT4_PAUSE_TIME      3000.0e-6                     //  3000 usec pause\r
-#define BANG_OLUFSEN_PULSE_TIME                  210.0e-6                     //   210 usec pulse\r
-#define BANG_OLUFSEN_1_PAUSE_TIME               9000.0e-6                     //  9000 usec pause\r
-#define BANG_OLUFSEN_0_PAUSE_TIME               3000.0e-6                     //  3000 usec pause\r
-#define BANG_OLUFSEN_R_PAUSE_TIME               6000.0e-6                     //  6000 usec pause (repeat last bit)\r
-#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME    12000.0e-6                     // 12000 usec pause (trailer bit)\r
+#define BANG_OLUFSEN_START_BIT1_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT1_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_START_BIT2_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT2_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_START_BIT3_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT3_PAUSE_TIME     15625.0e-6                     // 15625 usec pause\r
+#define BANG_OLUFSEN_START_BIT4_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT4_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_PULSE_TIME                  200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_1_PAUSE_TIME               9375.0e-6                     //  9375 usec pause\r
+#define BANG_OLUFSEN_0_PAUSE_TIME               3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_R_PAUSE_TIME               6250.0e-6                     //  6250 usec pause (repeat last bit)\r
+#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME    12500.0e-6                     // 12500 usec pause (trailer bit)\r
 #define BANG_OLUFSEN_ADDRESS_OFFSET             0                             // no address bits\r
 #define BANG_OLUFSEN_ADDRESS_LEN                0                             // no address bits\r
 #define BANG_OLUFSEN_COMMAND_OFFSET             3                             // skip startbits 2, 3, 4\r
index b4deea8e359f5f20ff5ccc15bb04b8fd9f61b8c9..332444dda0ce08ccd11c5f1d550d653af394cb6e 100644 (file)
Binary files a/irsnd.exe and b/irsnd.exe differ