]> cloudbase.mooo.com Git - irmp.git/commitdiff
Version 3.0.3: added VINCENT protocol
authorukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Mon, 19 Sep 2016 14:29:31 +0000 (14:29 +0000)
committerukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Mon, 19 Sep 2016 14:29:31 +0000 (14:29 +0000)
git-svn-id: svn://mikrocontroller.net/irmp@178 aeb2e35e-bfc4-4214-b83c-9e8de998ed28

IR-Data/test-suite.sh
README.txt
irmp.c
irmpconfig.h
irmpprotocols.h

index df2b3ae7f4c285d67fec13e4399b51ee70284d28..0511870ea26d57ad5b5bda2fda70d60ca96e5b3d 100644 (file)
@@ -72,16 +72,16 @@ do
     echo -n "testing $j ... "
     if tmpsrc/irmp-10kHz -v < $j | grep -q error
     then
-       tmpsrc/irmp-10kHz -v < $j | grep error
-       echo "test failed"
-       exit 1
+        tmpsrc/irmp-10kHz -v < $j | grep error
+        echo "test failed"
+        exit 1
     else
-       if tmpsrc/irmp-10kHz -v < $j | grep -q checked
-       then
-           echo "checked!"
-       else
-           echo "successful"
-       fi
+        if tmpsrc/irmp-10kHz -v < $j | grep -q checked
+        then
+            echo "checked!"
+        else
+            echo "successful"
+        fi
     fi
 done
 
@@ -99,37 +99,38 @@ for j in                                \
     kathrein-15kHz.txt                  \
     lg-air-15kHz.txt                    \
     merlin-15kHz.txt                    \
-    panasonic-vcr-15kHz.txt            \
-    pentax-15kHz.txt                   \
-    rc5-philipps-15kHz.txt             \
-    rc6a-siemens-15kHz.txt             \
+    panasonic-vcr-15kHz.txt             \
+    pentax-15kHz.txt                    \
+    rc5-philipps-15kHz.txt              \
+    rc6a-siemens-15kHz.txt              \
     recs80-15kHz.txt                    \
     saa3004-15kHz.txt                   \
-    samsung-br-15kHz.txt               \
-    samsung32-tv-15kHz.txt             \
+    samsung-br-15kHz.txt                \
+    samsung32-tv-15kHz.txt              \
     samsung32-15kHz.txt                 \
     samsung48-15kHz.txt                 \
     sharp_15khz.txt                     \
-    technics-15kHz.txt                 \
+    technics-15kHz.txt                  \
     thomson-mb100-15kHz.txt             \
     tp400vt-15kHz.txt                   \
     universal-15kHz.txt                 \
-    vincent-flash-15kHz.txt            \
+    vincent-15kHz.txt                   \
+    vincent-flash-15kHz.txt             \
     xbox360-15kHz.txt
 do
     echo -n "testing $j ... "
     if tmpsrc/irmp-15kHz -v < $j | grep -q error
     then
-       tmpsrc/irmp-15kHz -v < $j | grep error
-       echo "test failed"
-       exit 1
+        tmpsrc/irmp-15kHz -v < $j | grep error
+        echo "test failed"
+        exit 1
     else
-       if tmpsrc/irmp-15kHz -v < $j | grep -q checked
-       then
-           echo "checked!"
-       else
-           echo "successful"
-       fi
+        if tmpsrc/irmp-15kHz -v < $j | grep -q checked
+        then
+            echo "checked!"
+        else
+            echo "successful"
+        fi
     fi
 done
 
@@ -146,16 +147,16 @@ do
     echo -n "testing $j ... "
     if tmpsrc/irmp-20kHz -v < $j | grep -q error
     then
-       tmpsrc/irmp-20kHz -v < $j | grep error
-       echo "test failed"
-       exit 1
+        tmpsrc/irmp-20kHz -v < $j | grep error
+        echo "test failed"
+        exit 1
     else
-       if tmpsrc/irmp-20kHz -v < $j | grep -q checked
-       then
-           echo "checked!"
-       else
-           echo "successful"
-       fi
+        if tmpsrc/irmp-20kHz -v < $j | grep -q checked
+        then
+            echo "checked!"
+        else
+            echo "successful"
+        fi
     fi
 done
 
index ca88fd7648c4dabdc5745f2f1824372bbe56c892..0b2b87fdf29a2675eeda8ef517e7beab743c335e 100644 (file)
@@ -1,8 +1,8 @@
 IRMP - Infrared Multi Protocol Decoder\r
 --------------------------------------\r
 \r
