]> cloudbase.mooo.com Git - irmp.git/blobdiff - irmp.h
Version 1.3.0: added Grundig protocol, fixed auto repetition detection for SIRCS...
[irmp.git] / irmp.h
diff --git a/irmp.h b/irmp.h
index 4a0bfbd2d7e56b1912b57db01db632d71cfe077c..6f718f8fca0a03b18f6fd2b826a484d0365e7b5f 100644 (file)
--- a/irmp.h
+++ b/irmp.h
@@ -3,6 +3,8 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
+ * $Id: irmp.h,v 1.14 2010/05/15 17:13:07 fm Exp $\r
+ *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
@@ -21,24 +23,24 @@ extern "C"
 #endif\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * Change F_INTERRUPTS if you change the number of interrupts per second, F_INTERRUPTS should be in the range from 10000 to 15000\r
+ * IR protocols\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
-#define F_INTERRUPTS                             10000                        // interrupts per second\r
-\r
-#define IRMP_SIRCS_PROTOCOL                          1                        // Sony\r
-#define IRMP_NEC_PROTOCOL                            2                        // NEC, Pioneer, JVC, Toshiba, NoName etc.\r
-#define IRMP_SAMSUNG_PROTOCOL                        3                        // Samsung\r
-#define IRMP_MATSUSHITA_PROTOCOL                     4                        // Matsushita\r
-#define IRMP_KASEIKYO_PROTOCOL                       5                        // Kaseikyo (Panasonic etc)\r
-#define IRMP_RECS80_PROTOCOL                         6                        // Philips, Thomson, Nordmende, Telefunken, Saba\r
-#define IRMP_RC5_PROTOCOL                            7                        // Philips etc\r
-#define IRMP_DENON_PROTOCOL                          8                        // Denon\r
-#define IRMP_RC6_PROTOCOL                            9                        // Philips etc\r
-#define IRMP_SAMSUNG32_PROTOCOL                     10                        // Samsung32: no sync pulse at bit 16, length 32 instead of 37\r
-#define IRMP_APPLE_PROTOCOL                         11                        // Apple, very similar to NEC\r
-#define IRMP_RECS80EXT_PROTOCOL                     12                        // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba\r
-#define IRMP_NUBERT_PROTOCOL                        13                        // Nubert\r
+#define IRMP_SIRCS_PROTOCOL                      1                            // Sony\r
+#define IRMP_NEC_PROTOCOL                        2                            // NEC, Pioneer, JVC, Toshiba, NoName etc.\r
+#define IRMP_SAMSUNG_PROTOCOL                    3                            // Samsung\r
+#define IRMP_MATSUSHITA_PROTOCOL                 4                            // Matsushita\r
+#define IRMP_KASEIKYO_PROTOCOL                   5                            // Kaseikyo (Panasonic etc)\r
+#define IRMP_RECS80_PROTOCOL                     6                            // Philips, Thomson, Nordmende, Telefunken, Saba\r
+#define IRMP_RC5_PROTOCOL                        7                            // Philips etc\r
+#define IRMP_DENON_PROTOCOL                      8                            // Denon\r
+#define IRMP_RC6_PROTOCOL                        9                            // Philips etc\r
+#define IRMP_SAMSUNG32_PROTOCOL                 10                            // Samsung32: no sync pulse at bit 16, length 32 instead of 37\r
+#define IRMP_APPLE_PROTOCOL                     11                            // Apple, very similar to NEC\r
+#define IRMP_RECS80EXT_PROTOCOL                 12                            // Philips, Technisat, Thomson, Nordmende, Telefunken, Saba\r
+#define IRMP_NUBERT_PROTOCOL                    13                            // Nubert\r
+#define IRMP_BANG_OLUFSEN_PROTOCOL              14                            // Bang & Olufsen\r
+#define IRMP_GRUNDIG_PROTOCOL                   15                            // Grundig\r
 \r
 #define SIRCS_START_BIT_PULSE_TIME              2400.0e-6                     // 2400 usec pulse\r
 #define SIRCS_START_BIT_PAUSE_TIME               600.0e-6                     //  600 usec pause\r
@@ -190,6 +192,37 @@ extern "C"
 #define NUBERT_STOP_BIT                         1                             // has stop bit\r
 #define NUBERT_LSB                              0                             // MSB?\r
 \r
+#define BANG_OLUFSEN_START_BIT1_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT1_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_START_BIT2_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT2_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_START_BIT3_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT3_PAUSE_TIME     15625.0e-6                     // 15625 usec pause\r
+#define BANG_OLUFSEN_START_BIT4_PULSE_TIME       200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_START_BIT4_PAUSE_TIME      3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_PULSE_TIME                  200.0e-6                     //   200 usec pulse\r
+#define BANG_OLUFSEN_1_PAUSE_TIME               9375.0e-6                     //  9375 usec pause\r
+#define BANG_OLUFSEN_0_PAUSE_TIME               3125.0e-6                     //  3125 usec pause\r
+#define BANG_OLUFSEN_R_PAUSE_TIME               6250.0e-6                     //  6250 usec pause (repeat last bit)\r
+#define BANG_OLUFSEN_TRAILER_BIT_PAUSE_TIME    12500.0e-6                     // 12500 usec pause (trailer bit)\r
+#define BANG_OLUFSEN_ADDRESS_OFFSET             0                             // no address bits\r
+#define BANG_OLUFSEN_ADDRESS_LEN                0                             // no address bits\r
+#define BANG_OLUFSEN_COMMAND_OFFSET             3                             // skip startbits 2, 3, 4\r
+#define BANG_OLUFSEN_COMMAND_LEN                16                            // read 16 command bits\r
+#define BANG_OLUFSEN_COMPLETE_DATA_LEN          20                            // complete length: startbits 2, 3, 4 + 16 data bits + trailer bit\r
+#define BANG_OLUFSEN_STOP_BIT                   1                             // has stop bit\r
+#define BANG_OLUFSEN_LSB                        0                             // MSB...LSB\r
+\r
+#define GRUNDIG_BIT_TIME                        528.0e-6                      // 528 usec pulse/pause\r
+#define GRUNDIG_PRE_PAUSE_TIME                  2639.0e-6                     // 2639 usec pause after pre bit\r
+#define GRUNDIG_ADDRESS_OFFSET                  0                             // skip 2 bits (2nd start + 1 toggle)\r
+#define GRUNDIG_ADDRESS_LEN                     0                             // read 5 address bits\r
+#define GRUNDIG_COMMAND_OFFSET                  1                             // skip 2 bits (1 start bit)\r
+#define GRUNDIG_COMMAND_LEN                     9                             // read 9 command bits\r
+#define GRUNDIG_COMPLETE_DATA_LEN               10                            // complete length: 1 start bit + 9 data bits\r
+#define GRUNDIG_STOP_BIT                        0                             // has no stop bit\r
+#define GRUNDIG_LSB                             1                             // MSB...LSB\r
+\r
 #define AUTO_REPETITION_TIME                    50.0e-3                       // SIRCS or SAMSUNG32: automatic repetition after 45-50ms\r
 \r
 #define TRUE                                    1\r