Infrared remote library for Arduino: send and receive infrared signals with multiple protocols Port from Arduino-IRremote https://github.com/z3t0/Arduino-IRremote
Dependents: mbed-os-example-FinalReal mbed-os-example-FinalReal
IRremoteInt.h
- Committer:
- eunmango
- Date:
- 2019-06-16
- Revision:
- 8:0650578366fd
- Parent:
- 7:c82a0d54a024
File content as of revision 8:0650578366fd:
//****************************************************************************** // IRremote // Version 2.0.1 June, 2015 // Copyright 2009 Ken Shirriff // For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html // // Modified by Paul Stoffregen <paul@pjrc.com> to support other boards and timers // // Interrupt code based on NECIRrcv by Joe Knapp // http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556 // Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/ // // JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post) // Whynter A/C ARC-110WD added by Francesco Meschia //****************************************************************************** #ifndef IRremoteint_h #define IRremoteint_h //------------------------------------------------------------------------------ // Include the right mbed header // #include "mbed.h" //------------------------------------------------------------------------------ // Information for the Interrupt Service Routine // #define RAWBUF 101 // Maximum length of raw duration buffer typedef struct { // The fields are ordered to reduce memory over caused by struct-padding uint8_t rcvstate; // State Machine state uint8_t rawlen; // counter of entries in rawbuf unsigned int timer; // State timer, counts 50uS ticks. unsigned int rawbuf[RAWBUF]; // raw data uint8_t overflow; // Raw buffer overflow occurred } irparams_t; // ISR State-Machine : Receiver States #define STATE_IDLE 2 #define STATE_MARK 3 #define STATE_SPACE 4 #define STATE_STOP 5 #define STATE_OVERFLOW 6 //------------------------------------------------------------------------------ // Pulse parms are ((X*50)-100) for the Mark and ((X*50)+100) for the Space. // First MARK is the one after the long gap // Pulse parameters in uSec // // Due to sensor lag, when received, Marks tend to be 100us too long and // Spaces tend to be 100us too short #define MARK_EXCESS 100 // microseconds per clock interrupt tick #define USECPERTICK 100 // Upper and Lower percentage tolerances in measurements #define TOLERANCE 25 #define LTOL (1.0 - (TOLERANCE/100.)) #define UTOL (1.0 + (TOLERANCE/100.)) // Minimum gap between IR transmissions #define _GAP 5000 #define GAP_TICKS (_GAP/USECPERTICK) #define TICKS_LOW(us) ((int)(((us)*LTOL/USECPERTICK))) #define TICKS_HIGH(us) ((int)(((us)*UTOL/USECPERTICK + 1))) //------------------------------------------------------------------------------ // IR detector output is active low // #define MARK 0 #define SPACE 1 #endif