--- /dev/null
+#1\r
+0000000000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000001111111111111111111110000000011111110000000011111110000000011111110000000011111100000000011111100000000111111100000000111111100000000111111100000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000001111111111111111111110000000011111111111111111111110000000011111111111111111\r
+#2\r
+0000000000000000111111111111111111111100000000111111100000000111111000000000111111000000001111111111111111111111000000001111111000000001111110000000001111110000000001111110000000011111111111111111111110000000011111111111111111111100000000011111111111111111111100000000111111100000000111111111111111111111000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000011111111111111111\r
+#3\r
+0000000000000000111111111111111111111000000000111111111111111111111000000001111111000000001111111000000001111111111111111111110000000001111110000000011111110000000011111110000000011111110000000011111100000000011111111111111111111100000000111111111111111111111100000000111111000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000011111111111111111111110000000011111111111111111\r
+#4\r
+0000000000000000111111111111111111111000000000111111000000001111111111111111111111000000001111111000000001111111111111111111110000000001111110000000011111110000000011111110000000011111110000000011111111111111111111100000000111111100000000111111111111111111111100000000111111000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000011111111111111111111110000000011111111111111111\r
+#5\r
+0000000000000000111111111111111111111100000000111111111111111111111000000000111111111111111111111000000001111111000000001111111111111111111111000000001111110000000001111110000000011111110000000011111110000000011111110000000011111100000000011111111111111111111100000000111111100000000111111111111111111111000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000001111111111111111\r
+#6\r
+0000000000000000111111111111111111111100000000111111100000000111111000000000111111111111111111111000000001111111111111111111111000000001111111000000001111110000000001111110000000011111110000000011111111111111111111110000000011111111111111111111100000000111111100000000111111100000000111111111111111111111000000000111111111111111111111000000001111111111111111111111000000001111111111111111111110000000011111111111111111\r
+#Play/Pause\r
+0000000000000000111111111111111111111000000000111111111111111111111000000001111111111111111111111000000001111110000000001111111111111111111110000000011111111111111111111110000000011111100000000011111100000000111111100000000111111100000000111111100000000111111111111111111111000000001111111000000001111111000000001111111111111111111110000000001111111111111111111110000000011111111111111111111110000000011111111111111111\r
+#Stop/Eject\r
+000000000000000111111111111111111111100000000111111000000000111111111111111111111000000001111111000000001111111111111111111110000000001111111111111111111110000000011111110000000011111110000000011111110000000011111111111111111111100000000111111100000000111111111111111111111100000000111111000000000111111000000001111111111111111111111000000001111111111111111111110000000001111111111111111111110000000011111111111111111\r
+#Power On/Off\r
+0000000000000000111111111111111111111000000000111111000000000111111000000001111111111111111111111000000001111111111111111111110000000001111110000000011111110000000011111111111111111111110000000011111100000000011111111111111111111100000000111111111111111111111100000000111111000000000111111000000001111111111111111111111000000001111111111111111111110000000001111110000000001111111111111111111110000000011111111111111111\r
echo "testing $j ..."
if tmpsrc/irmp -v < $j | grep -q error
then
- tmpsrc/irmp -v < $j | grep error
- echo "test failed"
- exit 1
+ tmpsrc/irmp -v < $j | grep error
+ echo "test failed"
+ exit 1
fi
done
for j in \
bo_beolink1000-15kHz.txt \
+ bose_wave_system_15khz.txt \
denon-15kHz.txt \
- denon-rc-176-15kHz.txt \
+ denon-rc-176-15kHz.txt \
irc-15kHz.txt \
kathrein-15kHz.txt \
recs80-15kHz.txt \
echo "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
fi
done
echo "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
fi
done
--- /dev/null
+#Grundig TP 400 VT\r
+#Traeger: 29.5kHz\r
+#F_INTERRUPTS 15000\r
+#Taste 1\r
+0000000011111111111111111111111111111111111111111000000001111111100000000111111111111111100000000011111111000000001111111100000000000000000111111111111111100000000111111111111111\r
+#Taste 2\r
+0000000011111111111111111111111111111111111111110000000001111111111111111000000000000000011111111111111111000000001111111100000000000000000111111111111111100000000111111111111111\r
+#Taste 3\r
+0000000001111111111111111111111111111111111111111000000000111111110000000011111111000000001111111111111111100000000111111110000000000000000111111111111111110000000011111111111111\r
+#Taste 4\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000111111110000000000000000011111111111111110000000000000000011111111111111110000000011111111111111\r
+#Taste 5\r
+0000000001111111111111111111111111111111111111111000000001111111110000000011111111111111110000000000000000011111111111111110000000000000000111111111111111100000000011111111111111\r
+#Taste 6\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000000000001111111100000000011111111111111110000000000000000111111111111111110000000011111111111111\r
+#Taste 7\r
+0000000001111111111111111111111111111111111111111000000000111111110000000011111111000000001111111100000000011111111111111110000000000000000111111111111111110000000011111111111111\r
+#Taste 8\r
+0000000011111111111111111111111111111111111111111000000001111111111111111000000001111111100000000011111111000000000000000011111111000000000111111111111111100000000111111111111111\r
+#Taste 9\r
+0000000001111111111111111111111111111111111111111000000000111111100000000011111111111111110000000011111111000000000000000001111111100000000111111111111111100000000011111111111111\r
+#Taste 10\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000000000000111111111111111000000000000000001111111100000000011111111111111100000000011111111111111\r
+#Taste 0/AV\r
+0000000011111111111111111111111111111111111111111000000001111111111111111000000000111111110000000011111111000000001111111100000000000000000111111111111111100000000111111111111111\r
+#Taste 20\r
+0000000001111111111111111111111111111111111111111000000000111111110000000001111111000000000111111111111111100000000000000000111111100000000011111111111111110000000011111111111111\r
+#Taste MIX\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000000000000111111100000000011111111000000000111111100000000011111111111111110000000011111111111111\r
+#Taste AKT\r
+0000000001111111111111111111111111111111111111111000000000111111110000000011111111111111110000000000000000011111111000000001111111100000000011111111111111110000000011111111111111\r
+#Taste NORM\r
+0000000001111111111111111111111111111111111111111000000000111111110000000001111111000000000111111100000000011111111000000000111111100000000011111111111111110000000011111111111111 \r
+#Taste KLEIN\r
+00000000111111111111111111111111111111111111111110000000011111111111111110000000000000000011111111111111110000000001111111000000000111111110000000000000000111111111111111\r
+#Taste GROSS\r
+00000000111111111111111111111111111111111111111110000000001111111000000000111111110000000011111111111111110000000001111111100000000111111110000000000000000111111111111111\r
+#Taste ANTW\r
+0000000011111111111111111111111111111111111111111000000001111111100000000111111110000000001111111111111111000000001111111100000000111111111000000001111111100000000111111111111111\r
+#Taste HALT\r
+0000000011111111111111111111111111111111111111111000000001111111111111111000000000111111100000000000000000111111110000000011111111000000000111111111111111100000000111111111111111\r
+#Taste INHALT\r
+00000000011111111111111111111111111111111111111110000000001111111100000000111111110000000011111111000000001111111111111111100000000111111110000000000000000111111111111111\r
+#Taste VT/TV\r
+0000000011111111111111111111111111111111111111111000000001111111100000000011111111111111110000000000000000111111111111111110000000011111111000000001111111100000000011111111111111\r
+#TASTE CHROM -\r
+0000000011111111111111111111111111111111111111111000000001111111100000000111111111111111100000000000000000111111110000000011111111111111110000000001111111100000000111111111111111\r
+#Taste CHROM +\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000111111110000000000000000011111111000000001111111111111111000000001111111100000000011111111111111\r
+#Taste HELL -\r
+0000000001111111111111111111111111111111111111111000000000111111110000000011111111000000000111111111111111100000000000000001111111111111111000000000111111110000000011111111111111\r
+#Taste HELL +\r
+0000000001111111111111111111111111111111111111111000000000111111111111111000000000000000001111111111111111000000000000000001111111111111111000000001111111100000000011111111111111\r
+#Taste VOL -\r
+0000000011111111111111111111111111111111111111111000000001111111100000000011111111111111110000000011111111000000000000000001111111111111111000000001111111100000000111111111111111\r
+#Taste VOL +\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000011111110000000001111111000000000000000001111111111111111000000000111111100000000011111111111111\r
+#Taste SW\r
+0000000011111111111111111111111111111111111111111000000001111111100000000111111110000000001111111111111111000000001111111100000000111111110000000001111111100000000111111111111111\r
+#Taste Center\r
+0000000001111111111111111111111111111111111111111000000000111111111111111100000000111111110000000001111111100000000111111110000000011111111000000001111111110000000011111111111111\r
+#Taste Mute\r
+0000000011111111111111111111111111111111111111111000000001111111100000000111111111111111100000000011111111000000001111111100000000111111110000000001111111100000000111111111111111\r
+#Taste UHR\r
+0000000011111111111111111111111111111111111111111000000001111111111111111000000001111111100000000000000000111111111111111100000000111111110000000001111111100000000111111111111111\r
+#Taste Power\r
+00000000011111111111111111111111111111111111111110000000001111111111111111000000000000000011111111000000000111111110000000011111111000000001111111100000000011111111111111\r
IRMP - Infrared Multi Protocol Decoder\r
--------------------------------------\r
\r
-Version IRMP: 2.2.3 18.06.2012\r
+Version IRMP: 2.2.4 11.07.2012\r
Version IRSND: 2.2.3 18.06.2012\r
\r
Dokumentation:\r
*\r
* Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmp.c,v 1.125 2012/06/18 09:00:45 fm Exp $\r
+ * $Id: irmp.c,v 1.127 2012/07/11 13:13:50 fm Exp $\r
*\r
* ATMEGA88 @ 8 MHz\r
*\r
#define RECS80_0_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
#define RECS80_0_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * RECS80_0_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
\r
+\r
+#if IRMP_SUPPORT_BOSE_PROTOCOL == 1 // BOSE conflicts with RC5, so keep tolerance for RC5 minimal here:\r
+#define RC5_START_BIT_LEN_MIN ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_05 + 0.5) - 1)\r
+#define RC5_START_BIT_LEN_MAX ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_05 + 0.5) + 1)\r
+#else\r
#define RC5_START_BIT_LEN_MIN ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
#define RC5_START_BIT_LEN_MAX ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
+#endif\r
\r
#define RC5_BIT_LEN_MIN ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MIN_TOLERANCE_10 + 0.5) - 1)\r
#define RC5_BIT_LEN_MAX ((uint8_t)(F_INTERRUPTS * RC5_BIT_TIME * MAX_TOLERANCE_10 + 0.5) + 1)\r
#define LEGO_0_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * LEGO_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1)\r
#define LEGO_0_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * LEGO_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1)\r
\r
+#define BOSE_START_BIT_PULSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BOSE_START_BIT_PULSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)\r
+#define BOSE_START_BIT_PULSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_START_BIT_PULSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)\r
+#define BOSE_START_BIT_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BOSE_START_BIT_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)\r
+#define BOSE_START_BIT_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_START_BIT_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)\r
+#define BOSE_PULSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BOSE_PULSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)\r
+#define BOSE_PULSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_PULSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)\r
+#define BOSE_1_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BOSE_1_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)\r
+#define BOSE_1_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_1_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)\r
+#define BOSE_0_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * BOSE_0_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)\r
+#define BOSE_0_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_0_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)\r
+#define BOSE_FRAME_REPEAT_PAUSE_LEN_MAX (uint16_t)(F_INTERRUPTS * 100.0e-3 * MAX_TOLERANCE_20 + 0.5)\r
+\r
#define AUTO_FRAME_REPETITION_LEN (uint16_t)(F_INTERRUPTS * AUTO_FRAME_REPETITION_TIME + 0.5) // use uint16_t!\r
\r
#ifdef ANALYZE\r
"NEC16",\r
"NEC42",\r
"LEGO",\r
- "THOMSON"\r
+ "THOMSON",\r
+ "BOSE"\r
};\r
#endif\r
\r
\r
#endif\r
\r
+#if IRMP_SUPPORT_BOSE_PROTOCOL == 1\r
+\r
+static const PROGMEM IRMP_PARAMETER bose_param =\r
+{\r
+ IRMP_BOSE_PROTOCOL, // protocol: ir protocol\r
+ BOSE_PULSE_LEN_MIN, // pulse_1_len_min: minimum length of pulse with bit value 1\r
+ BOSE_PULSE_LEN_MAX, // pulse_1_len_max: maximum length of pulse with bit value 1\r
+ BOSE_1_PAUSE_LEN_MIN, // pause_1_len_min: minimum length of pause with bit value 1\r
+ BOSE_1_PAUSE_LEN_MAX, // pause_1_len_max: maximum length of pause with bit value 1\r
+ BOSE_PULSE_LEN_MIN, // pulse_0_len_min: minimum length of pulse with bit value 0\r
+ BOSE_PULSE_LEN_MAX, // pulse_0_len_max: maximum length of pulse with bit value 0\r
+ BOSE_0_PAUSE_LEN_MIN, // pause_0_len_min: minimum length of pause with bit value 0\r
+ BOSE_0_PAUSE_LEN_MAX, // pause_0_len_max: maximum length of pause with bit value 0\r
+ BOSE_ADDRESS_OFFSET, // address_offset: address offset\r
+ BOSE_ADDRESS_OFFSET + BOSE_ADDRESS_LEN, // address_end: end of address\r
+ BOSE_COMMAND_OFFSET, // command_offset: command offset\r
+ BOSE_COMMAND_OFFSET + BOSE_COMMAND_LEN, // command_end: end of command\r
+ BOSE_COMPLETE_DATA_LEN, // complete_len: complete length of frame\r
+ BOSE_STOP_BIT, // stop_bit: flag: frame has stop bit\r
+ BOSE_LSB, // lsb_first: flag: LSB first\r
+ BOSE_FLAGS // flags: some flags\r
+};\r
+\r
+#endif\r
+\r
static uint8_t irmp_bit; // current bit position\r
static IRMP_PARAMETER irmp_param;\r
\r
}\r
break;\r
#endif\r
+#if IRMP_SUPPORT_BOSE_PROTOCOL == 1\r
+ case IRMP_BOSE_PROTOCOL:\r
+ if ((irmp_command >> 8) == (~irmp_command & 0x00FF))\r
+ {\r
+ irmp_command &= 0xff;\r
+ rtc = TRUE;\r
+ }\r
+ break;\r
+#endif\r
#if IRMP_SUPPORT_SIEMENS_OR_RUWIDO_PROTOCOL == 1\r
case IRMP_SIEMENS_PROTOCOL:\r
case IRMP_RUWIDO_PROTOCOL:\r
else\r
#endif // IRMP_SUPPORT_THOMSON_PROTOCOL == 1\r
\r
+#if IRMP_SUPPORT_BOSE_PROTOCOL == 1\r
+ if (irmp_pulse_time >= BOSE_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= BOSE_START_BIT_PULSE_LEN_MAX &&\r
+ irmp_pause_time >= BOSE_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= BOSE_START_BIT_PAUSE_LEN_MAX)\r
+ {\r
+ ANALYZE_PRINTF ("protocol = BOSE, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",\r
+ BOSE_START_BIT_PULSE_LEN_MIN, BOSE_START_BIT_PULSE_LEN_MAX,\r
+ BOSE_START_BIT_PAUSE_LEN_MIN, BOSE_START_BIT_PAUSE_LEN_MAX);\r
+ irmp_param_p = (IRMP_PARAMETER *) &bose_param;\r
+ }\r
+ else\r
+#endif // IRMP_SUPPORT_BOSE_PROTOCOL == 1\r
+\r
#if IRMP_SUPPORT_RC6_PROTOCOL == 1\r
if (irmp_pulse_time >= RC6_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= RC6_START_BIT_PULSE_LEN_MAX &&\r
irmp_pause_time >= RC6_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= RC6_START_BIT_PAUSE_LEN_MAX)\r
*\r
* Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmpconfig.h,v 1.90 2012/05/23 12:26:26 fm Exp $\r
+ * $Id: irmpconfig.h,v 1.92 2012/07/11 13:14:08 fm Exp $\r
*\r
* ATMEGA88 @ 8 MHz\r
*\r
#define IRMP_SUPPORT_NOKIA_PROTOCOL 0 // Nokia >= 10000 ~300 bytes\r
\r
// exotic protocols, enable here! Enable Remarks F_INTERRUPTS Program Space\r
+#define IRMP_SUPPORT_BOSE_PROTOCOL 0 // BOSE >= 10000 ~150 bytes\r
#define IRMP_SUPPORT_KATHREIN_PROTOCOL 0 // Kathrein >= 10000 ~200 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
*\r
* Copyright (c) 2012 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmpprotocols.h,v 1.4 2012/05/23 12:26:26 fm Exp $\r
+ * $Id: irmpprotocols.h,v 1.5 2012/07/11 12:44:30 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_NEC42_PROTOCOL 28 // NEC with 42 bits\r
#define IRMP_LEGO_PROTOCOL 29 // LEGO Power Functions RC\r
#define IRMP_THOMSON_PROTOCOL 30 // Thomson\r
+#define IRMP_BOSE_PROTOCOL 31 // BOSE\r
\r
-#define IRMP_N_PROTOCOLS 30 // number of supported protocols\r
+#define IRMP_N_PROTOCOLS 31 // number of supported protocols\r
\r
/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
* timing constants:\r
#define THOMSON_LSB 0 // MSB...LSB\r
#define THOMSON_FLAGS 0 // flags\r
\r
+#define BOSE_START_BIT_PULSE_TIME 1060.0e-6 // 1060 usec pulse\r
+#define BOSE_START_BIT_PAUSE_TIME 1430.0e-6 // 1430 usec pause\r
+#define BOSE_PULSE_TIME 550.0e-6 // 550 usec pulse\r
+#define BOSE_1_PAUSE_TIME 1425.0e-6 // 1425 usec pause\r
+#define BOSE_0_PAUSE_TIME 437.0e-6 // 437 usec pause\r
+#define BOSE_FRAME_REPEAT_PAUSE_TIME 40.0e-3 // frame repeat after 40ms???\r
+#define BOSE_ADDRESS_OFFSET 0 // skip 0 bits\r
+#define BOSE_ADDRESS_LEN 0 // read 16 address bits\r
+#define BOSE_COMMAND_OFFSET 0 // skip 16 bits (8 address + 8 /address)\r
+#define BOSE_COMMAND_LEN 16 // read 16 bits (8 command + 8 /command)\r
+#define BOSE_COMPLETE_DATA_LEN 16 // complete length\r
+#define BOSE_STOP_BIT 1 // has stop bit\r
+#define BOSE_LSB 1 // LSB...MSB\r
+#define BOSE_FLAGS 0 // flags\r
+\r
#define AUTO_FRAME_REPETITION_TIME 80.0e-3 // SIRCS/SAMSUNG32/NUBERT: automatic repetition after 25-50ms\r
\r
#endif // _IRMP_PROTOCOLS_H_\r