]> cloudbase.mooo.com Git - irmp.git/blame - irmp.c
version 1.9.8: improved handling of bi-phase (manchester) frames, added NEC16 protocol
[irmp.git] / irmp.c
Content-type: text/html ]> cloudbase.mooo.com Git - irmp.git/blame - irmp.c


500 - Internal Server Error

Malformed UTF-8 character (fatal) at (eval 6) line 1, <$fd> line 424.
CommitLineData
4225a882 1/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
2 * irmp.c - infrared multi-protocol decoder, supports several remote control protocols\r
3 *\r
4 * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
5 *\r
fc80d688 6 * $Id: irmp.c,v 1.97 2011/02/25 15:24:06 fm Exp $\r
cb8474cc 7 *\r
4225a882 8 * ATMEGA88 @ 8 MHz\r
9 *\r
10 * Typical manufacturers:\r
11 *\r
a42d1ee6 12 * SIRCS - Sony\r
13 * NEC - NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC, Pioneer, Toshiba, Xoro, Orion, and many other Japanese manufacturers\r
14 * SAMSUNG - Samsung\r
15 * SAMSUNG32 - Samsung\r
16 * MATSUSHITA - Matsushita\r
17 * KASEIKYO - Panasonic, Denon & other Japanese manufacturers (members of "Japan's Association for Electric Home Application")\r
18 * RECS80 - Philips, Nokia, Thomson, Nordmende, Telefunken, Saba\r
19 * RC5 - Philips and other European manufacturers\r
20 * DENON - Denon, Sharp\r
21 * RC6 - Philips and other European manufacturers\r
22 * APPLE - Apple\r
23 * NUBERT - Nubert Subwoofer System\r
24 * B&O - Bang & Olufsen\r
25 * PANASONIC - Panasonic (older, yet not implemented)\r
26 * GRUNDIG - Grundig\r
27 * NOKIA - Nokia\r
28 * SIEMENS - Siemens, e.g. Gigaset M740AV\r
29 * FDC - FDC IR keyboard\r
30 * RCCAR - IR remote control for RC cars\r
31 * JVC - JVC\r
32 * NIKON - Nikon cameras\r
33 * RUWIDO - T-Home\r
34 * KATHREIN - Kathrein\r
4225a882 35 *\r
36 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
37 *\r
38 * SIRCS\r
39 * -----\r
40 *\r
41 * frame: 1 start bit + 12-20 data bits + no stop bit\r
42 * data: 7 command bits + 5 address bits + 0 to 8 additional bits\r
43 *\r
44 * start bit: data "0": data "1": stop bit:\r
45 * -----------------_________ ------_____ ------------______\r
46 * 2400us 600us 600us 600us 1200us 600 us no stop bit\r
47 *\r
48 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
49 *\r
50 * NEC + extended NEC\r
51 * -------------------------\r
52 *\r
53 * frame: 1 start bit + 32 data bits + 1 stop bit\r
54 * data NEC: 8 address bits + 8 inverted address bits + 8 command bits + 8 inverted command bits\r
55 * data extended NEC: 16 address bits + 8 command bits + 8 inverted command bits\r
56 *\r
57 * start bit: data "0": data "1": stop bit:\r
58 * -----------------_________ ------______ ------________________ ------______....\r
59 * 9000us 4500us 560us 560us 560us 1690 us 560us\r
60 *\r
61 *\r
62 * Repetition frame:\r
63 *\r
64 * -----------------_________------______ .... ~100ms Pause, then repeat\r
65 * 9000us 2250us 560us\r
66 *\r
67 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
68 *\r
69 * SAMSUNG\r
70 * -------\r
71 *\r
72 * frame: 1 start bit + 16 data(1) bits + 1 sync bit + additional 20 data(2) bits + 1 stop bit\r
73 * data(1): 16 address bits\r
74 * data(2): 4 ID bits + 8 command bits + 8 inverted command bits\r
75 *\r
76 * start bit: data "0": data "1": sync bit: stop bit:\r
77 * ----------______________ ------______ ------________________ ------______________ ------______....\r
78 * 4500us 4500us 550us 450us 550us 1450us 550us 4500us 550us\r
79 *\r
80 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
81 *\r
82 * SAMSUNG32\r
83 * ----------\r
84 *\r
85 * frame: 1 start bit + 32 data bits + 1 stop bit\r
86 * data: 16 address bits + 16 command bits\r
87 *\r
88 * start bit: data "0": data "1": stop bit:\r
89 * ----------______________ ------______ ------________________ ------______....\r
90 * 4500us 4500us 550us 450us 550us 1450us 550us\r
91 *\r
92 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
93 *\r
94 * MATSUSHITA\r
95 * ----------\r
96 *\r
97 * frame: 1 start bit + 24 data bits + 1 stop bit\r
98 * data: 6 custom bits + 6 command bits + 12 address bits\r
99 *\r
100 * start bit: data "0": data "1": stop bit:\r
101 * ----------_________ ------______ ------________________ ------______....\r
102 * 3488us 3488us 872us 872us 872us 2616us 872us\r
103 *\r
104 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
105 *\r
106 * KASEIKYO\r
107 * --------\r
108 *\r
109 * frame: 1 start bit + 48 data bits + 1 stop bit\r
110 * data: 16 manufacturer bits + 4 parity bits + 4 genre1 bits + 4 genre2 bits + 10 command bits + 2 id bits + 8 parity bits\r
111 *\r
112 * start bit: data "0": data "1": stop bit:\r
113 * ----------______ ------______ ------________________ ------______....\r
114 * 3380us 1690us 423us 423us 423us 1269us 423us\r
115 *\r
116 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
117 *\r
118 * RECS80\r
119 * ------\r
120 *\r
121 * frame: 2 start bits + 10 data bits + 1 stop bit\r
122 * data: 1 toggle bit + 3 address bits + 6 command bits\r
123 *\r
124 * start bit: data "0": data "1": stop bit:\r
125 * -----_____________________ -----____________ -----______________ ------_______....\r
126 * 158us 7432us 158us 4902us 158us 7432us 158us\r
127 *\r
128 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
129 *\r
130 * RECS80EXT\r
131 * ---------\r
132 *\r
133 * frame: 2 start bits + 11 data bits + 1 stop bit\r
134 * data: 1 toggle bit + 4 address bits + 6 command bits\r
135 *\r
136 * start bit: data "0": data "1": stop bit:\r
137 * -----_____________________ -----____________ -----______________ ------_______....\r
138 * 158us 3637us 158us 4902us 158us 7432us 158us\r
139 *\r
140 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
141 *\r
142 * RC5 + RC5X\r
143 * ----------\r
144 *\r
145 * RC5 frame: 2 start bits + 12 data bits + no stop bit\r
146 * RC5 data: 1 toggle bit + 5 address bits + 6 command bits\r
147 * RC5X frame: 1 start bit + 13 data bits + no stop bit\r
148 * RC5X data: 1 inverted command bit + 1 toggle bit + 5 address bits + 6 command bits\r
149 *\r
150 * start bit: data "0": data "1":\r
151 * ______----- ------______ ______------\r
152 * 889us 889us 889us 889us 889us 889us\r
153 *\r
154 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
155 *\r
156 * DENON\r
157 * -----\r
158 *\r
159 * frame: 0 start bits + 16 data bits + stop bit + 65ms pause + 16 inverted data bits + stop bit\r
160 * data: 5 address bits + 10 command bits\r
161 *\r
53c11f07 162 * Theory:\r
163 *\r
4225a882 164 * data "0": data "1":\r
165 * ------________________ ------______________\r
b5ea7869 166 * 275us 775us 275us 1900us\r
4225a882 167 *\r
53c11f07 168 * Practice:\r
169 *\r
170 * data "0": data "1":\r
171 * ------________________ ------______________\r
172 * 310us 745us 310us 1780us\r
173 *\r
4225a882 174 *---------------------------------------------------------------------------------------------------------------------------------------------------\r
175 *\r
176 * RC6\r
177 * ---\r
178 *\r
179