2011-12-16: 1.0.0 (b19c7ac)
- Initial version

2011-12-17: 1.0.1 (6f00602)
- Add callback thread to IPConnection (allows to call getters in callbacks)

2011-12-20: 1.0.2 (3f6511b)
- Remove accidental debug output that was present in 1.0.1

2012-02-15: 1.0.3 (ffd64f7)
- Add support for IMU Brick, Analog In Bricklet and Analog Out Bricklet

2012-04-02: 1.0.4 (524050a)
- Add get/setChibiFreuqency and get/setChibiChannel methods

2012-04-27: 1.0.5 (6f0b9a5)
- Add sync rect support to Stepper Brick bindings and make Device class public

2012-05-07: 1.0.6 (4d0e7fb)
- Make Device class abstract

2012-05-10: 1.0.7 (baa8705)
- Add version information to manifest of Tinkerforge.jar
- Silently ignore messages from devices with unknown stack ID
- Don't generate addListener method for devices without callbacks
- Add inline code documentation

2012-05-18: 1.0.8 (505bc29)
- Ensure that the answering device matches the expected type in
  IPConnection.addDevice

2012-05-24: 1.0.9 (f837011)
- Treat '-' and ' ' as equal in device name check for backward compatibility

2012-06-15: 1.0.10 (bc93dc5)
- Improve exception handling in receive thread
- Ensure to unblock callback thread when destroying the IPConnection
- Fix handling of fragmented packets

2012-06-28: 1.0.11 (3704047)
- Add RS485 support

2012-06-29: 1.0.12 (55a3238)
- Add chip temperature and reset methods

2012-07-01: 1.0.13 (d9ecec6)
- Add monoflop functionality to Dual Relay Bricklet API

2012-07-03: 1.0.14 (afb45cf)
- Add time base, all-data method/listener and state listener to Stepper Brick API

2012-07-13: 1.0.15 (6ac52d1)
- Fix direction of getAllDataPeriod method in Stepper Brick API
- Make addDevice thread-safe
- Ensure correct shutdown order of threads

2012-08-01: 1.0.16 (f86a5f3)
- Fix race condition in addDevice method
- Add monoflop functionality to IO-4 and IO-16 Bricklet API

2012-09-17: 1.0.17 (dd8498f)
- Add WIFI support

2012-09-26: 1.0.18 (c8c7862)
- Add getter for WIFI buffer status information
- Change WIFI certificate getter/setter to transfer bytes instead of a string
- Add API for setting of WIFI regulatory domain
- Add reconnect functionality to IPConnection (for WIFI Extension)
- Add API for Industrial Bricklets: Digital In 4, Digital Out 4 and Quad Relay
- Use StringBuilder when deserializing strings and strip NUL characters
- Avoid a race condition in expectedResponseFunctionID handling
- Fix semaphore deadlock on timeout

2012-09-28: 1.0.19 (69e6ae4)
- Add API for Barometer Bricklet

2012-10-01: 1.0.20 (4454bda)
- Replace Barometer Bricklet calibrate method with getter/setter for
  reference air pressure

2012-10-12: 1.0.21 (5884dd5)
- Add getUSBVoltage method to Master Brick API
- Add Barometer Bricklet examples

2012-12-20: 1.0.22 (2b39606)
- Add API for Voltage/Current Bricklet
- Add API for GPS Bricklet

2013-01-22: 2.0.0 (10c72f9)
- Add compatibility for Protocol 2.0

2013-01-25: 2.0.1 (13b1beb)
- Add support for custom characters in LCD Bricklets

2013-01-28: 2.0.2 (04c1105)
- Remove unused IPConnection.*Exception classes

2013-02-06: 2.0.3 (3db31c0)
- Ensure to set socket and stream to null even if close() throws an IOException
- Use a shorter format for JavaDoc links
- Don't let the callback thread die silently on exception in user code
- Add get/setLongWifiKey methods to Master Brick API

2013-02-19: 2.0.4 (3fd93d3)
- Split IPConnection.addListener into per-Listener add methods
- Reduce scope of request and socket mutex to improve concurrency
- Improve and unify code for response expected flag handling
- Add get/setWifiHostname methods and callbacks for stack/USB voltage and stack
  current to Master Brick API