-Version IRMP:  3.0.2 2016-09-09\r
-Version IRSND: 3.0.2 2016-09-09\r
+Version IRMP:  3.0.3 2016-09-19\r
+Version IRSND: 3.0.3 2016-09-19\r
 \r
 Documentation:\r
  \r
diff --git a/irmp.c b/irmp.c
index 3b97afc50043762c1921a9ac131af6631e0be48b..6297aa5905cb6f83653d2d351547e353dd9d61d0 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2016 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.187 2016/09/09 07:53:29 fm Exp $\r
+ * $Id: irmp.c,v 1.188 2016/09/14 06:31:48 fm Exp $\r
  *\r
  * Supported AVR mikrocontrollers:\r
  *\r
 #define MITSU_HEAVY_0_PAUSE_LEN_MIN             ((uint_fast8_t)(F_INTERRUPTS * MITSU_HEAVY_0_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
 #define MITSU_HEAVY_0_PAUSE_LEN_MAX             ((uint_fast8_t)(F_INTERRUPTS * MITSU_HEAVY_0_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
 \r
+#define VINCENT_START_BIT_PULSE_LEN_MIN         ((uint_fast8_t)(F_INTERRUPTS * VINCENT_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define VINCENT_START_BIT_PULSE_LEN_MAX         ((uint_fast8_t)(F_INTERRUPTS * VINCENT_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define VINCENT_START_BIT_PAUSE_LEN_MIN         ((uint_fast8_t)(F_INTERRUPTS * VINCENT_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
+#define VINCENT_START_BIT_PAUSE_LEN_MAX         ((uint_fast8_t)(F_INTERRUPTS * VINCENT_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#define VINCENT_PULSE_LEN_MIN                   ((uint_fast8_t)(F_INTERRUPTS * VINCENT_PULSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
+#define VINCENT_PULSE_LEN_MAX                   ((uint_fast8_t)(F_INTERRUPTS * VINCENT_PULSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
+#define VINCENT_1_PAUSE_LEN_MIN                 ((uint_fast8_t)(F_INTERRUPTS * VINCENT_1_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define VINCENT_1_PAUSE_LEN_MAX                 ((uint_fast8_t)(F_INTERRUPTS * VINCENT_1_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+#define VINCENT_0_PAUSE_LEN_MIN                 ((uint_fast8_t)(F_INTERRUPTS * VINCENT_0_PAUSE_TIME * MIN_TOLERANCE_20 + 0.5) - 1)\r
+#define VINCENT_0_PAUSE_LEN_MAX                 ((uint_fast8_t)(F_INTERRUPTS * VINCENT_0_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) + 1)\r
+\r
 #define PANASONIC_START_BIT_PULSE_LEN_MIN       ((uint_fast8_t)(F_INTERRUPTS * PANASONIC_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
 #define PANASONIC_START_BIT_PULSE_LEN_MAX       ((uint_fast8_t)(F_INTERRUPTS * PANASONIC_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
 #define PANASONIC_START_BIT_PAUSE_LEN_MIN       ((uint_fast8_t)(F_INTERRUPTS * PANASONIC_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
@@ -635,6 +646,7 @@ static const char proto_acp24[]         PROGMEM = "ACP24";
 static const char proto_technics[]      PROGMEM = "TECHNICS";\r
 static const char proto_panasonic[]     PROGMEM = "PANASONIC";\r
 static const char proto_mitsu_heavy[]   PROGMEM = "MITSU_HEAVY";\r
+static const char proto_vincent[]       PROGMEM = "VINCENT";\r
 \r
 static const char proto_radio1[]        PROGMEM = "RADIO1";\r
 \r
@@ -691,6 +703,7 @@ irmp_protocol_names[IRMP_N_PROTOCOLS + 1] PROGMEM =
     proto_technics,\r
     proto_panasonic,\r
     proto_mitsu_heavy,\r
+    proto_vincent,\r
     proto_radio1\r
 };\r
 \r
@@ -1336,6 +1349,31 @@ static const PROGMEM IRMP_PARAMETER mitsu_heavy_param =
 \r
 #endif\r
 \r
