Skip to content

Commit b06288f

Browse files
authored
Merge pull request #248 from smartdevicelink/develop
HMI Guidelines Updates For Core Release 7.1.0
2 parents 1466349 + ca0867c commit b06288f

File tree

38 files changed

+1074
-282
lines changed

38 files changed

+1074
-282
lines changed

config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@
125125
},
126126
{
127127
"name": "OnAppPropertiesChange"
128+
},
129+
{
130+
"name": "OnAppCapabilityUpdated"
128131
}
129132
]
130133
},
16.4 KB
Loading

docs/BasicCommunication/GetSystemInfo/assets/ccpu_versionChanged.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
participant App
22
participant SDL
33
participant HMI
4-
App->SDL:RAI
5-
note left of App:<align:center>RAI request processing\non hold until\n`hmi_cooperating_ = true`
4+
5+
note over App, HMI:<align:center>**Pre-conditions:**\n 1. App supports Protocol version 5.4.0 or higher
6+
7+
App->SDL: StartService
8+
note left of App:<align:center>StartService request processing\nis on hold until\n`hmi_cooperating_ = true`
69
HMI->SDL:BC.OnReady
710
SDL->SDL:ONHMIStartedCooperation
811
note over SDL:<align:center>Do not set\n`hmi_cooperating_= true`\nyet
@@ -32,6 +35,9 @@ HMI-->SDL:[VR,UI,TTS...].GetCapabilities
3235
end
3336
SDL->SDL:<align:center>Cache received data\nin `HMICapabilitiesCacheFile`
3437
SDL->SDL:<align:center>Load default capabilities data\nfor failed components
35-
end
36-
SDL->SDL:Set `hmi_cooperating = true`
38+
end
39+
40+
SDL->SDL:Set `hmi_cooperating_ = true`
41+
SDL-->App:StartService_ACK
42+
App->SDL:RAI
3743
SDL-->App:RAI
12.6 KB
Loading
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
participant App
22
participant SDL
33
participant HMI
4-
App->SDL:RAI
5-
note left of App:<align:center>RAI request processing\non hold until\n`hmi_cooperating_ = true`
4+
5+
6+
note over App, HMI:<align:center>**Pre-conditions:**\n 1. App supports Protocol version 5.4.0 or higher
7+
8+
App->SDL: StartService
9+
note left of App:<align:center>StartService request processing\n is on hold until\n`hmi_cooperating_ = true`
610
HMI->SDL:BC.OnReady
711
SDL->SDL:ONHMIStartedCooperation
812
note over SDL:<align:center>Do not set\n`hmi_cooperating_= true`\nyet
913
SDL->HMI:BC.GetSystemInfo
1014
HMI-->SDL:BC.GetSystemInfo
1115
note over SDL:<align:center>ccpu version is the same
1216
note over SDL:<align:center>`HMICapabilitiesCacheFile`\ncontains all components\ncapabilities data
13-
SDL->SDL:Set `hmi_cooperating = true`
17+
SDL->SDL:Set `hmi_cooperating_ = true`
18+
SDL-->App: StartService_ACK
19+
App->SDL:RAI
1420
SDL-->App:RAI

