]> cloudbase.mooo.com Git - irmp.git/commitdiff
Version 2.1.2:
authorukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 24 Feb 2012 14:25:32 +0000 (14:25 +0000)
committerukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 24 Feb 2012 14:25:32 +0000 (14:25 +0000)
 - added IR60 protocol for IRSND

git-svn-id: svn://mikrocontroller.net/irmp@91 aeb2e35e-bfc4-4214-b83c-9e8de998ed28

README.txt
irmp.h
irmpconfig.h
irsnd.c
irsndconfig.h

index 269b77c58e5bec27d9385cb4a6f2754d906d3739..c547e71278482a5daa63ec4b778156794231d6fd 100644 (file)
@@ -2,7 +2,7 @@ IRMP - Infrared Multi Protocol Decoder
 --------------------------------------\r
 \r
 Version IRMP:  2.1.2 24.02.2012\r
-Version IRSND: 2.1.0 16.02.2012\r
+Version IRSND: 2.1.2 24.02.2012\r
 \r
 Dokumentation:\r
  \r
diff --git a/irmp.h b/irmp.h
index f7a3b25af0cc15142b8abff1c8540a3c1bd4a358..1e54f2c80fd0d1d6b80622fcbdfe9d3fd9c3d2e2 100644 (file)
--- a/irmp.h
+++ b/irmp.h
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2011 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.h,v 1.71 2012/02/24 11:40:41 fm Exp $\r
+ * $Id: irmp.h,v 1.72 2012/02/24 14:24:27 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -311,7 +311,7 @@ typedef uint8_t     PAUSE_LEN;
 #define GRUNDIG_NOKIA_IR60_FLAGS                (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1)  // flags\r
 \r
 #define GRUNDIG_FRAMES                          2                               // GRUNDIG sends each frame 1+1 times\r
-#define GRUNDIG_AUTO_REPETITION_PAUSE_TIME        20.0e-3                       // repetition after 20ms\r
+#define GRUNDIG_AUTO_REPETITION_PAUSE_TIME      20.0e-3                         // repetition after 20ms\r
 #define GRUNDIG_ADDRESS_OFFSET                  0                               // no address\r
 #define GRUNDIG_ADDRESS_LEN                     0                               // no address\r
 #define GRUNDIG_COMMAND_OFFSET                  1                               // skip 1 start bit\r
@@ -319,13 +319,15 @@ typedef uint8_t     PAUSE_LEN;
 #define GRUNDIG_COMPLETE_DATA_LEN               10                              // complete length: 1 start bit + 9 data bits\r
 \r
 #define NOKIA_FRAMES                            3                               // NOKIA sends each frame 1 + 1 + 1 times\r
-#define NOKIA_AUTO_REPETITION_PAUSE_TIME          20.0e-3                       // repetition after 20ms\r
+#define NOKIA_AUTO_REPETITION_PAUSE_TIME        20.0e-3                         // repetition after 20ms\r
 #define NOKIA_ADDRESS_OFFSET                    9                               // skip 9 bits (1 start bit + 8 data bits)\r
 #define NOKIA_ADDRESS_LEN                       8                               // 7 address bits\r
 #define NOKIA_COMMAND_OFFSET                    1                               // skip 1 bit (1 start bit)\r
 #define NOKIA_COMMAND_LEN                       8                               // read 8 command bits\r
 #define NOKIA_COMPLETE_DATA_LEN                 17                              // complete length: 1 start bit + 8 address bits + 8 command bits\r
 \r
+#define IR60_FRAMES                             2                               // IR60 sends each frame 1+1 times\r
+#define IR60_AUTO_REPETITION_PAUSE_TIME         22.2e-3                         // repetition after 22.2ms\r
 #define IR60_TIMEOUT_TIME                       5000.0e-6                       // timeout grundig frame, switch to IR60\r
 #define IR60_ADDRESS_OFFSET                     0                               // skip 1 bits\r
 #define IR60_ADDRESS_LEN                        0                               // read 0 address bits\r
index 2eeeab98e80fe578dda93837d89f3656fe429871..b08113585f25cef74e53a3df2cadee8eab8b63ce 100644 (file)
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2011 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmpconfig.h,v 1.81 2012/02/24 11:40:41 fm Exp $\r
+ * $Id: irmpconfig.h,v 1.82 2012/02/24 14:24:27 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -56,7 +56,7 @@
 #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_NEC42_PROTOCOL             0       // NEC42                >= 10000                 ~300 bytes\r