+#if IRMP_SUPPORT_VINCENT_PROTOCOL == 1\r
+\r
+static const PROGMEM IRMP_PARAMETER vincent_param =\r
+{\r
+    IRMP_VINCENT_PROTOCOL,                                              // protocol:        ir protocol\r
+    VINCENT_PULSE_LEN_MIN,                                              // pulse_1_len_min: minimum length of pulse with bit value 1\r
+    VINCENT_PULSE_LEN_MAX,                                              // pulse_1_len_max: maximum length of pulse with bit value 1\r
+    VINCENT_1_PAUSE_LEN_MIN,                                            // pause_1_len_min: minimum length of pause with bit value 1\r
+    VINCENT_1_PAUSE_LEN_MAX,                                            // pause_1_len_max: maximum length of pause with bit value 1\r
+    VINCENT_PULSE_LEN_MIN,                                              // pulse_0_len_min: minimum length of pulse with bit value 0\r
+    VINCENT_PULSE_LEN_MAX,                                              // pulse_0_len_max: maximum length of pulse with bit value 0\r
+    VINCENT_0_PAUSE_LEN_MIN,                                            // pause_0_len_min: minimum length of pause with bit value 0\r
+    VINCENT_0_PAUSE_LEN_MAX,                                            // pause_0_len_max: maximum length of pause with bit value 0\r
+    VINCENT_ADDRESS_OFFSET,                                             // address_offset:  address offset\r
+    VINCENT_ADDRESS_OFFSET + VINCENT_ADDRESS_LEN,                       // address_end:     end of address\r
+    VINCENT_COMMAND_OFFSET,                                             // command_offset:  command offset\r
+    VINCENT_COMMAND_OFFSET + VINCENT_COMMAND_LEN,                       // command_end:     end of command\r
+    VINCENT_COMPLETE_DATA_LEN,                                          // complete_len:    complete length of frame\r
+    VINCENT_STOP_BIT,                                                   // stop_bit:        flag: frame has stop bit\r
+    VINCENT_LSB,                                                        // lsb_first:       flag: LSB first\r
+    VINCENT_FLAGS                                                       // flags:           some flags\r
+};\r
+\r
+#endif\r
+\r
 #if IRMP_SUPPORT_RECS80_PROTOCOL == 1\r
 \r
 static const PROGMEM IRMP_PARAMETER recs80_param =\r
@@ -2200,6 +2238,18 @@ irmp_get_data (IRMP_DATA * irmp_data_p)
                 }\r
                 break;\r
 #endif\r
+\r
+\r
+#if IRMP_SUPPORT_NEC_PROTOCOL == 1\r
+            case IRMP_VINCENT_PROTOCOL:\r
+                if ((irmp_command >> 8) == (irmp_command & 0x00FF))\r
+                {\r
+                    irmp_command &= 0xff;\r
+                    rtc = TRUE;\r
+                }\r
+                break;\r
+#endif\r
+\r
 #if IRMP_SUPPORT_BOSE_PROTOCOL == 1\r
             case IRMP_BOSE_PROTOCOL:\r
                 if ((irmp_command >> 8) == (~irmp_command & 0x00FF))\r
@@ -3066,6 +3116,20 @@ irmp_ISR (void)
                     else\r
 #endif // IRMP_SUPPORT_MITSU_HEAVY_PROTOCOL == 1\r
 \r
+#if IRMP_SUPPORT_VINCENT_PROTOCOL == 1\r
+                    if (irmp_pulse_time >= VINCENT_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= VINCENT_START_BIT_PULSE_LEN_MAX &&\r
+                        irmp_pause_time >= VINCENT_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= VINCENT_START_BIT_PAUSE_LEN_MAX)\r
+                    {                                                           // it's VINCENT\r
+#ifdef ANALYZE\r
+                        ANALYZE_PRINTF ("protocol = VINCENT, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",\r
+                                        VINCENT_START_BIT_PULSE_LEN_MIN, VINCENT_START_BIT_PULSE_LEN_MAX,\r
+                                        VINCENT_START_BIT_PAUSE_LEN_MIN, VINCENT_START_BIT_PAUSE_LEN_MAX);\r
+#endif // ANALYZE\r
+                        irmp_param_p = (IRMP_PARAMETER *) &vincent_param;\r
+                    }\r
+                    else\r
+#endif // IRMP_SUPPORT_VINCENT_PROTOCOL == 1\r
+\r
 #if IRMP_SUPPORT_RADIO1_PROTOCOL == 1\r
                     if (irmp_pulse_time >= RADIO1_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= RADIO1_START_BIT_PULSE_LEN_MAX &&\r
                         irmp_pause_time >= RADIO1_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= RADIO1_START_BIT_PAUSE_LEN_MAX)\r
