]> cloudbase.mooo.com Git - irmp.git/commitdiff
Version 1.7.0: stable release
authorukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 25 Jun 2010 09:10:07 +0000 (09:10 +0000)
committerukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 25 Jun 2010 09:10:07 +0000 (09:10 +0000)
git-svn-id: svn://mikrocontroller.net/irmp@38 aeb2e35e-bfc4-4214-b83c-9e8de998ed28

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

index 5783fa4909a8c28ad391ea66db45516a6d7605b0..324b0cb03a5c4bd92031ccb00874fc5c6a88f1bc 100644 (file)
@@ -1,8 +1,8 @@
 IRMP - Infrared Multi Protocol Decoder\r
 --------------------------------------\r
 \r
 IRMP - Infrared Multi Protocol Decoder\r
 --------------------------------------\r
 \r
-Version IRMP:  1.6.8  22.06.2010\r
-Version IRSND: 1.6.8  22.06.2010\r
+Version IRMP:  1.7.0  25.06.2010\r
+Version IRSND: 1.7.0  25.06.2010\r
 \r
 Dokumentation:\r
  \r
 \r
 Dokumentation:\r
  \r
diff --git a/irmp.c b/irmp.c
index 17fb6caec22e376b31b20416fd14841087e237ad..7f478f076d7145fa58e1251db702b4c73a3c0612 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.63 2010/06/23 12:05:36 fm Exp $\r
+ * $Id: irmp.c,v 1.64 2010/06/25 09:04:43 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  *\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  *\r
  *\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  *\r
+ *   SIEMENS:\r
+ *   --------\r
+ *\r
+ *   SIEMENS frame:  1 start bit + 22 data bits + no stop bit\r
+ *   SIEMENS data:   13 address bits + 1 repeat bit + 7 data bits + 1 unknown bit\r
+ *\r
+ *   start  bit           data "0":            data "1":\r
+ *   -------_______       _______-------       -------_______\r
+ *    250us  250us         250us  250us         250us  250us\r
+ *\r
+ *---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ *\r
  *   PANASONIC (older protocol, yet not implemented, see also MATSUSHITA, timing very similar)\r
  *   -----------------------------------------------------------------------------------------\r
  *\r
  *   PANASONIC (older protocol, yet not implemented, see also MATSUSHITA, timing very similar)\r
  *   -----------------------------------------------------------------------------------------\r
  *\r
@@ -334,13 +346,12 @@ typedef unsigned int16  uint16_t;
 #define IRMP_TIMEOUT_TIME_MS                    16500L                      // timeout after 16.5 ms darkness\r
 \r
 #if (F_INTERRUPTS * IRMP_TIMEOUT_TIME_MS) / 1000000 >= 254\r
 #define IRMP_TIMEOUT_TIME_MS                    16500L                      // timeout after 16.5 ms darkness\r
 \r
 #if (F_INTERRUPTS * IRMP_TIMEOUT_TIME_MS) / 1000000 >= 254\r
-#define IRMP_TIMEOUT_LEN                        (uint16_t)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5)\r
 typedef uint16_t    PAUSE_LEN;\r
 #else\r
 typedef uint16_t    PAUSE_LEN;\r
 #else\r
-#define IRMP_TIMEOUT_LEN                        (uint8_t)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5)\r
 typedef uint8_t     PAUSE_LEN;\r
 #endif\r
 \r
 typedef uint8_t     PAUSE_LEN;\r
 #endif\r
 \r
+#define IRMP_TIMEOUT_LEN                        (PAUSE_LEN)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5)\r
 #define IRMP_KEY_REPETITION_LEN                 (uint16_t)(F_INTERRUPTS * 150.0e-3 + 0.5)  // autodetect key repetition within 150 msec\r
 \r
 #define MIN_TOLERANCE_00                        1.0                           // -0%\r
 #define IRMP_KEY_REPETITION_LEN                 (uint16_t)(F_INTERRUPTS * 150.0e-3 + 0.5)  // autodetect key repetition within 150 msec\r
 \r
 #define MIN_TOLERANCE_00                        1.0                           // -0%\r
@@ -494,7 +505,7 @@ typedef uint8_t     PAUSE_LEN;
 #define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
 #define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
 #define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
-#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1) // 10% is too big (uint8_t)\r
+#define BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX   ((PAUSE_LEN)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT3_PAUSE_TIME * MAX_TOLERANCE_05 + 0.5) + 1) // value must be below IRMP_TIMEOUT\r
 #define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
 #define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define BANG_OLUFSEN_START_BIT4_PULSE_LEN_MAX   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
 #define BANG_OLUFSEN_START_BIT4_PAUSE_LEN_MIN   ((uint8_t)(F_INTERRUPTS * BANG_OLUFSEN_START_BIT4_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
@@ -2453,22 +2464,31 @@ irmp_ISR (void)
 \r
 #ifdef ANALYZE\r
 \r
 \r
 #ifdef ANALYZE\r
 \r
