Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/Remote Control - Allow Multiple Modules per Module Type #171

Merged
merged 20 commits into from
Sep 10, 2019
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7892699
Stucts
KhrystynaDubovyk Jul 4, 2019
ce54edb
Update RC.GetCapabilities must section
Jul 18, 2019
41c34b3
added `id` mandatory=false to SeatControlData
KhrystynaDubovyk Jul 21, 2019
05d59a9
Merge branch 'feature/multiple_modules' of github.ford.com:SmartDevic…
KhrystynaDubovyk Aug 2, 2019
3a281bc
upd GetCapabilities, GetInteriorVehicleData, OnInteriorVehicleData, O…
KhrystynaDubovyk Aug 2, 2019
d9e5e0f
Merge branch 'develop' into feature/multiple_modules
KhrystynaDubovyk Aug 28, 2019
31b1fd6
upd Consent diagr;GetCapabilities,GetInteriorVehicleData index minor …
KhrystynaDubovyk Sep 4, 2019
1bf5749
Merge branch 'feature/multiple_modules' of https://github.com/smartde…
KhrystynaDubovyk Sep 5, 2019
468e057
Apply suggestions from code review
KhrystynaDubovyk Sep 9, 2019
69633f8
remove `userLocation` from TTS.SetGlobalProperties
KhrystynaDubovyk Sep 9, 2019
49b982b
remove `defvalue` for `subscribe` param
KhrystynaDubovyk Sep 9, 2019
59936e4
formatting !!! MUST
KhrystynaDubovyk Sep 9, 2019
b82314d
fix typos in diagr (concent ->consent)
KhrystynaDubovyk Sep 9, 2019
6588d67
add SetGlobalProperties index
KhrystynaDubovyk Sep 9, 2019
a19e0a8
SetGlobalProperties index
KhrystynaDubovyk Sep 9, 2019
e34f968
Merge branch 'feature/multiple_modules' of https://github.com/smartde…
KhrystynaDubovyk Sep 9, 2019
a72d1d6
add RC_SetGlobalProperties.png,RC_SetGlobalProperties.gliffy
KhrystynaDubovyk Sep 9, 2019
2a62528
add SetGlobalProperties to RC
KhrystynaDubovyk Sep 9, 2019
1c12492
Apply suggestions from code review
KhrystynaDubovyk Sep 10, 2019
de249c0
remove p.2
KhrystynaDubovyk Sep 10, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/Buttons/ButtonPress/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ The system shall list all available RC radio buttons and RC climate buttons in t
|Name|Type|Mandatory|Additional|Description|
|:---|:----------|:---|:---------|:---------|
|moduleType|[Common.ModuleType](../../common/enums/#moduletype)|true| |The module where the button should be pressed|
|moduleId|String|false|maxlength="100"|Id of a module, published by System Capability.|
|buttonName|[Common.ButtonName](../../common/enums/#buttonname)|true| | |
|buttonPressMode|[Common.ButtonPressMode](../../common/enums/#buttonpressmode)|true| |Indicates whether this is a LONG or SHORT button press event.|
|appID|Integer|true| |Internal SDL-assigned ID of the related application|
Expand Down
8 changes: 1 addition & 7 deletions docs/Common/Enums/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -1145,13 +1145,6 @@
|RESTORE|1|Restore / apply the seat memory settings to the current seat.|
|NONE|2|No action to be performed.|

### SupportedSeat

|Name|Value|Description|
|:---|:----|:----------|
|DRIVER|0|List possible seats that is a remote controllable seat.|
|FRONT_PASSENGER|1|List possible seats that is a remote controllable seat.|

### DeliveryMode
|Name|Value|Description|
|:---|:----|:----------|
Expand Down Expand Up @@ -1187,6 +1180,7 @@
|REMOTE_CONTROL|3||
|APP_SERVICES|4||
|DISPLAYS|5||
|SEAT_LOCATION|6||

### MediaType

Expand Down
44 changes: 42 additions & 2 deletions docs/Common/Structs/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Structs
## Structs

### ImageResolution

Expand Down Expand Up @@ -269,6 +269,7 @@
|shortPressAvailable|Boolean|true|||
|longPressAvailable|Boolean|true|||
|upDownAvailable|Boolean|true|||
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|

### VrHelpItem

Expand Down Expand Up @@ -495,6 +496,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleType|Common.ModuleType|true||The moduleType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the moduleType is CLIMATE then a "climateControlData" should exist|
|moduleId|String|false|maxlength: 100|Id of a module, published by System Capability.|
|radioControlData|Common.RadioControlData|false|||
|climateControlData|Common.ClimateControlData|false|||
|audioControlData|Common.AudioControlData|false|||
Expand Down Expand Up @@ -591,6 +593,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength: 100|The short friendly name of the climate control module. It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|fanSpeedAvailable|Boolean|false||Availability of the control of fan speed <br> True: Available, False: Not Available, Not present: Not Available.|
|desiredTemperatureAvailable|Boolean|false||Availability of the control of desired temperature. <br> True: Available, False: Not Available, Not present: Not Available.|
|acEnableAvailable|Boolean|false||Availability of the control of turn on/off AC. <br> True: Available, False: Not Available, Not present: Not Available.|
Expand All @@ -613,6 +616,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength="100"|The short friendly name of the light control module. <br> It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|sourceAvailable|Boolean|false||Availability of the control of audio source.|
|keepContextAvailable|Boolean|false||Availability of the parameter keepContext.|
|volumeAvailable|Boolean|false||Availability of the control of audio volume.|
Expand Down Expand Up @@ -652,6 +656,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength="100"|The short friendly name of the light control module. <br> It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|supportedLights|Common.LightCapabilities|true|minsize="1" <br> maxsize="100" <br> array="true"| An array of available LightCapabilities that are controllable.|


Expand All @@ -677,6 +682,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength="100"|The short friendly name of the hmi setting module. <br> It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|distanceUnitAvailable|Boolean|false||Availability of the control of distance unit.|
|temperatureUnitAvailable|Boolean|false||Availability of the control of temperature unit.|
|displayModeUnitAvailable|Boolean|false||Availability of the control of HMI display mode.|
Expand All @@ -695,6 +701,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength: 100| The short friendly name of the climate control module. <br> It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|radioEnableAvailable|Boolean|false||Availability of the control of enable/disable radio. <br> True: Available, False: Not Available, Not present: Not Available.|
|radioBandAvailable|Boolean|false||Availability of the control of radio band. <br> True: Available, False: Not Available, Not present: Not Available.|
|radioFrequencyAvailable|Boolean|false||Availability of the control of radio frequency. <br> True: Available, False: Not Available, Not present: Not Available.|
Expand Down Expand Up @@ -764,7 +771,7 @@

|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|id|Common.SupportedSeat|true|||
|id|Common.SupportedSeat|false||
|heatingEnabled|Boolean|false||
|coolingEnabled|Boolean|false||
|heatingLevel|Integer|false|minvalue="0" <br> maxvalue="100"||
Expand All @@ -786,6 +793,7 @@
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleName|String|true|maxlength="100"|The short friendly name of the light control module. <br> It should not be used to identify a module by mobile application.|
|moduleInfo|Common.ModuleInfo|false||Information about a RC module, including its id.|
|heatingEnabledAvailable|Boolean|false|||
|coolingEnabledAvailable|Boolean|false|||
|heatingLevelAvailable|Boolean|false|||
Expand Down Expand Up @@ -895,6 +903,7 @@
|videoStreamingCapability|Common.VideoStreamingCapability|false||Describes extended capabilities of the module's phone feature|
|remoteControlCapability|Common.RemoteControlCapabilities|false||Describes extended capabilities of the module's phone feature|
|appServicesCapabilities|Common.AppServicesCapabilities|false||An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item|
|seatLocationCapability|Common.SeatLocationCapability|false||Contains information about the locations of each seat|

### MediaServiceManifest

Expand Down Expand Up @@ -1043,3 +1052,34 @@ There are no defined parameters for this struct.
|numCustomPresetsAvailable|Integer|false|minvalue: 1 <br>maxvalue: 100|The number of on-window custom presets available (if any); otherwise omitted.|
|buttonCapabilities|Common.ButtonCapabilities|false|array: true<br>minsize: 1<br>maxsize: 100|The number of buttons and the capabilities of each on-window button.|
|softButtonCapabilities|Common.SoftButtonCapabilities|false|array: true<br>minsize: 1<br>maxsize: 100|The number of soft buttons available on-window and the capabilities for each button.|

### ModuleInfo
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleId|String|true|maxlength: 100|uuid of a module. "moduleId + moduleType" uniquely identify a module.|
|location|Common.Grid|false||Location of a module.|
|serviceArea|Common.Grid|false||Service area of a module.|
|allowMultipleAccess|Boolean|false|defValue=true|allow multiple users/apps to access the module or not|
KhrystynaDubovyk marked this conversation as resolved.
Show resolved Hide resolved

### Grid
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|col|Integer|true|minvalue: -1 <br>maxvalue: 100|Describes a location (origin coordinates and span) of a vehicle component.|
|row|Integer|true|minvalue: -1 <br>maxvalue: 100|Describes a location (origin coordinates and span) of a vehicle component.|
|level|Integer|false|minvalue: -1 <br> maxvalue: 100 <br> defvalue: 0|Describes a location (origin coordinates and span) of a vehicle component.|
|colspan|Integer|false|minvalue: 1 <br> maxvalue: 100 <br> defvalue: 1|Describes a location (origin coordinates and span) of a vehicle component.|
|rowspan|Integer|false|minvalue: 1 <br> maxvalue: 100 <br> defvalue: 1|Describes a location (origin coordinates and span) of a vehicle component.|
|levelspan|Integer|false|minvalue: 1 <br> maxvalue: 100 <br> defvalue: 1|Describes a location (origin coordinates and span) of a vehicle component.|

### SeatLocationCapability
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|rows|Integer|false|minvalue: 1 <br>maxvalue: 100|Contains information about the locations of each seat.|
|columns|Integer|false|minvalue: 1 <br>maxvalue: 100|Contains information about the locations of each seat.|
|levels|Integer|false|minvalue: 1 <br>maxvalue: 100 <br> defvalue:1|Contains information about the locations of each seat.|
|seats|Common.SeatLocation|false|array: true|Contains a list of SeatLocation in the vehicle, the first element is the driver's seat|

### SeatLocation
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|grid|Common.Grid|false||Describes the location of a seat. HMI shall include this parameter when publishing seat locations in capabilities.|
9 changes: 9 additions & 0 deletions docs/RC/GetCapabilities/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,21 @@ The [`RemoteControlCapabilities`](../../common/structs/#remotecontrolcapabilitie
This RPC has no additional parameter requirements

### Response
!!! must

1. Provide `moduleInfo` with `moduleID` for each module of all module types in GetCapabilities_respose to SDL if it supports multiple modules per module type.
2. Determine and provide default `moduleID` for the moduleType and publish it as the first item in RemoteControlCapabilities.
3. Publish how many rows, columns and levels are available for the vehicle and the list of modules in properly defined grids.

!!!


#### Parameters

|Name|Type|Mandatory|Additional|
|:---|:---|:--------|:---------|
|remoteControlCapability|[Common.RemoteControlCapabilities](../../common/structs/#remotecontrolcapabilities)|false|See RemoteControlCapabilities, all available RC modules and buttons shall be returned|
|seatLocationCapability|[Common.SeatLocationCapability](../../common/structs/#seatlocationcapability)|false|See SeatLocationCapability, all available seat locations shall be returned.|

### Sequence Diagrams

Expand Down
24 changes: 14 additions & 10 deletions docs/RC/GetInteriorVehicleData/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,33 @@ Purpose
: To read RC module status data. The same function is used to subscribe/unsubscribe to RC module status/setting change notifications.

GetInteriorVehicleData is a request originated by a Remote Control Mobile Application.
If the parameter `subscribe` is set to `true`, the mobile application has requested to subscribe to the module data defined by the [`moduleType`](../../common/enums/#moduletype) parameter.
SDL maintains the `moduleType` subscription status as a whole. SDL needs to subscribe to a module if there is at least one app that subscribes to the module. SDL needs to unsubscribe from a module if no apps subscribe to the module.
If the parameter `subscribe` is set to `true`, the mobile application has requested to subscribe to the module data defined by `moduleId` + `moduleType` parameters.
SDL core allocates resources by a module (`moduleId` + `moduleType`).
SDL needs to subscribe to a module if there is at least one app that subscribes to the module. SDL needs to unsubscribe from a module if no apps subscribe to the module.

SDL forwards a GetInteriorVehicleData request to HMI only if there is no cached data available for the requested `moduleType` or it needs to unsubscribe to the module from HMI.
SDL forwards a GetInteriorVehicleData request to HMI only if there is no cached data available for the requested module (`moduleId` + `moduleType`) or it needs to subscribe to/unsubscribe from the module from HMI.
Otherwise, SDL responds to the request with the cached data without forwarding it to HMI.

The HMI should only return interior vehicle data that corresponds to the request`moduleType`. For example, if `moduleType = CLIMATE`, only return [`ClimateControlData`](../../common/structs/#climatecontroldata) and do not return [`RadioControlData`](../../common/structs/#radiocontroldata).
The HMI should return interior vehicle data that corresponds to the requested module (`moduleId` + `moduleType`).

### Request

GetInteriorVehicleData is a request originated by a Remote Control Mobile Application. The HMI should only return interior vehicle data that corresponds to the request module type.
For example, if `moduleType = CLIMATE`, only return [`ClimateControlData`](../../common/structs/#climatecontroldata) and do not return [`RadioControlData`](../../common/structs/#radiocontroldata).
GetInteriorVehicleData is a request originated by a Remote Control Mobile Application.
If the optional `moduleId` is not provided in a GetInteriorVehicleData_request from a Remote Control Mobile Application, and if there is at least one module (published by capabilities) of the same moduleType, SDL core will use the default `moduleId` (the moduleId of first module provided in RC capabilities for requested `moduleType`) when processing the request.

If the parameter `subscribe` is set to true, the mobile application has requested to subscribe to the module data defined by the [`moduleType`](../../common/enums/#moduletype) parameter.

#### Parameters

|Name|Type|Mandatory|Additional|
|:---|:---|:--------|:---------|
|moduleType|[Common.ModuleType](../../common/enums/#moduletype)|true||
|subscribe|Boolean|false|defvalue="false"|
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:---------------|
|moduleType|[Common.ModuleType](../../common/enums/#moduletype)|true||The type of a RC module to retrieve module data from the vehicle. <br> In the future, this should be the Identification of a module.|
|moduleId|String|false|maxlength="100"|Id of a module, published by System Capability.|
KhrystynaDubovyk marked this conversation as resolved.
Show resolved Hide resolved
|subscribe|Boolean|false|defvalue="false"|If subscribe is true, the head unit will register OnInteriorVehicleData notifications for the requested module (moduleId and moduleType). <br> If subscribe is false, the head unit will unregister OnInteriorVehicleData notifications for the requested module (moduleId and moduleType). <br> If subscribe is not included, the subscription status of the app for the requested module (moduleId and moduleType) will remain unchanged.|
KhrystynaDubovyk marked this conversation as resolved.
Show resolved Hide resolved

### Response

HMI must provide optional `moduleId` param in GetInteriorVehicleData_response.
HMI must return in GetInteriorVehicleData_response the current value of the display mode used in HMI if `moduleType = HMI_SETTINGS` .

#### Parameters
Expand Down

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion docs/RC/GetInteriorVehicleDataConsent/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ The driver is expected to have an ability to grant or deny the permission.
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|moduleType|[Common.ModuleType](../../common/enums/#moduletype)|true| |The module type that the app requests to control|
|moduleIds|String|false|maxlength="100"|Ids of a module of same type, published by System Capability|
KhrystynaDubovyk marked this conversation as resolved.
Show resolved Hide resolved
|appID|Integer|true| |ID of the application that triggers the permission prompt|

### Response

#### Parameters
|Name|Type|Mandatory|Additional|Description|
|:---|:---|:--------|:---------|:----------|
|allowed|Boolean|true| |"true" - if the driver grants the permission for controlling to the named app; <br> "false" - in case the driver denies the permission for controlling to the named app.|
|allowed|Boolean|true|array="true"|"true" - if the driver grants the permission for controlling to the named app; <br> "false" - in case the driver denies the permission for controlling to the named app.|
KhrystynaDubovyk marked this conversation as resolved.
Show resolved Hide resolved

### Sequence Diagrams

Expand Down
2 changes: 2 additions & 0 deletions docs/RC/OnInteriorVehicleData/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Purpose

The HMI must send RC.OnInteriorVehicleData notification to SDL when module settings were changed in case of button press event or after SetInteriorVehicledata request was processed.

The HMI must always include a `moduleId` for a `ModuleData` in OnInteriorVehicleData notification.
ShobhitAd marked this conversation as resolved.
Show resolved Hide resolved

The HMI must send RC.OnInteriorVehicleData notification with the current display mode to all mobile RC applications that are subscribed to the HMI settings
if the driver (or other applications) or HMI itself change the display mode in the HMI settings.
!!!
Expand Down
2 changes: 2 additions & 0 deletions docs/RC/OnRCStatus/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ SDL must send OnRCStatus notification when:
* A module is de-allocated from an application (the module is freed when application exits, disconnects, goes to HMI level NONE)
* An application no longer has the right to control the module (for example, a policy update can revoke the application's access to a module)

SDL must always include `moduleId` for each and every `ModuleData` in `allocatedModules` and `freeModules` in OnRCStatus notification.
ShobhitAd marked this conversation as resolved.
Show resolved Hide resolved

#### Parameters

|Name|Type|Mandatory|Additional|
Expand Down
1 change: 1 addition & 0 deletions docs/TTS/SetGlobalProperties/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ On receiving `AddCommand` with `CommandType = Command` before a custom `helpProm
|:---|:---|:--------|:---------|
ShobhitAd marked this conversation as resolved.
Show resolved Hide resolved
|helpPrompt|[Common.TTSChunk](../../common/structs/#ttschunk)|false|array: true<br>minsize: 0<br>maxsize: 100|
|timeoutPrompt|[Common.TTSChunk](../../common/structs/#ttschunk)|false|array: true<br>minsize: 1<br>maxsize: 100|
|userLocation|[Common.SeatLocation](../../common/structs/#seatlocation)|false||
|appID|Integer|true||

### Response
Expand Down