-#define IRMP_SUPPORT_IR60_PROTOCOL              0       // IR60 (SAB2008)       >= 10000                 ~300 bytes\r
+#define IRMP_SUPPORT_IR60_PROTOCOL              1       // IR60 (SAB2008)       >= 10000                 ~300 bytes\r
 #define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              >= 10000                 ~300 bytes\r
 #define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      >= 15000                 ~550 bytes\r
 #define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                >= 10000                 ~300 bytes\r
diff --git a/irsnd.c b/irsnd.c
index 042737496ad85617649fd932b05edbca4ce85f0f..17e78f51e9c66f11b345ac171acd48830cadac43 100644 (file)
--- a/irsnd.c
+++ b/irsnd.c
@@ -12,7 +12,7 @@
  * ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284\r
  * ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P\r
  *\r
- * $Id: irsnd.c,v 1.47 2012/02/16 12:37:30 fm Exp $\r
+ * $Id: irsnd.c,v 1.48 2012/02/24 14:24:28 fm Exp $\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
@@ -328,12 +328,15 @@ typedef unsigned short  uint16_t;
 #define NOKIA_AUTO_REPETITION_PAUSE_LEN         (uint16_t)(F_INTERRUPTS * NOKIA_AUTO_REPETITION_PAUSE_TIME + 0.5)           // use uint16_t!\r
 #define GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_LEN (uint16_t)(F_INTERRUPTS * GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_TIME + 0.5)   // use uint16_t!\r
 \r
+#define IR60_AUTO_REPETITION_PAUSE_LEN          (uint16_t)(F_INTERRUPTS * IR60_AUTO_REPETITION_PAUSE_TIME + 0.5)            // use uint16_t!\r
+\r
 #define SIEMENS_START_BIT_LEN                   (uint8_t)(F_INTERRUPTS * SIEMENS_OR_RUWIDO_START_BIT_PULSE_TIME + 0.5)\r
 #define SIEMENS_BIT_LEN                         (uint8_t)(F_INTERRUPTS * SIEMENS_OR_RUWIDO_BIT_PULSE_TIME + 0.5)\r
 #define SIEMENS_FRAME_REPEAT_PAUSE_LEN          (uint16_t)(F_INTERRUPTS * SIEMENS_OR_RUWIDO_FRAME_REPEAT_PAUSE_TIME + 0.5)  // use uint16_t!\r
 \r
 \r
 #ifdef PIC_C18\r
+#define IRSND_FREQ_30_KHZ                       (uint8_t) ((F_CPU / 30000  / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
 #define IRSND_FREQ_32_KHZ                       (uint8_t) ((F_CPU / 32000  / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
 #define IRSND_FREQ_36_KHZ                       (uint8_t) ((F_CPU / 36000  / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
 #define IRSND_FREQ_38_KHZ                       (uint8_t) ((F_CPU / 38000  / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
@@ -341,6 +344,7 @@ typedef unsigned short  uint16_t;
 #define IRSND_FREQ_56_KHZ                       (uint8_t) ((F_CPU / 56000  / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
 #define IRSND_FREQ_455_KHZ                      (uint8_t) ((F_CPU / 455000 / 2 / Pre_Scaler / PIC_Scaler) - 1)\r
 #else // AVR\r
+#define IRSND_FREQ_30_KHZ                       (uint8_t) ((F_CPU / 30000 / 2) - 1)\r
 #define IRSND_FREQ_32_KHZ                       (uint8_t) ((F_CPU / 32000 / 2) - 1)\r
 #define IRSND_FREQ_36_KHZ                       (uint8_t) ((F_CPU / 36000 / 2) - 1)\r
 #define IRSND_FREQ_38_KHZ                       (uint8_t) ((F_CPU / 38000 / 2) - 1)\r
@@ -413,7 +417,6 @@ irsnd_on (void)
         IRSND_PIN = 0; // output mode -> enable PWM outout pin (0=PWM on, 1=PWM off)\r
 #else\r
 \r
