Expand Minimize Picture-in-picture Power Device Status Voice Recognition Skip Back Skip Forward Minus Plus Play Search
Internet Explorer alert
This browser is not recommended for use with smartdevicelink.com, and may not function properly. Upgrade to a different browser to guarantee support of all features.
close alert
To Top Created with Sketch. To Top
To Bottom Created with Sketch. To Bottom
SDL Core Guides
Migrating SDL Core 7.1 to 8.0

Migrating SDL Core 7.1 to 8.0

Environment Updates

Ubuntu Versions

SDL Core 8.0.0 no longer supports Ubuntu 16. Supported versions of SDL Core are Ubuntu 18.04 and Ubuntu 20.04.

SSL Versions

SDL Core 8.0.0 dropped support for libssl1.0. Developers should install libssl-dev instead of libssl1.0-dev.

Updates to CMAKE Build Configuration

Removed Flag 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.

Boost Logger

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)")

Updates to Configuration File smartDeviceLink.ini

DefaultTimeoutCompensation

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

Icons Storage Folder

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

HMI Behavior Changes

Avoid Custom Button Subscription in Case HMI Incompatibility

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.

OnEventChanged (PHONE_CALL)

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.

HMI API Updates

Buttons.SubscribeButton

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

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>

Restructuring OnResetTimeout

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>
View on GitHub.com
Previous Section Next Section