index 61c14a977bcb84e2657d7750612c73be70f1e722..9887ea0c6fd4fb9b08100d6faf388e8b8ac991a9 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright (c) 2009-2016 Frank Meyer - frank(at)fli4l.de\r
  * Extensions for PIC 12F1820 W.Strobl 2014-07-20\r
  *\r
- * $Id: irmpconfig.h,v 1.148 2016/09/09 07:53:29 fm Exp $\r
+ * $Id: irmpconfig.h,v 1.150 2016/09/19 14:28:24 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
@@ -98,6 +98,7 @@
 #define IRMP_SUPPORT_TECHNICS_PROTOCOL          0       // TECHNICS             >= 10000                 ~250 bytes\r
 #define IRMP_SUPPORT_PANASONIC_PROTOCOL         0       // PANASONIC Beamer     >= 10000                 ~250 bytes\r
 #define IRMP_SUPPORT_MITSU_HEAVY_PROTOCOL       0       // Mitsubishi Aircond   >= 10000                 ~250 bytes\r
+#define IRMP_SUPPORT_VINCENT_PROTOCOL           0       // VINCENT              >= 10000                 ~250 bytes\r
 #define IRMP_SUPPORT_RADIO1_PROTOCOL            0       // RADIO, e.g. TEVION   >= 10000                 ~250 bytes (experimental)\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
index a742d6d72f9d0b5021ab83ad0fd47f43be91cbed..0b38759a3a48a15cf55a3e78b07172734394c9d3 100644 (file)
@@ -5,7 +5,7 @@
  *\r
  * Copyright (c) 2013-2016 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmpprotocols.h,v 1.46 2016/09/09 07:53:29 fm Exp $\r
+ * $Id: irmpprotocols.h,v 1.47 2016/09/14 06:31:48 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
 #define IRMP_TECHNICS_PROTOCOL                  47              // Technics, similar to Matsushita, but 22 instead of 24 bits\r
 #define IRMP_PANASONIC_PROTOCOL                 48              // Panasonic (Beamer), start bits similar to KASEIKYO\r
 #define IRMP_MITSU_HEAVY_PROTOCOL               49              // Mitsubishi-Heavy Aircondition, similar timing as Panasonic beamer\r
+#define IRMP_VINCENT_PROTOCOL                   50              // Vincent\r
 \r
-#define IRMP_RADIO1_PROTOCOL                    50              // Radio protocol (experimental status), do not use it yet!\r
+#define IRMP_RADIO1_PROTOCOL                    51              // Radio protocol (experimental status), do not use it yet!\r
 \r
-#define IRMP_N_PROTOCOLS                        51              // number of supported protocols\r
+#define IRMP_N_PROTOCOLS                        52              // number of supported protocols\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * timing constants:\r
@@ -295,6 +296,26 @@ typedef uint8_t     PAUSE_LEN;
 #define MITSU_HEAVY_FRAMES                         1                            // PANASONIC sends 1 frame\r
 #define MITSU_HEAVY_FLAGS                          0                            // flags\r
 \r
+/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ * VINCENT\r
+ *---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ */\r
+#define VINCENT_START_BIT_PULSE_TIME            2500.0e-6                       // 2500 usec pulse\r
+#define VINCENT_START_BIT_PAUSE_TIME            4600.0e-6                       // 4600 usec pause\r
+#define VINCENT_PULSE_TIME                       550.0e-6                       //  550 usec pulse\r
+#define VINCENT_1_PAUSE_TIME                    1540.0e-6                       // 1540 usec pause\r
+#define VINCENT_0_PAUSE_TIME                     550.0e-6                       //  550 usec pause\r
+#define VINCENT_FRAME_REPEAT_PAUSE_TIME           40.0e-3                       // frame repeat after 40 ms ?\r
+#define VINCENT_ADDRESS_OFFSET                     0                            // skip 0 bits\r
+#define VINCENT_ADDRESS_LEN                       16                            // read 16 address bits\r
+#define VINCENT_COMMAND_OFFSET                    16                            // skip 16 bits\r
+#define VINCENT_COMMAND_LEN                       16                            // read 16 command bits\r
+#define VINCENT_COMPLETE_DATA_LEN                 32                            // complete length\r
+#define VINCENT_STOP_BIT                           1                            // has stop bit\r
+#define VINCENT_LSB                                0                            // LSB...MSB?\r
+#define VINCENT_FRAMES                             1                            // VINCENT sends 1 frame\r
+#define VINCENT_FLAGS                              0                            // flags\r
+\r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * RECS80:\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r