+\r
+#if IRMP_SUPPORT_TECHNICS_PROTOCOL == 1\r
+ else if (irmp_param.protocol == IRMP_MATSUSHITA_PROTOCOL && irmp_bit == 22) // it was a TECHNICS stop bit\r
+ {\r
+#ifdef ANALYZE\r
+ ANALYZE_PRINTF ("Switching to TECHNICS protocol, irmp_bit = %d\n", irmp_bit);\r
+#endif // ANALYZE\r
+ // Situation:\r
+ // The first 12 bits have been stored in irmp_tmp_command (LSB first)\r
+ // The following 10 bits have been stored in irmp_tmp_address (LSB first)\r
+ // The code of TECHNICS is:\r
+ // cccccccccccCCCCCCCCCCC (11 times c and 11 times C)\r
+ // ccccccccccccaaaaaaaaaa\r
+ // where C is inverted value of c\r
+\r
+ irmp_tmp_address <<= 1;\r
+ if (irmp_tmp_command & (1<<11))\r
+ {\r
+ irmp_tmp_address |= 1;\r
+ irmp_tmp_command &= ~(1<<11);\r
+ }\r
+\r
+ if (irmp_tmp_command == ((~irmp_tmp_address) & 0x07FF))\r
+ {\r
+ irmp_tmp_address = 0;\r
+\r
+ irmp_param.protocol = IRMP_TECHNICS_PROTOCOL; // switch protocol\r
+ irmp_param.complete_len = irmp_bit; // patch length\r
+ }\r
+ else\r
+ {\r
+#ifdef ANALYZE\r
+ ANALYZE_PRINTF ("error 8: TECHNICS frame error\n");\r
+ ANALYZE_ONLY_NORMAL_PUTCHAR ('\n');\r
+#endif // ANALYZE\r
+ irmp_start_bit_detected = 0; // wait for another start bit...\r
+ irmp_pulse_time = 0;\r
+ irmp_pause_time = 0;\r
+ }\r
+ }\r
+#endif // IRMP_SUPPORT_TECHNICS_PROTOCOL == 1\r