libcsp 1.6, 16-04-2020
----------------------
- Updated documentation.
- Updated Python bindings, removed Python2 support.
- Removed timeout for send (internally only) and interface tx functions - the timeout was only used on I2C interface.
- Updated example code to a single csp_server_client.c implementation.
- Renamed (scoped) clock_set_time()/clock_get_time() to csp_clock_set_time()/csp_clock_get_time()
- Changed csp_sys_reboot()/csp_sys_shutdown() to use callbacks, default POSIX impl. in csp/arch/posix/csp_system.h.
- Added support for timestamps in logs by setting CSP_DEBUG_TIMESTAMP (uses csp_clock_get_time()).
- Renamed mac to via (structs, functions, examples and documentation)
- RDP: Ensure connection is kept in CLOSE_WAIT for period of time. In some cases, the connection would switch to CLOSED immediately.
- RDP: Fixed connection leak, if a RST segment was received on a closed connecton.
- RDP: Ensure connection is closed from both userspace and protocol, before closing completely (preventing undetermined behaviour).
- RDP: Added support for fast close of a connection (skipping the CLOSE_WAIT period), but only if both ends agree on close.
- RDP: Fixed issue "Possible bug in RDP TX timeout" (#109), see issue on github for further details.
- Added Travis-CI support on Github, build: Linux, Mac and Windows.
- Changed #ifdef/ifndef to single #if in order to support forced disabling and alignment with log macro's.
- Updated thread API, documentation, aligned implementation
- Refactored all CSP interfaces.
   - Accept csp_route_t, instead of csp_iface_t.
   - No static members -> multiple interfaces of all types.
      - Added csp_iface_t.interface_data for interface data.
      - Added csp_iface_t.driver_data for driver data (unknown to interface level).
   - Check for buffer overrun
   - Set MTU if not already set, and it make sense on the respective interface.
   - Driver Tx function is now a callback, must be set by the application (in the interface data).
- csp_packet_t (and other structs) are no longer packed (increases performance), padding is increased from 8->10 bytes for alignment.
- Refactored rtable CIDR/static implementation:
   - Use same format for storing table (text).
   - Added csp_route_t to hold route entry, e.g. interface and via.
   - Replaced csp_rtable_find_iface()/csp_rtable_find_mac() with csp_rtable_find_route()
- Added csp_get_memfree()/csp_get_buf_free()/csp_get_uptime(), which returns an error code.
- Improved logging, check level before doing the actual call. Added support for external log macros.
- Removed unused defines/functions: csp_conn_lock, csp_conn_unlock, CSP_PROMISC
- Replaced CSP_MAX_DELAY and CSP_INFINITY with CSP_MAX_TIMEOUT (same value).
- Added csp_calloc(), csp/arch/csp_malloc.h
- Added csp_buffer_data_size(), csp/csp_buffer.h
- Updated header documentation (doxygen).
- Restructured header includes.
- api: Added const for read-only pointers.
- api: Changed a number of uint8_t pointers to void to avoid cast.

libcsp 1.5-internal, 21-08-2018
-------------------------------
- Internal release.
- New python bindings with examples and python3 support.
- Introduced csp_conf_t, which replaces a number of compile options. This has broken csp_init().
- Refactored CAN interface.
- Bug fixes.

libcsp 1.4, 07-05-2015
----------------------
- new: General rtable interface with support for STATIC or CIDR format
- new: CIDR (classless interdomain routing) route table format with netmasks
- new: Bridge capability
- new: Added routing table (de)serialization functions for load/save
- new: Automatic packet deduplication using CRC32 (compile time option)
- new: Autogenerated python bindings using ctypesgen
- new: Task-less operation with router invocation from external scheduler function
- api: Refactor route_if_add to csp_iflist_add
- api: Refactor route_set and friends to rtable_set
- api: Refactor csp_fifo_qos to csp_qfifo
- api: Added defined to be backwards compatible with 1.x
- interfaces: Drop packets on LOOP interface not for own address (blackhole)
- interfaces: New ZMQHUB interface (using zeroMQ over TCP)
- other: Increase stack size from 250 to 1100 for csp_can_rx_task
- other: Cleanup in csp_route.c
- other: Show incoming interface name in debug message
- other: Remove newlines from debug calls
- improvement: Reduce debug hook function complexity with valist passing
- fix: csp_sleep_ms did not work

libcsp 1.3, 07-05-2015
----------------------
- new: Split long process lists into multiple packets
- new: Added posix csp_clock.h
- new: cmp clock functions (requires that you provide csp_clock.h implementation)
- new: Added SFP (Small fragmentation protocol) for larger data chunks
- fix: csp_if_fifo example
- fix: NULL char at the end of rps
- doc: Updated mtu documentation
- other: Tested with FreeRTOS 8.0
- other: Added disable-stlib option to build only object files

libcsp 1.2, 25-10-2013
----------------------
- Feature release
- New: CMP service for peek and poke of memory
- New: CMP interface statistics struct is now packed
- New: Faster O(1) buffer system with reference counting and automatic alignment
- New: Thread safe KISS driver with support for multiple interfaces
- New: CSP interface struct now holds an opaque pointer to driver handle
- New: removed TXBUF from KISS driver entirely to minimize stack usage, added TX lock instead
- New: Pre-calculated CRC table .romem or PROGMEM on __avr__
- New: Added buffer overflow protection to KISS interface
- New: Allow posting null pointers on conn RX queues
- New: Lower memory usage on AVR8
- New: csp_route_save and csp_route_load functions
- New: option --disable-verbose to disable filenames and linenumber on debug
- Protocol: KISS uses csp_crc32 instead of it own embedded crc32
- Improvement: Use buffer clone function to copy promisc packets
- Bugfix: Fix pointer size (32/16bit) in cmp_peek/poke
- Bugfix: Issue with double free in KISS fixed
- Bugfix: Change rdp_send timeout from packet to connection timeout to make sending task block longer
- Bugfix: Fix conn pool leak when using security check and discarding new packets
- Bugfix: Add packet too short check for CRC32
- Bugfix: Accept CRC32 responses from nodes without CRC support
- Bugfix: Ensure csp_ping works for packets > 256 bytes
- Bugfix: Cleanup printf inside ISR functions
- Bugfix: Do not add forwarded packets to promisc queue twice
- Bugfix: Fix return value bug of csp_buffer_get when out of buffers
- Bugfix: Always post null pointer with lowest priority, not highest
- Bugfix: Add check on debug level before calling do_csp_debug, fixes #35
- Other: Export csp/arch include files
- Other: Remove the use of bool type from csp_debug
- Other: Moved csp debug functions to csp_debug.h instead of csp.h
- Other: Ensure assignment of id happens using the uint32_t .ext value of the union, quenches warning

libcsp 1.1, 24-08-2012
----------------------
- Feature release
- Defacto stable since Feb 2012
- New: I2C interface
- New: KISS interface
- New: USART drivers for Linux, Mac and Windows
- New: Windows/MinGW support
- New: MacOSX support
- New: Interface register function
- New: Interface search function
- New: CMP service for remote route updating
- New: CMP service for interface statistics
- Improvement: Better QoS support
- Improvement: Send RDP control messages with high priority
- Improvement: WAF distcheck now works
- Improvement: Automatic endian discovery
- Improvement: Accept packets with CRC32 checksum if compiled without CRC32 support
- Improvement: Do not wake the router task if RDP is not enabled
- Improvement: Save 102 bytes of RAM by packing route entries
- Cleanup: Simplify CAN configuration
- Cleanup: Move architecture specific code to src/arch
- Bugfix: CSP_MEMFREE gives wrong answer on freertos AVR due to truncation
- Bugfix: Fixed wrong 64-bit size_t in csp_service_handler
- Bugfix: Fixed problem in csp_if_kiss when out of buffers
- Bigfix: Handle bus-off CAN IRQ for AT90CAN128

libcsp 1.0.1, 30-10-2011
------------------------
- Hotfix release
- Bugfix: missing extern in csp_if_lo.h

libcsp 1.0, 24-10-2011
----------------------
- First official release
- New: CSP 32-bit header 1.0
- Features: Network Router with promiscous mode, broadcast and QoS
- Features: Connection-oriented transport protocol w. flow-control
- Features: Connection-less "UDP" like transport
- Features: Encryption, Authentication and message check
- Features: Loopback interface
- Features: Python Bindings
- Features: CAN interface w. drivers for several chips
- Features: CSP-services (ping, reboot, uptime, memfree, buffree, ident)

