0.5.0
    General:
    * Fixes for ESP32 board package
    * Added 'Arduino Lint' workflow and badge

    src/VanBusRx.cpp, src/VanBusTx.cpp:
    * Add possibility to drive analyzer pin for use with e.g. Saleae USB Logic Analyzer
    * Fix buggy packet sending on ESP32:
      * Use correct timer API invocations
      * Use separate timer for packet transmission
    * Cleanup timer `#define`s

    Examples:
    * Show Arduino board package version on startup

0.4.2
    General:
    * Updates for ESP32 board package, major versions 2 and 3
    * Fix compiler warnings
    * Added 'compile' workflow and badge

0.4.1
    General:
    * Fix compiler warnings
    * Replace deprecated attribute ICACHE_RAM_ATTR by IRAM_ATTR
    * Update Arduino IDE setup scripts to cover version 3.1.2 of ESP8266 board package

    README.md:
    * Mention version of Arduino IDE
    * Refer to ESP8266 board package version 3.1.2

    src/VanBusRx.h:
    * Add a few IDENs to be recognized by TVanPacketRxDesc::IsSatnavPacket

    src/VanBusRx.cpp:
    * Remove unused code "flip three equal bits in a row" (seen this only once, ever)
    * Add and invoke new method TVanPacketRxDesc::CheckCrcFix
    * Try to handle bit deletion errors

    examples/PacketParser:
    * Various small fixes and updates
    * Add example of log output
    * Prevent RX queue overrun

0.4.0
    General:
    * Add support for ESP32 platform/architecture
    * Added shell (.sh) and batch (.bat) scripts that help to set up the Arduino IDE with all the
      correct board options

    README.md:
    * Fix broken links

    src/VanBusRx.h:
    * Move method 'TVanPacketRxQueue::GetLastMediaAccessAt' from private to public

0.3.4
    General:
    * Fix compiler warnings

    README.md:
    * Add note on clamping circuit
    * Add note about the removal of the terminator resistors on the transceivers
    * Document new method 'TVanBus::SetDropPolicy'
    * Fix links

    src/VanBus.h:
    * Add method 'TVanBus::SetDropPolicy'

    src/VanBusRx.cpp:
    * Fix compilation error
    * Small updates in the bit timing criteria

    extras/Schematics:
    * Add clamping circuit: seems to reduce amount of bit errors

    examples/SendPacket:
    * Add possibility to send also negative temperature values

    examples/PacketParser:
    * IDEN 0x8CE (SATNAV_STATUS_3_IDEN): add sat nav language codes

    examples/DisplayNotifications:
    * Add possibility to send also negative temperature values

0.3.3
    General:
    * Moved code to src/ subdir to adhere to '1.5 library format (rev. 2.2)'
    * Updated README.md
    * All lines end consistently with "\n" (no more lines ending with "\r\n")
    * Fix compiler warnings

    src/VanBusRx.cpp:
    * Implement simple packet drop policy for queue filling up
    * Experiment: use time average of measured one-bit CPU cycles to adjust timing of bits
    * If (nBits == 0): reset jitter if last bit was actually flipped
    * If there are still 9 last read bits at end of packet, store those bits and keep the read
      result VAN_RX_PACKET_OK
    * Small updates in the bit timing criteria

    src/VanBusRx.h:
    * Move methods 'getIfsDebugPacket' and 'getIsrDebugPacket' down, to match as listed in README.MD
    * Moved method '_AdvanceHead' from .h file to .cpp file

    extras/schematics:
    * Added labels

    examples/LiveWebPage:
    * Rename IDEN 0xB0E from ECU_IDEN to SATNAV_GPS_INFO

    examples/PacketParser:
    * Rename IDEN 0xB0E from ECU_IDEN to SATNAV_GPS_INFO

0.3.2
    General:
    * Updated README.md

    VanBusRx.cpp:
    * Decrease CPU load by using table-based CRC calculation
    * struct TIsrDebugData, struct TIfsDebugData: renamed nCycles to nCyclesMeasured
    * Added new method TVanPacketRxQueue::IsEnabled()
    * RxPinChangeIsr(): save a few precious bytes of RAM
    * Prevent CPU monopolization by noise on bus
    * TVanPacketRxQueue::Disable(): also run timer1_disable(), just in case
    * Improved keeping the 'nQueued' counter up to date
    * Add extra patterns for SOF detection
    * Small updates in the bit timing criteria

