SDL Core 8.0.0 no longer supports Ubuntu 16. Supported versions of SDL Core are Ubuntu 18.04 and Ubuntu 20.04.
SDL Core 8.0.0 dropped support for libssl1.0. Developers should install libssl-dev instead of libssl1.0-dev.
ENABLE_HMI_PTU_DECRYPTION ENABLE_HMI_PTU_DECRYPTION was removed from the build configuration. Behaviors defined by ON/OFF options are now both supported without the need for this build flag.
The default logger is still using LOG4CXX but the option is now available to use Boost for the logger. When porting SDL Core to different Linux environments, the LOG4CXX logger was known to cause dependency issues. Boost is offered as an alternative logger in hopes of making porting SDL Core to different environments easier.
set(LOGGER_NAME "LOG4CXX" CACHE STRING "Logging library to use (BOOST, LOG4CXX)")
This parameter was added to the smartDeviceLink.ini configuration to compensate for transfer and processing time of requests. This value is added to the DefaultTimeout parameter when calculating the RPC request timeout. Previously, specific requests such as Alert were hardcoded to extend their default timeout, now timeout compensation is configurable and applied to all requests.
; Extra time to compensate default timeout due to external delays DefaultTimeoutCompensation = 1000
The default parameter AppIconsFolder was updated to use a directory named “icons”. This value used to be “storage”.
; Specify a dedicated folder, as old files in this folder can be automatically removed AppIconsFolder = icons
SDL Core 8.0.0 no longer automatically subscribes to CUSTOM_BUTTON. If an HMI supports soft buttons, it must include an entry for CUSTOM_BUTTON in its button capabilities in order for mobile to receive OnButtonPress and OnButtonEvent notifications.
The behavior of the PHONE_CALL event was changed to only affect the audioStreamingState of an app. Rather than automatically deactivating the active app, SDL Core will now only change the audioStreamingState of all apps to NOT_AUDIBLE when BC.OnEventChanged(PHONE_CALL, active=true) is sent, leaving each app's hmiLevel unchanged. This allows the HMI to start a phone call in the background without leaving the app screen, if desired.
The HMI can still control the hmiLevel of the app during a phone call event by sending BC.OnAppDeactivated(appID) and BC.OnAppActivated(appID) where appropriate.
Buttons.OnButtonSubscription notification was replaced by Buttons.SubscribeButton request and response.
<function name="SubscribeButton" messagetype="request"> <description> Subscribes to buttons. </description> <param name="appID" type="Integer" mandatory="true"> <description>The ID of the application requesting this button subscription. </description> </param> <param name="buttonName" type="ButtonName" mandatory="true"> <description>Name of the button to subscribe.</description> </param> </function> <function name="SubscribeButton" messagetype="response"> </function>
Buttons.UnsubscribeButton request and response were added to allow SDL Core to request that the HMI unsubscribes an application from a specific button.
<function name="UnsubscribeButton" messagetype="request"> <description> Unsubscribes from buttons. </description> <param name="appID" type="Integer" mandatory="true"> <description>The ID of the application requesting this button unsubscription. </description> </param> <param name="buttonName" type="ButtonName" mandatory="true"> <description>Name of the button to unsubscribe.</description> </param> </function> <function name="UnsubscribeButton" messagetype="response"></function>
UI.OnResetTimeout and TTS.OnResetTimeout were removed in place of using a broader RPC, BasicCommunication.OnResetTimeout.
This updated OnResetTimeout RPC can be used across all interfaces for all request functions.
The parameters in the notification have also changed:
- The parameter requestID is used instead of appID to identify which specific request should have its timeout extended.
- The parameter methodName should include the interface name and the RPC. For example: ”TTS.Speak”.
- The parameter resetPeriod allows the HMI to specify how long Core should delay the application request’s timeout.
<interface name="BasicCommunication"> ... <function name="OnResetTimeout" messagetype="notification" since="X.Y"> <description> HMI must send this notification to SDL for method instance for which timeout needs to be reset </description> <param name="requestID" type="Integer" mandatory="true"> <description> Id between HMI and SDL which SDL used to send the request for method in question, for which timeout needs to be reset. </description> </param> <param name="methodName" type="String" mandatory="true"> <description> Name of the function for which timeout needs to be reset </description> </param> <param name="resetPeriod" type="Integer" minvalue="0" maxvalue="1000000" mandatory="false"> <description> Timeout period in milliseconds, for the method for which timeout needs to be reset. If omitted, timeout would be reset by defaultTimeout specified in smartDeviceLink.ini </description> </param> </function> … </interface>