-// main function - for unix/linux + windows only!\r
-// AVR: see main.c!\r
-// Compile it under linux with:\r
-// cc irmp.c -o irmp\r
-//\r
-// usage: ./irmp [-v|-s|-a|-l|-p] < file\r
-// options:\r
-//   -v verbose\r
-//   -s silent\r
-//   -a analyze\r
-//   -l list pulse/pauses\r
-//   -p print timings\r
+/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ * main functions - for Unix/Linux + Windows only!\r
+ *\r
+ * AVR: see main.c!\r
+ *\r
+ * Compile it under linux with:\r
+ * cc irmp.c -o irmp\r
+ *\r
+ * usage: ./irmp [-v|-s|-a|-l|-p] < file\r
+ *\r
+ * options:\r
+ *   -v verbose\r
+ *   -s silent\r
+ *   -a analyze\r
+ *   -l list pulse/pauses\r
+ *   -p print timings\r
+ *---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ */\r
 \r
 static void\r
 print_timings (void)\r
 {\r
 \r
 static void\r
 print_timings (void)\r
 {\r
+    printf ("IRMP_TIMEOUT_LEN:        %d\n", IRMP_TIMEOUT_LEN);\r
+    printf ("IRMP_KEY_REPETITION_LEN  %d\n", IRMP_KEY_REPETITION_LEN);\r
+    puts ("");\r
     printf ("PROTOCOL       S  S-PULSE    S-PAUSE    PULSE-0    PAUSE-0    PULSE-1    PAUSE-1\n");\r
     printf ("====================================================================================\n");\r
     printf ("SIRCS          1  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d\n",\r
     printf ("PROTOCOL       S  S-PULSE    S-PAUSE    PULSE-0    PAUSE-0    PULSE-1    PAUSE-1\n");\r
     printf ("====================================================================================\n");\r
     printf ("SIRCS          1  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d  %3d - %3d\n",\r
@@ -2533,6 +2553,10 @@ print_timings (void)
             BANG_OLUFSEN_START_BIT1_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PULSE_LEN_MAX,\r
             BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MAX);\r
 \r
             BANG_OLUFSEN_START_BIT1_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PULSE_LEN_MAX,\r
             BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT1_PAUSE_LEN_MAX);\r
 \r
+    printf ("BANG_OLUFSEN   2  %3d - %3d  %3d - %3d\n",\r
+            BANG_OLUFSEN_START_BIT2_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT2_PULSE_LEN_MAX,\r
+            BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT2_PAUSE_LEN_MAX);\r
+\r
     printf ("BANG_OLUFSEN   3  %3d - %3d  %3d - %3d\n",\r
             BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX,\r
             BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX);\r
     printf ("BANG_OLUFSEN   3  %3d - %3d  %3d - %3d\n",\r
             BANG_OLUFSEN_START_BIT3_PULSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PULSE_LEN_MAX,\r
             BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MIN, BANG_OLUFSEN_START_BIT3_PAUSE_LEN_MAX);\r
index 2e9c7a389b57172ce0708f8e006e11849415f86f..def6a759335c880a940713ba219ea664e9309995 100644 (file)
Binary files a/irmp.exe and b/irmp.exe differ
index 6244c94b47a62f456902694388b5aeb80d4a4235..255c3f6cd3dbad5716b720c9a896ba4bfc27feb0 100644 (file)
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
  *\r
  * Copyright (c) 2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmpconfig.h,v 1.28 2010/06/22 15:41:38 fm Exp $\r
+ * $Id: irmpconfig.h,v 1.30 2010/06/25 09:04:43 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
  * 1 enable  decoder\r
  * 0 disable decoder\r
  *\r
  * 1 enable  decoder\r
  * 0 disable decoder\r
  *\r
+ * The standard decoders are enabled per default.\r
+ * Some less common protocols are disabled here, you need to enable them manually.\r
+ *\r
  * If you want to use FDC or RCCAR simultaneous with RC5 protocol, additional program space is required.\r
  * If you don't need RC5 when using FDC/RCCAR, you should disable RC5.\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
 \r
  * If you want to use FDC or RCCAR simultaneous with RC5 protocol, additional program space is required.\r
  * If you don't need RC5 when using FDC/RCCAR, you should disable RC5.\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
 \r
-// Standard protocols: default is enabled. Change to 0 to save program space:\r
-\r
-#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // flag: support Sony 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_DENON_PROTOCOL             1       // flag: support DENON                 uses ~250 bytes\r
-\r
-\r
-// Non-standard protocols: default is disabled. Change to 1 to enable decoder:\r
-\r
-#define IRMP_SUPPORT_RC5_PROTOCOL               0       // flag: support RC5                   uses ~250 bytes\r
-#define IRMP_SUPPORT_RC6_PROTOCOL               0       // flag: support RC6                   uses ~200 bytes\r
-#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // flag: support Grundig               uses ~150 bytes\r
-#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // flag: support Nokia                 uses ~150 bytes\r
-#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // flag: support NUBERT                uses  ~50 bytes\r
-#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // flag: support Bang & Olufsen        uses ~200 bytes\r
-#define IRMP_SUPPORT_FDC_PROTOCOL               0       // flag: support FDC3402 keyboard      uses  ~50/400 bytes\r
-#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // flag: support RC car                uses ~150/500 bytes\r
-\r
-/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * THE FOLLOWING DECODERS WORK ONLY FOR F_INTERRUPTS >= 14500!\r
- *---------------------------------------------------------------------------------------------------------------------------------------------------\r
- */\r
-#if F_INTERRUPTS >= 14500\r
-#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // flag: support Siemens Gigaset       uses ~150 bytes\r
-#else\r
-#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // DO NOT CHANGE! F_INTERRUPTS too low!\r
-#endif\r
-\r
-/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
- * THE FOLLOWING DECODERS WORK ONLY FOR F_INTERRUPTS >= 20000!\r
- *---------------------------------------------------------------------------------------------------------------------------------------------------\r
- */\r
-#if F_INTERRUPTS >= 20000\r
-#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // flag: support RECS80                uses  ~50 bytes\r
-#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // flag: support RECS80EXT             uses  ~50 bytes\r
-#else\r
-#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // DO NOT CHANGE! F_INTERRUPTS too low!\r
-#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // DO NOT CHANGE! F_INTERRUPTS too low!\r
-#endif\r
+//      Protocol                                Enable  Remarks                 F_INTERRUPTS        Program Space\r
+#define IRMP_SUPPORT_SIRCS_PROTOCOL             1       // Sony SIRCS           >= 10000                 ~100 bytes\r
+#define IRMP_SUPPORT_NEC_PROTOCOL               1       // NEC + APPLE          >= 10000                 ~250 bytes\r
+#define IRMP_SUPPORT_SAMSUNG_PROTOCOL           1       // Samsung + Samsung32  >= 10000                 ~250 bytes\r
+#define IRMP_SUPPORT_MATSUSHITA_PROTOCOL        1       // Matsushita           >= 10000                  ~50 bytes\r
+#define IRMP_SUPPORT_KASEIKYO_PROTOCOL          1       // support Kaseikyo     >= 10000                  ~50 bytes\r
+#define IRMP_SUPPORT_DENON_PROTOCOL             1       // support DENON        >= 10000                 ~250 bytes\r
+#define IRMP_SUPPORT_RC5_PROTOCOL               0       // RC5                  >= 10000                 ~250 bytes\r
+#define IRMP_SUPPORT_RC6_PROTOCOL               0       // RC6                  >= 10000                 ~200 bytes\r
+#define IRMP_SUPPORT_GRUNDIG_PROTOCOL           0       // Grundig              >= 10000                 ~150 bytes\r
+#define IRMP_SUPPORT_NOKIA_PROTOCOL             0       // Nokia                >= 10000                 ~150 bytes\r
+#define IRMP_SUPPORT_NUBERT_PROTOCOL            0       // NUBERT               >= 10000                  ~50 bytes\r
+#define IRMP_SUPPORT_BANG_OLUFSEN_PROTOCOL      0       // Bang & Olufsen       >= 10000                 ~200 bytes\r
+#define IRMP_SUPPORT_FDC_PROTOCOL               0       // FDC3402 keyboard     >= 10000 (better 15000)   ~50 bytes (~400 in combination with RC5)\r
+#define IRMP_SUPPORT_RCCAR_PROTOCOL             0       // RC Car               >= 10000 (better 15000)  ~150 bytes (~500 in combination with RC5)\r
+#define IRMP_SUPPORT_SIEMENS_PROTOCOL           0       // Siemens Gigaset      >= 15000                 ~150 bytes\r
+#define IRMP_SUPPORT_RECS80_PROTOCOL            0       // RECS80               >= 20000                  ~50 bytes\r
+#define IRMP_SUPPORT_RECS80EXT_PROTOCOL         0       // RECS80EXT            >= 20000                  ~50 bytes\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * Change hardware pin here:\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * Change hardware pin here:\r
 #define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not (default)\r
 #endif\r
 \r
 #define IRMP_LOGGING                            0       // 1: log IR signal (scan), 0: do not (default)\r
 #endif\r
 \r
+#if IRMP_SUPPORT_SIEMENS_PROTOCOL == 1 && F_INTERRUPTS < 15000\r
+#warning F_INTERRUPTS too low, SIEMENS protocol disabled (should be at least 15000)\r
+#endif\r
+\r
+#if IRMP_SUPPORT_RECS80_PROTOCOL == 1 && F_INTERRUPTS < 20000\r
+#warning F_INTERRUPTS too low, RECS80 protocol disabled (should be at least 20000)\r
+#endif\r
+\r
+#if IRMP_SUPPORT_RECS80EXT_PROTOCOL == 1 && F_INTERRUPTS < 20000\r
+#warning F_INTERRUPTS too low, RECS80EXT protocol disabled (should be at least 20000)\r
+#endif\r
+\r
 #endif /* _WC_IRMPCONFIG_H_ */\r
 #endif /* _WC_IRMPCONFIG_H_ */\r
index c1393231ea1daa2ac9e12c435edb86120eaa93d7..df93d48fee6e12899b420d023b035da16eb28cd8 100644 (file)
Binary files a/irsnd.exe and b/irsnd.exe differ