You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Getting Started/Starting an SDL Session/index.md
+43Lines changed: 43 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,3 +7,46 @@ The first packet sent is from the app library to the SDL Core implementation. Th
7
7
The Core implementation should respond with a `StartServiceACK` that contains specific information as described in the protocol spec. After this moment, the SDL session has been defined and started for an app.
8
8
9
9

10
+
11
+
### When is Streaming Allowed
12
+
13
+
SDL Core maintains which apps can stream audio or video via the `audioStreamingState` and `videoStreamingState` parameters of `OnHMIStatus`. For an app to stream it must be in `STREAMABLE``videoStreamingState` or `AUDIBLE`/`ATTENUATED``audioStreamingState`. SDL Core knows whether the app can use video services or not depending on the `AppHMIType`. Currently, only `NAVIGATION` and `PROJECTION` apps can use video services. Assuming there is at most one app that can do video streaming at any time, the following table shows how SDL Core shall act regarding `videoStreamingState` in different cases:
14
+
15
+
| Case | Current video source | SDL app2 comes to FULL | Results | OnHMIStatus videoStreamingState to app1 | OnHMIStatus videoStreamingState to app2 |
16
+
| -- | --- | --- | --- | --- | --- |
17
+
| 1 | NONE | app2 does not use video | no app is the video source | NA | NOT_STREAMABLE|
18
+
| 2 | NONE | app2 uses video | app2 is the video source | NA | STREAMABLE|
19
+
| 3 | app1 | app2 does not use video | app1 is **still** the video source | No Change | NOT_STREAMABLE|
20
+
| 4 | app1 | app2 uses video | app2 is the **new** video source | NOT_STREAMABLE | STREAMABLE|
21
+
| 5 | app1 | CarPlay/Android Auto is the active screen | no SDL app is the video source | NOT_STREAMABLE | NA|
22
+
23
+
!!! NOTE
24
+
If an app does not stop video service after receiving `onHMIStatus` with `videoStreamingState`=`NOT_STREAMABLE` for some time, SDL Core shall send a stop service control frame to the app.
25
+
!!!
26
+
27
+
The bool parameter `isMediaApplication` in the register app interface request indicates if an application supports the `AUDIBLE` streaming state. There are two types of projection applications:
28
+
29
+
- If `AppHMIType`=`PROJECTION` and `isMediaApplication`=false, we call it a non-media projection application.
30
+
- If `AppHMIType`=`PROJECTION` and `isMediaApplication`=true, or `AppHMIType`=`PROJECTION` & `MEDIA`, we call it a media projection application.
31
+
32
+
We assume that media projection applications stream audio data via either Bluetooth A2DP (for android) or iAP (for iOS) as regular media applications do. We also assume projection applications do not use binary audio services. The following table shows how SDL Core acts regarding `audioStreamingState` in different cases.
33
+
34
+
| Case | Current audio source (appHMIType) | SDL app2 activated or system event | app2 appHMIType | app2 is media | Results | OnHMIStatus audioStreamingState to app1 | OnHMIStatus audioStreamingState to App2 |
35
+
| --- | --- | --- | --- | --- | --- | --- | --- |
36
+
| 1 | none | app2 does not use audio | any | false | no app is the audio source | NA | NOT_AUDIBLE |
37
+
| 2.1 | none | app2 uses audio | NAVIGATION | false | app2 is the audio source | NA | AUDIBLE |
38
+
| 2.2 | none | app2 uses audio | any | true | app2 is the audio source | NA | AUDIBLE |
39
+
| 3 | app1 (any) | app2 does not use audio | any | false | app1 is the audio source | No Change | NOT_AUDIBLE |
40
+
| 4.1 | app1 (NAVIGATION or COMMUNICATION) | app2 uses audio | same as app1 | false | app2 is the audio source | NOT_AUDIBLE | AUDIBLE |
41
+
| 4.2 | app1 (NAVIGATION or COMMUNICATION) | app2 uses audio | others | true | app1 and app2 are the audio sources | AUDIBLE | AUDIBLE / ATTENTUATED or NOT_AUDIBLE * |
42
+
| 4.3 | app1 (Non-NAVIGATION, NON-COMMUNICATION) | app2 uses audio | NAVIGATION or COMMUNICATION | false | app1 and app2 are the audio sources | AUDIBLE / ATTENTUATED or NOT_AUDIBLE * | AUDIBLE |
| 5.1 | app1 (any) | PHONE_CALL / EMERGENCY_EVENT / AUDIO_SOURCE / EMBEDDED_NAVI | NA | NA | app1 is not the audio source, system set the audio source | NOT_AUDIBLE | NA |
45
+
| 5.2 | app1 (any) | TTS Start | NA | NA | depending on mixing audio support, app1 can be audio source | NOT_AUDIBLE / ATTENUATED | NA |
46
+
| 5.3 | app1 (any) | CarPlay/Android Auto is the active screen (DEACTIVATE_HMI) | NA | NA | no SDL app is the video source | NOT_AUDIBLE | NA |
47
+
48
+
*In the case of co-existence of a NAVIGATION app and a MEDIA or COMMUNICATION app, when the NAVIGATION app does not start audio steaming service, the MEDIA/COMMUNICATION app is `AUDIBLE`; When the NAVIGATION app starts audio streaming service, the MEDIA/COMMUNICATION app is either `ATTENUATED` if the system supports mixing or `NOT_AUDIBLE` if the system does not support mixing.
49
+
50
+
!!! NOTE
51
+
The transition of `videoStreamingState` and `audioStreamingState` is independent of the transition of `hmiLevel`. However, the transition of `hmiLevel` depends on both `audioStreamingState` and `videoStreamingState`. SDL Core moves a `LIMITED` level media/projection/navigation app which is `NOT_AUDIBLE` and `NOT_STREAMABLE` to `BACKGROUND` HMI level. There are at most two media/projection/navigation apps which can be placed in HMI level `LIMITED`. At HMI level `LIMITED`, an app can be either `AUDIBLE` (including `ATTENTUATED`) or `STREAMABLE` or both.
Copy file name to clipboardExpand all lines: docs/Protocol Spec/index.md
+9-2Lines changed: 9 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# SmartDeviceLink Protocol
2
2
3
-
**Current Version: 5.3.0**
3
+
**Current Version: 5.4.0**
4
4
5
5
## 1. Overview
6
6
The SmartDeviceLink protocol specification describes the method for establishing communication between an application and head unit and registering the application for continued communication with the head unit. The protocol is used as the base formation of packets sent from one module to another.
@@ -311,6 +311,12 @@ If there is no data to send for a given parameter, the parameter should not be i
311
311
|audioServiceTransports|int32 array| 5.1.0 | Ordered list of transport priority types that support the audio service (`0x0A`). Only the values of `1` ("Primary Transport") or `2` ("Secondary Transport") shall be used. If both the primary and secondary transport support the audio service, both should be included (`1` and `2`) in the order they are preferred; otherwise only the single transport priority type should be included. An application must not start the audio service on a transport priority type that is not listed in the array.<br>If this parameter is not included the Primary Transport should be used for the audio service.|
312
312
|videoServiceTransports|int32 array| 5.1.0 | Ordered list of transport priority types that support the video service (`0x0B`). Only the values of `1` ("Primary Transport") or `2` ("Secondary Transport") shall be used. If both the primary and secondary transport support the video service, both should be included (`1` and `2`) in the order they are preferred; otherwise only the single transport priority type should be included. An application must not start the video service on a transport priority type that is not listed in the array.<br>If this parameter is not included the Primary Transport should be used for the video service.|
313
313
|authToken|String| 5.2.0 | Included exclusively when communicating with cloud applications. This token is used by a cloud application to authenticate a user account associated with the vehicle. |
314
+
|make|String| 5.4.0 | Vehicle make value. Used by OEM exclusive apps to identify whether current vehicle is supported or not. |
315
+
|model|String| 5.4.0 | Vehicle model value. Used by OEM exclusive apps to identify whether current vehicle is supported or not. |
316
+
|modelYear|String| 5.4.0 | Vehicle model year value. Used by OEM exclusive apps to identify whether current vehicle is supported or not. |
317
+
|trim|String| 5.4.0 | Vehicle trim value. Used by OEM exclusive apps to identify whether current vehicle is supported or not. |
318
+
|systemSoftwareVersion|String| 5.4.0 | Vehicle system software version value. Can be specified in any format desired by the OEM. |
319
+
|systemHardwareVersion|String| 5.4.0 | Vehicle system hardware version value. Can be specified in any format desired by the OEM. |
314
320
315
321
**list of transport type strings**
316
322
@@ -1233,7 +1239,8 @@ The payload of a message sent via the RPC service, which directly follows the Fr
0 commit comments