-\r
 #if   IRSND_OCx == IRSND_OC2                            // use OC2\r
         TCCR2 |= (1<<COM20)|(1<<WGM21);                 // toggle OC2 on compare match,  clear Timer 2 at compare match OCR2\r
 #elif IRSND_OCx == IRSND_OC2A                           // use OC2A\r
@@ -501,8 +504,8 @@ irsnd_set_freq (uint8_t freq)
 #ifndef DEBUG\r
 \r
 #if defined(PIC_C18)\r
-         OpenPWM(freq); \r
-         SetDCPWM( (uint16_t) freq * 2); // freq*2 = Duty cycles 50%\r
+     OpenPWM(freq); \r
+     SetDCPWM( (uint16_t) freq * 2); // freq*2 = Duty cycles 50%\r
 #else //AVR\r
 \r
 #if IRSND_OCx == IRSND_OC2\r
@@ -534,11 +537,10 @@ irsnd_init (void)
 {\r
 #ifndef DEBUG\r
 #if defined(PIC_C18)\r
-        OpenTimer;\r
-        irsnd_set_freq (IRSND_FREQ_36_KHZ);   //default frequency\r
-        IRSND_PIN = 1; //default PWM output pin off (0=PWM on, 1=PWM off)\r
+    OpenTimer;\r
+    irsnd_set_freq (IRSND_FREQ_36_KHZ);   //default frequency\r
+    IRSND_PIN = 1; //default PWM output pin off (0=PWM on, 1=PWM off)\r
 #else\r
-\r
     IRSND_PORT &= ~(1<<IRSND_BIT);                                                  // set IRSND_BIT to low\r
     IRSND_DDR |= (1<<IRSND_BIT);                                                    // set IRSND_BIT to output\r
 \r
@@ -557,7 +559,6 @@ irsnd_init (void)
 #else\r
 #error wrong value of IRSND_OCx\r
 #endif\r
-\r
     irsnd_set_freq (IRSND_FREQ_36_KHZ);                                             // default frequency\r
 #endif //PIC_C18\r
 #endif // DEBUG\r
@@ -722,7 +723,7 @@ irsnd_send_data (IRMP_DATA * irmp_data_p, uint8_t do_wait)
             command = bitsrevervse (irmp_data_p->command, NEC42_COMMAND_LEN);\r
 \r
             irsnd_buffer[0] = ( (address & 0x1FE0) >> 5);                                                       // AAAAAAAA\r
-            irsnd_buffer[1] = ( (address & 0x001F) << 3) | ((~address & 0x1C00) >> 10);                          // AAAAAaaa\r
+            irsnd_buffer[1] = ( (address & 0x001F) << 3) | ((~address & 0x1C00) >> 10);                         // AAAAAaaa\r
             irsnd_buffer[2] =                              ((~address & 0x03FC) >> 2);                          // aaaaaaaa\r
             irsnd_buffer[3] = ((~address & 0x0003) << 6) | ( (command & 0x00FC) >> 2);                          // aaCCCCCC\r
             irsnd_buffer[4] = ( (command & 0x0003) << 6) | ((~command & 0x00FC) >> 2);                          // CCcccccc\r
@@ -913,6 +914,17 @@ irsnd_send_data (IRMP_DATA * irmp_data_p, uint8_t do_wait)
             break;\r
         }\r
 #endif\r