docs/BasicCommunication/GetSystemInfo/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ This RPC has no additional parameter requirements
3636
|ccpu_version|String|true|maxlength: 500|
3737
|language|[Common.Language](../../common/enums/#language)|true||
3838
|wersCountryCode|String|true|maxlength: 500|
39+
|systemHardwareVersion|String|false|maxlength: 500|
3940

4041
### Sequence Diagrams
4142

64.4 KB
Loading
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
participant App
2+
participant SDL
3+
participant HMI
4+
5+
6+
seq Obtaining VideoStreamingCapabilities during HMI initialization
7+
8+
SDL->HMI: UI.GetCapabilities
9+
HMI-->SDL:<align:center> UI.GetCapabilities\n(systemCapabilities=videoStreamingCapability,\n[additionalVideoStreamingCapabilities])
10+
end
11+
12+
note over App, HMI: RAI
13+
14+
seq App receives VideoStreamingCapabilities supported by the system
15+
16+
App->SDL:<align:center> GetSystemCapability\n(systemCapabilityType=VIDEO_STREAMING,\nsubscribe=true)
17+
SDL-->App:<align:center> GetSystemCapability\n(systemCapability=videoStreamingCapability,\n[additionalVideoStreamingCapabilities])
18+
19+
end
20+
21+
seq App provides supported VideoStreamingCapabilities
22+
23+
App->>SDL:<align:center> OnAppCapabilityUpdated\n(appCapability=videoStreamingCapability,\n[additionalVideoStreamingCapabilities])
24+
SDL->>HMI:<align:center> BC.OnAppCapabilityUpdated\n(appCapability=videoStreamingCapability,\n[additionalVideoStreamingCapabilities])
25+
26+
end
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
## OnAppCapabilityUpdated
2+
3+
Type
4+
: Notification
5+
6+
Sender
7+
: SDL
8+
9+
Purpose
10+
: Inform the HMI that a specific application capability has changed
11+
12+
### Notification
13+
14+
SDL sends OnAppCapabilityUpdated notification to HMI to provide <abbr title="Video Streaming Capabilities">VSC</abbr> supported by application
15+
16+
!!! may
17+
18+
HMI may switch video streaming resolution according to values provided by application in OnAppCapabilityUpdated notification. (_see also [OnSystemCapabilityUpdated](../OnSystemCapabilityUpdated)_)
19+
20+
If HMI doesn't receive OnAppCapabilityUpdated notification or receives OnAppCapabilityUpdated without `additionalVideoStreamingCapabilities`, HMI should not send OnSystemCapabilityUpdated notification and the user should not be able to change the resolution.
21+
!!!
22+
23+
!!! note
24+
25+
In case older application does not support sending `OnAppCapabilityUpdated` notification, HMI must treat this application as one that does not support dynamic resolution switching and allow only default screen mode for it.
26+
27+
!!!
28+
29+
#### Parameters
30+
31+
|Name|Type|Mandatory|Additional|
32+
|:---|:---|:--------|:---------|
33+
|appCapability|[Common.AppCapability](../../common/structs/#appcapability)|true||
34+
|appID|Integer|true||
35+
36+
### Sequence Diagrams
37+
38+
|||
39+
Negotiation of Video Streaming Capabilities between HMI and Mobile Application
40+
![OnAppCapabilityUpdated](./assets/OnAppCapabilityUpdated.png)
41+
|||
42+
43+
### JSON Message Examples
44+
45+
#### Example Notification
46+
47+
```json
48+
{
49+
"jsonrpc":"2.0",
50+
"method":"BasicCommunication.OnAppCapabilityUpdated",
51+
"params":{
52+
"appID":65544,
53+
"appCapability":{
54+
"appCapabilityType":"VIDEO_STREAMING",
55+
"videoStreamingCapability":{
56+
"hapticSpatialDataSupported":false,
57+
"scale":2.5,
58+
"additionalVideoStreamingCapabilities":[
59+
{
60+
"scale":1,
61+
"hapticSpatialDataSupported":true,
62+
"preferredFPS": 15,
63+
"preferredResolution":{
64+
"resolutionWidth":800,
65+
"resolutionHeight":350
66+
}
67+
},
68+
{
69+
"hapticSpatialDataSupported":false,
70+
"preferredFPS": 30,
71+
"preferredResolution":{
72+
"resolutionWidth":320,
73+
"resolutionHeight":240
74+
}
75+
},
76+
{
77+
"hapticSpatialDataSupported":true,
78+
"preferredFPS": 24,
79+
"preferredResolution":{
80+
"resolutionWidth":400,
81+
"resolutionHeight":480
82+
}
83+
},
84+
{
85+
"hapticSpatialDataSupported":true,
86+
"preferredFPS": 20,
87+
"preferredResolution":{
88+
"resolutionWidth":640,
89+
"resolutionHeight":480
90+
}
91+
},
92+
{
93+
"hapticSpatialDataSupported":true,
94+
"preferredFPS": 20,
95+
"preferredResolution":{
96+
"resolutionWidth":800,
97+
"resolutionHeight":240
98+
}
99+
},
100+
{
101+
"scale":2.5,
102+
"hapticSpatialDataSupported":false
103+
},
104+
{
105+
"scale":5,
106+
"hapticSpatialDataSupported":true
107+
}
108+
],
109+
"preferredFPS": 15,
110+
"preferredResolution":{
111+
"resolutionWidth":800,
112+
"resolutionHeight":350
113+
},
114+
"diagonalScreenSize":10,
115+
"maxBitrate":10000,
116+
"pixelPerInch":150,
117+
"supportedFormats":[
118+
{
119+
"protocol":"RAW",
120+
"codec":"H264"
121+
}
122+
]
123+
}
124+
}
125+
}
126+
}
127+
```

docs/BasicCommunication/OnAppRegistered/index.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ Regarding data resumption:
1919

2020
Data resumption means that an application may request to restore data used in the previous ignition cycle after an `Unexpected Disconnect`.
2121

22-
2322
* For data resumption purposes, SDL must store application-related data such as commands, application global properties, and show data for the past three ignition cycles after an `Unexpected Disconnect` or `Ignition Off`. On the fourth `Ignition On`, SDL clears all corresponding application-related data used for resumption.
2423
* HMI must store the <abbr title="Voice Recognition">VR</abbr> grammar compiled for applications that are unregistered by an `Unexpected Disconnect` or `Ignition Off`.
2524
* During data resumption, the HMI may also have to resume the previous audio source. Refer to `BC.OnResumeAudioSource`.
@@ -55,6 +54,10 @@ If the application does NOT resume data successfully:
5554
* SDL cleans up all previously stored application data for the application that failed to resume. The HMI must also clean up previously compiled `VRGrammars` for the application.
5655
* The application will send new data to start SDL operations. In this event, SDL and the HMI should restart the cycle of collecting application data for resumption.
5756

57+
!!! NOTE
58+
The application is not given a valid HMI state or registration response by SDL until the resumption process is complete, so any notifications directed at the application (such as [BC.OnSystemRequest](../onsystemrequest)) should not be sent until the app is listed in a [BC.UpdateAppList](../updateapplist) request.
59+
!!!
60+
5861
!!! MUST
5962

6063
1. Update its list of registered applications.
@@ -76,7 +79,7 @@ If the application does NOT resume data successfully:
7679
!!!
7780

7881
!!! NOTE
79-
SDL Apps that are using the websocket transport adapter will send `OnAppRegistered` after the user has activated the app and the websocket connection is opened. The HMI should not use `OnAppRegistered` for updating the available apps in the app list. [BC.UpdateAppList](../UpdateAppList) should be used for updating the app list.
82+
SDL Apps that are using the websocket transport adapter will send `OnAppRegistered` after the user has activated the app and the websocket connection is opened. The HMI should not use `OnAppRegistered` for updating the available apps in the app list. [BC.UpdateAppList](../UpdateAppList) should be used for updating the app list.
8083
!!!
8184

8285
### Notification

0 commit comments

Comments
 (0)