Change Log for IRLib – an Arduino library for infrared encoding and decoding
Copyright 2013-2015 by Chris Young http://tech.cyborg5.com/irlib/

Version 1.51 March 2015
	Added USE_ATTACH_INTERRUPTS define to allow disabling IRrecvPCI and IRfrequency both of which use the built-in "attachInterrupt()" function that can cause conflicts with other ISR routines using INT0_vect.
Version 1.5 June 2014
	New bit-bang option for PWM output frequency setting. Now can use any output pin with no hardware timers. Note:bit-bang output not as accurate as timer-based frequency selection.
	Major rewrite of IRLibTimer.h to facilitate bit-bang. Separated hardware timer selection and specification into sending and receiving sections in order to implement bit-bang.
	New IRfrequency class for detecting input frequencies. Previously was a stand-alone special sketch but now is a class including a DumpResults method.
	New IRfreq and IRrecvDumpFreq illustrate simultaneous detection of frequency and pattern with both an IR learner and IR receiver is connected.
	New #define USE_IRRECV define can be commented out to completely remove the interrupt driven IRrecv receiver class from the library. This resolves ISR conflicts with other libraries such as Tone() when not using IRrecv class.
	New #define USE_DUMP define can be commented out to disable DumpResults methods. Saves code space when these methods are not needed.
	Revised user manuals to document new features and correct previous documentation problems.
Version 1.42 May 2014 
	Added support ATmega256RFR2 based Pinoccio Scout platform with examples
Version 1.41 April 2014
	Fixed interframe delay for JVC protocol
Version 1.4 – March 2014
	Added IRLIB_ prefix to debug macros to avoid name collisions
	Debug macros now report more information
	Added example new protocol Phillips RCMM used by AT&T U-Verse boxes and Nokia satellite boxes
	Added ABS_MATCH macro which allows you to match using absolute number of microseconds versus the old way which used a percentage. Necessary for implementing RCMM protocol.
	Added IRLIB_USE_PERCENT definition which when commented out changes the default from percentage match to absolute match. Also added DEFAULT_ABS_TOLERANCE. More details on these changes will be provided in the documentation when the section on adding new protocols is completed.
Version 1.31 – March 2014
	Commented out debug code that was accidentally left active in 1.3 release
Version 1.3	 – January 2014 
NEW FILES
	Added new file IRLibRData.h and moved irparams structure and related items to that file. Allows users to create custom IRrecv classes
NEW EXAMPLES
	Rewrote Samsung36 example to include both send and receive
	Added new examples for new protocols DirecTV and GIcable
	Added new example IRanalyze gives more detailed analysis of timing. Useful in analyzing the protocols
	Added new example IRfreq reports modulation frequency of a signal. Requires TSMP58000 IR learner chip
	Cleanup of other example routines.
NEW CLASSES
	Created IRrecvBase class to allow custom receiver classes. IRrecv is now a derived class from it.
	Created IRrecvLoop class which receives IR signals without using any hardware interrupts or timers. Also created IRrecvPCI class which uses Pin Change Interrupts to receive IR signals. These new receivers are more accurate than the 50µs timing of the original IRrecv. However they also have other limitations described in comments.
New functions, variables and methods
	In IRrecvBase added "unsigned char Mark_Excess" with default value 100. Was a define macro but now is user settable.
	In IRrecvBase added method "unsigned char getPinNum(void);" which retrieves the pin number used from irparams.recvpin. This value not normally accessible to end user.
	Globally available function "void do_Blink(void);" blinks pin 13 LED. For use by user created extensions of IRrecvBase.
INTERNAL CHANGES
	Data collected by IRrecvBase classes in irparams.rawbuf is now converted to actual microseconds rather than clock ticks of 50 µs each. IRrecvBase::GetResults has a new parameter "Time_per_Ticks" that is used to convert ticks into actual microseconds if needed.
	Adjustments to mark and space to deal with overreporting and underreporting of intervals is now done once in IRrecvBase::GetResults eliminating the need for MATCH_MARK(d,v) and MATCH_SPACE(d,v). Just use MATCH(d,v) everywhere.
	Modified IRLibsendBase::mark() and IRLibsendBase::space() to overcome limitations of "delayMicroseconds()".
	Changed many int to char or unsigned char to save memory
	Eliminated DEBUG macro in IRLib.h and its use elsewhere. Macro TRACE is more useful.
	Changed IRTYPES to unsigned char and a list of #defines rather than an enum (even though I still really like enums, changing it saves memory)
MEMORY EFFICIENCY
	Code changes result in memory savings of approximately 54 bytes in code space and 39 bytes of RAM.
--------------------------------
Version 1.2 – July 2013	
	Internal version. No public release
--------------------------------
Version 1.1	– April 2013
	Constructor of IRsendBase now initializes output pin and forces it low immediately.
	New IRrecv::No_Output() method initializes output pin and forces it low. Use this in sketches which receive only by the have output hardware connected.
	Added examples IRservo and IRserial_remote
--------------------------------
Version 1.0a – February 2013
	Removed debugging test switch which was accidentally left on in file "IRLib.h"
--------------------------------
Version 1.0 – January 2013 	
	Initial Release 