+#if IRSND_SUPPORT_IR60_PROTOCOL == 1\r
+        case IRMP_IR60_PROTOCOL:\r
+        {\r
+            command = (bitsrevervse (0x7d, IR60_COMMAND_LEN) << 7) | bitsrevervse (irmp_data_p->command, IR60_COMMAND_LEN);\r
+            irsnd_buffer[0] = command >> 6 | 0x01;                                                              // 1011111S (start instruction frame)\r
+            irsnd_buffer[1] = (command & 0x7F) << 1;                                                            // CCCCCCC_ (2nd frame)\r
+\r
+            irsnd_busy      = TRUE;\r
+            break;\r
+        }\r
+#endif\r
 #if IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
         case IRMP_NOKIA_PROTOCOL:\r
         {\r
@@ -1026,32 +1038,32 @@ irsnd_stop (void)
 uint8_t\r
 irsnd_ISR (void)\r
 {\r
-    static uint8_t  send_trailer = FALSE;\r
-    static uint8_t  current_bit = 0;// 0xFF;\r
-    static uint8_t  pulse_counter = 0;\r
-    static IRSND_PAUSE_LEN  pause_counter = 0;\r
-    static uint8_t  startbit_pulse_len = 0;\r
-    static IRSND_PAUSE_LEN  startbit_pause_len = 0;\r
-    static uint8_t  pulse_1_len = 0;\r
-    static uint8_t  pause_1_len = 0;\r
-    static uint8_t  pulse_0_len = 0;\r
-    static uint8_t  pause_0_len = 0;\r
-    static uint8_t  has_stop_bit = 0;\r
-    static uint8_t  new_frame = TRUE;\r
-    static uint8_t  complete_data_len = 0;\r
-    static uint8_t  n_repeat_frames = 0;                                                // number of repetition frames\r
-    static uint8_t  n_auto_repetitions = 0;                                             // number of auto_repetitions\r
-    static uint8_t  auto_repetition_counter = 0;                                        // auto_repetition counter\r
-    static uint16_t auto_repetition_pause_len = 0;                                      // pause before auto_repetition, uint16_t!\r
-    static uint16_t auto_repetition_pause_counter = 0;                                  // pause before auto_repetition, uint16_t!\r
-    static uint8_t  repeat_counter = 0;                                                 // repeat counter\r
-    static uint16_t repeat_frame_pause_len = 0;                                         // pause before repeat, uint16_t!\r
-    static uint16_t packet_repeat_pause_counter = 0;                                    // pause before repeat, uint16_t!\r
+    static uint8_t              send_trailer                    = FALSE;\r
+    static uint8_t              current_bit                     = 0xFF;\r
+    static uint8_t              pulse_counter                   = 0;\r
+    static IRSND_PAUSE_LEN      pause_counter                   = 0;\r
+    static uint8_t              startbit_pulse_len              = 0;\r
+    static IRSND_PAUSE_LEN      startbit_pause_len              = 0;\r
+    static uint8_t              pulse_1_len                     = 0;\r
+    static uint8_t              pause_1_len                     = 0;\r
+    static uint8_t              pulse_0_len                     = 0;\r
+    static uint8_t              pause_0_len                     = 0;\r
+    static uint8_t              has_stop_bit                    = 0;\r
+    static uint8_t              new_frame                       = TRUE;\r
+    static uint8_t              complete_data_len               = 0;\r
+    static uint8_t              n_repeat_frames                 = 0;                                // number of repetition frames\r
+    static uint8_t              n_auto_repetitions              = 0;                                // number of auto_repetitions\r
+    static uint8_t              auto_repetition_counter         = 0;                                // auto_repetition counter\r
+    static uint16_t             auto_repetition_pause_len       = 0;                                // pause before auto_repetition, uint16_t!\r
+    static uint16_t             auto_repetition_pause_counter   = 0;                                // pause before auto_repetition, uint16_t!\r
+    static uint8_t              repeat_counter                  = 0;                                // repeat counter\r
+    static uint16_t             repeat_frame_pause_len          = 0;                                // pause before repeat, uint16_t!\r
+    static uint16_t             packet_repeat_pause_counter     = 0;                                // pause before repeat, uint16_t!\r
 #if IRSND_SUPPORT_BANG_OLUFSEN_PROTOCOL == 1\r
-    static uint8_t  last_bit_value;\r
+    static uint8_t              last_bit_value;\r
 #endif\r
-    static uint8_t  pulse_len = 0xFF;\r
-    static IRSND_PAUSE_LEN  pause_len = 0xFF;\r
+    static uint8_t              pulse_len = 0xFF;\r
+    static IRSND_PAUSE_LEN              pause_len = 0xFF;\r
 \r
     if (irsnd_busy)\r
     {\r
@@ -1065,17 +1077,22 @@ irsnd_ISR (void)
                 {\r
                     auto_repetition_pause_counter = 0;\r
 \r
-                    if (irsnd_protocol == IRMP_DENON_PROTOCOL)\r
+                    if (irsnd_protocol == IRMP_DENON_PROTOCOL)                              // n'th denon frame\r
                     {\r
                         current_bit = 16;\r
                         complete_data_len   = 2 * DENON_COMPLETE_DATA_LEN + 1;\r
                     }\r
-                    else if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL)                       // n'th grundig info frame\r
+                    else if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL)                       // n'th grundig frame\r
                     {\r
                         current_bit = 15;\r
                         complete_data_len   = 16 + GRUNDIG_COMPLETE_DATA_LEN;\r
                     }\r
-                    else if (irsnd_protocol == IRMP_NOKIA_PROTOCOL)                         // n'th nokia info frame\r
+                    else if (irsnd_protocol == IRMP_IR60_PROTOCOL)                          // n'th IR60 frame\r
+                    {\r
+                        current_bit = 7;\r
+                        complete_data_len   = 2 * IR60_COMPLETE_DATA_LEN + 1;\r
+                    }\r
+                    else if (irsnd_protocol == IRMP_NOKIA_PROTOCOL)                         // n'th nokia frame\r
                     {\r
                         if (auto_repetition_counter + 1 < n_auto_repetitions)\r
                         {\r
@@ -1134,7 +1151,6 @@ irsnd_ISR (void)
                     return irsnd_busy;\r
                 }\r
                 \r
-\r
                 n_repeat_frames             = irsnd_repeat;\r
 \r
                 if (n_repeat_frames == IRSND_ENDLESS_REPETITION)\r
@@ -1469,9 +1485,24 @@ irsnd_ISR (void)
                         complete_data_len           = GRUNDIG_COMPLETE_DATA_LEN;\r
                         n_auto_repetitions          = GRUNDIG_FRAMES;                               // 2 frames\r
                         auto_repetition_pause_len   = GRUNDIG_AUTO_REPETITION_PAUSE_LEN;            // 20m sec pause\r
-                        repeat_frame_pause_len      = GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_LEN;      // 117 msec pause\r
+                        repeat_frame_pause_len      = GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_LEN;    // 117 msec pause\r
                         irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
-\r
+                        break;\r
+                    }\r
+#endif\r
+#if IRSND_SUPPORT_IR60_PROTOCOL == 1\r
+                    case IRMP_IR60_PROTOCOL:\r
+                    {\r
+                        startbit_pulse_len          = GRUNDIG_NOKIA_IR60_BIT_LEN;\r
+                        startbit_pause_len          = GRUNDIG_NOKIA_IR60_PRE_PAUSE_LEN - 1;\r
+                        pulse_len                   = GRUNDIG_NOKIA_IR60_BIT_LEN;\r
+                        pause_len                   = GRUNDIG_NOKIA_IR60_BIT_LEN;\r
+                        has_stop_bit                = GRUNDIG_NOKIA_IR60_STOP_BIT;\r
+                        complete_data_len           = IR60_COMPLETE_DATA_LEN;\r
+                        n_auto_repetitions          = IR60_FRAMES;                                  // 2 frames\r
+                        auto_repetition_pause_len   = IR60_AUTO_REPETITION_PAUSE_LEN;               // 20m sec pause\r
+                        repeat_frame_pause_len      = GRUNDIG_NOKIA_IR60_FRAME_REPEAT_PAUSE_LEN;    // 117 msec pause\r
+                        irsnd_set_freq (IRSND_FREQ_30_KHZ);\r
                         break;\r
                     }\r
 #endif\r
@@ -1563,7 +1594,6 @@ irsnd_ISR (void)
                         auto_repetition_pause_len   = 0;\r
                         repeat_frame_pause_len      = JVC_FRAME_REPEAT_PAUSE_LEN;\r
                         irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
-\r
                         break;\r
                     }\r
 #endif\r
@@ -1582,7 +1612,6 @@ irsnd_ISR (void)
                         auto_repetition_pause_len   = 0;\r
                         repeat_frame_pause_len      = NIKON_FRAME_REPEAT_PAUSE_LEN;\r
                         irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
-\r
                         break;\r
                     }\r
 #endif\r
