From 592411d112f43e31c7c6179f8a98a6d319c75925 Mon Sep 17 00:00:00 2001 From: ukw Date: Sun, 16 May 2010 21:55:40 +0000 Subject: [PATCH] Version 1.3.0: added Grundig protocol, fixed auto repetition detection for SIRCS, SAMSUNG32, NUBERT git-svn-id: svn://mikrocontroller.net/irmp@11 aeb2e35e-bfc4-4214-b83c-9e8de998ed28 --- IR-Data/Grundig_TP715.txt | 56 +++++++++ IR-Data/Grundig_TP715_SatTV.txt | 56 +++++++++ IR-Data/Grundig_TP715_Video.txt | 21 ++++ IR-Data/Grundig_TP715_lange.txt | 6 + IR-Data/Sony_RM-S315_lange.txt | 8 ++ IR-Data/test-suite.sh | 69 +++++------ README.txt | 2 +- irmp.c | 202 ++++++++++++++++++++++++++++++-- irmp.exe | Bin 20480 -> 22016 bytes irmp.h | 13 +- irmpconfig.h | 3 +- 11 files changed, 388 insertions(+), 48 deletions(-) create mode 100644 IR-Data/Grundig_TP715.txt create mode 100644 IR-Data/Grundig_TP715_SatTV.txt create mode 100644 IR-Data/Grundig_TP715_Video.txt create mode 100644 IR-Data/Grundig_TP715_lange.txt create mode 100644 IR-Data/Sony_RM-S315_lange.txt diff --git a/IR-Data/Grundig_TP715.txt b/IR-Data/Grundig_TP715.txt new file mode 100644 index 0000000..ca272ad --- /dev/null +++ b/IR-Data/Grundig_TP715.txt @@ -0,0 +1,56 @@ +# Power +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000000000001111111111000000111110000001111100000001111000000111110000000111100000001111000000011111111111111 +# 1 +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111110000001111111111000000011110000000111110000000000011111111111000000111110000001111100000011111000000111111111111111 +# 2 +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111100000000000011111111110000000111100000000000011111111111000000111110000001111100000011111000000111111111111111 +# 3 +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111110000001111100000011111111111000000111110000000000011111111111000000111110000001111100000011111000000111111111111111 +# 4 +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111110000001111100000000000111111111110000000000011111111111000000111110000001111100000011111000000111111111111111 +# 5 +000000111111111111111111111111110000000111100000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111000000000000111111111100000000000011111111110000000111100000001111100000011111000000111111111111111 +# 6 +000000011111111111111111111111111000000111110000001111100000011111000000011110000000111100000001111000000111110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000000000011111000000111111111110000000000011111111111000000111110000001111100000011111000000111111111111111 +# 7 +000000011111111111111111111111111000000111110000000111100000011111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111100000001111000000011111111110000000000001111111111000000011110000000111100000001111000000111111111111111 +# 8 +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000111100000001111000000000000111110000001111111111000000011110000000111100000001111000000011111111111111 +# 9 +000000011111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000011110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000011110000001111111111100000011111000000000001111100000011111111111000000111110000001111100000011111000000111111111111111 +# 0 +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111100000001111000000011110000000111100000000000011111111110000000111110000001111100000011111000000111111111111111 +# Info +000000111111111111111111111111111000000111110000011111100000111111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111110000001111111111100000000000111110000001111111111100000000000111111111110000001111100000011111000000111111111111111 +# Mute +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111111111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111 +# P+ +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111110000000111111111100000000000011111111110000000000001111111111000000000000111111111100000001111000000011110000000111111111111111 +# Volume + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000011110000000000001111111111000000011110000000111100000001111000000011110000000111111111111111 +# OK +000000111111111111111111111111110000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000011110000000111100000011111000000011110000000111100000011111000000111110000001111111111111111 +# Volume - +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000111111111111111111111111111000000111110000001111111111100000011111000000000001111111111100000011111000000111110000001111100000011111000000111111111111111 +# P- +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000111111111111111111111111111000000111110000001111100000011111111111000000000001111111111100000000000111111111110000001111100000011111000000111111111111111 +# Aux +000000111111111111111111111111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111110000001111110000011111100000111111000001111111111100000011111000000111110000001111100000011111000000111110000001111111111111111 +# TXT +000000111111111111111111111111110000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000011110000000111100000000000011111000000111111111100000001111000000011111000000111111111111111 +# rot +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111110000000000011111111111000000000001111100000011111000000111111111110000001111100000011111000000111111111111111 +# grĂ¼n +000000111111111111111111111111111000000111110000001111100000111111000001111110000011111100000111111000001111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111110000000000111111000001111110000001111100000011111000000111111111110000001111100000011111000001111111111111111 +# gelb +000000111111111111111111111111111000000111110000001111100000011111000001111110000011111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000011111100000011111111110000000000011111100000011111000000111111111110000001111100000011111000001111111111111111 +# blau +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000111111111111111111111111111000000111111111110000000000011111000000111110000001111111111100000000000111111111110000001111100000011111000000111111111111111 +# farbe - +000000111111111111111111111111111000001111110000011111100000111111000001111110000011111100000111111000001111110000011111100000111111000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111100000000001111110000001111111111100000111111000001111110000011111100000111111000001111111111111111 +# farbe + +000000111111111111111111111111110000000111100000001111000000011110000000111100000011111100000111111000001111110000011111100000111111000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000011111000000000001111110000011111111111000000111110000001111100000011111000000111110000001111111111111111 +# helligkeit - +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111100000011111111111000000000011111111111100000111111000001111110000011111100000111111000001111111111111111 +# helligkeit + +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111110000000000011111111111000000000001111111111100000011111000000111110000001111100000011111000000111111111111111 diff --git a/IR-Data/Grundig_TP715_SatTV.txt b/IR-Data/Grundig_TP715_SatTV.txt new file mode 100644 index 0000000..2b1c05b --- /dev/null +++ b/IR-Data/Grundig_TP715_SatTV.txt @@ -0,0 +1,56 @@ +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111100000000000011111111110000000111110000001111100000011111000000000001111111111100000011111000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000011111100000111111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111000000011110000000111100000000000011111111110000000000011111111111000000011110000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000000000011111111110000000111100000000000011111111110000000000001111111111000000011110000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111110000000111100000001111000000011111111110000000111100000000000011111111110000000000001111111111000000011110000000111111111111111 + +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000000000111111111100000000000011111111110000000000001111111111100000011111000000111111111111111 + +000000011111111111111111111111111000000011110000001111100000011111000000111110000001111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111111111100000000000011111111110000000000011111111111000000000000111111111100000001111000000011111111111111 + +000000111111111111111111111111111000000111110000001111100000011111000000011110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000000000011111000000011111111110000000000011111111111000000000001111111111100000011111000000111111111111111 + +000000111111111111111111111111111000000111110000001111100000011111000000011110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111110000001111100000011111000000111111111110000000000011111111111000000000001111111111100000011111000000111111111111111 + +000000011111111111111111111111111000000111110000001111100000011111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000001111100000011111000000000001111100000011111111111000000000000111111111100000011111000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111000000011110000000000001111100000011111111110000000000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000011110000001111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000001111100000011111000000111110000000000011111111111000000000000111111111100000011111000000011111111111111 + +000000011111111111111111111111111000000111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011110000000111111111100000000000011110000000111111111100000000000011110000000111111111100000001111000000011111111111111 + +000000011111111111111111111111111000000111110000001111100000001111000000111110000000111100000011111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011110000000111111111100000011111000000011110000000111100000011111000000000001111111111100000011111000000111111111111111 + +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111100000000000011111111110000000000001111111111000000000000111110000001111111111100000011111000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111100000001111000000011110000000000001111111111000000011110000000000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000111110000001111100000011111000000011110000001111100000011111000000111110000001111100000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111110000001111100000011111000000111110000001111100000011111000000000001111111111100000001111000000011111111111111 + +000000011111111111111111111111111000000111110000000111100000001111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011110000000111111111100000011111000000000001111111111100000001111000000000001111111111100000011111000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111100000011111111110000000000001111111111000000000000111110000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111100000001111000000011111111110000000111100000001111000000000000111111111100000001111000000011111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000011110000000111100000000000011111000000111110000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000111110000001111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000011111111110000000000011111111111000000000000111100000001111000000011110000000111111111100000001111000000011111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000000000011111000000111110000001111100000011111000000111110000001111111111000000011110000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111100000011111111110000000000001111100000001111000000011110000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000111110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000000001111000000011110000000111111111100000000000111110000000111111111100000001111000000011111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111111111100000000000011110000000111111111100000001111000000000000111111111100000001111000000011111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000001111000000000000111110000001111111111000000011110000000000001111111111000000011110000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111100000011111111110000000000001111111111000000011110000000000001111111111000000011110000000111111111111111 + +000000011111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111110000000000011111111111000000000001111111111100000011111000000000001111111111100000011111000000111111111111111 + diff --git a/IR-Data/Grundig_TP715_Video.txt b/IR-Data/Grundig_TP715_Video.txt new file mode 100644 index 0000000..92bc8f6 --- /dev/null +++ b/IR-Data/Grundig_TP715_Video.txt @@ -0,0 +1,21 @@ +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111111111100000000000011111111110000000111110000001111100000011111000000111110000000000011111111111000000111111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000111100000000000111111000000111111111100000001111000000111110000000000001111111111000000011111111111111 + +000000011111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111110000001111111111100000000000111110000000111111111100000011111000000111110000000000001111111111000000111111111111111 + +000000111111111111111111111111110000000111100000001111000000011110000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111100000011111111110000000000001111111111000000011110000000111100000000000011111111110000000111111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111111111100000000000011111111110000000000001111111111000000011110000000000001111111111000000011111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000111100000001111000000000000111110000001111111111000000011110000000000001111111111000000011111111111111 + +000000011111111111111111111111111000000011110000001111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000000001111111111000000000000111111111100000001111000000011110000000000001111111111000000011111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011110000000111100000001111000000011111111110000000000001111111111000000011110000000000011111111111000000011111111111111 + +000000011111111111111111111111111000000011110000000111100000001111000000011110000000111100000001111000000011110000000111100000001111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111000000011111111110000000111100000000000011111111110000000000001111111111000000011110000000000001111111111000000011111111111111 + +000000111111111111111111111111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111000000011111000000111110000000000011111111111000000111110000000000011111111111000000111111111111111 + +000000011111111111111111111111111000000111110000001111100000011111000000111110000001111100000001111000000111110000001111100000001111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000000111111111110000000000011111111111000000111110000000000011111111111000000111110000000000011111111111000000111111111111111 \ No newline at end of file diff --git a/IR-Data/Grundig_TP715_lange.txt b/IR-Data/Grundig_TP715_lange.txt new file mode 100644 index 0000000..6f83777 --- /dev/null +++ b/IR-Data/Grundig_TP715_lange.txt @@ -0,0 +1,6 @@ +# 1 lange (wird in IRMP als 11 Dezimal ausgewertet) +00000011111111111111111111111111100000111111000000111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111111111111111111111111000000111110000001111111111100000111111000000111110000000000011111111111000000111110000001111100000011111000000111111111111111111111000000111111111111111111111111111000000111110000001111111111100000011111000000111110000000000011111111111000000111110000001111100000011111000000011111111111111111000000111111000001111110000011111111111111 +# 2 lange (wird in IRMP als 12 Dezimal ausgewertet) +0000001111111111111111111111111110000001111100000011111000000111110000001111100000011111000000111110000001111100000011111000000111111000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000011111111111111111111111111100000111111111111000000000001111111111100000011111000000000001111111111100000011111000000111110000001111100000011111111111111111111100000011111111111111111111111111100000011111111111000000000001111111111100000011111000000000001111111111100000011111000000111111000000111110000001111111111111111100011111000000111110000001111100000011111111111111000000111111111111111111111111111000000111111111110000000000011111111111000000111110000000000011111111111000000111110000001111100000011111000000111111111111111111 +# 0 ganz lange (wird in IRMP als 10 Dezimal ausgewertet) +000001111111111111111111111111111000001111110000011111100000011111000000111110000001111100000011111000000111110000001111110000011111100000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111111111111111111111110000001111111111100000111111000001111110000011111100000000000111111111110000001111100000011111000000111110000001111111111111111111110000001111111111111111111111111110000001111111111100000011111000000111110000001111100000000000111111111111000001111110000011111100000111111000001111111111111111110001111110000011111100000011111000000111111111111111111111000000111111111111111111111111111000000111111111110000011111100000011111000000111110000000000011111111111000000111110000001111110000011111100000111111111111111111000111111000001111110000011111100000111111111111110000001111111111111111111111111110000011111111111100000111111000001111110000011111100000000000111111111110000001111100000011111000000111110000001111111111111111110001111100000011111100000111111000001111111111111100000111111111111111111111111111100000111111111110000001111110000011111100000111111000000000011111111111100000111111000001111110000001111100000011111111111111111100011111000000111110000001111100000011111111111111000001111111111111111111111111110000001111111111100000011111000000111110000001111100000000000111111111111000001111110000011111100000111111000001111111111111111111000111111000001111110000001111100000011111111111111111111100000011111111111111111111111111100000011111111111000001111110000001111100000011111000000000001111111111100000011111000000111111000001111110000011111111111111111100011111100000111111000001111110000011111111111111 diff --git a/IR-Data/Sony_RM-S315_lange.txt b/IR-Data/Sony_RM-S315_lange.txt new file mode 100644 index 0000000..a95945d --- /dev/null +++ b/IR-Data/Sony_RM-S315_lange.txt @@ -0,0 +1,8 @@ +# Volume+ lange +00000000000000000000000000111110000000011111000000000000001111100000001111100000000111110000000000000011111000000011111000000001111100000001111100000001111110000000111110000000011111000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000111110000000111110000000000000011111000000001111100000001111100000000000000111110000000111111000000011111000000011111100000001111100000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000111110000000000000111110000000011111000000011111000000000000001111100000000111110000000111110000000011111000000011111000000001111100000000111110000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000001111100000000000000111110000000111110000000011111000000000000001111100000001111100000000111110000000111110000000011111000000011111000000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000011111000000011111000000000000001111100000000111110000000111110000000000000011111000000011111100000001111100000000111110000000111110000000011111000000011111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000011111000000000000011111000000001111100000001111100000000000000111110000000011111000000011111000000001111100000001111100000000111110000000111111000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000111110000000000000011111000000011111000000011111100000000000001111110000000111110000000011111000000011111000000011111100000001111100000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000001111100000001111100000000000000111110000000011111000000011111000000000000001111100000001111100000000111110000000011111000000011111000000001111100000001111100000000000000111111111111111111 +#Volume- lange +000000000000000000000000001111100000000000000111110000000000000011111000000011111100000001111100000000000000111110000000111110000000011111000000011111000000001111100000001111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111100000000000001111100000000000000111110000000011111000000011111000000000000001111100000001111110000000111110000000011111000000011111000000001111100000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000001111100000000000001111110000000111110000000111111000000000000011111100000001111100000001111110000000111110000000111111000000011111000000011111100000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000011111000000000000001111100000001111110000000111110000000000000011111000000011111000000001111100000001111110000000111110000000111111000000011111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111110000000000000111111000000000000011111000000001111100000001111100000000000000111110000000111111000000011111000000001111100000001111100000000111110000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000000000111110000000000000111111000000011111000000011111100000000000001111110000000111110000000111111000000011111000000011111100000001111100000000111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000001111100000000000000111110000000111111000000011111000000000000001111100000001111100000000111110000000111111000000011111000000011111100000001111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111111000000000000011111100000000000001111100000000111110000000111110000000000000011111000000011111100000001111100000000111110000000111110000000011111000000011111100000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000011111000000000000011111100000001111100000001111110000000000000111111000000011111000000011111100000001111100000001111110000000111110000000011111000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 +#Tuner Preset+ lange +000000000000000000000000001111100000001111110000000111110000000011111000000011111000000000000001111100000000111110000000111110000000000000011111000000011111100000000000001111100000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000001111100000001111110000000111110000000111111000000000000011111000000001111100000001111110000000000000111110000000011111000000000000011111100000000000001111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000011111000000011111000000001111100000001111100000000111110000000000000111111000000011111000000001111100000000000001111110000000111110000000000000011111000000000000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000111111000000011111000000011111100000001111100000000000000111110000000111111000000011111000000000000001111100000001111110000000000000111110000000000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000111110000000111111000000011111000000011111100000000000001111100000000111110000000111111000000000000011111000000001111100000000000001111110000000000000111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000001111100000001111100000000111110000000111110000000011111000000000000011111100000001111100000000111110000000000000011111000000011111000000000000001111100000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000001111100000001111100000001111110000000111110000000000000011111000000011111100000001111100000000000000111110000000011111000000000000011111000000000000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000011111000000011111100000001111100000001111110000000000000111110000000011111000000011111100000000000001111100000000111110000000000000011111000000000000011111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000111110000000111110000000011111000000011111000000001111100000000000001111110000000111110000000011111000000000000011111100000001111100000000000000111110000000000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 +#Tuner Preset- lange +000000000000000000000000001111100000000000000111110000000111110000000011111000000011111100000000000001111100000000111110000000111110000000000000011111000000001111100000000000001111110000000000000111110000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000001111100000001111110000000111110000000011111000000000000011111100000001111100000001111110000000000000111111000000011111000000000000001111100000000000001111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000011111000000000000011111100000001111100000001111110000000111110000000000000011111000000011111100000001111100000000000000111110000000111110000000000000011111000000000000001111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000011111000000011111000000001111100000001111110000000000000111110000000011111000000011111000000000000001111100000000111110000000000000011111000000000000011111000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111100000000000000111110000000011111000000011111000000001111100000000000001111110000000111110000000011111000000000000011111100000001111100000000000000111110000000000000111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111100000000000001111110000000111110000000011111000000011111000000000000001111100000001111110000000111110000000000000011111000000011111000000000000001111100000000000000111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000011111000000000000001111100000001111100000000111110000000111111000000000000011111000000001111100000001111100000000000000111110000000011111000000000000001111100000000000001111100000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000111110000000000000011111000000001111100000001111100000000111110000000000000111111000000011111000000011111100000000000000111110000000111110000000000000011111000000000000011111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000001111110000000000000011111000000011111000000001111100000001111100000000000000111110000000011111000000011111000000000000001111100000001111100000000000000111110000000000000011111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 diff --git a/IR-Data/test-suite.sh b/IR-Data/test-suite.sh index 353c4d3..d6f20e6 100644 --- a/IR-Data/test-suite.sh +++ b/IR-Data/test-suite.sh @@ -1,42 +1,45 @@ #! /bin/sh for j in \ - DK_Digital.txt \ - Matsushita.txt \ - Panasonic-Blue-Ray.txt \ - RC5-Taste.txt \ - Samsung_DVD_Rec_00062C.txt \ - Samsung_TV.txt \ - Sony-RM-S-310.txt \ - sony-rm-s311.txt \ - Sony-RM-U305C.txt \ - Sony-RMT-D142P-DVD.txt \ - Sony-RMT-V406.txt \ - Sony_Bravia_RM-ED0009.txt \ - Sony_Bravia_RM-ED0009_new.txt \ - Yamaha-RAV388.txt \ - apple.txt \ - bo_beolink1000-10kHz.txt \ - denon.txt \ - elta_radio.txt \ - nec-repetition.txt \ - nec.txt \ - nubert-subwoofer.txt \ - orion_vcr_07660BM070.txt \ - panasonic-scan.txt \ - rc5.txt \ - rc5x-79.txt \ - rc5x.txt \ - rc6-hold.txt \ - rc6.txt \ - sharp-denon.txt \ - sharp-denon2.txt + DK_Digital.txt \ + Grundig_TP715.txt \ + Grundig_TP715_SatTV.txt \ + Grundig_TP715_Video.txt \ + Matsushita.txt \ + Panasonic-Blue-Ray.txt \ + RC5-Taste.txt \ + Samsung_DVD_Rec_00062C.txt \ + Samsung_TV.txt \ + Sony-RM-S-310.txt \ + sony-rm-s311.txt \ + Sony-RM-U305C.txt \ + Sony-RMT-D142P-DVD.txt \ + Sony-RMT-V406.txt \ + Sony_Bravia_RM-ED0009.txt \ + Sony_Bravia_RM-ED0009_new.txt \ + Yamaha-RAV388.txt \ + apple.txt \ + bo_beolink1000-10kHz.txt \ + denon.txt \ + elta_radio.txt \ + nec-repetition.txt \ + nec.txt \ + nubert-subwoofer.txt \ + orion_vcr_07660BM070.txt \ + panasonic-scan.txt \ + rc5.txt \ + rc5x-79.txt \ + rc5x.txt \ + rc6-hold.txt \ + rc6.txt \ + sharp-denon.txt \ + sharp-denon2.txt do echo "testing $j ..." if ../irmp < $j | grep -q error then - ../irmp < $j | grep error - echo "test failed" - exit 1 + ../irmp < $j | grep error + echo "test failed" + exit 1 fi done echo "all tests successful" diff --git a/README.txt b/README.txt index a01a7fe..c99a129 100644 --- a/README.txt +++ b/README.txt @@ -1,7 +1,7 @@ IRMP - Infrared Multi Protocol Decoder -------------------------------------- -Version IRMP: 1.2.1 28.04.2010 +Version IRMP: 1.3.0 16.05.2010 Version IRSND: 1.2.1 28.04.2010 Dokumentation: diff --git a/irmp.c b/irmp.c index 470a2f9..7c1225f 100644 --- a/irmp.c +++ b/irmp.c @@ -3,7 +3,7 @@ * * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de * - * $Id: irmp.c,v 1.20 2010/04/19 13:42:17 fm Exp $ + * $Id: irmp.c,v 1.24 2010/05/16 21:58:13 fm Exp $ * * ATMEGA88 @ 8 MHz * @@ -23,6 +23,7 @@ * NUBERT - Nubert Subwoofer System * B&O - Bang & Olufsen * PANASONIC - Panasonic (older, yet not implemented) + * Grundig - Grundig * *--------------------------------------------------------------------------------------------------------------------------------------------------- * @@ -208,6 +209,21 @@ * *--------------------------------------------------------------------------------------------------------------------------------------------------- * + * Grundig + * ------- + * + * frame: 1 start packet + n info packets + 1 stop packet + * packet: 1 pre bit + 1 start bit + 9 data bits + no stop bit + * data of start packet: 9 x 1 + * data of info packet: 9 command bits + * data of stop packet: 9 x 1 + * + * pre bit: start bit data "0": data "1": + * ------____________ ------______ ______------ ------______ + * 528us 2639us 528us 528us 528us 528us 528us 528us + * + *--------------------------------------------------------------------------------------------------------------------------------------------------- + * * PANASONIC (older protocol, yet not implemented, see also MATSUSHITA, timing very similar) * ----------------------------------------------------------------------------------------- * @@ -459,12 +475,20 @@ typedef unsigned int16 uint16_t; #define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MIN_TOLERANCE_05 + 0.5) - 1) #define BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1) +#define GRUNDIG_START_BIT_LEN_MIN ((uint8_t)(F_INTERRUPTS * GRUNDIG_BIT_TIME * MIN_TOLERANCE_20 + 0.5) - 1) +#define GRUNDIG_START_BIT_LEN_MAX ((uint8_t)(F_INTERRUPTS * GRUNDIG_BIT_TIME * MAX_TOLERANCE_20 + 0.5) + 1) +#define GRUNDIG_BIT_LEN_MIN ((uint8_t)(F_INTERRUPTS * GRUNDIG_BIT_TIME * MIN_TOLERANCE_20 + 0.5) - 1) +#define GRUNDIG_BIT_LEN_MAX ((uint8_t)(F_INTERRUPTS * GRUNDIG_BIT_TIME * MAX_TOLERANCE_20 + 0.5) + 1) +#define GRUNDIG_PRE_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * GRUNDIG_PRE_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) + 1) +#define GRUNDIG_PRE_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * GRUNDIG_PRE_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1) + #define AUTO_REPETITION_LEN (uint16_t)(F_INTERRUPTS * AUTO_REPETITION_TIME + 0.5) // use uint16_t! #ifdef DEBUG #define DEBUG_PUTCHAR(a) { if (! silent) { putchar (a); } } #define DEBUG_PRINTF(...) { if (! silent) { printf (__VA_ARGS__); } } static int silent; +static int time_counter; #else #define DEBUG_PUTCHAR(a) #define DEBUG_PRINTF(...) @@ -930,6 +954,30 @@ static PROGMEM IRMP_PARAMETER bang_olufsen_param = #endif +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + +static PROGMEM IRMP_PARAMETER grundig_param = +{ + IRMP_GRUNDIG_PROTOCOL, + GRUNDIG_BIT_LEN_MIN, + GRUNDIG_BIT_LEN_MAX, + GRUNDIG_BIT_LEN_MIN, + GRUNDIG_BIT_LEN_MAX, + 1, // tricky: use this as stop bit length + 1, + 1, + 1, + GRUNDIG_ADDRESS_OFFSET, + GRUNDIG_ADDRESS_OFFSET + GRUNDIG_ADDRESS_LEN, + GRUNDIG_COMMAND_OFFSET, + GRUNDIG_COMMAND_OFFSET + GRUNDIG_COMMAND_LEN, + GRUNDIG_COMPLETE_DATA_LEN, + GRUNDIG_STOP_BIT, + GRUNDIG_LSB +}; + +#endif + static uint8_t irmp_bit; // current bit position static IRMP_PARAMETER irmp_param; @@ -1093,6 +1141,7 @@ irmp_ISR (void) static uint16_t last_irmp_address = 0xFFFF; // save last irmp address to recognize key repetition static uint16_t last_irmp_command = 0xFFFF; // save last irmp command to recognize key repetition static uint16_t repetition_counter; // SIRCS repeats frame 2-5 times with 45 ms pause + static uint8_t repetition_frame_number; #if IRMP_SUPPORT_DENON_PROTOCOL == 1 static uint16_t last_irmp_denon_command; // save last irmp command to recognize DENON frame repetition #endif @@ -1107,6 +1156,10 @@ irmp_ISR (void) #endif uint8_t irmp_input; // input value +#ifdef DEBUG + time_counter++; +#endif + irmp_input = input(IRMP_PIN); irmp_logIsr(irmp_input); // log ir signal, if IRMP_LOGGING defined @@ -1344,6 +1397,20 @@ irmp_ISR (void) else #endif // IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL == 1 +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + if (irmp_pulse_time >= GRUNDIG_START_BIT_LEN_MIN && irmp_pulse_time <= GRUNDIG_START_BIT_LEN_MAX && + irmp_pause_time >= GRUNDIG_PRE_PAUSE_LEN_MIN && irmp_pause_time <= GRUNDIG_PRE_PAUSE_LEN_MAX) + { // it's GRUNDIG + DEBUG_PRINTF ("protocol = GRUNDIG, pre bit timings: pulse: %3d - %3d, pause: %3d - %3d\n", + GRUNDIG_START_BIT_LEN_MIN, GRUNDIG_START_BIT_LEN_MAX, + GRUNDIG_PRE_PAUSE_LEN_MIN, GRUNDIG_PRE_PAUSE_LEN_MAX); + irmp_param_p = (IRMP_PARAMETER *) &grundig_param; + last_pause = irmp_pause_time; + last_value = 1; + } + else +#endif // IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + { DEBUG_PRINTF ("protocol = UNKNOWN\n"); irmp_start_bit_detected = 0; // wait for another start bit... @@ -1386,14 +1453,14 @@ irmp_ISR (void) { if (irmp_pause_time > RC5_START_BIT_LEN_MAX && irmp_pause_time <= 2 * RC5_START_BIT_LEN_MAX) { - DEBUG_PRINTF ("[bit %2d: pulse = %3d, pause = %3d] ", irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); DEBUG_PUTCHAR ('1'); DEBUG_PUTCHAR ('\n'); irmp_store_bit (1); } else if (! last_value) { - DEBUG_PRINTF ("[bit %2d: pulse = %3d, pause = %3d] ", irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); DEBUG_PUTCHAR ('0'); DEBUG_PUTCHAR ('\n'); irmp_store_bit (0); @@ -1402,10 +1469,31 @@ irmp_ISR (void) else #endif // IRMP_SUPPORT_RC5_PROTOCOL == 1 +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + if (irmp_param.protocol == IRMP_GRUNDIG_PROTOCOL) + { + if (irmp_pause_time > GRUNDIG_START_BIT_LEN_MAX && irmp_pause_time <= 2 * GRUNDIG_START_BIT_LEN_MAX) + { + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PUTCHAR ('0'); + DEBUG_PUTCHAR ('\n'); + irmp_store_bit (0); + } + else if (! last_value) + { + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PUTCHAR ('1'); + DEBUG_PUTCHAR ('\n'); + irmp_store_bit (1); + } + } + else +#endif // IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + #if IRMP_SUPPORT_DENON_PROTOCOL == 1 if (irmp_param.protocol == IRMP_DENON_PROTOCOL) { - DEBUG_PRINTF ("[bit %2d: pulse = %3d, pause = %3d] ", irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); if (irmp_pause_time >= DENON_1_PAUSE_LEN_MIN && irmp_pause_time <= DENON_1_PAUSE_LEN_MAX) { // pause timings correct for "1"? @@ -1487,6 +1575,15 @@ irmp_ISR (void) irmp_param.stop_bit = TRUE; // set flag } else +#endif +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + if (irmp_param.protocol == IRMP_GRUNDIG_PROTOCOL && + irmp_pause_time > 2 * GRUNDIG_BIT_LEN_MAX && irmp_bit >= GRUNDIG_COMPLETE_DATA_LEN - 2 && !irmp_param.stop_bit) + { // special rc5 decoder + got_light = TRUE; // this is a lie, but generates a stop bit ;-) + irmp_param.stop_bit = TRUE; // set flag + } + else #endif if (irmp_pause_time > IRMP_TIMEOUT_LEN) // timeout? { // yes... @@ -1512,7 +1609,7 @@ irmp_ISR (void) if (got_light) { - DEBUG_PRINTF ("[bit %2d: pulse = %3d, pause = %3d] ", irmp_bit, irmp_pulse_time, irmp_pause_time); + DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time); #if IRMP_SUPPORT_RC5_PROTOCOL == 1 if (irmp_param.protocol == IRMP_RC5_PROTOCOL) // special rc5 decoder @@ -1552,6 +1649,44 @@ irmp_ISR (void) else #endif +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + if (irmp_param.protocol == IRMP_GRUNDIG_PROTOCOL) // special Grundig decoder + { + if (irmp_pulse_time > GRUNDIG_BIT_LEN_MAX && irmp_pulse_time <= 2 * GRUNDIG_BIT_LEN_MAX) + { + DEBUG_PUTCHAR ('0'); + irmp_store_bit (0); + DEBUG_PUTCHAR ('1'); + DEBUG_PUTCHAR ('\n'); + irmp_store_bit (1); + last_value = 1; + } + + else // if (irmp_pulse_time >= GRUNDIG_BIT_LEN_MIN && irmp_pulse_time <= GRUNDIG_BIT_LEN_MAX) + { + uint8_t grundig_value; + + if (last_pause > GRUNDIG_BIT_LEN_MAX && last_pause <= 2 * GRUNDIG_BIT_LEN_MAX) + { + grundig_value = last_value ? 0 : 1; + last_value = grundig_value; + } + else + { + grundig_value = last_value; + } + + DEBUG_PUTCHAR (grundig_value + '0'); + DEBUG_PUTCHAR ('\n'); + irmp_store_bit (grundig_value); + } + + last_pause = irmp_pause_time; + wait_for_space = 0; + } + else +#endif + #if IRMP_SUPPORT_RC6_PROTOCOL == 1 if (irmp_param.protocol == IRMP_RC6_PROTOCOL) // special rc6 decoder { @@ -1781,17 +1916,48 @@ irmp_ISR (void) if (irmp_bit == irmp_param.complete_len && irmp_param.stop_bit == 0) // enough bits received? { - // if SIRCS/SAMSUNG32 protocol and the code will be repeated within 50 ms, we will ignore it. - if ((irmp_param.protocol == IRMP_SIRCS_PROTOCOL || - irmp_param.protocol == IRMP_SAMSUNG32_PROTOCOL || - irmp_param.protocol == IRMP_NUBERT_PROTOCOL) && - last_irmp_command == irmp_tmp_command && repetition_counter < AUTO_REPETITION_LEN) + if (last_irmp_command == irmp_tmp_command && repetition_counter < AUTO_REPETITION_LEN) + { + repetition_frame_number++; + } + else { - DEBUG_PRINTF ("code skipped, recognized SIRCS, SAMSUNG32 or NUBERT repetition, counter = %d, auto repetition len = %d\n", - repetition_counter, AUTO_REPETITION_LEN); + repetition_frame_number = 0; + } + +#if IRMP_SUPPORT_SIRCS_PROTOCOL == 1 + // if SIRCS protocol and the code will be repeated within 50 ms, we will ignore 2nd and 3rd repetition frame + if (irmp_param.protocol == IRMP_SIRCS_PROTOCOL && (repetition_frame_number == 1 || repetition_frame_number == 2)) + { + DEBUG_PRINTF ("code skipped: SIRCS auto repetition frame #%d, counter = %d, auto repetition len = %d\n", + repetition_frame_number + 1, repetition_counter, AUTO_REPETITION_LEN); + repetition_counter = 0; + } + else +#endif + +#if IRMP_SUPPORT_SAMSUNG_PROTOCOL == 1 + // if SAMSUNG32 protocol and the code will be repeated within 50 ms, we will ignore every 2nd frame + if (irmp_param.protocol == IRMP_SAMSUNG32_PROTOCOL && (repetition_frame_number & 0x01)) + { + DEBUG_PRINTF ("code skipped: SAMSUNG32 auto repetition frame #%d, counter = %d, auto repetition len = %d\n", + repetition_frame_number + 1, repetition_counter, AUTO_REPETITION_LEN); + repetition_counter = 0; + } + else +#endif + +#if IRMP_SUPPORT_NUBERT_PROTOCOL == 1 + // if NUBERT protocol and the code will be repeated within 50 ms, we will ignore it. + if (irmp_param.protocol == IRMP_NUBERT_PROTOCOL && (repetition_frame_number & 0x01)) + { + DEBUG_PRINTF ("code skipped: NUBERT auto repetition frame #%d, counter = %d, auto repetition len = %d\n", + repetition_frame_number + 1, repetition_counter, AUTO_REPETITION_LEN); repetition_counter = 0; } else +#endif + { DEBUG_PRINTF ("code detected, length = %d\n", irmp_bit); irmp_ir_detected = TRUE; @@ -1816,6 +1982,16 @@ irmp_ISR (void) } else #endif // IRMP_SUPPORT_DENON_PROTOCOL + +#if IRMP_SUPPORT_GRUNDIG_PROTOCOL == 1 + if (irmp_param.protocol == IRMP_GRUNDIG_PROTOCOL && irmp_tmp_command == 0x01ff) // only start frame? + { + DEBUG_PRINTF ("Detected start frame, ignoring it\n"); + irmp_ir_detected = FALSE; + // last_irmp_grundig_command = irmp_tmp_command; + } + else +#endif // IRMP_SUPPORT_DENON_PROTOCOL { #if IRMP_SUPPORT_NEC_PROTOCOL == 1 if (irmp_param.protocol == IRMP_NEC_PROTOCOL && irmp_bit == 0) // repetition frame @@ -1912,6 +2088,8 @@ print_timings (void) 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); printf ("BANG_OLUFSEN 4 %3d - %3d %3d - %3d\n", 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); + printf ("GRUNDIG 1 %3d - %3d %3d - %3d\n", + GRUNDIG_START_BIT_LEN_MIN, GRUNDIG_START_BIT_LEN_MAX, GRUNDIG_PRE_PAUSE_LEN_MIN, GRUNDIG_PRE_PAUSE_LEN_MAX); } int diff --git a/irmp.exe b/irmp.exe index 62438b09125e17ca77919f6e981a4a8f4361f4c8..93e51e72cfb9130ce4336574e3ef19ff5f87aac1 100644 GIT binary patch delta 9770 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 e-R$(_R0x$V)OM3;#7%?P&u delta 8650 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