IRRemote fuer Yamaha Reciever
[svn42.git] / rf433ctl / IRremote / IRremoteInt.h
diff --git a/rf433ctl/IRremote/IRremoteInt.h b/rf433ctl/IRremote/IRremoteInt.h
new file mode 100644 (file)
index 0000000..3824dbb
--- /dev/null
@@ -0,0 +1,111 @@
+/*\r
+ * IRremote\r
+ * Version 0.1 July, 2009\r
+ * Copyright 2009 Ken Shirriff\r
+ * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html\r
+ *\r
+ * Interrupt code based on NECIRrcv by Joe Knapp\r
+ * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556\r
+ * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/\r
+ */\r
+\r
+#ifndef IRremoteint_h\r
+#define IRremoteint_h\r
+\r
+#include <WProgram.h>\r
+\r
+#define CLKFUDGE 5      // fudge factor for clock interrupt overhead\r
+#define CLK 256      // max value for clock (timer 2)\r
+#define PRESCALE 8      // timer2 clock prescale\r
+#define SYSCLOCK 16000000  // main Arduino clock\r
+#define CLKSPERUSEC (SYSCLOCK/PRESCALE/1000000)   // timer clocks per microsecond\r
+\r
+#define ERR 0\r
+#define DECODED 1\r
+\r
+#define BLINKLED 13\r
+\r
+// defines for setting and clearing register bits\r
+#ifndef cbi\r
+#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))\r
+#endif\r
+#ifndef sbi\r
+#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))\r
+#endif\r
+\r
+// clock timer reset value\r
+#define INIT_TIMER_COUNT2 (CLK - USECPERTICK*CLKSPERUSEC + CLKFUDGE)\r
+#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT2\r
+\r
+// pulse parameters in usec\r
+#define NEC_HDR_MARK   9000\r
+#define NEC_HDR_SPACE  4500\r
+#define NEC_BIT_MARK   560\r
+#define NEC_ONE_SPACE  1600\r
+#define NEC_ZERO_SPACE 560\r
+#define NEC_RPT_SPACE  2250\r
+\r
+#define SONY_HDR_MARK  2400\r
+#define SONY_HDR_SPACE 600\r
+#define SONY_ONE_MARK  1200\r
+#define SONY_ZERO_MARK 600\r
+#define SONY_RPT_LENGTH 45000\r
+\r
+#define RC5_T1         889\r
+#define RC5_RPT_LENGTH 46000\r
+\r
+#define RC6_HDR_MARK   2666\r
+#define RC6_HDR_SPACE  889\r
+#define RC6_T1         444\r
+#define RC6_RPT_LENGTH 46000\r
+\r
+#define TOLERANCE 25  // percent tolerance in measurements\r
+#define LTOL (1.0 - TOLERANCE/100.) \r
+#define UTOL (1.0 + TOLERANCE/100.) \r
+\r
+#define _GAP 5000 // Minimum map between transmissions\r
+#define GAP_TICKS (_GAP/USECPERTICK)\r
+\r
+#define TICKS_LOW(us) (int) (((us)*LTOL/USECPERTICK))\r
+#define TICKS_HIGH(us) (int) (((us)*UTOL/USECPERTICK + 1))\r
+\r
+#ifndef DEBUG\r
+#define MATCH(measured_ticks, desired_us) ((measured_ticks) >= TICKS_LOW(desired_us) && (measured_ticks) <= TICKS_HIGH(desired_us))\r
+#define MATCH_MARK(measured_ticks, desired_us) MATCH(measured_ticks, (desired_us) + MARK_EXCESS)\r
+#define MATCH_SPACE(measured_ticks, desired_us) MATCH((measured_ticks), (desired_us) - MARK_EXCESS)\r
+// Debugging versions are in IRremote.cpp\r
+#endif\r
+\r
+// receiver states\r
+#define STATE_IDLE     2\r
+#define STATE_MARK     3\r
+#define STATE_SPACE    4\r
+#define STATE_STOP     5\r
+\r
+// information for the interrupt handler\r
+typedef struct {\r
+  uint8_t recvpin;           // pin for IR data from detector\r
+  uint8_t rcvstate;          // state machine\r
+  uint8_t blinkflag;         // TRUE to enable blinking of pin 13 on IR processing\r
+  unsigned int timer;     // state timer, counts 50uS ticks.\r
+  unsigned int rawbuf[RAWBUF]; // raw data\r
+  uint8_t rawlen;         // counter of entries in rawbuf\r
+} \r
+irparams_t;\r
+\r
+// Defined in IRremote.cpp\r
+extern volatile irparams_t irparams;\r
+\r
+// IR detector output is active low\r
+#define MARK  0\r
+#define SPACE 1\r
+\r
+#define TOPBIT 0x80000000\r
+\r
+#define NEC_BITS 32\r
+#define SONY_BITS 12\r
+#define MIN_RC5_SAMPLES 11\r
+#define MIN_RC6_SAMPLES 1\r
+\r
+#endif\r
+\r