]> cloudbase.mooo.com Git - irmp.git/blobdiff - irmp.c
bugfix in detection of multiple NEC repetitions, added irmpconfig.h
[irmp.git] / irmp.c
diff --git a/irmp.c b/irmp.c
index d9f1c1b46df33366f9c9c4b9150e14425c575bb0..422082bed9f79c1cfebbb75371e4107d2a53673b 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,6 +3,8 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
+ * $Id: irmp.c,v 1.14 2010/03/29 09:33:29 fm Exp $\r
+ *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  * Typical manufacturers:\r
@@ -266,49 +268,7 @@ typedef unsigned int16  uint16_t;
 #endif // unix\r
 \r
 #include "irmp.h"\r
-\r
-/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * Change settings from 1 to 0 if you want to disable one or more decoders.\r
- * This saves program space.\r
- * 1 enable  decoder\r
- * 0 disable decoder\r
- *---------------------------------------------------------------------------------------------------------------------------------------------------\r
- */\r
-#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // flag: support SIRCS                      uses ~100 bytes\r
-#define IRMP_SUPPORT_NEC_PROTOCOL               1       // flag: support NEC + APPLE                uses ~250 bytes\r
-#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // flag: support Samsung + Samsung32        uses ~250 bytes\r
-#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // flag: support Matsushita                 uses  ~50 bytes\r
-#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // flag: support Kaseikyo                   uses  ~50 bytes\r
-#define IRMP_SUPPORT_RECS80_PROTOCOL            1       // flag: support RECS80                     uses  ~50 bytes\r
-#define IRMP_SUPPORT_RC5_PROTOCOL               1       // flag: support RC5                        uses ~250 bytes\r
-#define IRMP_SUPPORT_DENON_PROTOCOL             1       // flag: support DENON                      uses ~250 bytes\r
-#define IRMP_SUPPORT_RC6_PROTOCOL               1       // flag: support RC6                        uses ~200 bytes\r
-#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         1       // flag: support RECS80EXT                  uses  ~50 bytes\r
-#define IRMP_SUPPORT_NUBERT_PROTOCOL            1       // flag: support NUBERT                     uses  ~50 bytes\r
-\r
-/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * Change hardware pin here:\r
- *---------------------------------------------------------------------------------------------------------------------------------------------------\r
- */\r
-#ifdef PIC_CCS_COMPILER                                 // PIC CCS Compiler:\r
-\r
-#define IRMP_PIN                                PIN_B4  // use PB4 as IR input on PIC\r
-\r
-#else                                                   // AVR:\r
-\r
-#define IRMP_PORT                               PORTB\r
-#define IRMP_DDR                                DDRB\r
-#define IRMP_PIN                                PINB\r
-#define IRMP_BIT                                6       // use PB6 as IR input on AVR\r
-\r
-#define input(x)                                ((x) & (1 << IRMP_BIT))\r
-#endif\r
-\r
-/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * Set IRMP_LOGGING to 1 if want to log data to UART with 9600Bd\r
- *---------------------------------------------------------------------------------------------------------------------------------------------------\r
- */\r
-#define IRMP_LOGGING                            0                             // 1: log IR signal (scan), 0: do not (default)\r
+#include "irmpconfig.h"\r
 \r
 #define IRMP_TIMEOUT                            120                           // timeout after 12 ms darkness\r
 #define IRMP_REPETITION_TIME                    (uint16_t)(F_INTERRUPTS * 100.0e-3 + 0.5)  // autodetect key repetition within 100 msec\r
@@ -1649,18 +1609,15 @@ irmp_ISR (void)
                     }\r
                     else\r
 #endif // IRMP_SUPPORT_DENON_PROTOCOL\r
-\r
-#if IRMP_SUPPORT_NEC_PROTOCOL == 1\r
-                    if (irmp_param.protocol == IRMP_NEC_PROTOCOL && irmp_bit == 0)  // repetition frame\r
                     {\r
-                        irmp_protocol = irmp_param.protocol;\r
-                        irmp_address = last_irmp_address;                           // address is last address\r
-                        irmp_command = last_irmp_command;                           // command is last command\r
-                        irmp_flags |= IRMP_FLAG_REPETITION;\r
-                    }\r
-                    else\r
+#if IRMP_SUPPORT_NEC_PROTOCOL == 1\r
+                        if (irmp_param.protocol == IRMP_NEC_PROTOCOL && irmp_bit == 0)  // repetition frame\r
+                        {\r
+                            irmp_tmp_address = last_irmp_address;                   // address is last address\r
+                            irmp_tmp_command = last_irmp_command;                   // command is last command\r
+                            irmp_flags |= IRMP_FLAG_REPETITION;\r
+                        }\r
 #endif // IRMP_SUPPORT_NEC_PROTOCOL\r
-                    {\r
                         irmp_protocol = irmp_param.protocol;\r
                         irmp_address = irmp_tmp_address;                            // store address\r
 #if IRMP_SUPPORT_NEC_PROTOCOL == 1\r