+#if IRSND_SUPPORT_SIEMENS_PROTOCOL == 1 && F_INTERRUPTS < 15000\r
+# warning F_INTERRUPTS too low, SIEMENS protocol disabled (should be at least 15000)\r
+# undef IRSND_SUPPORT_SIEMENS_PROTOCOL\r
+# define IRSND_SUPPORT_SIEMENS_PROTOCOL 0\r
+#endif\r
+\r
+#if IRSND_SUPPORT_A1TVBOX_PROTOCOL == 1 && F_INTERRUPTS < 15000\r
+# warning F_INTERRUPTS too low, A1TVBOX protocol disabled (should be at least 15000)\r
+# undef IRSND_SUPPORT_A1TVBOX_PROTOCOL\r
+# define IRSND_SUPPORT_A1TVBOX_PROTOCOL 0\r
+#endif\r
+\r
+#if IRSND_SUPPORT_RECS80_PROTOCOL == 1 && F_INTERRUPTS < 15000\r
+# warning F_INTERRUPTS too low, RECS80 protocol disabled (should be at least 15000)\r
+# undef IRSND_SUPPORT_RECS80_PROTOCOL\r
+# define IRSND_SUPPORT_RECS80_PROTOCOL 0\r
+#endif\r
+\r
+#if IRSND_SUPPORT_RECS80EXT_PROTOCOL == 1 && F_INTERRUPTS < 15000\r
+# warning F_INTERRUPTS too low, RECS80EXT protocol disabled (should be at least 15000)\r
+# undef IRSND_SUPPORT_RECS80EXT_PROTOCOL\r
+# define IRSND_SUPPORT_RECS80EXT_PROTOCOL 0\r
+#endif\r
+\r
+#if IRSND_SUPPORT_LEGO_PROTOCOL == 1 && F_INTERRUPTS < 20000\r
+# warning F_INTERRUPTS too low, LEGO protocol disabled (should be at least 20000)\r
+# undef IRSND_SUPPORT_LEGO_PROTOCOL\r
+# define IRSND_SUPPORT_LEGO_PROTOCOL 0\r
+#endif\r
+\r
+#include "irmpprotocols.h"\r
+\r
+#define IRSND_NO_REPETITIONS 0 // no repetitions\r
+#define IRSND_MAX_REPETITIONS 14 // max # of repetitions\r
+#define IRSND_ENDLESS_REPETITION 15 // endless repetions\r
+#define IRSND_REPETITION_MASK 0x0F // lower nibble of flags\r
+\r
+extern void irsnd_init (void);\r
+extern uint8_t irsnd_is_busy (void);\r
+extern uint8_t irsnd_send_data (IRMP_DATA *, uint8_t);\r
+extern void irsnd_stop (void);\r
+extern uint8_t irsnd_ISR (void);\r