Skip to content
  • Ken A. Redergård's avatar
    Consolidate SoftDevice APIs (#176) · 236d10fc
    Ken A. Redergård authored
    Changes:
    * Consolidate SoftDevice API v2, v3, v5 and v6
    
    We've had feedback from users telling us that it is not easy to
    know what version of pc-ble-driver to use towards a given SoftDevice
    API version.
    
    We have also experienced that it is time consuming when maintaining
    the pc-ble-driver project to have separate releases of pc-ble-driver for
    different major versions.
    
    This commit starts a strategy where we release all
    SoftDevice API versions in every release of pc-ble-driver.
    
    It also reuse parts of the codecs from the nRF5 SDK for SoftDevice
    API v3 and onwards since parts of those are backwards compatible.
    
    * Port connectivity firmware build script to cmake (#136, ++)
    
    New build system for connectivity firmware
    The previous way of building the connectivity firmware was a lot of manual steps supported by Windows .bat files and Cygwin/msys bash scripts.
    
    The new build system has the following changes:
    - uses a directory structure convention to automatically determine what and how to build the connectivity firmware
    - supports Windows, Linux and macOS
    
    The build system does the following:
    - Downloads nRF5 SDK
    - Applies patches to nRF5 SDK
    - Searches for connectivity firmware projects
    - Compiles connectivity firmware for combinations of SoftDevice API version, nRF family and transports (usb, 115k2, 1m)
    - Merges connectivity with SoftDevice (by invoking mergehex)
    - Creates DFU packages where relevant (by invoking nrfutil)
    
    * Replace boost::asio with ASIO and remove boost dependency (#131)
    
    The boost library is large and only the serial port
    part is used. This commit removes the boost
    dependency by using ASIO instead of pulling
    in large portions of the boost library.
    
    * Add custom SD RPC error codes (#146)
    
    Previously NRF_ERROR_INTERNAL was returned for all errors.
    Adding a custom range of error codes for SD RPC errors makes it easier to triage bugs.
    
    This is a breaking change to the API since NRF_ERROR_INTERNAL is not returned on SD RPC errors.
    
    * Add clang tidy and format configuration
    
    * Remove union name in structs
    
    SWIG has a bug that when using a named union in a struct,
    see swig/swig#1305.
    
    * Automatically setup and run integration tests (#134)
    
    This adds the ability to run the integration tests
    automatically with the use of CMake targets.
    
    The CMake targets program the development kits with the correct
    connectivity firmware and then runs the relevant tests
    for the development kit type and SoftDevice API version.
    
    * Upgrade connectivity to nRF5 SDK 15.2 (#149, ++)
    * Add non-standard baud-rates on macOS (#152)
    * Add support for 64-bit architecture on app side
    
    Bug fixes:
    * Fix nRF52840 open close reset issue (#162)
    * Fix bugs in GAP state when using two or more BLE adapters:
     - BLE security keys are overwritten
     - Advertisement data received are blocked (SDv6)
     - Invoking a different adapter in another adapter's callback make encoding/decoding confused
    * Fix/SEGGER J-Link-OB hardware flow control detection (#172)
    * Fix deadlock issue that may happen if open/close is called successively
    * Fix segfault on reception of ACK packet
    * Handle packets states without exit criteria (#144)
    236d10fc