summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorukw2012-12-11 21:30:52 +0000
committerukw2012-12-11 21:30:52 +0000
commit2fb27bfeb30bd6aaae8f5b7634a545bad8fd66e8 (patch)
treeefbf88f7e0d53aa96c0569d3d3059c2cebcd2157
parent775fabfac758cbdc33aa81431380ed0b6377143b (diff)
downloadirmp-2fb27bfeb30bd6aaae8f5b7634a545bad8fd66e8.zip
Version 2.3.5: added A1TVBOX protocol.
git-svn-id: svn://mikrocontroller.net/irmp@110 aeb2e35e-bfc4-4214-b83c-9e8de998ed28
-rw-r--r--README.txt2
-rw-r--r--irmp.c57
-rw-r--r--irmpconfig.h4
-rw-r--r--irmpprotocols.h20
-rw-r--r--makefile.lnx8
5 files changed, 82 insertions, 9 deletions
diff --git a/README.txt b/README.txt
index f330478..d4584ea 100644
--- a/README.txt
+++ b/README.txt
@@ -1,7 +1,7 @@
IRMP - Infrared Multi Protocol Decoder
--------------------------------------
-Version IRMP: 2.3.4 07.12.2012
+Version IRMP: 2.3.5 11.12.2012
Version IRSND: 2.3.4 07.12.2012
Dokumentation:
diff --git a/irmp.c b/irmp.c
index 5597bd5..0fa29e3 100644
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de
*
- * $Id: irmp.c,v 1.135 2012/12/07 13:04:14 fm Exp $
+ * $Id: irmp.c,v 1.136 2012/12/11 20:27:59 fm Exp $
*
* ATMEGA88 @ 8 MHz
*
@@ -42,7 +42,8 @@
IRMP_SUPPORT_RC6_PROTOCOL == 1 || \
IRMP_SUPPORT_GRUNDIG_NOKIA_IR60_PROTOCOL == 1 || \
IRMP_SUPPORT_SIEMENS_OR_RUWIDO_PROTOCOL == 1 || \
- IRMP_SUPPORT_IR60_PROTOCOL
+ IRMP_SUPPORT_IR60_PROTOCOL == 1 || \
+ IRMP_SUPPORT_A1TVBOX_PROTOCOL == 1
# define IRMP_SUPPORT_MANCHESTER 1
#else
# define IRMP_SUPPORT_MANCHESTER 0
@@ -372,6 +373,15 @@
#define BOSE_0_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * BOSE_0_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)
#define BOSE_FRAME_REPEAT_PAUSE_LEN_MAX (uint16_t)(F_INTERRUPTS * 100.0e-3 * MAX_TOLERANCE_20 + 0.5)
+#define A1TVBOX_START_BIT_PULSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * A1TVBOX_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)
+#define A1TVBOX_START_BIT_PULSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * A1TVBOX_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)
+#define A1TVBOX_START_BIT_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * A1TVBOX_START_BIT_PAUSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1)
+#define A1TVBOX_START_BIT_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * A1TVBOX_START_BIT_PAUSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1)
+#define A1TVBOX_BIT_PULSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * A1TVBOX_BIT_PULSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)
+#define A1TVBOX_BIT_PULSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * A1TVBOX_BIT_PULSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)
+#define A1TVBOX_BIT_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * A1TVBOX_BIT_PAUSE_TIME * MIN_TOLERANCE_30 + 0.5) - 1)
+#define A1TVBOX_BIT_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * A1TVBOX_BIT_PAUSE_TIME * MAX_TOLERANCE_30 + 0.5) + 1)
+
#define AUTO_FRAME_REPETITION_LEN (uint16_t)(F_INTERRUPTS * AUTO_FRAME_REPETITION_TIME + 0.5) // use uint16_t!
#ifdef ANALYZE
@@ -434,7 +444,8 @@ irmp_protocol_names[IRMP_N_PROTOCOLS + 1] =
"NEC42",
"LEGO",
"THOMSON",
- "BOSE"
+ "BOSE",
+ "A1TVBOX",
};
#endif
@@ -1342,6 +1353,32 @@ static const PROGMEM IRMP_PARAMETER bose_param =
#endif
+#if IRMP_SUPPORT_A1TVBOX_PROTOCOL == 1
+
+static const PROGMEM IRMP_PARAMETER a1tvbox_param =
+{
+ IRMP_A1TVBOX_PROTOCOL, // protocol: ir protocol
+
+ A1TVBOX_BIT_PULSE_LEN_MIN, // pulse_1_len_min: here: minimum length of short pulse
+ A1TVBOX_BIT_PULSE_LEN_MAX, // pulse_1_len_max: here: maximum length of short pulse
+ A1TVBOX_BIT_PAUSE_LEN_MIN, // pause_1_len_min: here: minimum length of short pause
+ A1TVBOX_BIT_PAUSE_LEN_MAX, // pause_1_len_max: here: maximum length of short pause
+ 0, // pulse_0_len_min: here: not used
+ 0, // pulse_0_len_max: here: not used
+ 0, // pause_0_len_min: here: not used
+ 0, // pause_0_len_max: here: not used
+ A1TVBOX_ADDRESS_OFFSET, // address_offset: address offset
+ A1TVBOX_ADDRESS_OFFSET + A1TVBOX_ADDRESS_LEN, // address_end: end of address
+ A1TVBOX_COMMAND_OFFSET, // command_offset: command offset
+ A1TVBOX_COMMAND_OFFSET + A1TVBOX_COMMAND_LEN, // command_end: end of command
+ A1TVBOX_COMPLETE_DATA_LEN, // complete_len: complete length of frame
+ A1TVBOX_STOP_BIT, // stop_bit: flag: frame has stop bit
+ A1TVBOX_LSB, // lsb_first: flag: LSB first
+ A1TVBOX_FLAGS // flags: some flags
+};
+
+#endif
+
static uint8_t irmp_bit; // current bit position
static IRMP_PARAMETER irmp_param;
@@ -2295,6 +2332,20 @@ irmp_ISR (void)
else
#endif // IRMP_SUPPORT_LEGO_PROTOCOL == 1
+#if IRMP_SUPPORT_A1TVBOX_PROTOCOL == 1
+ if (irmp_pulse_time >= A1TVBOX_START_BIT_PULSE_LEN_MIN && irmp_pulse_time <= A1TVBOX_START_BIT_PULSE_LEN_MAX &&
+ irmp_pause_time >= A1TVBOX_START_BIT_PAUSE_LEN_MIN && irmp_pause_time <= A1TVBOX_START_BIT_PAUSE_LEN_MAX)
+ { // it's A1TVBOX
+ ANALYZE_PRINTF ("protocol = A1TVBOX, start bit timings: pulse: %3d - %3d, pause: %3d - %3d\n",
+ A1TVBOX_START_BIT_PULSE_LEN_MIN, A1TVBOX_START_BIT_PULSE_LEN_MAX,
+ A1TVBOX_START_BIT_PAUSE_LEN_MIN, A1TVBOX_START_BIT_PAUSE_LEN_MAX);
+ irmp_param_p = (IRMP_PARAMETER *) &a1tvbox_param;
+ last_pause = 0;
+ last_value = 1;
+ }
+ else
+#endif // IRMP_SUPPORT_RC6_PROTOCOL == 1
+
{
ANALYZE_PRINTF ("protocol = UNKNOWN\n");
// irmp_busy_flag = FALSE;
diff --git a/irmpconfig.h b/irmpconfig.h
index 646bb42..a8424cf 100644
--- a/irmpconfig.h
+++ b/irmpconfig.h
@@ -5,7 +5,7 @@
*
* Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de
*
- * $Id: irmpconfig.h,v 1.95 2012/11/18 17:51:26 fm Exp $
+ * $Id: irmpconfig.h,v 1.97 2012/12/11 21:31:36 fm Exp $
*
* ATMEGA88 @ 8 MHz
*
@@ -81,8 +81,10 @@
#define IRMP_SUPPORT_FDC_PROTOCOL 0 // FDC3402 keyboard >= 10000 (better 15000) ~150 bytes (~400 in combination with RC5)
#define IRMP_SUPPORT_RCCAR_PROTOCOL 0 // RC Car >= 10000 (better 15000) ~150 bytes (~500 in combination with RC5)
#define IRMP_SUPPORT_RUWIDO_PROTOCOL 0 // RUWIDO, T-Home >= 15000 ~550 bytes
+#define IRMP_SUPPORT_A1TVBOX_PROTOCOL 0 // A1 TV BOX >= 15000 (better 20000) ~300 bytes
#define IRMP_SUPPORT_LEGO_PROTOCOL 0 // LEGO Power RC >= 20000 ~150 bytes
+
/*---------------------------------------------------------------------------------------------------------------------------------------------------
* Change hardware pin here for ATMEL AVR
*---------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/irmpprotocols.h b/irmpprotocols.h
index 1a80246..245c97c 100644
--- a/irmpprotocols.h
+++ b/irmpprotocols.h
@@ -5,7 +5,7 @@
*
* Copyright (c) 2012 Frank Meyer - frank(at)fli4l.de
*
- * $Id: irmpprotocols.h,v 1.7 2012/12/06 08:49:32 fm Exp $
+ * $Id: irmpprotocols.h,v 1.8 2012/12/11 20:27:59 fm Exp $
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -56,8 +56,9 @@
#define IRMP_LEGO_PROTOCOL 29 // LEGO Power Functions RC
#define IRMP_THOMSON_PROTOCOL 30 // Thomson
#define IRMP_BOSE_PROTOCOL 31 // BOSE
+#define IRMP_A1TVBOX_PROTOCOL 32 // A1 TV Box
-#define IRMP_N_PROTOCOLS 31 // number of supported protocols
+#define IRMP_N_PROTOCOLS 32 // number of supported protocols
/*---------------------------------------------------------------------------------------------------------------------------------------------------
* timing constants:
@@ -498,6 +499,21 @@ typedef uint8_t PAUSE_LEN;
#define BOSE_LSB 1 // LSB...MSB
#define BOSE_FLAGS 0 // flags
+#define A1TVBOX_START_BIT_PULSE_TIME 300.0e-6 // 300 usec pulse
+#define A1TVBOX_START_BIT_PAUSE_TIME 340.0e-6 // 340 usec pause
+#define A1TVBOX_BIT_PULSE_TIME 250.0e-6 // 250 usec pulse/pause
+#define A1TVBOX_BIT_PAUSE_TIME 150.0e-6 // 150 usec pulse/pause
+#define A1TVBOX_STOP_BIT 0 // has no stop bit
+#define A1TVBOX_LSB 0 // MSB...LSB
+#define A1TVBOX_FLAGS (IRMP_PARAM_FLAG_IS_MANCHESTER | IRMP_PARAM_FLAG_1ST_PULSE_IS_1 ) // flags
+#define A1TVBOX_FRAMES 1 // A1TVBOX sends each frame 1 times
+#define A1TVBOX_AUTO_REPETITION_PAUSE_TIME 22.2e-3 // repetition after 22.2ms
+#define A1TVBOX_ADDRESS_OFFSET 1 // skip 1 bits
+#define A1TVBOX_ADDRESS_LEN 8 // read 8 address bits
+#define A1TVBOX_COMMAND_OFFSET 9 // skip 9 bits (start bit + address)
+#define A1TVBOX_COMMAND_LEN 8 // read 8 command bits
+#define A1TVBOX_COMPLETE_DATA_LEN 17 // complete length incl. start bit
+
#define AUTO_FRAME_REPETITION_TIME 80.0e-3 // SIRCS/SAMSUNG32/NUBERT: automatic repetition after 25-50ms
#endif // _IRMP_PROTOCOLS_H_
diff --git a/makefile.lnx b/makefile.lnx
index 327af87..c7bbc9f 100644
--- a/makefile.lnx
+++ b/makefile.lnx
@@ -3,13 +3,17 @@
#
# usage:
#
-# make -f makefile.lnx [irmp] [irsnd]
+# make -f makefile.lnx [all | [all-irmp | all-irsnd]
#
# Copyright (c) 2010-2012 Frank Meyer - frank(at)fli4l.de
#
# $Id: makefile.lnx,v 1.6 2010/06/11 14:47:24 fm Exp $
#----------------------------------------------------------------------------
-all: irmp-10kHz irmp-15kHz irmp-20kHz irsnd-10kHz irsnd-15kHz irsnd-20kHz
+all: all-irmp all-irsnd
+
+all-irmp: irmp-10kHz irmp-15kHz irmp-20kHz
+
+all-irsnd: irsnd-10kHz irsnd-15kHz irsnd-20kHz
irmp-10kHz: irmp.c irmp.h irmpconfig.h irmpsystem.h irmpprotocols.h
cc -Wall -DF_INTERRUPTS=10000 irmp.c -o irmp-10kHz