0.3.1
    General:
    * Updated README.md

    VanBus.h:
    * TVanBus::DumpStats(...): pass also optional parameter "longForm"
    * class TVanBus: add member functions 'QueueSize()', 'GetNQueued()' and 'GetMaxQueued()'

    VanBusRx.cpp:
    * TVanPacketRxDesc::CheckCrcAndRepair(...): try to fix packet by flipping three equal bits in a row
    * TVanPacketRxDesc::CheckCrcAndRepair(...): multiple fixes in the "Flip two bits" part
    * TVanPacketRxDesc::CheckCrcAndRepair(...): check first with only the "uncertain bit" flipped
    * Better handling of unexpected new bit coming after an "ACK" (in which case it is not an "ACK" but the
      first "1" bit of the next byte)
    * Add extra patterns for SOF detection
    * Small updates in the bit timing criteria

    VanBusRx.h:
    * Added new method TVanPacketRxQueue::GetNQueued(), returning current number of packets waiting in Rx queue
    * class TVanPacketRxQueue: 'nQueued' and 'maxQueued' must be declared volatile
    * Remove unnecessary debugging data/code(isrData->nIsrs)

0.3.0
    General:
    * Added new header file 'VanBusVersion.h'
    * Consistently use Unix-style LF line endings

    VanBusRx:
    * More flexible SOF detection and smarter handling of jitter and missed interrupts, leading to less
      CRC error packets
    * New method GetMaxQueued() returning the highest fill level of the RX queue since boot time
    * Improved ISR debugging (as enabled with #define VAN_RX_ISR_DEBUGGING): better functionality and
      reduced RAM usage
    * TVanPacketRxDesc::IsQueueOverrun(): reads and clears overrun bit within same invocation
    * TVanPacketRxDesc::CheckCrcAndRepair(...):
      - Added optional parameter 'wantToCount', a pointer-to-method of class TVanPacketRxDesc, returning a
        boolean. It can be used to limit the repair statistics to take only specific types of packets into
        account.
      - Process a new member field, 'uncertainBit1', which the RX pin ISR can set when it is not certain
        about a bit value.
      - Re-introduced repair by flipping of two (non-consecutive) bits (but only the last bit in a sequence
        of same bit values is flipped).
    * TVanPacketRxDesc::DumpRaw(...):
      - print the command flags also as HEX value
      - also print the ASCII character representation of each byte, if possible
    * TVanPacketRxQueue::DumpStats: print also the highest fill level of the RX queue
    * Use compiler directive 'inline __attribute__((always_inline))' for routines that are called by the
      RX pin ISR.
    * nBitsTakingIntoAccountJitter(...): updates in the bit timing criteria

    examples/LiveWebPage:
    * Renamed TIME_IDEN (IDEN 984) to MFD_LANGUAGE_UNITS_IDEN and updated the parsing and displaying of
      these packets
    * Improved repeat-handling (held-down button) of IR remote control
    * Updated JSON data (PacketToJson.ino) to be in line with VanLiveConnect
      (https://github.com/0xCAFEDECAF/VanLiveConnect)
    * Print also ESP MAC address and CPU factor on startup, pass ESP reset reason and reset info via
      JSON data

    examples/PacketParser:
    * Renamed TIME_IDEN (IDEN 984) to MFD_LANGUAGE_UNITS_IDEN and updated the parsing of these packets
    * SATNAV_STATUS_2_IDEN (IDEN 7CE) packets: added parsing of newly found field "guidance_language"
    * SATNAV_GUIDANCE_IDEN (IDEN 64E) packets: added handling of 16-byte packets with two detailed
      instructions ("take left/right fork/exit, then ...")
    * enum VanPacketFilter_t: added item VAN_PACKETS_SAT_NAV_PKTS

0.2.5
    General:
    * Updated README.md
    * Code formatting

    VanBusRx:
    * Added inter-frame space (IFS) debugging to be able to see why packets are sometimes missed
    * Improved start of frame (SOF) detection to decrease the number of missed packets

    examples/LiveWebPage.ino:
    * Improved handling (timing) of IR remote control
    * Update JSON data (PacketToJson.ino) to be in line with VanLiveConnect
      (https://github.com/0xCAFEDECAF/VanLiveConnect)
    * Various fixes in the HTML page (LiveWebPage.ino)
    * Websocket: send instead of broadcast

0.2.4
    VanBusRx:
    * Added optional 'longForm' parameter to TVanPacketRxQueue::DumpStats method
    * Added #define VAN_BUX_RX_VERSION 000002004
    * Added new method TVanPacketRxDesc::Millis returning packet time stamp in milliseconds

    examples/DisplayNotifications.ino:
    * Re-trigger the shown notification every 7 seconds, so that it is displayed permanently

    examples/PacketParser.ino
    * Updated comment about sat nav street format

0.2.3
    General:
    * Compiles also for ESP32 architecture (but not tested!)

    examples/LiveWebPage.ino:
    * Improved compile-time options in Config.h
    * Detecting and handling of button delay and repeat when held-down on IR remote control
    * Various optimizations and improvements in packet parsing and handling (PacketToJson.ino)

0.2.2
    VanBusRx.cpp:
    * Added methods TVanPacketRxQueue::Disable() and TVanPacketRxQueue::Enable(), to be used when other
      timing-critical / interrupt-driven tasks need to be done, like e.g. writing to SPIFFS (SPI Flash File System).
    * Method TVanPacketRxQueue::Setup() returns false if already setup
    * Experimental: accept a few "slightly-off" SOF bytes (normally always 0x0E)

    VanBusRx.h:
    * Added method TVanPacketRxQueue::IsSetup(), to check if the Setup() method was called

    examples/DisplayNotifications.ino:
    * Offer interactivity via menu on Serial

    examples/LiveWebPage.ino:
    * Various bugfixes and updates on parsing sat nav data structures
    * Small update in parsing FM tuner data
    * Updates in parsing and presentation of sat nav status and guidance data
    * "cd_changer_current_disc": set to "---" if no discs present
    * Show also ESP (hardware/board) data
    * Added packet category VAN_PACKETS_COM2000_ETC for filtering serial output
    * Various updates and bugfixes

    examples/PacketParser.ino
    * Various updates and bugfixes

0.2.1
    VanBusRx.cpp: various changes that seem to decrease the number of packets with CRC errors

    Added parameter 'queueSize' to TVanPacketRxQueue::Setup(...), giving option to set queue size at runtime

    examples/LiveWebPage.ino:
    * Added separate 'Config.h' file for Wi-Fi settings
    * Added reading of infrared remote control
    * Added reading of ESP system data
    * Improved way to filter which packets are dumped (in JSON format) to Serial
    * Various packet parsing improvements

    examples/PacketParser.ino:
    * Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors
    * Various packet parsing improvements

    examples/DisplayNotifications.ino
    * Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors

    examples/SendPacket.ino
    * Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors

    examples/VanBusDump.ino
    * Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors

0.2.0
    Added function to transmit packets onto the VAN bus:
    * New class 'TVanBus' with single instance 'VanBus'.
    * New class 'TVanPacketTxQueue' with single instance 'VanBusTx'.
    * Renamed existing class instance 'VanBus' to 'VanBusRx'.
    Still lots of TODOs: see code. Also:
    * Transmitting an in-frame response
    * Transmitting a "read" packet then receiving the in-frame response

    Added 'DisplayNotifications.ino' example - send all MFD warnings, one by one.

    Added 'SendPacket.ino' example - show all received information from the VAN bus on a "live" web page.

    Added 'LiveWebPage.ino' example - send a packet on the VAN bus.

    Many improvements and documentation updates.

0.1.2
    Added 'PacketParser.ino' example sketch, showing all packets that I could decode from my vehicle.

    Various small improvements, including:
    * FloatToStr(...): save 12 statically allocated bytes of precious RAM.
    * nBitsFromCycles(...): small correction seems to decrease number of CRC errors.
    * TIsrDebugPacket::Dump(...): fix to be in line with the parsing by PinChangeIsr().
    * class TVanPacketRxQueue:
      - 'Receive' method: optionally report queue overrun condition.
      - 'DumpRaw' method: various changes in output formatting, added option to change last character, e.g. to '\0'
        for dumping into char array.
      - Removed '_full' flag: not necessary.
      - Added private method '_IsQueueOverrun()'.
      - Removed private method '_IsFull()'.
    * Updated 'library.json' and 'library.properties'.

0.1.1
    Removed mentioning ESP32 as supported hardware

0.1
    Initial version