@@ -1865,12 +1894,15 @@ irsnd_ISR (void)
 #if IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1\r
                 case IRMP_GRUNDIG_PROTOCOL:\r
 #endif\r
+#if IRSND_SUPPORT_IR60_PROTOCOL == 1\r
+                case IRMP_IR60_PROTOCOL:\r
+#endif\r
 #if IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
                 case IRMP_NOKIA_PROTOCOL:\r
 #endif\r
 \r
 #if IRSND_SUPPORT_RC5_PROTOCOL == 1 || IRSND_SUPPORT_RC6_PROTOCOL == 1 || IRSND_SUPPORT_RC6A_PROTOCOL == 1 || IRSND_SUPPORT_SIEMENS_PROTOCOL == 1 || \\r
-    IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
+    IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_IR60_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
                 {\r
                     if (pulse_counter == pulse_len && pause_counter == pause_len)\r
                     {\r
@@ -1880,8 +1912,8 @@ irsnd_ISR (void)
                         {\r
                             current_bit = 0xFF;\r
 \r
-#if IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
-                            if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL || irsnd_protocol == IRMP_NOKIA_PROTOCOL)\r
+#if IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_IR60_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
+                            if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL || irsnd_protocol == IRMP_IR60_PROTOCOL || irsnd_protocol == IRMP_NOKIA_PROTOCOL)\r
                             {\r
                                 auto_repetition_counter++;\r
 \r
@@ -1919,11 +1951,12 @@ irsnd_ISR (void)
                     {\r
                         uint8_t first_pulse;\r
 \r
-#if IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
-                        if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL || irsnd_protocol == IRMP_NOKIA_PROTOCOL)\r
+#if IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_IR60_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
+                        if (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL || irsnd_protocol == IRMP_IR60_PROTOCOL || irsnd_protocol == IRMP_NOKIA_PROTOCOL)\r
                         {\r
                             if (current_bit == 0xFF ||                                                                  // start bit of start-frame\r
                                 (irsnd_protocol == IRMP_GRUNDIG_PROTOCOL && current_bit == 15) ||                       // start bit of info-frame (Grundig)\r
+                                (irsnd_protocol == IRMP_IR60_PROTOCOL && current_bit == 7) ||                           // start bit of data frame (IR60)\r
                                 (irsnd_protocol == IRMP_NOKIA_PROTOCOL && (current_bit == 23 || current_bit == 47)))    // start bit of info- or stop-frame (Nokia)\r
                             {\r
                                 pulse_len = startbit_pulse_len;\r
@@ -2033,7 +2066,7 @@ irsnd_ISR (void)
                     break;\r
                 }\r
 #endif // IRSND_SUPPORT_RC5_PROTOCOL == 1 || IRSND_SUPPORT_RC6_PROTOCOL == 1 || || IRSND_SUPPORT_RC6A_PROTOCOL == 1 || IRSND_SUPPORT_SIEMENS_PROTOCOL == 1 ||\r
-       // IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
+       // IRSND_SUPPORT_GRUNDIG_PROTOCOL == 1 || IRSND_SUPPORT_IR60_PROTOCOL == 1 || IRSND_SUPPORT_NOKIA_PROTOCOL == 1\r
 \r
                 default:\r
                 {\r
index 746f57a853708a85c99fa0b24c161d8c14dcc990..070c7c3dac908913e35fa1d64cb565f0021bcddd 100644 (file)
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2010-2011 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irsndconfig.h,v 1.29 2012/02/16 12:39:36 fm Exp $\r
+ * $Id: irsndconfig.h,v 1.30 2012/02/24 14:24:28 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -45,8 +45,8 @@
 #define IRSND_SUPPORT_JVC_PROTOCOL              0       // JVC                  >= 10000                 ~150 bytes\r
 #define IRSND_SUPPORT_NEC16_PROTOCOL            0       // NEC16                >= 10000                 ~150 bytes\r
 #define IRSND_SUPPORT_NEC42_PROTOCOL            0       // NEC42                >= 10000                 ~150 bytes\r
-#define IRSND_SUPPORT_IR60_PROTOCOL             0       // IR60 (SAB2008)       >= 10000                 DON'T CHANGE, NOT SUPPORTED YET!\r
-#define IRSND_SUPPORT_GRUNDIG_PROTOCOL          0       // Grundig              >= 10000                 ~300 bytes\r
+#define IRSND_SUPPORT_IR60_PROTOCOL             1       // IR60 (SAB2008)       >= 10000                 ~250 bytes\r
+#define IRSND_SUPPORT_GRUNDIG_PROTOCOL          1       // Grundig              >= 10000                 ~300 bytes\r
 #define IRSND_SUPPORT_SIEMENS_PROTOCOL          0       // Siemens, Gigaset     >= 15000                 ~150 bytes\r
 #define IRSND_SUPPORT_NOKIA_PROTOCOL            0       // Nokia                >= 10000                 ~400 bytes\r
 \r