forked from libcsp/libcsp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
210 lines (201 loc) · 11.5 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
libcsp 2.0, xx-yy-zzzz
----------------------
- new: CSP Header 2.0. Support for 14-bit network addresses.
- new: CFP (Can fragmentation protocol) 2.0
- new: Layer-3 broadcast (last address of each subnet)
- new: One CSP address per interface
- new: Meson build system
- new: CMake build system
- new: Went back to use more compile time configuration for less runtime checks and simpler memory allocation
- new: Connection less callbacks. The router now supports executing small services directly using a callback saving memory
- new: csp_if_udp: New UDP interface for point to point UDP links
- new: csp_if_tun: New IPsec like tunnel interface for secured links
- new: 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
- improvement: Uses only static memory allocation
- improvement: FreeRTOS 8+ support
- improvement: Decrease csp_dedup timeout from 1s to 100ms to avoid removing duplicate ACK packets in RDP streams
- improvement: Shorter debug message texts for smaller flash footprint
- improvement: uart driver linux. enable low latency mode
- improvement: socketcan: Setup sjw in can driver
- improvement: Portability. No more use of packed bitfields.
- improvement: RDP RX/TX queue is now global, saving a lot of memory
- improvement: FreeRTOS now uses taskNotify API instead of binary semaphores
- removed: XTEA has been removed, use a dedicated encryption library instead
- removed: csp_endian.h: Use the system provided <endian.h> instead (which is faster and smaller)
- removed: csp_malloc.h: libcsp no longer uses dynamic allocation
- removed: Windows Support (moved to contrib, maintainer needed)
- removed: Mac OSX Support (moved to contrib, maintainer needed)
- removed: Incoming QoS. This didn't make much sense anyways, so a single fifo is now used
- removed: Tasklist
- api: csp_send(): Now always frees the packet and returns void.
- api: csp_init(): Now a void function, because allocation cannot fail
- api: python bindings: Refreshed to new 2.0 api, builds with meson too
- api: Interface names are now case sensitive (this is faster and avoids pulling in _ctypes_ and saves 340 bytes of flash)
- api: csp_socket(): is replaced by simply `csp_socket_t my_sock;` static allocation. This is very leightweight
- api: csp_bind_callback(): instead of using a socket, and binding that socket to a port.
- api: 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.
- api: csp reboot and shutdown are now implemented using hooks instaed of callback functions (see hooks.md)
- fix: router counts incoming packets before deduplication
- fix: rdp: Fix ack_delay_count off by one error
- fix: rtable cidr: continue parsing, even if an unknown interface is found
- fix: Fix buffer overflow in KISS mode if packets are too long
- fix: Buffer overrun in RDP EACK #157
Todo:
- interface: I2C needs to be tested with CSP 2.0
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)