Skip to content

Releases: libcsp/libcsp

v2.1

11 Oct 09:35

Choose a tag to compare

New

  • Add reproducible builds
  • Move to reStructuredText and automated documentation deployment
  • Add convenient macros like __noinit, __weak, __packed, etc.
  • Add simple sample code under samples/
  • Add separate csp_server and csp_client in addition to csp_server_client
  • Add raw Ethernet driver for Linux
  • Add CAN drivers for Zephyr
  • Begin adding unit tests
  • Enable -Wpointer-arith
  • Enable -Wpedantic

Break

  • Rename csp_autoconfig.h to build/include/csp/autoconfig.h

Removed

  • Remove additional Windows and macOS support

Improvement

  • Update documentation
  • Improve C++ support by adding extern "C"
  • Improve Python support
  • Update examples with various features
  • Update support for FreeRTOS, POSIX, and Zephyr
  • Update build systems: Waf, Meson, and CMake
  • Update various libcsp core modules:
    • bridge, conn, crc32, dedup, id, iflist, io, port, packet
    • promisc, queue, rdp, route, service, sfp, yaml, and more
  • Update various libcsp device drivers:
    • can, socketcan, eth, usart
  • Update various libcsp interface drivers:
    • can, eth, kiss, tun, udp, zmq, loopback

New Contributors

Full Changelog: v2.0...v2.1

v2.0

23 Apr 08:15

Choose a tag to compare

New:

  • CSP Header 2.0. Support for 14-bit network addresses.
  • CFP (Can fragmentation protocol) 2.0
  • Layer-3 broadcast (last address of each subnet)
  • One CSP address per interface
  • Meson build system
  • CMake build system
  • Went back to use more compile time configuration for less runtime checks and simpler memory allocation
  • Connection less callbacks. The router now supports executing small services directly using a callback saving memory
  • csp_if_udp: New UDP interface for point to point UDP links
  • csp_if_tun: New IPsec like tunnel interface for secured links
  • csp_crc32_verify: now checks data + header, but still accepts checksum on data only. Default is still data only (will change in 2.1)

Improvement:

  • Support for 2k packets on CAN, KISS, UDP, ZMQ and others
  • Uses only static memory allocation
  • FreeRTOS 8+ support
  • Decrease csp_dedup timeout from 1s to 100ms to avoid removing duplicate ACK packets in RDP streams
  • Shorter debug message texts for smaller flash footprint
  • uart driver linux. enable low latency mode
  • socketcan: Setup sjw in can driver
  • Portability. No more use of packed bitfields.
  • RDP RX/TX queue is now global, saving a lot of memory
  • FreeRTOS now uses taskNotify API instead of binary semaphores

Removed:

  • --install-csp option from waf (replaced with waf install)
  • XTEA has been removed, use a dedicated encryption library instead
  • csp_endian.h: Use the system provided <endian.h> instead (which is faster and smaller)
  • csp_malloc.h: libcsp no longer uses dynamic allocation
  • Windows Support (moved to contrib, maintainer needed)
  • Mac OSX Support (moved to contrib, maintainer needed)
  • Incoming QoS. This didn't make much sense anyways, so a single fifo is now used
  • Tasklist

API:

  • csp_send(): Now always frees the packet and returns void.
  • csp_init(): Now a void function, because allocation cannot fail
  • python bindings: Refreshed to new 2.0 api, builds with meson too
  • Interface names are now case sensitive (this is faster and avoids pulling in ctypes and saves 340 bytes of flash)
  • csp_socket(): is replaced by simply csp_socket_t my_sock; static allocation. This is very leightweight
  • csp_bind_callback(): instead of using a socket, and binding that socket to a port.
  • new debug API. CSP does not print error messages any longer. Instead a new series of error counters has been added and a new error code system. There are flags to enable the old level 4 and 5 debug to stdout with printf.
  • csp reboot and shutdown are now implemented using hooks instaed of callback functions (see hooks.md)

Fixes:

  • Router counts incoming packets before deduplication
  • RDP: Fix ack_delay_count off by one error
  • RTable CIDR: continue parsing, even if an unknown interface is found
  • Fix buffer overflow in KISS mode if packets are too long
  • Buffer overrun in RDP EACK #157