1# CHPP Release Notes
2
3A summary of notable changes is provided in the form of release notes. Dates are provided as yyyy-mm-dd. Note that this is not meant to be a detailed changelog; for a detailed change list, please refer to git commits.
4
5### 2020-03-04 (4c668b3)
6
7Initial release of CHPP.
8
9- CHPP transport and app layers
10- Loopback testing service
11
12### 2020-07-28 (7cebe57)
13
14This release enables service integration with WWAN / WiFi / GNSS devices based on the CHRE PAL API.
15
16- New functionality
17
18  - Reset and reset-ack implementation to allow either peer to initialize the other (e.g., upon boot)
19  - Discovery service to provide a list of services
20  - Discovery client to match clients with discovered services
21  - Standard WWAN service based on the CHRE PAL API
22  - Standard WiFi service based on the CHRE PAL API
23  - Standard GNSS service based on the CHRE PAL API
24  - Standard WWAN client based on the CHRE PAL API
25
26- Updates and bug fixes to existing layers, including
27
28  - Better logging to assist verification and debugging
29  - Error replies are sent over the wire for transport layer errors
30  - Over-the-wire preamble has been corrected (byte shifting error)
31
32- API and integration changes
33
34  - App layer header now includes an error code
35  - App layer message type now occupies only the least significant nibble (LSN). The most significant nibble (MSN) is reserved
36  - chppPlatformLinkSend() now returns an error code instead of a boolean
37  - Added initialization, deinitialization, and reset functionality for the link layer (see link.h)
38  - Condition variables functionality needs to be supported alongside other platform functionality (see chpp/platform/)
39  - Name changes for the logging APIs
40
41### 2020-08-07 (0b41306)
42
43This release contains bug fixes as well as the loopback client.
44
45- New functionality
46
47  - Loopback client to run and verify a loopback test using a provided data buffer
48
49- Cleanup and bug fixes
50
51  - Corrected sequence number handling
52  - Updated log messages
53  - More accurate casting into enums
54
55### 2020-08-27 (8ab5c23)
56
57This release contains additional clients, a virtual link layer for testing (e.g., using loopback), and several important bug fixes.
58
59- New functionality
60
61  - Basic implementation of the standard WiFi client based on the CHRE PAL API
62  - Basic implementation of the standard GNSS client based on the CHRE PAL API
63  - Virtual link layer that connects CHPP with itself on Linux to enable testing, including reset, discovery, and loopback
64
65- Cleanup and bug fixes
66
67  - Client implementation cleanup
68  - Client-side handling of close responses
69  - Reset / reset-ack handshaking mechanism fixed
70  - Loopback client fixed
71  - Enhanced log messages
72  - Service command #s are now sequential
73
74- API and integration changes
75
76  - Platform-specific time functionality (platform_time.h)
77
78### 2020-10-01 (95829e3)
79
80This release updates client functionality using the parser, adds a transport-layer loopback mechanism for testing and debugging, and includes several important bug fixes.
81
82- New functionality
83
84  - Parser for CHPP -> CHRE Data Structure Decoding
85  - Completed client functionality using parser-generated functions
86  - Transport-layer-loopback client and service. The Transport-layer loopback ignores app layer functionality and state, as well as checksums and sequence numbers
87
88- Cleanup and bug fixes
89
90  - Improved compiler compatibility for MSVC, as well as when enabling additional compiler warning flags
91  - Fixed handling of fragmented datagrams
92  - Corrected MTU calculation
93  - Corrected loopback assert
94  - Slimmer OOM logging
95  - Parser code and header files were relocated
96
97### 2021-02-08 (f1d249c)
98
99In addition to enhancements and bug fixes, this release enables error and reset handling and several other features.
100
101- New functionality
102
103  - ARQ implementation. Note that it is necessary to either implement chppNotifierTimedWait() or a single-threaded workaround as described in QUICKSTART.md to detect timeouts
104  - Checksum support via IEEE CRC-32. A sample implementation is provided, but it is expected that most devices have optimized implementations available or may prefer implementations with alternate optimization criteria
105  - Timesync functionality and timestamp offset correction for WiFi and WWAN measurements
106  - Reset handling throughout the transport layer, clients, and services, opening and recovering state as needed
107  - WiFi RTT client and service support
108  - Multiple loopback client support
109  - Transport-layer-loopback client validates response and returns the result
110  - Support for pseudo-opening services at the client, so they appear always available
111  - Correct responses generated at clients when async requests fail at services
112
113- Cleanup and bug fixes
114
115  - Client and service fixes including length and bound checks, missing implementations
116  - Parser fixes including empty pointers set to null, compatibility with processors lacking unaligned access support
117  - Stability fixes throughout CHPP and tests
118  - Improved compiler compatibility for C99+ and pre-C99 systems (even though CHPP does not officially support pre-C99)
119  - Updated documentation and logging
120
121### 2021-03-25 (f908420)
122
123This release updates the built-in timesync and checksum functionality and addresses bugs and compatibility issues.
124
125- Updated functionality
126
127  - Timesync is redesigned to become non-blocking
128  - Outgoing checksums are enabled by default
129  - An updated sample CRC32 implementation is provided (It is still expected that devices that have existing, optimized implementations use their own)
130  - Client deinitialization and reset support
131
132- Cleanup and bug fixes
133
134  - Logging updates, including reset reasoning, avoiding %s for compatibility
135  - Stability fixes and cleanup throughout CHPP and tests, including the reopening flow, permanent_failure state, and a memory leak
136  - Testing improvements
137
138### 2021-05-24 (c9bfae3)
139
140This release enables better identification of end-of-packets as well as addressing bugs and compatibility issues.
141
142- Updated functionality
143
144  - Rx timeout detection
145  - Rx MTU enforcement
146  - Support for Rx end-of-packet notifications from the link layer (optional, platform dependent)
147
148- Cleanup and bug fixes
149
150  - Reset functionality cleanup, including updating the functionality of CHPP_TRANSPORT_MAX_RETX and CHPP_TRANSPORT_MAX_RESET to reflect their intent accurately
151  - Pseudo-open clients remain pseudo-open after open failures
152  - Fixed reopen failures after transport reset
153  - Added missing WiFi ranging service response
154  - Memory allocation and initialization improvements
155  - Mutex handling improvements
156  - Compatibility fixes
157  - Testing improvements
158
159### 2021-06-17 (this)
160
161This release adds request timeout support at the client and addresses several bugs and compatibility issues throughout CHPP, including fixing open-state tracking at the service. Note that with the corrected open-state tracking, it is essential for services to correctly implement the close() PAL API so that it disables any ongoing requests and returns to a clean state.
162
163- Updated functionality
164
165  - Client request timeout support
166
167- Cleanup and bug fixes
168
169  - Service open-state tracking
170  - Memory handling fixes
171  - Added GNSS passive location listener service response
172  - Enforced error code requirements on service responses
173  - Fixed ARQ handling of duplicate packets
174  - Client request/response state refactoring
175  - Client registration cleanup
176  - Reset handling fixes
177  - Testing improvements
178