2013-02-22: 2.0.5 (9d5de14)
- Add get/setRange methods to Analog In Bricklet API
- Fix unlikely race condition in response packet handling
- Add TinkerforgeException as basis for all other exceptions

2013-04-02: 2.0.6 (eeb1f67)
- Add enable/disable methods for PositionReached and VelocityReached callbacks
  to Servo Brick API
- Add get/setI2CMode (100kHz/400kHz) methods to Temperature Bricklet API
- Add default text methods to LCD 20x4 Bricklet API
- Don't dispatch callbacks after disconnect
- Fix race condition in callback handling that could result in closing the wrong
  socket
- Don't ignore socket errors when sending request packets
- Send a request packet at least every 10sec to improve WIFI disconnect detection

2013-05-14: 2.0.7 (b847401)
- Add Ethernet Extension support to Master Brick API
- Only send disconnect probe if there was no packet send or received for 5sec
- Avoid race condition during socket closing
- Add IMU Brick orientation and Barometer Bricklet averaging API
- Fix locking for disconnect probe thread detecting a socket error

2013-07-04: 2.0.8 (cdc19b0)
- Add support for PTC Bricklet and Industrial Dual 0-20mA Bricklet

2013-08-06: 2.0.9 (a75bd44)
- Avoid ConcurrentModificationException in listener handling by using
  CopyOnWriteArrayList

2013-08-23: 2.0.10 (4b2c2d2)
- Avoid race condition between disconnect probe thread and disconnect method

2013-08-28: 2.0.11 (2251328)
- Add edge counters to Industrial Digital In 4, IO-4 and IO-16 Bricklet
- Make averaging length configurable for Analog In Bricklet

2013-09-11: 2.0.12 (405931f)
- Fix signature of edge count methods in IO-16 Bricklet API

2013-11-27: 2.0.13 (a97b7db)
- Add support for Distance US, Dual Button, Hall Effect, LED Strip, Line,
  Moisture, Motion Detector, Multi Touch, Piezo Speaker, Remote Switch,
  Rotary Encoder, Segment Display 4x7, Sound Intensity and Tilt Bricklet
- Throw IllegalArgumentException on invalid Base58 value as UID

2013-12-19: 2.0.14 (9334f91)
- Add get/setClockFrequency method to LED Strip Bricklet API
- Fix mixup of get/setDateTimeCallbackPeriod and get/setMotionCallbackPeriod in
  GPS Bricklet API
- Support addressing types of Intertechno and ELRO Home Easy devices in
  Remote Switch Bricklet API

2014-04-09: 2.1.0 (9aad727)
- Add authentication support to IPConnection and Master Brick API
- Add TinkerforgeListener and DeviceListener as base interfaces for all listeners
- Escape special HTML characters in JavaDoc

2014-07-03: 2.1.1 (cdb00f1)
- Add support for WS2811 and WS2812 to LED Strip Bricklet API

2014-08-11: 2.1.2 (a87f5bc)
- Add support for Color, NFC/RFID and Solid State Relay Bricklet
- Replace System.console() usage with an Eclipse compatible pattern in examples

2014-12-10: 2.1.3 (2718ddc)
- Make listener dispatch methods protected to allow external changes

2014-12-10: 2.1.4 (27725d5)
- Add support for RED Brick

2015-07-28: 2.1.5 (725ccd3)
- IPConnection implements java.io.Closeable interface
- Add DEVICE_DISPLAY_NAME constant to all Device classes
- Add methods for all Bricks to turn status LEDs on and off
- Avoid possible connection state race condition on connect
- Add support for IMU Brick 2.0, Accelerometer, Ambient Light 2.0,
  Analog In 2.0, Analog Out 2.0, Dust Detector, Industrial Analog Out,
  Industrial Dual Analog In, Laser Range Finder, Load Cell and RS232 Bricklet

