Releases: smartdevicelink/sdl_core
Hotfix Release 4.4.2
Supported Specifications
- SDL Mobile RPC Spec: Version 4.5.1
- SDL Protocol Spec: Version 5.0.0 (minimum 2.0.0)
Bug Fixes
Release 5.0.0
Supported Specifications
- SDL Mobile RPC Spec: Version 5.0.0
- SDL Protocol Spec: Version 5.1.0 (minimum 2.0.0)
Implemented Proposals / New Features
-
[SDL 0043] Move to the new C++11 standard - C++11 unique_ptr, shared_ptr, atomic utils implemented
-
[SDL 0044] Use Boost library in SDL - Boost Locks, Date/Time, and Filesystem utils implemented
-
[SDL 0122] Handling VR help requests when application does not send VR help prompt
-
[SDL 0181] SDL shall not put RC applications to HMI level NONE when user disables RC in HMI
-
[SDL 0165] Remote Control Lights More Names and Status Values
-
[SDL 0099] New remote control modules (LIGHT, AUDIO, HMI_SETTINGS) and parameters (SIS Data)
-
[SDL 0178] Interior Vehicle Data Subscription Management and Data Caching in SDL
-
[SDL 0150] Enhancing onHMIStatus with a New Parameter for Video Streaming State
-
[SDL 0041] Provide AppIcon resumption across app registration requests
-
[SDL 0139] Clarification of audio format details of AudioPassThru
-
[SDL 0172] Remote Control - Update OnRCStatus with a new allowed parameter
-
[SDL 0145] Driver Distraction Notification Upon Registration
-
[SDL 0110] Remove QT HMI from SDL Core - Fully removed from project
-
[SDL 0149] Add capability to disable resumption based on app type and transport type
-
[SDL 0042] SDL must transfer RPCs with invalid image reference parameters to the HMI
Bug Fixes
-
SDL process RC requests with resultCode DISALLOWED after IGN_OFF and IGN_ON
-
SDL does not cut parameters not related to defined module type from RC.SetInteriorVD
-
EXTERNAL_PROPRIETARY user consent is broken when permissions are in default object
-
Processing invalid PT after cutting off unknown_parameter or unknown_RPC
-
SDL must close only session in case mobile app does not answer on Heartbeat_request
-
Wrong policy permissions calculation in EXTERNAL_PROPRIETARY flow
-
Deprecated GetDataOnSessionKey() cannot be overloaded in cross-compiling
-
V5 Protocol Messages do not encrypt payload of Control Frame Message Types
-
Add missing RPC changes: SpaceAvailable & CurrentTemperatureAvailable
-
Empty moduleType disallows all RPC requests after ignition cycle
-
OnHMIStatus returns null hmiLevel if RPC has invalid/incomplete parameters
-
Cert processing invalid, module certificate should be updated when a policy table update occurs
-
Cert processing invalid, CertificatePath and CACertificatePath keywords are nonfunctional
-
Duplicate "PendingRequestsAmount" entries in smartDeviceLink.ini
Enhancements
...
Hotfix Release 4.1.4LTS
Bugfix release which includes the following changes:
Release 4.5.1
Supported Specifications
- SDL Mobile RPC Spec: Version 4.5.0
- SDL Protocol Spec: Version 5.0.0 (minimum 2.0.0)
Hot Fixes Included
Release 4.5.0
Supported Specifications
- SDL Mobile RPC Spec: Version 4.5.0
- SDL Protocol Spec: Version 5.0.0 (minimum 2.0.0)
Implemented Proposals
Connectivity via iAP-BT and Transport Switch - Implementation of a mechanism to change a registered app connected over one transport to another seamlessly.
Mark public deprecated methods - Implemented a DEPRECATED macro for marking deprecated methods in the project. Using methods marked with this macro will result in a warning being generated.
Remove QT HMI from SDL Core (Partially Complete) - The qt_hmi
component was removed from SDL Core, the QT_HMI_API interface and dbus adapter will be removed in the next major release, due to this aspect of the proposal requiring breaking changes.
Use Boost Library (Partially Complete) - The boost
library is now installed as a 3rd party library, this library is currently only used in the refactored message broker component.
Enhancements
DBus
andlibusb
are now dynamically linked, instead of being installed as 3rd-party libraries during the SDL Core build - #2004
Bug Fixes
- Remove OEM Specific references in SDL policy table preload file
- "resultCode" should be more descriptive than "INVALID_DATA"
- SDL doesn't apply sequence SUSPEND -> OnSDLAwake -> SUSPEND -> IGN_OFF for saving resumption data
- SDL responds "resultCode: SUCCESS" while dataType:VEHICLEDATA_EXTERNTEMP is VEHICLE_DATA_NOT_AVAILABLE and not in subscribed list store
- Policies SDL should be case-insensetive to "AppID" against listed in policies manager
- App is disconnected due to PROTOCOL_VIOLATION when start audio streaming after rejected 2 times then accepted
- SDL doesn't set unsuccessful "message" value to "info" param in case HMI responds via single UI.RPC when Interface.IsReady missing
- Navigation SDL does not respond info message in case GENERIC_ERROR watchdog timeout from HMI
- SDL does not respond info message in case GENERIC_ERROR watchdog timeout from HM
- SDL doesn't send info parameter when result of ResetGlobalProperties is GENERIC_ERROR
- SDL does not send StopAudioStream() if exit app while Video service and Audio service are starting.
- APIs AlertManeuver: SDL responds GENERIC_ERROR instead of INVALID_DATA when soft button has Type is Image or Both and Text is whitespace or \t or \n or empty
- IVSU SDL doesn't reject SystemRequest with filenam=IVSU but w/o binary data.
- Memory leaks: SDL does not release memory after sending AddCommand limit exhausted
- Negative result code send instead of IGNORED for UnsubscribedVehicleData when VehicleInfo IsReady Missing
- API SDL responds "UNSUPPORTED_RESOURCE", success= false in case only have "UNSUPPORTED_RESOURCE" to Navigation.AlertManeuver
- Default app policies are never updated after a PTU
- Build fails with GCC6+
- Remote Control test suite fails
- PoliciesManager allows all requested params in case "parameters" field is empty
- OnDriverDistraction SDL does not send notification to app right after this app changes level from NONE to any other
- Protect access to Resumption data during LastState::SaveStateToFileSystem
- Need to protect cache manager "pt_" from concurrent access
- Prevent deadlock in EventDispatcherIimpl::raise_event
- Bluetooth StartService fail after Core restarted
- Silent error caused by implicit conversion of SmartPointer to integer
- AOA USB transport buffer size too small
- Lock screen icon URL should be updated
- Broken link in README.md for Software Architecture Documentation
- SDL doesn't send OnPermissionsChange in case of external user consent
- Build fails when ENABLE_SECURITY=OFF
Security Related Fixes
- SDL must start PTU for navi app right after app successfully registration
- SDL must start PTU for any app except navi right after app successfully request to start first secure service
- PolicyTableUpdate is failed by any reason and "ForceProtectedService"=ON at .ini file
- PolicyTableUpdate has NO "certificate" and "ForceProtectedService"=ON at .ini file
- SDL must respond NACK in case navigation app connected over protocol v2 sends StartService for audio service
- PolicyTableUpdate has NO "certificate" and "ForceProtectedService"=OFF at .ini file
- PolicyTableUpdate is failed by any reason and "ForceProtectedService"=OFF at .ini file
- PolicyTableUpdate is valid and brings "certificate"
Release 4.4.1
Release 4.4.0
Implemented Proposals
System Capabilities Query - Implementation of a new RPC which allows an app to query the capabilities of a specific component (i.e. video streaming, remote control) within a given integration of SDL Core.
Constructed Payloads - Addition of constructed payloads for control (non-RPC type) packets. These payloads allow for control packets to be more descriptive without using the overhead needed by an RPC message. The feature has been implemented using the BSON standard through use of the bson_c_lib. This includes the introduction of protocol version 5, versions prior to this do not support this feature.
Control Frame Payloads v1.0.0 - Introduced specific parameters that will be sent with a control frame's constructed payload. This is part of the introduction of protocol version 5, versions prior to this do not support this feature.
Support Indian English and Thai - Adds the possibility to support languages English - India
and Thai - Thailand
.
Support For Additional Languages - Adds the possibility to support 8 new languages.
Mobile Projection - Defines new AppHMIType PROJECTION
. This AppHMIType allows an app to use the same video streaming technologies as a navigation app.
Gesture Cancellation - Addition of a CANCEL
element to the TouchType Enum used during an OnTouchEvent RPC.
Add Video Streaming Capabilities - Allows core to notify the proxy of the HMI's video streaming capabilities. This addition also includes a video format negotiation procedure that uses a combination of RPC and constructed payload messages.
Adding Metadata Types - Add metadataTags
parameter to the Show RPC, as well as the new types MetadataTag
and MetadataType
. These additions allow for a more detailed description of the main field strings sent during a Show RPC request.
Human Interface Device Support - Implementation of the SendHapticData
RPC. This RPC sends the HMI an array of rectangle coordinates for focusable elements used during video streaming.
Remote Control Baseline - Implementation of a new core plugin/functional module RemoteControl
. This feature includes a set of RPCs that the proxy may use to control certain aspects of the HMI's climate and radio modules. Changes also include additions to the GetSystemCapability
RPC and policy configurations.
Update Mobile API Mandatory Flag - Update formatting of MOBILE_API.xml
to include the mandatory
flag on all parameters.
Bug Fixes
Video Streaming Related
- Core still sends out deprecated Service Data ACK frames
- Proper Cleanup for the StreamerAdapter class
- SDL does not send StopStream/StopAudioStream to HMI after unregistering app during streaming
Connection Related
- TransportManager that incorrectly deletes a connection object within a C++ map iterator loop
- Core cannot find App via BT
- Connection List Lock is Not Released
- Invalid memory access in websocket_handler
Policy Related
- SDL does not set "timeout" for OnSystemRequest with url
- Policies Manager does not revert the Local Policy Table to the Preload Policy Table upon FACTORY Rese
- SDL does not write UserFriendlyMessages to DB
- SDL dos not select url from PT for specified appID during GetURLs request.
- PM should verify that "seconds_between_retries" array has maxlength 5
- SDL does not apply url from PT for specified appID for OnSystemRequest
- PM doesn't validate the size of section "default" in "endpoints" of Policy Table
- Policy table can't be loaded when RPCs added in functional_group is greater than 50.
- PT is considered as valid with no items in "groups" sub-section from "default"
Documentation
General Fixes
- media_manager_test fails with EXTENDED_MEDIA_MODE=ON
- Memory leak in FromMicToFileRecorderThread
- Invalid memory access in FromMicToFileRecorderThread
- SDL does not reset the default watchdog timeout of GetWayPoints request if HMI sends OnResetTimeout notification for this request
- SDL sends BC.UpdateDeviceList with out of upper bound size of deviceList
- HashID should not be updated on successful single UI. if no UI.IsReady response
- OpenSDL repo still contains old "generate_test_certificates.py" script.
- SDL does not send VehicleInfo.GetVehicleData in case HMI responds invalid json
- SDL print out CN and serialNumber details of certificates in log.
- SDL returns IGNORED instead of UNSUPPORTED_RESOURCE for UnsubscribeButton
- SDL must respond with INVALID_DATA on SystemRequest that uploads a file containing
../
sequences
Release 4.3.1
Bug Fixes
- ListFiles request now queries the file system on each request instead of referring to a cached list - #1393
Release 4.3.0
New Features
EXTENDED_POLICY modes:
- The
EXTENDED_POLICY
CMake variable (previouslyENABLE_EXTENDED_POLICY
) now has three possible configurations
EXTERNAL_PROPRIETARY mode:
New policy table update sequence
A new policy table update flow was created specifically for the EXTERNAL_PROPRIETARY
policy mode
- Requirements/Details - #933
- Diagram - https://user-images.githubusercontent.com/10549248/26896053-9417c604-4b91-11e7-9e47-524c930eb542.png
External Policy Manager
As part of the EXTERNAL_PROPRIETARY
policy mode, the concept of an "external policy manager" is necessary. This policy manager is a separate program which is in charge of encrypting/decrypting policy tables and attaching an HTTP header to the OnSystemRequest payload when performing a Policy Table Update.
As part of this release, a sample application which performs this function was added to this repository for those who wish to implement this new policy mode, and this program can be started along with Core using an included bash script. This sample application does nothing with the policy table snapshot during the encryption and decryption phases, allowing for OEMs to implement their own encryption algorithms in their place.
App permissions/User consent
Users can now control what functional groups that they want apps to be able to access, as well as decide whether to enable SDL functionality at all on a device-by-device basis.
- Logic was added to allow the user to control what devices are permitted to use SDL functionality - #934
- Users are prompted when activating an app on a new device for the first time whether or not to allow the device to use SDL functionality (sequence shown in this diagram)
- Logic was added to the Policy Manager to allow the user to control what apps have access to specific functional groups - #939
- Users are prompted when activating an app for the first time (or modifying permissions in settings) with information on what access a requested functional group requires. The user responds to determine whether or not to allow this functionality within the new app (sequence shown in this diagram)
External user consent
External user consent allows the HMI to define several groups of permissions within the policy table. This allows the user to enable/disable several functional groups at once.
- The
externalConsentStatus
field is included as part of a GetListOfPermissions response from SDL Core to communicate which groups are activated - #1047 - External consent groups can be used to enable sets of functional groups using the
disallowed_by_external_consent_entities_off
field in the Policy Table - #1049 - External consent groups can be used to disable sets of functional groups using the
disallowed_by_external_consent_entities_on
field in the Policy Table- If this external consent group is set to
ON
, all functional groupings with this parameter are disallowed by the user - If this external consent group is set to
OFF
, all functional groupings with this parameter are allowed by the user
- If this external consent group is set to
Cache Manager Function Implementations
Prior to this release, several functions included in cache_manager.cc were not fully implemented and would not query the local policy table for defined rules and policies. The newly implemented functions for the EXTERNAL_PROPRIETARY
cache manager are listed below:
- CanAppKeepContext()
- CanAppStealFocus()
- GetDefaultHMI()
- ResetUserConsent()
- GetUserPermissionsForDevice()
- GetPreconsentedGroups()
- GetConsentedGroups()
- GetUnconsentedGroups()
- RemoveAppConsentForGroup()
- GetDeviceGroupsFromPolicies()
- SetDeviceData()
- SetUserPermissionsForDevice()
- ReactOnUserDevConsentForApp()
- SetUserPermissionsForApp()
- CountUnconsentedGroups()
- SetMetaInfo()
- IsMetaInfoPresent()
- SetSystemLanguage()
- CleanupUnpairedDevices()
- SetVinValue()
- ResetPT()
Security behavior
Requirements/Details - #937
HMI_API additions:
A new RPC was added as part of the implementation of EXTERNAL_PROPRIETARY
policy mode
Several API additions were made as part of the implementation of the external user consent feature
- EntityStatus enum
- ExternalConsentStatus struct
- externalConsentStatus field added to OnAppPermissionConsent and GetListOfPermissions
Implemented proposals
Two new evolution proposals were implemented in release 4.3.0:
- Add API Patch Version SDL-0050
- A patch version was added to the MOBILE API version, HMI API interface versions, and SyncMsgVersion struct
- External Policy Manager SDL-0045
- Details for the implementation of this proposal can be found in the
External Policy Manager
section of these release notes
- Details for the implementation of this proposal can be found in the
Fixes
Release 4.2.3
Hotfix release with API fixes:
- Fixed GetWayPoints implementation. The
wayPointType
parameter is now mandatory in the GetWayPoints mobile and HMI request. MissingwayPoints
parameter was added to the GetWayPoints response. - Fixed the function IDs for all WayPoints related message in the Mobile API.
- Update Mobile API, HMI API versions to reflect API fixes.