+ case IRMP_SIEMENS_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = SIEMENS_BIT_LEN;\r
+ startbit_pause_len = SIEMENS_BIT_LEN;\r
+ pulse_len = SIEMENS_BIT_LEN;\r
+ pause_len = SIEMENS_BIT_LEN;\r
+ has_stop_bit = SIEMENS_OR_RUWIDO_STOP_BIT;\r
+ complete_data_len = SIEMENS_COMPLETE_DATA_LEN;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = SIEMENS_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_36_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_RUWIDO_PROTOCOL == 1\r
+ case IRMP_RUWIDO_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = RUWIDO_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = RUWIDO_START_BIT_PAUSE_LEN;\r
+ pulse_len = RUWIDO_BIT_PULSE_LEN;\r
+ pause_len = RUWIDO_BIT_PAUSE_LEN;\r
+ has_stop_bit = SIEMENS_OR_RUWIDO_STOP_BIT;\r
+ complete_data_len = RUWIDO_COMPLETE_DATA_LEN;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = RUWIDO_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_36_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_FDC_PROTOCOL == 1\r
+ case IRMP_FDC_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = FDC_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = FDC_START_BIT_PAUSE_LEN - 1;\r
+ complete_data_len = FDC_COMPLETE_DATA_LEN;\r
+ pulse_1_len = FDC_PULSE_LEN;\r
+ pause_1_len = FDC_1_PAUSE_LEN - 1;\r
+ pulse_0_len = FDC_PULSE_LEN;\r
+ pause_0_len = FDC_0_PAUSE_LEN - 1;\r
+ has_stop_bit = FDC_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = FDC_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_RCCAR_PROTOCOL == 1\r
+ case IRMP_RCCAR_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = RCCAR_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = RCCAR_START_BIT_PAUSE_LEN - 1;\r
+ complete_data_len = RCCAR_COMPLETE_DATA_LEN;\r
+ pulse_1_len = RCCAR_PULSE_LEN;\r
+ pause_1_len = RCCAR_1_PAUSE_LEN - 1;\r
+ pulse_0_len = RCCAR_PULSE_LEN;\r
+ pause_0_len = RCCAR_0_PAUSE_LEN - 1;\r
+ has_stop_bit = RCCAR_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = RCCAR_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_JVC_PROTOCOL == 1\r
+ case IRMP_JVC_PROTOCOL:\r
+ {\r
+ if (repeat_counter != 0) // skip start bit if repetition frame\r
+ {\r
+ current_bit = 0;\r
+ }\r
+\r
+ startbit_pulse_len = JVC_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = JVC_START_BIT_PAUSE_LEN - 1;\r
+ complete_data_len = JVC_COMPLETE_DATA_LEN;\r
+ pulse_1_len = JVC_PULSE_LEN;\r
+ pause_1_len = JVC_1_PAUSE_LEN - 1;\r
+ pulse_0_len = JVC_PULSE_LEN;\r
+ pause_0_len = JVC_0_PAUSE_LEN - 1;\r
+ has_stop_bit = JVC_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = JVC_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_NIKON_PROTOCOL == 1\r
+ case IRMP_NIKON_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = NIKON_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = NIKON_START_BIT_PAUSE_LEN;\r
+ complete_data_len = NIKON_COMPLETE_DATA_LEN;\r
+ pulse_1_len = NIKON_PULSE_LEN;\r
+ pause_1_len = NIKON_1_PAUSE_LEN - 1;\r
+ pulse_0_len = NIKON_PULSE_LEN;\r
+ pause_0_len = NIKON_0_PAUSE_LEN - 1;\r
+ has_stop_bit = NIKON_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = NIKON_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_LEGO_PROTOCOL == 1\r
+ case IRMP_LEGO_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = LEGO_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = LEGO_START_BIT_PAUSE_LEN - 1;\r
+ complete_data_len = LEGO_COMPLETE_DATA_LEN;\r
+ pulse_1_len = LEGO_PULSE_LEN;\r
+ pause_1_len = LEGO_1_PAUSE_LEN - 1;\r
+ pulse_0_len = LEGO_PULSE_LEN;\r
+ pause_0_len = LEGO_0_PAUSE_LEN - 1;\r
+ has_stop_bit = LEGO_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = LEGO_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_A1TVBOX_PROTOCOL == 1\r
+ case IRMP_A1TVBOX_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = A1TVBOX_BIT_PULSE_LEN; // don't use A1TVBOX_START_BIT_PULSE_LEN\r
+ startbit_pause_len = A1TVBOX_BIT_PAUSE_LEN; // don't use A1TVBOX_START_BIT_PAUSE_LEN\r
+ pulse_len = A1TVBOX_BIT_PULSE_LEN;\r
+ pause_len = A1TVBOX_BIT_PAUSE_LEN;\r
+ has_stop_bit = A1TVBOX_STOP_BIT;\r
+ complete_data_len = A1TVBOX_COMPLETE_DATA_LEN + 1; // we send stop bit as data\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = A1TVBOX_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_ROOMBA_PROTOCOL == 1\r
+ case IRMP_ROOMBA_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = ROOMBA_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = ROOMBA_START_BIT_PAUSE_LEN;\r
+ pulse_1_len = ROOMBA_1_PULSE_LEN;\r
+ pause_1_len = ROOMBA_1_PAUSE_LEN - 1;\r
+ pulse_0_len = ROOMBA_0_PULSE_LEN;\r
+ pause_0_len = ROOMBA_0_PAUSE_LEN - 1;\r
+ has_stop_bit = ROOMBA_STOP_BIT;\r
+ complete_data_len = ROOMBA_COMPLETE_DATA_LEN;\r
+ n_auto_repetitions = ROOMBA_FRAMES; // 8 frames\r
+ auto_repetition_pause_len = ROOMBA_FRAME_REPEAT_PAUSE_LEN;\r
+ repeat_frame_pause_len = ROOMBA_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_PENTAX_PROTOCOL == 1\r
+ case IRMP_PENTAX_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = PENTAX_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = PENTAX_START_BIT_PAUSE_LEN;\r
+ complete_data_len = PENTAX_COMPLETE_DATA_LEN;\r
+ pulse_1_len = PENTAX_PULSE_LEN;\r
+ pause_1_len = PENTAX_1_PAUSE_LEN - 1;\r
+ pulse_0_len = PENTAX_PULSE_LEN;\r
+ pause_0_len = PENTAX_0_PAUSE_LEN - 1;\r
+ has_stop_bit = PENTAX_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = PENTAX_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+#if IRSND_SUPPORT_ACP24_PROTOCOL == 1\r
+ case IRMP_ACP24_PROTOCOL:\r
+ {\r
+ startbit_pulse_len = ACP24_START_BIT_PULSE_LEN;\r
+ startbit_pause_len = ACP24_START_BIT_PAUSE_LEN - 1;\r
+ complete_data_len = ACP24_COMPLETE_DATA_LEN;\r
+ pulse_1_len = ACP24_PULSE_LEN;\r
+ pause_1_len = ACP24_1_PAUSE_LEN - 1;\r
+ pulse_0_len = ACP24_PULSE_LEN;\r
+ pause_0_len = ACP24_0_PAUSE_LEN - 1;\r
+ has_stop_bit = ACP24_STOP_BIT;\r
+ n_auto_repetitions = 1; // 1 frame\r
+ auto_repetition_pause_len = 0;\r
+ repeat_frame_pause_len = ACP24_FRAME_REPEAT_PAUSE_LEN;\r
+ irsnd_set_freq (IRSND_FREQ_38_KHZ);\r
+ break;\r
+ }\r
+#endif\r
+ default:\r
+ {\r
+ irsnd_busy = FALSE;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ if (irsnd_busy)\r
+ {\r
+ new_frame = FALSE;\r
+\r
+ switch (irsnd_protocol)\r
+ {\r