2015-11-17: 2.1.6 (158f00f)
- Add missing constant for 19200 baud to RS232 Bricklet API
- Add Error listener to RS232 Bricklet API
- Add setBreakCondition method to RS232 Bricklet API
- Add unlimited illuminance range constant to Ambient Light Bricklet 2.0 API
- Break API to fix threshold min/max type mismatch in Ambient Light, Analog In
  (2.0), Distance IR/US, Humidity, Linear Poti and Voltage Bricklet API
- Break API to fix bool return type mismatch in Servo Brick
  (isPositionReachedCallbackEnabled and isVelocityReachedCallbackEnabled
  methods), Accelerometer Bricklet (isLEDOn method) and Load Cell Bricklet
  (isLEDOn method) API
- Add DeviceFactory class

2016-01-06: 2.1.7 (3ade121)
- Add support for CO2, OLED 64x48 and 128x64, Thermocouple and UV Light Bricklet

2016-02-09: 2.1.8 (5552d2c)
- Add support for Real-Time Clock Bricklet
- Break GPS Bricklet API to fix types of altitude and geoidal separation values
  (getAltitude method and Altitude listener)

2016-06-29: 2.1.9 (9db7daa)
- Add support for WIFI Extension 2.0 to Master Brick API
- Add support for CAN Bricklet and RGB LED Bricklet
- Add DateTime and Alarm listeners to Real-Time Clock Bricklet API

2016-09-08: 2.1.10 (2863e14)
- Add support for RGBW LEDs, channel mapping and SK6812RGBW (NeoPixel RGBW),
  LPD8806 and ADA102 (DotStar) chip types to LED Strip Bricklet API

2017-01-25: 2.1.11 (7aeee37)
- Add support for WIFI Extension 2.0 Mesh mode to Master Brick API
- Add get/setStatusLEDConfig methods to Motion Detector Bricklet API
- Add sensor and fusion mode configuration methods to IMU Brick 2.0 API

2017-04-21: 2.1.12 (044bd9b)
- Add support for Silent Stepper Brick
- Add get/setConfiguration methods to Laser Range Finder Bricklet API to support
  Bricklets with LIDAR-Lite sensor hardware version 3
- Add getSendTimeoutCount method to all Brick APIs
- Don't leak callback thread if connect fails
- Break API to make connect method return a TinkerforgeException instead of
  three different exception types

2017-05-11: 2.1.13 (3960b4a)
- Add support for GPS Bricklet 2.0
- Increase minimum JDK version from 1.5 to 1.6

2017-07-26: 2.1.14 (fb903dc)
- Add support for RS485 Bricklet
- Add general streaming support
- Add SPITFP configuration and diagnostics methods to all Brick APIs to
  configure and debug the communication between Bricks and Co-MCU Bricklets
- Remove unused getCurrentConsumption method from Silent Stepper Brick API

2017-11-20: 2.1.15 (f235e3f)
- Add support for DMX, Humidity 2.0, Motorized Linear Poti, RGB LED Button,
  RGB LED Matrix and Thermal Imaging Bricklet
- Add get/setSBASConfig methods to GPS Bricklet 2.0 API

2017-11-24: 2.1.16 (6812559)
- Use correct chunk-offset while reconstructing output streams

2018-02-28: 2.1.17 (da741b9)
- Add support for Analog In 3.0, Remote Switch 2.0, Motion Detector 2.0, NFC,
  Rotary Encoder 2.0, Solid State 2.0, Temperature IR 2.0 and Outdoor Weather
  Bricklet

2018-06-08: 2.1.18 (8fb62e4)
- Add support for CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0,
  Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0,
  Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, RS232 2.0,
  Sound Pressure Level, Thermocouple 2.0 and Voltage/Current 2.0 Bricklet
- Add get/setMaximumTimeout methods to NFC Bricklet API
- Add (is)SensorConnected method and listener to PTC Bricklet API
- Break Humidity 2.0, Rotary Encoder 2.0 and Temperature IR 2.0 Bricklet API to
  fix types for callback threshold min/max configuration

2018-09-28: 2.1.19 (f7c65f7)
- Add support for Air Quality, Analog Out 3.0, Barometer 2.0, Distance IR 2.0,
  Dual Button 2.0, Industrial Analog Out 2.0, Industrial Digital Out 4 2.0,
  Industrial Dual 0-20mA 2.0, Industrial Dual Analog In 2.0, IO-16 2.0, Isolator,
  LCD 128x64, OLED 128x64 2.0, One Wire, Temperature 2.0 and UV Light 2.0 Bricklet

