# CHPP Release Notes A 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. ### 2020-03-04 (4c668b3) Initial release of CHPP. - CHPP transport and app layers - Loopback testing service ### 2020-07-28 (7cebe57) This release enables service integration with WWAN / WiFi / GNSS devices based on the CHRE PAL API. - New functionality - Reset and reset-ack implementation to allow either peer to initialize the other (e.g., upon boot) - Discovery service to provide a list of services - Discovery client to match clients with discovered services - Standard WWAN service based on the CHRE PAL API - Standard WiFi service based on the CHRE PAL API - Standard GNSS service based on the CHRE PAL API - Standard WWAN client based on the CHRE PAL API - Updates and bug fixes to existing layers, including - Better logging to assist verification and debugging - Error replies are sent over the wire for transport layer errors - Over-the-wire preamble has been corrected (byte shifting error) - API and integration changes - App layer header now includes an error code - App layer message type now occupies only the least significant nibble (LSN). The most significant nibble (MSN) is reserved - chppPlatformLinkSend() now returns an error code instead of a boolean - Added initialization, deinitialization, and reset functionality for the link layer (see link.h) - Condition variables functionality needs to be supported alongside other platform functionality (see chpp/platform/) - Name changes for the logging APIs ### 2020-08-07 (0b41306) This release contains bug fixes as well as the loopback client. - New functionality - Loopback client to run and verify a loopback test using a provided data buffer - Cleanup and bug fixes - Corrected sequence number handling - Updated log messages - More accurate casting into enums ### 2020-08-27 (8ab5c23) This release contains additional clients, a virtual link layer for testing (e.g., using loopback), and several important bug fixes. - New functionality - Basic implementation of the standard WiFi client based on the CHRE PAL API - Basic implementation of the standard GNSS client based on the CHRE PAL API - Virtual link layer that connects CHPP with itself on Linux to enable testing, including reset, discovery, and loopback - Cleanup and bug fixes - Client implementation cleanup - Client-side handling of close responses - Reset / reset-ack handshaking mechanism fixed - Loopback client fixed - Enhanced log messages - Service command #s are now sequential - API and integration changes - Platform-specific time functionality (platform_time.h) ### 2020-10-01 (95829e3) This release updates client functionality using the parser, adds a transport-layer loopback mechanism for testing and debugging, and includes several important bug fixes. - New functionality - Parser for CHPP -> CHRE Data Structure Decoding - Completed client functionality using parser-generated functions - Transport-layer-loopback client and service. The Transport-layer loopback ignores app layer functionality and state, as well as checksums and sequence numbers - Cleanup and bug fixes - Improved compiler compatibility for MSVC, as well as when enabling additional compiler warning flags - Fixed handling of fragmented datagrams - Corrected MTU calculation - Corrected loopback assert - Slimmer OOM logging - Parser code and header files were relocated ### 2021-02-08 (f1d249c) In addition to enhancements and bug fixes, this release enables error and reset handling and several other features. - New functionality - ARQ implementation. Note that it is necessary to either implement chppNotifierTimedWait() or a single-threaded workaround as described in QUICKSTART.md to detect timeouts - 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 - Timesync functionality and timestamp offset correction for WiFi and WWAN measurements - Reset handling throughout the transport layer, clients, and services, opening and recovering state as needed - WiFi RTT client and service support - Multiple loopback client support - Transport-layer-loopback client validates response and returns the result - Support for pseudo-opening services at the client, so they appear always available - Correct responses generated at clients when async requests fail at services - Cleanup and bug fixes - Client and service fixes including length and bound checks, missing implementations - Parser fixes including empty pointers set to null, compatibility with processors lacking unaligned access support - Stability fixes throughout CHPP and tests - Improved compiler compatibility for C99+ and pre-C99 systems (even though CHPP does not officially support pre-C99) - Updated documentation and logging ### 2021-03-25 (f908420) This release updates the built-in timesync and checksum functionality and addresses bugs and compatibility issues. - Updated functionality - Timesync is redesigned to become non-blocking - Outgoing checksums are enabled by default - An updated sample CRC32 implementation is provided (It is still expected that devices that have existing, optimized implementations use their own) - Client deinitialization and reset support - Cleanup and bug fixes - Logging updates, including reset reasoning, avoiding %s for compatibility - Stability fixes and cleanup throughout CHPP and tests, including the reopening flow, permanent_failure state, and a memory leak - Testing improvements ### 2021-05-24 (c9bfae3) This release enables better identification of end-of-packets as well as addressing bugs and compatibility issues. - Updated functionality - Rx timeout detection - Rx MTU enforcement - Support for Rx end-of-packet notifications from the link layer (optional, platform dependent) - Cleanup and bug fixes - Reset functionality cleanup, including updating the functionality of CHPP_TRANSPORT_MAX_RETX and CHPP_TRANSPORT_MAX_RESET to reflect their intent accurately - Pseudo-open clients remain pseudo-open after open failures - Fixed reopen failures after transport reset - Added missing WiFi ranging service response - Memory allocation and initialization improvements - Mutex handling improvements - Compatibility fixes - Testing improvements ### 2021-06-17 (this) This 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. - Updated functionality - Client request timeout support - Cleanup and bug fixes - Service open-state tracking - Memory handling fixes - Added GNSS passive location listener service response - Enforced error code requirements on service responses - Fixed ARQ handling of duplicate packets - Client request/response state refactoring - Client registration cleanup - Reset handling fixes - Testing improvements