FIRMATA 2.5.6 - Mar 18, 2017

[core library]
* Fixed string encoder/decoder bug that also affected I2C (Zak Fields)
* Added support for Arduino Primo (chiararuggeri)
* Added unit tests for Firmata string message encoding/decoding

FIRMATA 2.5.5 - Mar 6, 2017

[core library]
* Updated BLEStream for compatibility with CurieBLE v2 (Sandeep Mistry)
* Added support for MKRZero (Sandeep Mistry)

This update also includes a number of changes from an ongoing refactor by
Zak Fields of the Firmata core. These changes don't impact user facing sketches,
they are all internal only. Changes include:

* Split out parser logic into new lib free of Arduino-specific dependencies.
* Add new class to support cross platform marshalling of Firmata procedure calls.
* Split out core constants to separate file.
* Split out core defines to separate file.
* Added firmata namespace to core library classes.

FIRMATA 2.5.4 - Oct 23, 2016

[core library]
* Added Teensy 3.5 and 3.6 to Boards.h
* Assign blinkVersionDisabled in constructor to fix compiler issue in Arduino 1.0.6

[StandardFirmata & variants]
* Only disable PWM when setting pinMode to OUTPUT if pinMode was previously PWM
* Forward declare some functions to fix compiler issues with older IDE versions

FIRMATA 2.5.3 - Jun 18, 2016

[core library]
* Added ESP8266 support (Jens B. & Jacob Rosenthal)
* Added host connection callback (Jens B.)
* Added Wi-Fi TCP client (Jens B.)
* Added BLE transport (BLEStream based on BLESerial by Volta Molda)
* Fixed Arduino Galileo and Edison compile issues

[StandardFirmata & variants]
* Added StandardFirmataBLE (for use with Arduino 101)
* Added ability to choose between Wi-Fi TCP client or server (Jens B.)
* Various updates to StandardFirmataWiFi (Jens B.)
* Increased I2C RX data buffer from 32 to 64 bytes (Rick Waldron)
* Removed StandardFirmataEthernetPlus
* Made StandardFirmataEtherent configurable (to optionally add Plus functionality)
* Improved configuration instructions for StandardFirmataEthernet and StandardFirmataWiFi

FIRMATA 2.5.2 - Feb 15, 2016

[core library]
* Added Wi-Fi transport (Jesse Frush)
* Added support for Arduino MKR1000 (Jesse Frush)
* Moved Serial feature to own class SerialFirmata
* Moved pin config and pin state handling to Firmata.cpp
* Added new method disableBlinkVersion to provide a way to optionally bypass startup blink sequence

[StandardFirmata & variants]
* Added StandardFirmataWiFi (Jesse Frush)
* Added ethernetConfig.h for StandardFirmataEthernet and StandardFirmtaEthernetPlus
* Removed serialUtils.h and using SerialFirmata class instead for Serial feature

FIRMATA 2.5.1 - Dec 26, 2015

[core library]
* Added support for Arduino 101
* Make VERSION_BLINK_PIN optional
* Separate protocol version from firmware version.
  Use FIRMATA_PROTOCOL_VERSION_[MAJOR/MINOR/BUGFIX] for protocol and use
  FIRMATA_FIRMWARE_VERSION_[MAJOR/MINOR/BUGFIX] for firmware (library version).

[StandardFirmata & variants]
* Added ability to auto-restart I2C transmission by setting bit 6 of byte 3
  of the I2C_REQUEST message.

FIRMATA 2.5.0 - Nov 7, 2015

[core library]
* Added Serial feature for interfacing with serial devices via hardware
  or software serial. See github.com/firmata/protocol/serial.md for details
* Added ability to set the value of a pin by sending a single value instead
  of a port value. See 'set digital pin value' in github.com/firmata/protocol/protocol.md
  for details
* Added support for Arduino Zero board
* Added support for Teensy LC board (copied from Teensy Firmata lib)
* Added support for Pinoccio Scout board (Pawel Szymczykowski)
* Lowered minimun sampling interval from 10 to 1 millisecond
* Added new pin mode (PIN_MODE_PULLUP) for setting the INPUT_PULLUP pin mode
* Changed pin mode defines to safer names (old names still included but
  deprecated) - see Firmata.h

[StandardFirmata & variants]
* Created new StandardFirmataPlus that implements the Serial feature
  Note: The new Serial features is only implemented in the "Plus" versions of
  StandardFirmata.
* Created new StandardFirmataEthernetPlus that implements the Serial feature
* Fixed issue where StandardFirmata was not compiling for Intel Galileo boards
* Moved StandardFirmataYun to its own repo (github.com/firmata/StandardFirmataYun)

FIRMATA 2.4.4 - Aug 9, 2015

[core library]
* Added support for chipKIT boards (Brian Schmalz, Rick Anderson and Keith Vogel)
* Added support for ATmega328 boards (previously only ATmega328p was supported)

[StandardFirmata]
* Added StandardFirmataChipKIT for ChipKIT boards (Brian Schmalz, Rick Anderson and Keith Vogel)
* Ensure Serial is ready on Leonardo and other ATMega32u4-based boards

FIRMATA 2.4.3 - Apr 11, 2015

[core library]
* Added debug macros (utility/firmataDebug.h)
* Added Norbert Truchsess' EthernetClientStream lib from the configurable branch