2018-10-05: 2.1.20 (e3c6f36)
- Break API to fix moving-average-length type in Distance IR Bricklet 2.0 API

2018-11-28: 2.1.21 (0e3b130)
- Add get/setSamplesPerSecond methods to Humidity Bricklet 2.0 API
- Add button, slider, graph and tab methods to LCD 128x64 Bricklet API

2019-01-29: 2.1.22 (2617875)
- Add support for Accelerometer 2.0 and Ambient Light 3.0 Bricklet

2019-05-21: 2.1.23 (a3d0573)
- Add support for CO2 2.0, E-Paper 296x128, Hall Effect 2.0, Joystick 2.0,
  Laser Range Finder 2.0, Linear Poti 2.0, Piezo Speaker 2.0, RGB LED 2.0 and
  Segment Display 4x7 2.0 Bricklet and HAT and HAT Zero Brick
- Add removeCalibration and get/setBackgroundCalibrationDuration methods to
  Air Quality Bricklet API
- Properly check UIDs and report invalid UIDs
- Fix false-positive ArrayIndexOutOfBoundsExceptions in Industrial Counter
  Bricklet setAllCounterActive, Industrial Digital Out 4 Bricklet 2.0 setValue,
  Industrial Quad Relay Bricklet 2.0 setValue and IO-4 Bricklet 2.0 setValue
  methods

2019-08-23: 2.1.24 (59d9363)
- Add support for Color 2.0, Compass, Distance US 2.0, Energy Monitor,
  Multi Touch 2.0, Rotary Poti 2.0 and XMC1400 Breakout Bricklet
- Add get/setFilterConfiguration methods to Accelerometer Bricklet 2.0 API
- Add CONVERSION_TIME constants to Voltage/Current Bricklet 2.0 API
- Increase minimum JDK version from 1.6 to 8

2019-11-25: 2.1.25 (b1270ba)
- Add set/getVoltagesCallbackConfiguration methods and Voltages listener to
  HAT Brick API
- Add set/getUSBVoltageCallbackConfiguration methods and USBVoltage listener to
  HAT Zero Brick API
- Add set/getStatisticsCallbackConfiguration methods and Statistics listener to
  Isolator Bricklet API
- Report error if authentication secret contains non-ASCII chars

2020-04-07: 2.1.26 (3dff30a)
- Properly check device-identifier and report mismatch between used API bindings
  device type and actual hardware device type
- Fix race condition between device constructor and callback thread
- Add set/getFluxLinearParameters methods to Thermal Imaging Bricklet API
- Add set/getFrameReadableCallbackConfiguration methods and FrameReadable
  listener to CAN (2.0), RS232 (2.0) and RS485 Bricklet API
- Add set/getErrorOccurredCallbackConfiguration methods and ErrorOccurred
  listener to CAN Bricklet 2.0 API
- Add readFrame method to RS232 Bricklet API
- Add write/readBrickletPlugin methods to all Brick APIs for internal EEPROM
  Bricklet flashing
- Add setBrickletXMCFlashConfig/Data and set/getBrickletsEnabled methods to
  Master Brick 3.0 API for internal Co-MCU Bricklet bootloader flashing
- Validate response length before unpacking response
- Properly report replaced device objects as non-functional

2020-05-19: 2.1.27 (9c76b18)
- Add getAllVoltages and set/getAllVoltagesCallbackConfiguration methods and
  AllVoltages listener to Industrial Dual Analog In Bricklet 2.0 API
- Add set/getI2CMode methods to Barometer Bricklet API
- Add Automatic-Module-Name to manifest

2020-06-25: 2.1.28 (a013b35)
- Use Maven to build all JAR file variants

2020-11-02: 2.1.29 (6399602)
- Add support for IMU Bricklet 3.0 and Industrial Dual AC Relay Bricklet

2021-01-15: 2.1.30 (797d61e)
- Add support for Performance DC Bricklet and Servo Bricklet 2.0
