# 16\r
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111110000000001111111100000000011111111000000000111111100000000011111111000000000111111100000000001111111000000000011111110000000001111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111100000000011111110000000001111111100000000011111111000000000111111111111111111111111000000000111111111111111111111111000000000011111110000000000111111100000000011111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111110000000001111111111111111\r
# 17\r
-### 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111000000000111111110000000001111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111100000000011111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111100000000011111111000000000111111111111111111111111000000000011111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111000000000111111111111111111111111000000000111111111111111111111111100000000011111110000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111\r
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111110000000001111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111000000000011111110000000001111111100000000011111111000000000111111110000000001111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111110000000001111111100000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111000000000111111110000000001111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111111111111111\r
# 18\r
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000011111111000000000111111100000000001111111111111111111111110000000001111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111100000000011111110000000001111111111111111111111111000000000111111100000000001111111000000000011111110000000001111111000000000011111110000000000111111111111111111111111000000000111111111111111111111111000000000111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111000000000111111100000000011111111000000000111111111111111111111111000000000011111110000000000111111111111111111111111000000000111111100000000001111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111100000000011111110000000001111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111000000000111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111100000000011111111111111111111111100000000001111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111000000000011111110000000000111111111111111111111111000000000111111100000000001111111000000000111111110000000001111111100000000011111110000000001111111111111111111111111000000000111111111111111111111111000000000011111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r
# 19\r
# 20\r
000000000000001111111111111000000000000000000000000001111111111111111111111111000000000000000000000000000111111111111111111111111100000000000000000000000000011111111111100000000000000111111111111000000000000001111111111110000000000000011111111111111111111111110000000000000011111111111100000000000000000000000000011111111111100000000000000111111111111111\r
# 21\r
-### 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111100000000001111111000000000011111110000000000111111100000000011111111000000000111111110000000001111111100000000011111110000000000111111100000000001111111111111111111111110000000001111111100000000011111111000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111000000000011111110000000001111111100000000011111111000000000111111110000000001111111100000000011111111000000000111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111\r
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111110000000000111111100000000001111111000000000011111110000000001111111100000000011111111000000000111111110000000001111111000000000011111110000000000111111111111111111111111000000000111111110000000001111111100000000011111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111000000000111111110000000001111111100000000011111111000000000111111110000000001111111100000000011111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111\r
# 22\r
000000000000000000000000000000000000000001111111111111000000011111111111100000001111110000001111110000000000000000000011111111111111111100000001111110000000111111000000011111100000001111100000000000000111111111111000000011111100000011111100000001111110000000111111000000011111000000000000001111110000001111111111111000000011111000000001111111111111111111\r
# 23\r
# 84\r
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111100000000011111110000000001111111100000000011111111000000000111111100000000001111111000000000111111110000000001111111000000000111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111000000000111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111000000000011111110000000000111111100000000011111110000000000111111111111111111111111000000000111111111111111111111111100000000011111110000000001111111100000000011111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111110000000001111111111111111\r
# 85\r
-### 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000001111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111110000000001111111100000000011111111000000000111111110000000001111111000000000011111110000000001111111111111111111111111000000000111111110000000001111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111000000000011111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111000000000111111110000000001111111111111111111111111000000000111111110000000001111111000000000111111111111111111111111100000000011111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000011111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111\r
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111110000000000111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111100000000011111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111100000000011111111000000000111111100000000001111111000000000111111111111111111111111100000000011111111000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111100000000001111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111110000000000111111100000000011111111000000000111111111111111111111111100000000011111111000000000111111100000000011111111111111111111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000001111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111100000000011111111111111111111\r
# 86\r
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111000000000111111111111111111111111100000000011111110000000000111111111111111111111111000000000111111111111111111111111000000000011111110000000001111111100000000011111111000000000111111111111111111111111000000000111111110000000001111111111111111111111110000000000111111100000000011111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111110000000001111111000000000011111111111111111111111100000000011111111000000000111111100000000011111111000000000111111110000000001111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111110000000001111111111111111111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111000000000011111110000000001111111100000000011111111111111111111111110000000001111111000000000111111111111111111111111100000000011111110000000001111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111111111111111111110000000000111111100000000011111111000000000111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111000000000111111111111111111111111100000000011111110000000001111111111111111111111111000000000111111111111111111111111000000000011111110000000001111111100000000011111110000000001111111111111111111111111000000000111111110000000001111111111111111111111110000000001111111100000000011111110000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111110000000001111111000000000111111111111111111111111100000000011111110000000000111111100000000011111111000000000111111100000000011111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r
# 87\r
# 88\r
000000000000001111111111110000000000000000000000000001111111111111111111111111000000000000000000000000000111111111111111111111111100000000000000000000000000011111111111100000000000000111111111111000000000000001111111111110000000000000011111111111111111111111110000000000000011111111111100000000000000000000000000011111111111100000000000000111111111111111\r
# 89\r
-### 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111000000000011111111111111111111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111100000000011111111000000000111111110000000001111111100000000011111110000000000111111100000000001111111000000000011111110000000001111111100000000011111111111111111111111100000000001111111000000000111111110000000001111111100000000011111111111111111111111100000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111000000000111111110000000001111111100000000011111111000000000111111100000000001111111000000000111111110000000001111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111000000000011111111111111111111\r
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000001111111111111111111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111000000000011111110000000001111111100000000011111111000000000111111110000000001111111000000000011111110000000000111111100000000001111111000000000111111110000000001111111111111111111111110000000000111111100000000011111111000000000111111110000000001111111111111111111111110000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111100000000011111111000000000111111110000000001111111100000000011111110000000000111111100000000011111111000000000111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111111111111100000000011111111111111111111111110000000001111111111111111111111110000000001111111111111111111111111000000000111111111111111111111111000000000111111111111111\r
# 90\r
000000000000000000000000000000000000000001111111111111000000011111111111100000001111100000000111110000000000000000000011111111111111111100000001111110000000111111000000011111000000001111100000000000000111111111111000000011111000000001111100000001111110000000111110000000011111000000000000001111100000000111111111110000000011111000000011111111111111111111\r
# 91\r
*\r
* Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmp.c,v 1.97 2011/02/25 15:24:06 fm Exp $\r
+ * $Id: irmp.c,v 1.99 2011/03/10 12:29:13 fm Exp $\r
*\r
* ATMEGA88 @ 8 MHz\r
*\r
* RC6\r
* ---\r
*\r
- * RC6 frame: 1 start bit + 1 bit "1" + 3 mode bits + 1 toggle bit + 16 data bits + 2666 µs pause\r
+ * RC6 frame: 1 start bit + 1 bit "1" + 3 mode bits + 1 toggle bit + 16 data bits + 2666 us pause\r
* RC6 data: 8 address bits + 8 command bits\r
*\r
* start bit toggle bit "0": toggle bit "1": data/mode "0": data/mode "1":\r
\r
#endif\r
\r
-#if IRMP_SUPPORT_NEC16_PROTOCOL == 1\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
\r
-static PROGMEM IRMP_PARAMETER nec16_param =\r
+static PROGMEM IRMP_PARAMETER nec42_param =\r
{\r
- IRMP_NEC16_PROTOCOL, // protocol: ir protocol\r
+ IRMP_NEC42_PROTOCOL, // protocol: ir protocol\r
NEC_PULSE_LEN_MIN, // pulse_1_len_min: minimum length of pulse with bit value 1\r
NEC_PULSE_LEN_MAX, // pulse_1_len_max: maximum length of pulse with bit value 1\r
NEC_1_PAUSE_LEN_MIN, // pause_1_len_min: minimum length of pause with bit value 1\r
NEC_PULSE_LEN_MAX, // pulse_0_len_max: maximum length of pulse with bit value 0\r
NEC_0_PAUSE_LEN_MIN, // pause_0_len_min: minimum length of pause with bit value 0\r
NEC_0_PAUSE_LEN_MAX, // pause_0_len_max: maximum length of pause with bit value 0\r
- NEC16_ADDRESS_OFFSET, // address_offset: address offset\r
- NEC16_ADDRESS_OFFSET + NEC16_ADDRESS_LEN, // address_end: end of address\r
- NEC16_COMMAND_OFFSET, // command_offset: command offset\r
- NEC16_COMMAND_OFFSET + NEC16_COMMAND_LEN, // command_end: end of command\r
- NEC16_COMPLETE_DATA_LEN, // complete_len: complete length of frame\r
- NEC16_STOP_BIT, // stop_bit: flag: frame has stop bit\r
- NEC16_LSB, // lsb_first: flag: LSB first\r
- NEC16_FLAGS // flags: some flags\r
+ NEC42_ADDRESS_OFFSET, // address_offset: address offset\r
+ NEC42_ADDRESS_OFFSET + NEC_ADDRESS_LEN, // address_end: end of address\r
+ NEC42_COMMAND_OFFSET, // command_offset: command offset\r
+ NEC42_COMMAND_OFFSET + NEC_COMMAND_LEN, // command_end: end of command\r
+ NEC42_COMPLETE_DATA_LEN, // complete_len: complete length of frame\r
+ NEC_STOP_BIT, // stop_bit: flag: frame has stop bit\r
+ NEC_LSB, // lsb_first: flag: LSB first\r
+ NEC_FLAGS // flags: some flags\r
};\r
\r
#endif\r
static uint16_t irmp_tmp_address; // ir address\r
static uint16_t irmp_tmp_command; // ir command\r
\r
-#if IRMP_SUPPORT_RC5_PROTOCOL == 1 && (IRMP_SUPPORT_FDC_PROTOCOL == 1 || IRMP_SUPPORT_RCCAR_PROTOCOL == 1)\r
+#if IRMP_SUPPORT_RC5_PROTOCOL == 1 && (IRMP_SUPPORT_FDC_PROTOCOL == 1 || IRMP_SUPPORT_RCCAR_PROTOCOL == 1) || IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
static uint16_t irmp_tmp_address2; // ir address\r
static uint16_t irmp_tmp_command2; // ir command\r
#endif\r
}\r
}\r
\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
+ else if (irmp_param.protocol == IRMP_NEC42_PROTOCOL && irmp_bit >= 13 && irmp_bit < 26)\r
+ {\r
+ irmp_tmp_address2 |= (((uint16_t) (value)) << (irmp_bit - 13)); // CV wants cast\r
+ }\r
+#endif\r
+\r
#if IRMP_SUPPORT_SAMSUNG_PROTOCOL == 1\r
else if (irmp_param.protocol == IRMP_SAMSUNG_PROTOCOL && irmp_bit >= SAMSUNG_ID_OFFSET && irmp_bit < SAMSUNG_ID_OFFSET + SAMSUNG_ID_LEN)\r
{\r
irmp_tmp_command = 0;\r
irmp_tmp_address = 0;\r
\r
-#if IRMP_SUPPORT_RC5_PROTOCOL == 1 && (IRMP_SUPPORT_FDC_PROTOCOL == 1 || IRMP_SUPPORT_RCCAR_PROTOCOL == 1)\r
+#if IRMP_SUPPORT_RC5_PROTOCOL == 1 && (IRMP_SUPPORT_FDC_PROTOCOL == 1 || IRMP_SUPPORT_RCCAR_PROTOCOL == 1) || IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
irmp_tmp_command2 = 0;\r
irmp_tmp_address2 = 0;\r
#endif\r
ANALYZE_PRINTF ("protocol = NEC or JVC repeat frame, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",\r
JVC_START_BIT_PULSE_LEN_MIN, JVC_START_BIT_PULSE_LEN_MAX,\r
JVC_REPEAT_START_BIT_PAUSE_LEN_MIN, JVC_REPEAT_START_BIT_PAUSE_LEN_MAX);\r
- irmp_param_p = (IRMP_PARAMETER *) &nec_param; // tricky: use nec parameters\r
+ irmp_param_p = (IRMP_PARAMETER *) &nec_param;\r
}\r
else\r
#endif // IRMP_SUPPORT_JVC_PROTOCOL == 1\r
if (irmp_pulse_time >= NEC_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= NEC_START_BIT_PULSE_LEN_MAX &&\r
irmp_pause_time >= NEC_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= NEC_START_BIT_PAUSE_LEN_MAX)\r
{\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
+ ANALYZE_PRINTF ("protocol = NEC42, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",\r
+ NEC_START_BIT_PULSE_LEN_MIN, NEC_START_BIT_PULSE_LEN_MAX,\r
+ NEC_START_BIT_PAUSE_LEN_MIN, NEC_START_BIT_PAUSE_LEN_MAX);\r
+ irmp_param_p = (IRMP_PARAMETER *) &nec42_param;\r
+#else\r
ANALYZE_PRINTF ("protocol = NEC, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",\r
NEC_START_BIT_PULSE_LEN_MIN, NEC_START_BIT_PULSE_LEN_MAX,\r
NEC_START_BIT_PAUSE_LEN_MIN, NEC_START_BIT_PAUSE_LEN_MAX);\r
irmp_param_p = (IRMP_PARAMETER *) &nec_param;\r
+#endif\r
+\r
}\r
else if (irmp_pulse_time >= NEC_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= NEC_START_BIT_PULSE_LEN_MAX &&\r
irmp_pause_time >= NEC_REPEAT_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= NEC_REPEAT_START_BIT_PAUSE_LEN_MAX)\r
irmp_start_bit_detected = 1; // tricky: don't wait for another start bit...\r
}\r
#endif // IRMP_SUPPORT_JVC_PROTOCOL == 1\r
+\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
+#if IRMP_SUPPORT_NEC_PROTOCOL == 1\r
+ else if (irmp_param.protocol == IRMP_NEC42_PROTOCOL && irmp_bit == 32) // it was a NEC stop bit\r
+ {\r
+ ANALYZE_PRINTF ("Switching to NEC protocol\n");\r
+ irmp_param.stop_bit = TRUE; // set flag\r
+ irmp_param.protocol = IRMP_NEC_PROTOCOL; // switch protocol\r
+ irmp_param.complete_len = irmp_bit; // patch length: 16 or 17\r
+\r
+ // 0123456789ABC0123456789ABC0123456701234567\r
+ // NEC42: AAAAAAAAAAAAAaaaaaaaaaaaaaCCCCCCCCcccccccc\r
+ // NEC: AAAAAAAAaaaaaaaaCCCCCCCCcccccccc\r
+ irmp_tmp_address |= (irmp_tmp_address2 & 0x0007) << 12;\r
+ irmp_tmp_command = (irmp_tmp_address2 >> 3) | (irmp_tmp_command << 10);\r
+ }\r
+#endif // IRMP_SUPPORT_NEC_PROTOCOL == 1\r
+#if IRMP_SUPPORT_JVC_PROTOCOL == 1\r
+ else if (irmp_param.protocol == IRMP_NEC42_PROTOCOL && irmp_bit == 16) // it was a JVC stop bit\r
+ {\r
+ ANALYZE_PRINTF ("Switching to JVC protocol\n");\r
+ irmp_param.stop_bit = TRUE; // set flag\r
+ irmp_param.protocol = IRMP_JVC_PROTOCOL; // switch protocol\r
+ irmp_param.complete_len = irmp_bit; // patch length: 16 or 17\r
+\r
+ // 0123456789ABC0123456789ABC0123456701234567\r
+ // NEC42: AAAAAAAAAAAAAaaaaaaaaaaaaaCCCCCCCCcccccccc\r
+ // JVC: AAAACCCCCCCCCCCC\r
+ irmp_tmp_command = (irmp_tmp_address >> 4) | (irmp_tmp_address2 << 9); // set command: upper 12 bits are command bits\r
+ irmp_tmp_address = irmp_tmp_address & 0x000F; // lower 4 bits are address bits\r
+ }\r
+#endif // IRMP_SUPPORT_JVC_PROTOCOL == 1\r
+#endif // IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
else\r
{\r
ANALYZE_PRINTF ("error 2: pause %d after data bit %d too long\n", irmp_pause_time, irmp_bit);\r
#endif // IRMP_SUPPORT_SAMSUNG_PROTOCOL\r
\r
#if IRMP_SUPPORT_NEC16_PROTOCOL\r
- if (irmp_param.protocol == IRMP_NEC_PROTOCOL && irmp_bit == 8 &&\r
- irmp_pause_time >= NEC_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= NEC_START_BIT_PAUSE_LEN_MAX)\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
+ if (irmp_param.protocol == IRMP_NEC42_PROTOCOL &&\r
+#else // IRMP_SUPPORT_NEC_PROTOCOL instead\r
+ if (irmp_param.protocol == IRMP_NEC_PROTOCOL &&\r
+#endif // IRMP_SUPPORT_NEC42_PROTOCOL == 1\r
+ irmp_bit == 8 && irmp_pause_time >= NEC_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= NEC_START_BIT_PAUSE_LEN_MAX)\r
{\r
ANALYZE_PRINTF ("Switching to NEC16 protocol\n");\r
- memcpy_P (&irmp_param, &nec16_param, sizeof (IRMP_PARAMETER));\r
+ irmp_param.protocol = IRMP_NEC16_PROTOCOL;\r
+ irmp_param.address_offset = NEC16_ADDRESS_OFFSET;\r
+ irmp_param.address_end = NEC16_ADDRESS_OFFSET + NEC16_ADDRESS_LEN;\r
+ irmp_param.command_offset = NEC16_COMMAND_OFFSET;\r
+ irmp_param.command_end = NEC16_COMMAND_OFFSET + NEC16_COMMAND_LEN;\r
+ irmp_param.complete_len = NEC16_COMPLETE_DATA_LEN;\r
wait_for_space = 0;\r
}\r
else\r
case 0x000C: key = '\\'; break;\r
case 0x001C: key = '~'; break;\r
case 0x002D: key = '|'; break;\r
- case 0x0034: key = 'µ'; break;\r
+ case 0x0034: key = 0xB5; break; // Mu\r
}\r
}\r
else if (state & (STATE_LEFT_CTRL))\r
*\r
* Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmp.h,v 1.58 2011/02/25 15:24:06 fm Exp $\r
+ * $Id: irmp.h,v 1.59 2011/03/10 12:29:14 fm Exp $\r
*\r
* ATMEGA88 @ 8 MHz\r
*\r
#define IRMP_SIEMENS_PROTOCOL 17 // Siemens, e.g. Gigaset\r
#define IRMP_FDC_PROTOCOL 18 // FDC keyboard\r
#define IRMP_RCCAR_PROTOCOL 19 // RC Car\r
-#define IRMP_JVC_PROTOCOL 20 // JVC\r
+#define IRMP_JVC_PROTOCOL 20 // JVC (NEC with 16 bits)\r
#define IRMP_RC6A_PROTOCOL 21 // RC6A, e.g. Kathrein, XBOX\r
#define IRMP_NIKON_PROTOCOL 22 // Nikon\r
#define IRMP_RUWIDO_PROTOCOL 23 // Ruwido, e.g. T-Home Mediareceiver\r
#define IRMP_IR60_PROTOCOL 24 // IR60 (SAB2008)\r
#define IRMP_KATHREIN_PROTOCOL 25 // Kathrein\r
#define IRMP_NETBOX_PROTOCOL 26 // Netbox keyboard (bitserial)\r
-#define IRMP_NEC16_PROTOCOL 27 // NEC with 16 bits\r
+#define IRMP_NEC16_PROTOCOL 27 // NEC with 16 bits (incl. sync)\r
+#define IRMP_NEC42_PROTOCOL 28 // NEC with 42 bits\r
#define IRMP_IMON_PROTOCOL 99 // Imon (bitserial) PROTOTYPE!\r
\r
// some flags of struct IRMP_PARAMETER:\r
#define NEC_LSB 1 // LSB...MSB\r
#define NEC_FLAGS 0 // flags\r
\r
+#define NEC42_ADDRESS_OFFSET 0 // skip 0 bits\r
+#define NEC42_ADDRESS_LEN 13 // read 13 address bits\r
+#define NEC42_COMMAND_OFFSET 26 // skip 26 bits (2 x 13 address bits)\r
+#define NEC42_COMMAND_LEN 8 // read 8 command bits\r
+#define NEC42_COMPLETE_DATA_LEN 42 // complete length (2 x 13 + 2 x 8)\r
+\r
#define NEC16_ADDRESS_OFFSET 0 // skip 0 bits\r
#define NEC16_ADDRESS_LEN 8 // read 8 address bits\r
#define NEC16_COMMAND_OFFSET 8 // skip 8 bits (8 address)\r
#define NEC16_COMMAND_LEN 8 // read 8 bits (8 command)\r
#define NEC16_COMPLETE_DATA_LEN 16 // complete length\r
-#define NEC16_STOP_BIT 1 // has stop bit\r
-#define NEC16_LSB 1 // LSB...MSB\r
-#define NEC16_FLAGS 0 // flags\r
\r
#define SAMSUNG_START_BIT_PULSE_TIME 4500.0e-6 // 4500 usec pulse\r
#define SAMSUNG_START_BIT_PAUSE_TIME 4500.0e-6 // 4500 usec pause\r
#define SAMSUNG_PULSE_TIME 550.0e-6 // 550 usec pulse\r
#define SAMSUNG_1_PAUSE_TIME 1450.0e-6 // 1450 usec pause\r
#define SAMSUNG_0_PAUSE_TIME 450.0e-6 // 450 usec pause\r
-#define SAMSUNG_FRAME_REPEAT_PAUSE_TIME 45.0e-3 // frame repeat after 45ms\r
+#define SAMSUNG_FRAME_REPEAT_PAUSE_TIME 25.0e-3 // frame repeat after 25ms\r
#define SAMSUNG_ADDRESS_OFFSET 0 // skip 0 bits\r
#define SAMSUNG_ADDRESS_LEN 16 // read 16 address bits\r
#define SAMSUNG_ID_OFFSET 17 // skip 16 + 1 sync bit\r
*\r
* Copyright (c) 2010 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmpconfig.h,v 1.61 2011/02/25 15:24:06 fm Exp $\r
+ * $Id: irmpconfig.h,v 1.63 2011/03/10 12:29:14 fm Exp $\r
*\r
* ATMEGA88 @ 8 MHz\r
*\r
\r
/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
* Change F_INTERRUPTS if you change the number of interrupts per second,\r
- * Normally, F_INTERRUPTS should be in the range from 10000 to 15000.\r
- * A value above 15000 costs additional program space, absolut maximum value is 20000.\r
+ * Normally, F_INTERRUPTS should be in the range from 10000 to 15000, typical is 15000\r
+ * A value above 15000 costs additional program space, absolute maximum value is 20000.\r
*---------------------------------------------------------------------------------------------------------------------------------------------------\r
*/\r
#ifndef F_INTERRUPTS\r
-#define F_INTERRUPTS 10000 // interrupts per second, min: 10000, max: 20000\r
+#define F_INTERRUPTS 15000 // interrupts per second, min: 10000, max: 20000, typ: 15000\r
#endif\r
\r
/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
*---------------------------------------------------------------------------------------------------------------------------------------------------\r
*/\r
\r
-// Protocol Enable Remarks F_INTERRUPTS Program Space\r
+// Typical Protocols, disable here! Enable Remarks F_INTERRUPTS Program Space\r
#define IRMP_SUPPORT_SIRCS_PROTOCOL 1 // Sony SIRCS >= 10000 ~150 bytes\r
#define IRMP_SUPPORT_NEC_PROTOCOL 1 // NEC + APPLE >= 10000 ~300 bytes\r
#define IRMP_SUPPORT_SAMSUNG_PROTOCOL 1 // Samsung + Samsung32 >= 10000 ~300 bytes\r
#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL 1 // Matsushita >= 10000 ~50 bytes\r
#define IRMP_SUPPORT_KASEIKYO_PROTOCOL 1 // Kaseikyo >= 10000 ~250 bytes\r
#define IRMP_SUPPORT_DENON_PROTOCOL 1 // DENON, Sharp >= 10000 ~250 bytes\r
-#define IRMP_SUPPORT_JVC_PROTOCOL 1 // JVC >= 10000 ~150 bytes\r
+#define IRMP_SUPPORT_RC5_PROTOCOL 1 // RC5 >= 10000 ~250 bytes\r
+\r
+// More Protocols, enable here! Enable Remarks F_INTERRUPTS Program Space\r
+#define IRMP_SUPPORT_JVC_PROTOCOL 0 // JVC >= 10000 ~150 bytes\r
#define IRMP_SUPPORT_NEC16_PROTOCOL 0 // NEC16 >= 10000 ~100 bytes\r
-#define IRMP_SUPPORT_RC5_PROTOCOL 0 // RC5 >= 10000 ~250 bytes\r
+#define IRMP_SUPPORT_NEC42_PROTOCOL 0 // NEC42 >= 10000 ~100 bytes\r
#define IRMP_SUPPORT_RC6_PROTOCOL 0 // RC6 & RC6A >= 10000 ~250 bytes\r
#define IRMP_SUPPORT_IR60_PROTOCOL 0 // IR60 (SAB2008) >= 10000 ~300 bytes\r
#define IRMP_SUPPORT_GRUNDIG_PROTOCOL 0 // Grundig >= 10000 ~300 bytes\r
#define IRMP_SUPPORT_NEC_PROTOCOL 1\r
#endif\r
\r
+#if IRMP_SUPPORT_NEC16_PROTOCOL == 1 && IRMP_SUPPORT_NEC_PROTOCOL == 0\r
+#warning NEC16 protocol needs also NEC protocol, NEC protocol enabled\r
+#undef IRMP_SUPPORT_NEC_PROTOCOL\r
+#define IRMP_SUPPORT_NEC_PROTOCOL 1\r
+#endif\r
+\r
+#if IRMP_SUPPORT_NEC42_PROTOCOL == 1 && IRMP_SUPPORT_NEC_PROTOCOL == 0\r
+#warning NEC42 protocol needs also NEC protocol, NEC protocol enabled\r
+#undef IRMP_SUPPORT_NEC_PROTOCOL\r
+#define IRMP_SUPPORT_NEC_PROTOCOL 1\r
+#endif\r
+\r
#if F_INTERRUPTS > 20000\r
-#error F_INTERRUPTS too high (should be not more than 20000)\r
+#error F_INTERRUPTS too high (should be not greater than 20000)\r
#endif\r
\r
#endif /* _WC_IRMPCONFIG_H_ */\r