[examples]
* Added StandardFirmataEthernet to enable Firmata over Ethernet
* Minor updates to StandardFirmata and StandardFirmataYun

FIRMATA 2.4.2 - Mar 16, 2015

[core library]
* Add support for Teesy 3.1 (Olivier Louvignes)

FIRMATA 2.4.1 - Feb 7, 2015

[core library]
* Fixed off-by-one bug in setFirmwareNameAndVersion (Brian Schmalz)

[StandardFirmata]
* Prevent analog values from being reported during system reset

FIRMATA 2.4.0 - Dec 21, 2014

Changes from 2.3.6 to 2.4 that may impact existing Firmata client implementations:

* When sending a string from the client application to the board (STRING_DATA) a
static buffer is now used for the incoming string in place of a dynamically allocated
block of memory (see Firmata.cpp lines 181 - 205). In Firmata 2.3.6 and older,
the dynamically allocated block was never freed, causing a memory leak. If your
client library had freed this memory in the string callback method, that code
will break in Firmata 2.4. If the string data needs to persist beyond the string
callback, it should be copied within the string callback.

* As of Firmata 2.4, when digital port reporting or analog pin reporting is enabled,
the value of the port (digital) or pin (analog) is immediately sent back to the client
application. This will likely not have a negative impact on existing client
implementations, but may be unexpected. This feature was added to better support
non-serial streams (such as Ethernet, Wi-Fi, Bluetooth, etc) that may lose
connectivity and need a quick way to get the current state of the pins upon
reestablishing a connection.

[core library]
* Changed sendValueAsTwo7bitBytes, startSysex and endSysex from private to
  public methods.
* Added Intel Galileo to Boards.h
* Renamed FirmataSerial to FirmataStream
* Updated to latest Arduino library format
* writePort function in Boards.h now returns 1 (to suppress compiler warning)
* Updated syntax highlighting (keywords.txt)
* Fixed IS_PIN_SPI ifndef condition in boards.h
* Added constants to Firmata.h to reserve configurable firmata features
* Fixed issue where firmwareName was not reported correctly in Windows
* Ensure incoming String via STRING_DATA command is null-terminated
* Fixed memory leak when receiving String via STRING_DATA command
  (note this change may break existing code if you were manually deallocating
  the incoming string in your string callback function. See code for details)
* Added ability for user to specify a filename when calling setFirmwareNameAndVersion
* Increased input data buffer size from 32 to 64 bytes

[StandardFirmata]
* Updated I2C_READ_CONTINUOUSLY to work with or without slaveRegister (Rick Waldron)
* Added Yun variant of StandardFirmata
* When a digital port is enabled, its value is now immediately sent to the client
* When an analog pin is enabled, its value is now immediately sent to the client
* Changed the way servo pins are mapped to enable use of servos on
  a wider range of pins, including analog pins.
* Fixed management of unexpected sized I2C replies (Nahuel Greco)
* Fixed a bug when removing a monitored device with I2C_STOP_Reading (Nahuel Greco)
* Fixed conditional expression in I2C_STOP_READING case
* Changed samplingInterval from type int to type unsigned int
* Shortened error message strings to save a few bytes

[examples]
* Updated FirmataServo example to use new pin mapping technique
* Removed makefiles from examples (because they were not being updated)
* Updated all examples to set current firmware version

FIRMATA 2.3.6 - Jun 18, 2013 (Version included with Arduino core libraries)

[core library]
* Fixed bug introduced in 2.3.5 that broke ability to use Ethernet.

FIRMATA 2.3.5 - May 21, 2013

[core library]
* Added Arduino Due to Boards.h
* Added Teensy 3.0 to Boards.h
* Updated unit tests to use ArduinoUnit v2.0
* Renamed pin13strobe to strobeBlinkPin
* Removed blinkVersion method from begin method for non-serial streams
* Fixed memory leak in setting firmware version (Matthew Murdoch)
* Added unit tests for a few core functions (Matthew Murdoch)
* Added IS_PIN_SPI macro to all board definitions in Board.h (Norbert Truchsess)

FIRMATA 2.3.4 - Feb 11, 2013

[core library]
* Fixed Stream implementation so Firmata can be used with Streams other than
  Serial (Norbert Truchsess)

FIRMATA 2.3.3 - Oct 6, 2012

[core library]
* Added write method to expose FirmataSerial.write
* Added Arduino Leonardo to Boards.h

[StandardFirmata]
* Changed all instances of Serial.write to Firmata.write
* Fixed delayMicroseconds(0) bug in readAndReportData

FIRMATA 2.3.0 - 2.3.2

* Removed angle from servo config
* Changed file extensions from .pde to .ino
* Added MEGA2560 to Boards.h
* Added I2C pins to Boards.h
* Modified examples to be compatible with Arduino 0022 and 1.0 or greater
* Removed I2CFirmata example
* Changes to StandardFirmata
  * Added I2C support
  * Added system reset message to reset all pins to default config on sysex reset

FIRMATA 2.2 (changes prior to Firmata 2.3.0 were not well documented)

* changes undocumented

FIRMATA 2.1

* added support for changing the sampling interval
* added Servo support

FIRMATA 2.0

* changed to 8-bit port-based digital messages to mirror ports from previous 14-bit ports modeled after the standard Arduino board.
* switched order of version message so major version is reported first

FIRMATA 1.0

* switched to MIDI-compatible packet format (though the message interpretation differs)
