summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Gapchuk <igapchuck@luxoft.com>2020-03-13 17:34:46 +0200
committerIgor Gapchuk <igapchuck@luxoft.com>2020-03-13 17:34:46 +0200
commit30da1b6a38d9dc6fcc3d6bd7e55817d2dd0c1440 (patch)
treea6df27eb528ca8efc283663f490315b7d92d4fd3
parent38b5a5268defd4ba794200bf2e040f162d7c7bee (diff)
downloadsdl_core-fix/refactor_rc_capabilities_storing.tar.gz
Refactor RC capabilities storing and retrieving. Fix related UTs.fix/refactor_rc_capabilities_storing
-rwxr-xr-xsrc/appMain/hmi_capabilities.json1106
-rw-r--r--src/components/application_manager/include/application_manager/smart_object_keys.h1
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h11
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc18
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/rc_is_ready_request_test.cc11
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/ui_is_ready_request_test.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/vr_is_ready_request_test.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/hmi/vi_is_ready_request_test.cc14
-rw-r--r--src/components/application_manager/src/hmi_capabilities_impl.cc111
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc1
-rwxr-xr-xsrc/components/application_manager/test/CMakeLists.txt3
-rw-r--r--src/components/application_manager/test/hmi_capabilities_test.cc767
-rw-r--r--src/components/application_manager/test/include/application_manager/hmi_capabilities_for_testing.h2
13 files changed, 1234 insertions, 829 deletions
diff --git a/src/appMain/hmi_capabilities.json b/src/appMain/hmi_capabilities.json
index ac6b005e50..29604f0c2c 100755
--- a/src/appMain/hmi_capabilities.json
+++ b/src/appMain/hmi_capabilities.json
@@ -324,608 +324,610 @@
"diagonalScreenSize": 8,
"pixelPerInch": 117,
"scale": 1
- },
- "seatLocationCapability": {
- "rows": 2,
- "columns": 3,
- "levels": 1,
- "seats": [
- {
- "row": 0,
- "col": 0,
- "level": 0,
- "rowspan": 1,
- "levelspan": 1,
- "colspan": 1
- }
- ]
- },
- "remoteControlCapability": {
- "buttonCapabilities": [
- {
- "longPressAvailable": true,
- "name": "AC_MAX",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ }
+ }
+ },
+ "RC" : {
+ "remoteControlCapability" : {
+ "buttonCapabilities": [
+ {
+ "longPressAvailable": true,
+ "name": "AC_MAX",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "AC",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "AC",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "RECIRCULATE",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "RECIRCULATE",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "FAN_UP",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "FAN_UP",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "FAN_DOWN",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "FAN_DOWN",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "TEMP_UP",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "TEMP_UP",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
+ },
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "TEMP_DOWN",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
+ },
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "DEFROST_MAX",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "TEMP_DOWN",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "DEFROST",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "DEFROST_MAX",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "DEFROST_REAR",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
+ },
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "UPPER_VENT",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "DEFROST",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "LOWER_VENT",
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "DEFROST_REAR",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "VOLUME_UP",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "UPPER_VENT",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "VOLUME_DOWN",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "LOWER_VENT",
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "EJECT",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "VOLUME_UP",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "SOURCE",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "VOLUME_DOWN",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "SHUFFLE",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "EJECT",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ },
+ {
+ "longPressAvailable": true,
+ "name": "REPEAT",
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "SOURCE",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "shortPressAvailable": true,
+ "upDownAvailable": false
+ }
+ ],
+ "climateControlCapabilities": [
+ {
+ "moduleInfo": {
+ "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
+ "allowMultipleAccess": false
},
- {
- "longPressAvailable": true,
- "name": "SHUFFLE",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
+ "acEnableAvailable": true,
+ "acMaxEnableAvailable": true,
+ "autoModeEnableAvailable": true,
+ "circulateAirEnableAvailable": true,
+ "climateEnableAvailable": true,
+ "currentTemperatureAvailable": true,
+ "defrostZone": [
+ "FRONT",
+ "REAR",
+ "ALL",
+ "NONE"
+ ],
+ "defrostZoneAvailable": true,
+ "desiredTemperatureAvailable": true,
+ "dualModeEnableAvailable": true,
+ "heatedMirrorsAvailable":true,
+ "heatedRearWindowAvailable":true,
+ "heatedSteeringWheelAvailable":true,
+ "heatedWindshieldAvailable":true,
+ "fanSpeedAvailable": true,
+ "moduleName": "primary_climate",
+ "ventilationMode": [
+ "UPPER",
+ "LOWER",
+ "BOTH",
+ "NONE"
+ ],
+ "ventilationModeAvailable": true
+ }
+ ],
+ "radioControlCapabilities": [
+ {
+ "moduleInfo": {
+ "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
+ "allowMultipleAccess": true
},
- {
- "longPressAvailable": true,
- "name": "REPEAT",
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": false
- },
- "shortPressAvailable": true,
- "upDownAvailable": false
- }
- ],
- "climateControlCapabilities": [
- {
- "moduleInfo": {
- "moduleId": "34045662-a9dc-4823-8435-91056d4c26cb",
- "allowMultipleAccess": false
- },
- "acEnableAvailable": true,
- "acMaxEnableAvailable": true,
- "autoModeEnableAvailable": true,
- "circulateAirEnableAvailable": true,
- "climateEnableAvailable": true,
- "currentTemperatureAvailable": true,
- "defrostZone": [
- "FRONT",
- "REAR",
- "ALL",
- "NONE"
- ],
- "defrostZoneAvailable": true,
- "desiredTemperatureAvailable": true,
- "dualModeEnableAvailable": true,
- "heatedMirrorsAvailable":true,
- "heatedRearWindowAvailable":true,
- "heatedSteeringWheelAvailable":true,
- "heatedWindshieldAvailable":true,
- "fanSpeedAvailable": true,
- "moduleName": "primary_climate",
- "ventilationMode": [
- "UPPER",
- "LOWER",
- "BOTH",
- "NONE"
- ],
- "ventilationModeAvailable": true
- }
- ],
- "radioControlCapabilities": [
- {
- "moduleInfo": {
- "moduleId": "eb7739ea-b263-4fe1-af9c-9311d1acac2d",
- "allowMultipleAccess": true
- },
- "availableHdChannelsAvailable": true,
- "hdChannelAvailable": true,
- "moduleName": "radio",
- "radioBandAvailable": true,
- "radioEnableAvailable": true,
- "radioFrequencyAvailable": true,
- "rdsDataAvailable": true,
- "signalChangeThresholdAvailable": true,
- "signalStrengthAvailable": true,
- "hdRadioEnableAvailable" : true,
- "siriusxmRadioAvailable" : true,
- "sisDataAvailable":true,
- "stateAvailable": true
- }
- ],
- "audioControlCapabilities": [
- {
- "moduleName": "audio",
- "moduleInfo": {
- "moduleId": "a279fe12-4587-4d12-8514-50f4ea9e9537",
- "allowMultipleAccess": true
- },
- "sourceAvailable": true,
- "volumeAvailable": true,
- "equalizerAvailable": true,
- "keepContextAvailable" : true,
- "equalizerMaxChannelId": 10
- }
- ],
- "seatControlCapabilities": [
- {
- "moduleName": "driver_seat",
- "moduleInfo": {
- "moduleId": "06cdec22-920e-4865-bf2e-9518463edc68",
- "allowMultipleAccess": false
- },
- "heatingEnabledAvailable" : true,
- "coolingEnabledAvailable": true,
- "heatingLevelAvailable": true,
- "coolingLevelAvailable": true,
- "horizontalPositionAvailable": true,
- "verticalPositionAvailable" : true,
- "frontVerticalPositionAvailable": true,
- "backVerticalPositionAvailable": true,
- "backTiltAngleAvailable": true,
- "headSupportHorizontalPositionAvailable": true,
- "headSupportVerticalPositionAvailable" : true,
- "massageEnabledAvailable": true,
- "massageModeAvailable": true,
- "massageCushionFirmnessAvailable": true,
- "memoryAvailable": true
- }
- ],
- "lightControlCapabilities": {
- "moduleName": "light",
- "moduleInfo": {
- "moduleId": "8d73e369-6a1f-4459-ab5a-6e432631881d",
- "allowMultipleAccess": false
- },
- "supportedLights":[
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_HIGH_BEAM",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_HIGH_BEAM",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_LOW_BEAM",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_LOW_BEAM",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_PARKING_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_PARKING_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_FOG_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_FOG_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_DAYTIME_RUNNING_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_DAYTIME_RUNNING_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_LEFT_TURN_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FRONT_RIGHT_TURN_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_LEFT_FOG_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_RIGHT_FOG_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_LEFT_TAIL_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_RIGHT_TAIL_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_LEFT_BRAKE_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_RIGHT_BRAKE_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_LEFT_TURN_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_RIGHT_TURN_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_REGISTRATION_PLATE_LIGHT",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"HIGH_BEAMS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"LOW_BEAMS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"FOG_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"RUNNING_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"PARKING_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"BRAKE_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"REAR_REVERSING_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"SIDE_MARKER_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"LEFT_TURN_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"RIGHT_TURN_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"HAZARD_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"AMBIENT_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"OVERHEAD_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"READING_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"TRUNK_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"EXTERIOR_FRONT_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"EXTERIOR_REAR_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"EXTERIOR_LEFT_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
- "statusAvailable":true,
- "densityAvailable":true,
- "name":"EXTERIOR_RIGHT_LIGHTS",
- "rgbColorSpaceAvailable":true
- },
- {
+ "availableHdChannelsAvailable": true,
+ "hdChannelAvailable": true,
+ "moduleName": "radio",
+ "radioBandAvailable": true,
+ "radioEnableAvailable": true,
+ "radioFrequencyAvailable": true,
+ "rdsDataAvailable": true,
+ "signalChangeThresholdAvailable": true,
+ "signalStrengthAvailable": true,
+ "hdRadioEnableAvailable" : true,
+ "siriusxmRadioAvailable" : true,
+ "sisDataAvailable":true,
+ "stateAvailable": true
+ }
+ ],
+ "audioControlCapabilities": [
+ {
+ "moduleName": "audio",
+ "moduleInfo": {
+ "moduleId": "a279fe12-4587-4d12-8514-50f4ea9e9537",
+ "allowMultipleAccess": true
+ },
+ "sourceAvailable": true,
+ "volumeAvailable": true,
+ "equalizerAvailable": true,
+ "keepContextAvailable" : true,
+ "equalizerMaxChannelId": 10
+ }
+ ],
+ "seatControlCapabilities": [
+ {
+ "moduleName": "driver_seat",
+ "moduleInfo": {
+ "moduleId": "06cdec22-920e-4865-bf2e-9518463edc68",
+ "allowMultipleAccess": false
+ },
+ "heatingEnabledAvailable" : true,
+ "coolingEnabledAvailable": true,
+ "heatingLevelAvailable": true,
+ "coolingLevelAvailable": true,
+ "horizontalPositionAvailable": true,
+ "verticalPositionAvailable" : true,
+ "frontVerticalPositionAvailable": true,
+ "backVerticalPositionAvailable": true,
+ "backTiltAngleAvailable": true,
+ "headSupportHorizontalPositionAvailable": true,
+ "headSupportVerticalPositionAvailable" : true,
+ "massageEnabledAvailable": true,
+ "massageModeAvailable": true,
+ "massageCushionFirmnessAvailable": true,
+ "memoryAvailable": true
+ }
+ ],
+ "lightControlCapabilities": {
+ "moduleName": "light",
+ "moduleInfo": {
+ "moduleId": "8d73e369-6a1f-4459-ab5a-6e432631881d",
+ "allowMultipleAccess": false
+ },
+ "supportedLights":[
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_HIGH_BEAM",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_HIGH_BEAM",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_LOW_BEAM",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_LOW_BEAM",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_PARKING_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_PARKING_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_FOG_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_FOG_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_DAYTIME_RUNNING_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_DAYTIME_RUNNING_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_LEFT_TURN_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FRONT_RIGHT_TURN_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_LEFT_FOG_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_RIGHT_FOG_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_LEFT_TAIL_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_RIGHT_TAIL_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_LEFT_BRAKE_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_RIGHT_BRAKE_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_LEFT_TURN_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_RIGHT_TURN_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_REGISTRATION_PLATE_LIGHT",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"HIGH_BEAMS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"LOW_BEAMS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"FOG_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"RUNNING_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"PARKING_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"BRAKE_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"REAR_REVERSING_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"SIDE_MARKER_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"LEFT_TURN_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"RIGHT_TURN_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"HAZARD_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"AMBIENT_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"OVERHEAD_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"READING_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"TRUNK_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"EXTERIOR_FRONT_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"EXTERIOR_REAR_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"EXTERIOR_LEFT_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
+ "statusAvailable":true,
+ "densityAvailable":true,
+ "name":"EXTERIOR_RIGHT_LIGHTS",
+ "rgbColorSpaceAvailable":true
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"REAR_CARGO_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"REAR_TRUCK_BED_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"REAR_TRAILER_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"LEFT_SPOT_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"RIGHT_SPOT_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"LEFT_PUDDLE_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":false,
"densityAvailable":false,
"name":"RIGHT_PUDDLE_LIGHTS",
"rgbColorSpaceAvailable":false
- },
- {
+ },
+ {
"statusAvailable":true,
"densityAvailable":false,
"name":"EXTERIOR_ALL_LIGHTS",
"rgbColorSpaceAvailable":false
- }
- ]
- },
- "hmiSettingsControlCapabilities": {
- "moduleName": "hmiSettings",
- "moduleInfo": {
- "moduleId": "c8cace3c-d482-4be1-8862-624a21e34563",
- "allowMultipleAccess": true
- },
- "distanceUnitAvailable": true,
- "temperatureUnitAvailable": true,
- "displayModeUnitAvailable": true
- }
+ }
+ ]
+ },
+ "hmiSettingsControlCapabilities": {
+ "moduleName": "hmiSettings",
+ "moduleInfo": {
+ "moduleId": "c8cace3c-d482-4be1-8862-624a21e34563",
+ "allowMultipleAccess": true
+ },
+ "distanceUnitAvailable": true,
+ "temperatureUnitAvailable": true,
+ "displayModeUnitAvailable": true
}
+ },
+ "seatLocationCapability": {
+ "rows": 2,
+ "columns": 3,
+ "levels": 1,
+ "seats": [
+ {
+ "row": 0,
+ "col": 0,
+ "level": 0,
+ "rowspan": 1,
+ "levelspan": 1,
+ "colspan": 1
+ }
+ ]
}
},
"VR": {
diff --git a/src/components/application_manager/include/application_manager/smart_object_keys.h b/src/components/application_manager/include/application_manager/smart_object_keys.h
index 2c6b2a7ff6..626e54ee26 100644
--- a/src/components/application_manager/include/application_manager/smart_object_keys.h
+++ b/src/components/application_manager/include/application_manager/smart_object_keys.h
@@ -604,6 +604,7 @@ extern const char* capabilities;
extern const char* speech_capabilities;
extern const char* prerecorded_speech_capabilities;
extern const char* preset_bank_capabilities;
+extern const char* on_screen_presets_available;
extern const char* allowed;
extern const char* vehicle_type;
extern const char* did_result;
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h
index 5ee2e0725c..6625641f54 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h
@@ -65,8 +65,6 @@ const char kGrid[] = "grid";
const char kAllowMultipleAccess[] = "allowMultipleAccess";
-const char kSupportedLights[] = "supportedLights";
-
// ClimateControlCapabilities
const char kFanSpeedAvailable[] = "fanSpeedAvailable";
const char kCurrentTemperatureAvailable[] = "currentTemperatureAvailable";
@@ -88,6 +86,7 @@ const char kName[] = "name";
const char kStatusAvailable[] = "statusAvailable";
const char kDensityAvailable[] = "densityAvailable";
const char kRGBColorSpaceAvailable[] = "rgbColorSpaceAvailable";
+const char kSupportedLights[] = "supportedLights";
// RadioControlCapabilities
const char kRadioBandAvailable[] = "radioBandAvailable";
@@ -100,6 +99,7 @@ const char kSignalChangeThresholdAvailable[] = "signalChangeThresholdAvailable";
const char kRadioEnableAvailable[] = "radioEnableAvailable";
const char kStateAvailable[] = "stateAvailable";
const char kSisDataAvailable[] = "sisDataAvailable";
+const char kHdChannelAvailable[] = "hdChannelAvailable";
const char kSiriusxmRadioAvailable[] = "siriusxmRadioAvailable";
@@ -128,6 +128,7 @@ const char kSourceAvailable[] = "sourceAvailable";
const char kKeepContextAvailable[] = "keepContextAvailable";
const char kVolumeAvailable[] = "volumeAvailable";
const char kEqualizerAvailable[] = "equalizerAvailable";
+const char kEqualizerMaxChannelId[] = "equalizerMaxChannelId";
// HmiSettingsCapabilities
const char kDistanceUnitAvailable[] = "distanceUnitAvailable";
@@ -358,6 +359,7 @@ const char kNotFound[] = "NOT_FOUND";
const char kFront[] = "FRONT";
const char kRear[] = "REAR";
const char kAll[] = "ALL";
+const char kNone[] = "NONE";
// DefrostZone enum
// TemperatureUnit enum
@@ -387,8 +389,9 @@ const char kRepeat[] = "REPEAT";
// ButtonName enum
// ButtonPressMode enum
-const char kLong[] = "LONG";
-const char kShort[] = "SHORT";
+const char kShortPressAvailable[] = "shortPressAvailable";
+const char kLongPressAvailable[] = "longPressAvailable";
+const char kUpDownAvailable[] = "upDownAvailable";
// ButtonPressMode enum
// Access mode enum
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc
index 5c7e68046f..5f13ef5616 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc
@@ -98,16 +98,16 @@ void RCIsReadyRequest::onTimeOut() {
}
void RCIsReadyRequest::RequestCapabilities() {
- // const auto default_initialized_capabilities =
- // hmi_capabilities_.GetDefaultInitializedCapabilities();
+ const auto default_initialized_capabilities =
+ hmi_capabilities_.GetDefaultInitializedCapabilities();
- // if (helpers::in_range(default_initialized_capabilities,
- // hmi_apis::FunctionID::RC_GetCapabilities)) {
- std::shared_ptr<smart_objects::SmartObject> get_capabilities(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::RC_GetCapabilities, application_manager_));
- rpc_service_.ManageHMICommand(get_capabilities);
- // }
+ if (helpers::in_range(default_initialized_capabilities,
+ hmi_apis::FunctionID::RC_GetCapabilities)) {
+ std::shared_ptr<smart_objects::SmartObject> get_capabilities(
+ MessageHelper::CreateModuleInfoSO(
+ hmi_apis::FunctionID::RC_GetCapabilities, application_manager_));
+ rpc_service_.ManageHMICommand(get_capabilities);
+ }
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/rc_is_ready_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/rc_is_ready_request_test.cc
index 539c0efeb3..e35ffa3102 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/rc_is_ready_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/rc_is_ready_request_test.cc
@@ -113,8 +113,14 @@ class RCIsReadyRequestTest
event.set_smart_object(*msg);
}
+ void HMICapabilitiesExpectations() {
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
+ hmi_apis::FunctionID::RC_GetCapabilities};
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
+ .WillOnce(Return(interfaces_to_update));
+ }
+
RCIsReadyRequestPtr command_;
- am::MockHmiInterfaces mock_hmi_interfaces_;
};
TEST_F(RCIsReadyRequestTest, Run_NoKeyAvailableInMessage_HmiInterfacesIgnored) {
@@ -123,6 +129,7 @@ TEST_F(RCIsReadyRequestTest, Run_NoKeyAvailableInMessage_HmiInterfacesIgnored) {
const bool is_message_contain_param = false;
Event event(hmi_apis::FunctionID::RC_IsReady);
PrepareEvent(is_message_contain_param, event);
+ HMICapabilitiesExpectations();
SetUpExpectations(is_rc_cooperating_available,
is_send_message_to_hmi,
is_message_contain_param,
@@ -149,6 +156,7 @@ TEST_F(RCIsReadyRequestTest, Run_KeyAvailableEqualToTrue_StateAvailable) {
const bool is_message_contain_param = true;
Event event(hmi_apis::FunctionID::RC_IsReady);
PrepareEvent(is_message_contain_param, event, is_rc_cooperating_available);
+ HMICapabilitiesExpectations();
SetUpExpectations(is_rc_cooperating_available,
is_send_message_to_hmi,
is_message_contain_param,
@@ -157,6 +165,7 @@ TEST_F(RCIsReadyRequestTest, Run_KeyAvailableEqualToTrue_StateAvailable) {
}
TEST_F(RCIsReadyRequestTest, Run_HMIDoestRespond_SendMessageToHMIByTimeout) {
+ HMICapabilitiesExpectations();
ExpectSendMessagesToHMI();
command_->onTimeOut();
}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/ui_is_ready_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/ui_is_ready_request_test.cc
index 8d49eef23f..b83c45ccca 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/ui_is_ready_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/ui_is_ready_request_test.cc
@@ -142,12 +142,11 @@ class UIIsReadyRequestTest
}
void HMICapabilitiesExpectations() {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update{
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
hmi_apis::FunctionID::UI_GetLanguage,
hmi_apis::FunctionID::UI_GetSupportedLanguages,
hmi_apis::FunctionID::UI_GetCapabilities};
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
- .WillOnce(Return(interfaces_to_update))
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
}
@@ -201,11 +200,11 @@ TEST_F(UIIsReadyRequestTest,
}
TEST_F(UIIsReadyRequestTest, OnTimeout_SUCCESS_CacheIsAbsent) {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update{
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
hmi_apis::FunctionID::UI_GetLanguage,
hmi_apis::FunctionID::UI_GetSupportedLanguages,
hmi_apis::FunctionID::UI_GetCapabilities};
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
ExpectSendMessagesToHMI();
command_->onTimeOut();
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/vr_is_ready_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/vr_is_ready_request_test.cc
index c9e24dcfbb..db9611bb40 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/vr_is_ready_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/vr_is_ready_request_test.cc
@@ -128,12 +128,11 @@ class VRIsReadyRequestTest
}
void HMICapabilitiesExpectations() {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update{
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
hmi_apis::FunctionID::VR_GetLanguage,
hmi_apis::FunctionID::VR_GetSupportedLanguages,
hmi_apis::FunctionID::VR_GetCapabilities};
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
- .WillOnce(Return(interfaces_to_update))
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
}
@@ -186,11 +185,11 @@ TEST_F(VRIsReadyRequestTest,
TEST_F(VRIsReadyRequestTest,
Run_HMIDoestRespond_SendMessageToHMIByTimeout_CacheIsAbsent) {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update{
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
hmi_apis::FunctionID::VR_GetLanguage,
hmi_apis::FunctionID::VR_GetSupportedLanguages,
hmi_apis::FunctionID::VR_GetCapabilities};
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
const bool is_send_message_by_timeout = true;
ExpectSendMessagesToHMI(is_send_message_by_timeout);
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/hmi/vi_is_ready_request_test.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/hmi/vi_is_ready_request_test.cc
index 9eb3fd8788..f64e20a49e 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/hmi/vi_is_ready_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/commands/hmi/vi_is_ready_request_test.cc
@@ -32,7 +32,7 @@
#include "hmi/vi_is_ready_request.h"
-#include <vector>
+#include <set>
#include "gtest/gtest.h"
#include "application_manager/event_engine/event.h"
@@ -118,11 +118,10 @@ class VIIsReadyRequestTest
}
void HMICapabilitiesExpectations() {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update{
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
- .WillOnce(Return(interfaces_to_update))
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
}
@@ -171,10 +170,9 @@ TEST_F(VIIsReadyRequestTest, Run_KeyAvailableEqualToTrue_StateAvailable) {
}
TEST_F(VIIsReadyRequestTest, Run_HMIDoestRespond_SendMessageToHMIByTimeout) {
- std::vector<hmi_apis::FunctionID::eType> interfaces_to_update;
- interfaces_to_update.push_back(
- hmi_apis::FunctionID::VehicleInfo_GetVehicleType);
- EXPECT_CALL(mock_hmi_capabilities_, GetInterfacesToUpdate())
+ std::set<hmi_apis::FunctionID::eType> interfaces_to_update{
+ hmi_apis::FunctionID::VehicleInfo_GetVehicleType};
+ EXPECT_CALL(mock_hmi_capabilities_, GetDefaultInitializedCapabilities())
.WillOnce(Return(interfaces_to_update));
ExpectSendMessagesToHMI();
command_->onTimeOut();
diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc
index f4a5a12d5e..ded4b0c02c 100644
--- a/src/components/application_manager/src/hmi_capabilities_impl.cc
+++ b/src/components/application_manager/src/hmi_capabilities_impl.cc
@@ -1301,16 +1301,15 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() {
set_soft_button_capabilities(soft_button_capabilities_so);
}
- auto ui_system_capabilities_capabilities_node =
+ auto ui_system_capabilities_node =
json_ui_getter.GetJsonMember(strings::system_capabilities,
hmi_apis::FunctionID::UI_GetCapabilities,
default_initialized_capabilities_);
- if (!ui_system_capabilities_capabilities_node.isNull()) {
- if (JsonIsMemberSafe(ui_system_capabilities_capabilities_node,
+ if (!ui_system_capabilities_node.isNull()) {
+ if (JsonIsMemberSafe(ui_system_capabilities_node,
strings::navigation_capability)) {
- Json::Value navigation_capability =
- ui_system_capabilities_capabilities_node.get(
- strings::navigation_capability, "");
+ Json::Value navigation_capability = ui_system_capabilities_node.get(
+ strings::navigation_capability, "");
smart_objects::SmartObject navigation_capability_so;
formatters::CFormatterJsonBase::jsonValueToObj(
navigation_capability, navigation_capability_so);
@@ -1319,11 +1318,10 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() {
set_navigation_supported(true);
}
}
- if (JsonIsMemberSafe(ui_system_capabilities_capabilities_node,
+ if (JsonIsMemberSafe(ui_system_capabilities_node,
strings::phone_capability)) {
Json::Value phone_capability =
- ui_system_capabilities_capabilities_node.get(
- strings::phone_capability, "");
+ ui_system_capabilities_node.get(strings::phone_capability, "");
smart_objects::SmartObject phone_capability_so;
formatters::CFormatterJsonBase::jsonValueToObj(phone_capability,
phone_capability_so);
@@ -1332,11 +1330,10 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() {
set_phone_call_supported(true);
}
}
- if (JsonIsMemberSafe(ui_system_capabilities_capabilities_node,
+ if (JsonIsMemberSafe(ui_system_capabilities_node,
strings::video_streaming_capability)) {
- Json::Value vs_capability =
- ui_system_capabilities_capabilities_node.get(
- strings::video_streaming_capability, "");
+ Json::Value vs_capability = ui_system_capabilities_node.get(
+ strings::video_streaming_capability, "");
smart_objects::SmartObject vs_capability_so;
formatters::CFormatterJsonBase::jsonValueToObj(vs_capability,
vs_capability_so);
@@ -1384,49 +1381,67 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() {
set_video_streaming_supported(true);
}
}
- if (JsonIsMemberSafe(ui_system_capabilities_capabilities_node,
- strings::rc_capability)) {
- Json::Value rc_capability =
- ui_system_capabilities_capabilities_node.get(
- strings::rc_capability, "");
- smart_objects::SmartObject rc_capability_so;
- formatters::CFormatterJsonBase::jsonValueToObj(rc_capability,
- rc_capability_so);
- if (rc_capability_so.keyExists(
- rc_rpc_plugin::strings::klightControlCapabilities)) {
- if (rc_capability_so
- [rc_rpc_plugin::strings::klightControlCapabilities]
- .keyExists(rc_rpc_plugin::strings::kSupportedLights)) {
- auto& lights = rc_capability_so
+ }
+ } // UI end
+
+ // RC
+ if (!json_root_getter.GetInterfaceJsonMember(hmi_interface::rc).isNull()) {
+ auto rc_interface_main_node =
+ json_root_getter.GetMainJsonMember(hmi_interface::rc);
+ auto rc_interface_cache_node =
+ json_root_getter.GetCachedJsonMember(hmi_interface::rc);
+
+ JsonCapabilitiesGetter rc_json_getter(rc_interface_main_node,
+ rc_interface_cache_node);
+
+ auto rc_capabilitity_node =
+ rc_json_getter.GetJsonMember(strings::rc_capability,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ default_initialized_capabilities_);
+ if (!rc_capabilitity_node.isNull()) {
+ smart_objects::SmartObject rc_capability_so;
+ formatters::CFormatterJsonBase::jsonValueToObj(rc_capabilitity_node,
+ rc_capability_so);
+ if (rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::klightControlCapabilities)) {
+ if (rc_capability_so
[rc_rpc_plugin::strings::klightControlCapabilities]
- [rc_rpc_plugin::strings::kSupportedLights];
- auto it = lights.asArray()->begin();
- for (; it != lights.asArray()->end(); ++it) {
- smart_objects::SmartObject& light_name_so =
- (*it)[strings::name];
- auto light_name = MessageHelper::CommonLightNameFromString(
- light_name_so.asString());
- light_name_so = light_name;
- }
+ .keyExists(rc_rpc_plugin::strings::kSupportedLights)) {
+ auto& lights = rc_capability_so
+ [rc_rpc_plugin::strings::klightControlCapabilities]
+ [rc_rpc_plugin::strings::kSupportedLights];
+ auto it = lights.asArray()->begin();
+ for (; it != lights.asArray()->end(); ++it) {
+ smart_objects::SmartObject& light_name_so = (*it)[strings::name];
+ auto light_name = MessageHelper::CommonLightNameFromString(
+ light_name_so.asString());
+ light_name_so = light_name;
}
}
+ }
+ if (!rc_capability_so.empty()) {
+ set_rc_supported(true);
set_rc_capability(rc_capability_so);
- if (!rc_capability_so.empty()) {
- set_rc_supported(true);
- }
}
- if (JsonIsMemberSafe(ui_system_capabilities_capabilities_node,
- strings::seat_location_capability)) {
- Json::Value seat_location_capability =
- ui_system_capabilities_capabilities_node.get(
- strings::seat_location_capability, "");
- smart_objects::SmartObject seat_location_capability_so;
- formatters::CFormatterJsonBase::jsonValueToObj(
- seat_location_capability, seat_location_capability_so);
+ }
+
+ auto seat_location_capabilitiy_node =
+ rc_json_getter.GetJsonMember(strings::seat_location_capability,
+ hmi_apis::FunctionID::RC_GetCapabilities,
+ default_initialized_capabilities_);
+
+ if (!seat_location_capabilitiy_node.isNull()) {
+ smart_objects::SmartObject seat_location_capability_so;
+ formatters::CFormatterJsonBase::jsonValueToObj(
+ seat_location_capabilitiy_node, seat_location_capability_so);
+
+ if (!seat_location_capability_so.empty()) {
+ set_rc_supported(true);
set_seat_location_capability(seat_location_capability_so);
}
}
- } // UI end
+ }
+ // RC end
// VR
if (!json_root_getter.GetInterfaceJsonMember(hmi_interface::vr).isNull()) {
diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc
index 8914c4f380..a3e9f9f505 100644
--- a/src/components/application_manager/src/smart_object_keys.cc
+++ b/src/components/application_manager/src/smart_object_keys.cc
@@ -561,6 +561,7 @@ const char* capabilities = "capabilities";
const char* speech_capabilities = "speechCapabilities";
const char* prerecorded_speech_capabilities = "prerecordedSpeechCapabilities";
const char* preset_bank_capabilities = "presetBankCapabilities";
+const char* on_screen_presets_available = "onScreenPresetsAvailable";
const char* allowed = "allowed";
const char* vehicle_type = "vehicleType";
const char* did_result = "didResult";
diff --git a/src/components/application_manager/test/CMakeLists.txt b/src/components/application_manager/test/CMakeLists.txt
index 230be524c8..3a10354717 100755
--- a/src/components/application_manager/test/CMakeLists.txt
+++ b/src/components/application_manager/test/CMakeLists.txt
@@ -47,6 +47,7 @@ include_directories(
${COMPONENTS_DIR}/application_manager/test/include/
${COMPONENTS_DIR}/application_manager/rpc_plugins/sdl_rpc_plugin/include/
${COMPONENTS_DIR}/application_manager/rpc_plugins/vehicle_info_plugin/include/
+ ${COMPONENTS_DIR}/application_manager/rpc_plugins/rc_rpc_plugin/include/
${BSON_INCLUDE_DIRECTORY}
)
@@ -157,7 +158,7 @@ set(ResumptionData_SOURCES
${AM_TEST_DIR}/mock_message_helper.cc
)
-file(COPY hmi_capabilities.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+file(COPY ${CMAKE_SOURCE_DIR}/src/appMain/hmi_capabilities.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY hmi_capabilities_sc1.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY hmi_capabilities_sc2.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY hmi_capabilities_old_apt.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/src/components/application_manager/test/hmi_capabilities_test.cc b/src/components/application_manager/test/hmi_capabilities_test.cc
index 7381161039..bcc653ed9b 100644
--- a/src/components/application_manager/test/hmi_capabilities_test.cc
+++ b/src/components/application_manager/test/hmi_capabilities_test.cc
@@ -33,6 +33,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <algorithm>
#include <string>
#include "application_manager/hmi_capabilities.h"
@@ -49,6 +50,7 @@
#include "application_manager/mock_rpc_service.h"
#include "application_manager/resumption/resume_ctrl.h"
#include "application_manager/state_controller.h"
+#include "rc_rpc_plugin/rc_module_constants.h"
#include "resumption/last_state_impl.h"
#include "resumption/last_state_wrapper_impl.h"
#include "utils/file_system.h"
@@ -57,70 +59,44 @@ namespace test {
namespace components {
namespace application_manager_test {
+namespace {
+const std::string kAppInfoDataFile = "./app_info_data";
+const std::string kAppStorageFolder = "app_storage_folder";
+const std::string kAppInfoStorage = "app_info_storage";
+const std::string kHmiCapabilitiesDefaultFile = "hmi_capabilities.json";
+const std::string kHmiCapabilitiesCacheDefaultFile =
+ "hmi_capabilities_cache.json";
+const uint32_t kEqualizerMaxChanelId = 10;
+} // namespace
+
using ::testing::_;
using ::testing::AtLeast;
using ::testing::InSequence;
using ::testing::Invoke;
+using ::testing::NiceMock;
using ::testing::Return;
using ::testing::ReturnRef;
using namespace application_manager;
-class HMICapabilitiesTest : public ::testing::Test {
- protected:
- HMICapabilitiesTest()
- : last_state_wrapper_(std::make_shared<resumption::LastStateWrapperImpl>(
- std::make_shared<resumption::LastStateImpl>("app_storage_folder",
- "app_info_storage")))
- , file_name_("hmi_capabilities.json")
- , file_cache_name_("hmi_capabilities_cache.json") {}
- virtual void SetUp() OVERRIDE {
- EXPECT_CALL(app_mngr_, event_dispatcher())
- .WillOnce(ReturnRef(mock_event_dispatcher));
- EXPECT_CALL(app_mngr_, get_settings())
- .WillRepeatedly(ReturnRef(mock_application_manager_settings_));
- ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
- .WillByDefault(ReturnRef(file_name_));
- ON_CALL(mock_application_manager_settings_,
- hmi_capabilities_cache_file_name())
- .WillByDefault(ReturnRef(file_cache_name_));
- EXPECT_CALL(mock_event_dispatcher, add_observer(_, _, _)).Times(1);
- EXPECT_CALL(mock_event_dispatcher, remove_observer(_)).Times(1);
- EXPECT_CALL(mock_application_manager_settings_, launch_hmi())
- .WillOnce(Return(false));
- hmi_capabilities_test =
- std::make_shared<HMICapabilitiesForTesting>(app_mngr_);
- hmi_capabilities_test->Init(last_state_wrapper_);
- }
+typedef std::map<std::string, hmi_apis::Common_Language::eType>
+ LanguageCStringToEnumMap;
- void TearDown() OVERRIDE {
- hmi_capabilities_test.reset();
- }
- static void TearDownTestCase() {
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
- }
+typedef std::map<std::string, hmi_apis::Common_LightName::eType>
+ LightNameCStringToEnumMap;
- void SetCooperating();
- MockApplicationManager app_mngr_;
- event_engine_test::MockEventDispatcher mock_event_dispatcher;
- resumption::LastStateWrapperPtr last_state_wrapper_;
- MockApplicationManagerSettings mock_application_manager_settings_;
- std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities_test;
- const std::string file_name_;
- const std::string file_cache_name_;
- application_manager_test::MockRPCService mock_rpc_service_;
-};
+static LanguageCStringToEnumMap languages_map;
+static LightNameCStringToEnumMap light_names_map;
-const char* const cstring_values_[] = {
- "EN_US", "ES_MX", "FR_CA", "DE_DE", "ES_ES", "EN_GB", "RU_RU", "TR_TR",
- "PL_PL", "FR_FR", "IT_IT", "SV_SE", "PT_PT", "NL_NL", "EN_AU", "ZH_CN",
- "ZH_TW", "JA_JP", "AR_SA", "KO_KR", "PT_BR", "CS_CZ", "DA_DK", "NO_NO",
- "NL_BE", "EL_GR", "HU_HU", "FI_FI", "SK_SK", "EN_IN", "TH_TH", "EN_SA",
- "HE_IL", "RO_RO", "UK_UA", "ID_ID", "VI_VN", "MS_MY", "HI_IN"};
+const std::vector<std::string> language_cstring_values{
+ {"EN-US"}, {"ES-MX"}, {"FR-CA"}, {"DE-DE"}, {"ES-ES"}, {"EN-GB"}, {"RU-RU"},
+ {"TR-TR"}, {"PL-PL"}, {"FR-FR"}, {"IT-IT"}, {"SV-SE"}, {"PT-PT"}, {"NL-NL"},
+ {"EN-AU"}, {"ZH-CN"}, {"ZH-TW"}, {"JA-JP"}, {"AR-SA"}, {"KO-KR"}, {"PT-BR"},
+ {"CS-CZ"}, {"DA-DK"}, {"NO-NO"}, {"NL-BE"}, {"EL-GR"}, {"HU-HU"}, {"FI-FI"},
+ {"SK-SK"}, {"EN-IN"}, {"TH-TH"}, {"EN-SA"}, {"HE-IL"}, {"RO-RO"}, {"UK-UA"},
+ {"ID-ID"}, {"VI-VN"}, {"MS-MY"}, {"HI-IN"}};
-const hmi_apis::Common_Language::eType enum_values_[] = {
+const std::vector<hmi_apis::Common_Language::eType> language_enum_values{
hmi_apis::Common_Language::EN_US, hmi_apis::Common_Language::ES_MX,
hmi_apis::Common_Language::FR_CA, hmi_apis::Common_Language::DE_DE,
hmi_apis::Common_Language::ES_ES, hmi_apis::Common_Language::EN_GB,
@@ -142,142 +118,329 @@ const hmi_apis::Common_Language::eType enum_values_[] = {
hmi_apis::Common_Language::VI_VN, hmi_apis::Common_Language::MS_MY,
hmi_apis::Common_Language::HI_IN};
-struct CStringComparator {
- bool operator()(const char* a, const char* b) {
- return strcmp(a, b) < 0;
+const std::vector<hmi_apis::Common_LightName::eType> light_name_enum_values{
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_HIGH_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_HIGH_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_LOW_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_LOW_BEAM,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_PARKING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_PARKING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_DAYTIME_RUNNING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_DAYTIME_RUNNING_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_LEFT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::FRONT_RIGHT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_FOG_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_TAIL_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_TAIL_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_BRAKE_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_BRAKE_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_LEFT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_RIGHT_TURN_LIGHT,
+ hmi_apis::Common_LightName::eType::REAR_REGISTRATION_PLATE_LIGHT,
+ hmi_apis::Common_LightName::eType::HIGH_BEAMS,
+ hmi_apis::Common_LightName::eType::LOW_BEAMS,
+ hmi_apis::Common_LightName::eType::FOG_LIGHTS,
+ hmi_apis::Common_LightName::eType::RUNNING_LIGHTS,
+ hmi_apis::Common_LightName::eType::PARKING_LIGHTS,
+ hmi_apis::Common_LightName::eType::BRAKE_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_REVERSING_LIGHTS,
+ hmi_apis::Common_LightName::eType::SIDE_MARKER_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_TURN_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_TURN_LIGHTS,
+ hmi_apis::Common_LightName::eType::HAZARD_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_CARGO_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_TRUCK_BED_LIGHTS,
+ hmi_apis::Common_LightName::eType::REAR_TRAILER_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_SPOT_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_SPOT_LIGHTS,
+ hmi_apis::Common_LightName::eType::LEFT_PUDDLE_LIGHTS,
+ hmi_apis::Common_LightName::eType::RIGHT_PUDDLE_LIGHTS,
+ hmi_apis::Common_LightName::eType::AMBIENT_LIGHTS,
+ hmi_apis::Common_LightName::eType::OVERHEAD_LIGHTS,
+ hmi_apis::Common_LightName::eType::READING_LIGHTS,
+ hmi_apis::Common_LightName::eType::TRUNK_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_FRONT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_REAR_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_LEFT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_RIGHT_LIGHTS,
+ hmi_apis::Common_LightName::eType::EXTERIOR_ALL_LIGHTS};
+
+const std::vector<std::string> light_name_string_values{
+ {"FRONT_LEFT_HIGH_BEAM"},
+ {"FRONT_RIGHT_HIGH_BEAM"},
+ {"FRONT_LEFT_LOW_BEAM"},
+ {"FRONT_RIGHT_LOW_BEAM"},
+ {"FRONT_LEFT_PARKING_LIGHT"},
+ {"FRONT_RIGHT_PARKING_LIGHT"},
+ {"FRONT_LEFT_FOG_LIGHT"},
+ {"FRONT_RIGHT_FOG_LIGHT"},
+ {"FRONT_LEFT_DAYTIME_RUNNING_LIGHT"},
+ {"FRONT_RIGHT_DAYTIME_RUNNING_LIGHT"},
+ {"FRONT_LEFT_TURN_LIGHT"},
+ {"FRONT_RIGHT_TURN_LIGHT"},
+ {"REAR_LEFT_FOG_LIGHT"},
+ {"REAR_RIGHT_FOG_LIGHT"},
+ {"REAR_LEFT_TAIL_LIGHT"},
+ {"REAR_RIGHT_TAIL_LIGHT"},
+ {"REAR_LEFT_BRAKE_LIGHT"},
+ {"REAR_RIGHT_BRAKE_LIGHT"},
+ {"REAR_LEFT_TURN_LIGHT"},
+ {"REAR_RIGHT_TURN_LIGHT"},
+ {"REAR_REGISTRATION_PLATE_LIGHT"},
+ {"HIGH_BEAMS"},
+ {"LOW_BEAMS"},
+ {"FOG_LIGHTS"},
+ {"RUNNING_LIGHTS"},
+ {"PARKING_LIGHTS"},
+ {"BRAKE_LIGHTS"},
+ {"REAR_REVERSING_LIGHTS"},
+ {"SIDE_MARKER_LIGHTS"},
+ {"LEFT_TURN_LIGHTS"},
+ {"RIGHT_TURN_LIGHTS"},
+ {"HAZARD_LIGHTS"},
+ {"REAR_CARGO_LIGHTS"},
+ {"REAR_TRUCK_BED_LIGHTS"},
+ {"REAR_TRAILER_LIGHTS"},
+ {"LEFT_SPOT_LIGHTS"},
+ {"RIGHT_SPOT_LIGHTS"},
+ {"LEFT_PUDDLE_LIGHTS"},
+ {"RIGHT_PUDDLE_LIGHTS"},
+ {"AMBIENT_LIGHTS"},
+ {"OVERHEAD_LIGHTS"},
+ {"READING_LIGHTS"},
+ {"TRUNK_LIGHTS"},
+ {"EXTERIOR_FRONT_LIGHTS"},
+ {"EXTERIOR_REAR_LIGHTS"},
+ {"EXTERIOR_LEFT_LIGHTS"},
+ {"EXTERIOR_RIGHT_LIGHTS"},
+ {"EXTERIOR_ALL_LIGHTS"}};
+
+void InitLightNameCStringToEnumMap(
+ LightNameCStringToEnumMap& out_light_names_map) {
+ for (size_t i = 0; i < light_name_string_values.size(); ++i) {
+ out_light_names_map[light_name_string_values[i]] =
+ light_name_enum_values[i];
}
-};
-
-typedef std::
- map<const char*, hmi_apis::Common_Language::eType, CStringComparator>
- CStringToEnumMap;
+}
-CStringToEnumMap InitCStringToEnumMap() {
- size_t value = sizeof(cstring_values_) / sizeof(cstring_values_[0]);
- CStringToEnumMap result;
- for (size_t i = 0; i < value; ++i) {
- result[cstring_values_[i]] = enum_values_[i];
+bool LihgtNameStringToEnum(const std::string& light_name_str,
+ hmi_apis::Common_LightName::eType& out_value) {
+ auto it = light_names_map.find(light_name_str);
+ if (it == light_names_map.end()) {
+ return false;
}
- return result;
+ out_value = it->second;
+ return true;
}
-bool StringToEnum(const char* str, hmi_apis::Common_Language::eType& value) {
- size_t count_value = sizeof(cstring_values_) / sizeof(cstring_values_[0]);
- CStringToEnumMap result;
- for (size_t i = 0; i < count_value; ++i) {
- result[cstring_values_[i]] = enum_values_[i];
+void InitLanguageCStringToEnumMap(LanguageCStringToEnumMap& out_languages_map) {
+ for (size_t i = 0; i < language_cstring_values.size(); ++i) {
+ out_languages_map[language_cstring_values[i]] = language_enum_values[i];
}
+}
- CStringToEnumMap::const_iterator it = result.find(str);
- if (it == result.end()) {
+bool LanguageStringToEnum(const std::string& language_str,
+ hmi_apis::Common_Language::eType& out_value) {
+ LanguageCStringToEnumMap::const_iterator it =
+ languages_map.find(language_str);
+ if (it == languages_map.end()) {
return false;
}
- value = it->second;
+ out_value = it->second;
return true;
}
hmi_apis::Common_Language::eType TestCommonLanguageFromString(
const std::string& language) {
hmi_apis::Common_Language::eType value;
- if (StringToEnum(language.c_str(), value)) {
+ if (LanguageStringToEnum(language, value)) {
return value;
}
return hmi_apis::Common_Language::INVALID_ENUM;
}
+hmi_apis::Common_LightName::eType TestCommonLightNameFromString(
+ const std::string& light_name_str) {
+ hmi_apis::Common_LightName::eType value;
+ if (LihgtNameStringToEnum(light_name_str, value)) {
+ return value;
+ }
+ return hmi_apis::Common_LightName::INVALID_ENUM;
+}
+
+bool IsLightNameExists(const hmi_apis::Common_LightName::eType& light_name) {
+ auto it = std::find(
+ light_name_enum_values.begin(), light_name_enum_values.end(), light_name);
+ return !(it == light_name_enum_values.end());
+}
+
+class HMICapabilitiesTest : public ::testing::Test {
+ protected:
+ HMICapabilitiesTest()
+ : last_state_wrapper_(std::make_shared<resumption::LastStateWrapperImpl>(
+ std::make_shared<resumption::LastStateImpl>(kAppStorageFolder,
+ kAppInfoStorage)))
+ , file_name_(kHmiCapabilitiesDefaultFile)
+ , file_cache_name_(kHmiCapabilitiesCacheDefaultFile) {}
+ virtual void SetUp() OVERRIDE {
+ if (languages_map.empty()) {
+ InitLanguageCStringToEnumMap(languages_map);
+ }
+ if (light_names_map.empty()) {
+ InitLightNameCStringToEnumMap(light_names_map);
+ }
+
+ ON_CALL(mock_app_mngr_, IsSOStructValid(_, _)).WillByDefault(Return(true));
+
+ EXPECT_CALL(mock_app_mngr_, event_dispatcher())
+ .WillOnce(ReturnRef(mock_event_dispatcher));
+ EXPECT_CALL(mock_app_mngr_, get_settings())
+ .WillRepeatedly(ReturnRef(mock_application_manager_settings_));
+ ON_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
+ .WillByDefault(ReturnRef(file_name_));
+ ON_CALL(mock_application_manager_settings_,
+ hmi_capabilities_cache_file_name())
+ .WillByDefault(ReturnRef(file_cache_name_));
+ EXPECT_CALL(mock_event_dispatcher, add_observer(_, _, _)).Times(1);
+ EXPECT_CALL(mock_event_dispatcher, remove_observer(_)).Times(1);
+ EXPECT_CALL(mock_application_manager_settings_, launch_hmi())
+ .WillOnce(Return(false));
+ hmi_capabilities_test =
+ std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr_);
+ hmi_capabilities_test->Init(last_state_wrapper_);
+ }
+
+ void TearDown() OVERRIDE {
+ hmi_capabilities_test.reset();
+ }
+ static void TearDownTestCase() {
+ DeleteFileIfExists(kAppInfoDataFile);
+ }
+
+ static void DeleteFileIfExists(const std::string& file_path) {
+ if (file_system::FileExists(file_path)) {
+ EXPECT_TRUE(::file_system::DeleteFile(file_path));
+ }
+ }
+
+ void SetCooperating();
+ NiceMock<MockApplicationManager> mock_app_mngr_;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_event_dispatcher;
+ resumption::LastStateWrapperPtr last_state_wrapper_;
+ NiceMock<MockApplicationManagerSettings> mock_application_manager_settings_;
+ std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities_test;
+ const std::string file_name_;
+ const std::string file_cache_name_;
+ application_manager_test::MockRPCService mock_rpc_service_;
+};
+
TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
- const std::string hmi_capabilities_file = "hmi_capabilities.json";
- EXPECT_CALL(mock_application_manager_settings_, hmi_capabilities_file_name())
- .WillOnce(ReturnRef(hmi_capabilities_file));
+ DeleteFileIfExists(kAppInfoDataFile);
+
EXPECT_CALL(*(MockMessageHelper::message_helper_mock()),
CommonLanguageFromString(_))
.WillRepeatedly(Invoke(TestCommonLanguageFromString));
-
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
- EXPECT_CALL(app_mngr_, IsSOStructValid(_, _)).WillOnce(Return(true));
-
- EXPECT_TRUE(hmi_capabilities_test->LoadCapabilitiesFromFile());
+ EXPECT_CALL(*(MockMessageHelper::message_helper_mock()),
+ CommonLightNameFromString(_))
+ .WillRepeatedly(Invoke(TestCommonLightNameFromString));
+ ASSERT_TRUE(hmi_capabilities_test->LoadCapabilitiesFromFile());
// Check active languages
EXPECT_EQ(hmi_apis::Common_Language::EN_US,
hmi_capabilities_test->active_ui_language());
- EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
hmi_capabilities_test->active_vr_language());
- EXPECT_EQ(hmi_apis::Common_Language::DE_DE,
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
hmi_capabilities_test->active_tts_language());
// Check UI languages
- const smart_objects::SmartObject ui_supported_languages =
+ const auto ui_supported_languages_so =
*(hmi_capabilities_test->ui_supported_languages());
EXPECT_EQ(hmi_apis::Common_Language::EN_US,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[0].asInt()));
+ ui_supported_languages_so[0].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[1].asInt()));
+ ui_supported_languages_so[1].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
static_cast<hmi_apis::Common_Language::eType>(
- ui_supported_languages[2].asInt()));
+ ui_supported_languages_so[2].asInt()));
// Check VR languages
- const smart_objects::SmartObject vr_supported_languages =
+ const auto vr_supported_languages_so =
*(hmi_capabilities_test->vr_supported_languages());
- EXPECT_EQ(hmi_apis::Common_Language::AR_SA,
- static_cast<hmi_apis::Common_Language::eType>(
- vr_supported_languages[0].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::EN_US,
static_cast<hmi_apis::Common_Language::eType>(
- vr_supported_languages[1].asInt()));
+ vr_supported_languages_so[0].asInt()));
EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- vr_supported_languages[2].asInt()));
+ vr_supported_languages_so[1].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
+ static_cast<hmi_apis::Common_Language::eType>(
+ vr_supported_languages_so[2].asInt()));
// Check TTS languages
- const smart_objects::SmartObject tts_supported_languages =
+ const auto tts_supported_languages_so =
*(hmi_capabilities_test->tts_supported_languages());
- EXPECT_EQ(hmi_apis::Common_Language::DA_DK,
+ EXPECT_EQ(hmi_apis::Common_Language::EN_US,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[0].asInt()));
- EXPECT_EQ(hmi_apis::Common_Language::CS_CZ,
+ tts_supported_languages_so[0].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::ES_MX,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[1].asInt()));
- EXPECT_EQ(hmi_apis::Common_Language::KO_KR,
+ tts_supported_languages_so[1].asInt()));
+ EXPECT_EQ(hmi_apis::Common_Language::FR_CA,
static_cast<hmi_apis::Common_Language::eType>(
- tts_supported_languages[2].asInt()));
+ tts_supported_languages_so[2].asInt()));
// Check TTS capabilities
- const smart_objects::SmartObject tts_capabilities =
+ const auto tts_capabilities_so =
*(hmi_capabilities_test->speech_capabilities());
EXPECT_EQ(hmi_apis::Common_SpeechCapabilities::SC_TEXT,
static_cast<hmi_apis::Common_SpeechCapabilities::eType>(
- tts_capabilities[0].asInt()));
+ tts_capabilities_so[0].asInt()));
// Check button capabilities
- const smart_objects::SmartObject buttons_capabilities_so =
+ const auto buttons_capabilities_so =
*(hmi_capabilities_test->button_capabilities());
// Count of buttons in json file
- const uint32_t btn_length = buttons_capabilities_so.length();
+ const uint32_t btn_length =
+ static_cast<uint32_t>(buttons_capabilities_so.length());
EXPECT_EQ(16u, btn_length);
for (uint32_t i = 0; i < btn_length; ++i) {
- EXPECT_TRUE((buttons_capabilities_so[i]).keyExists(strings::name));
- EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("shortPressAvailable"));
- EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("longPressAvailable"));
- EXPECT_TRUE((buttons_capabilities_so[i]).keyExists("upDownAvailable"));
- EXPECT_TRUE(buttons_capabilities_so[i]["shortPressAvailable"].asBool());
- EXPECT_TRUE(buttons_capabilities_so[i]["longPressAvailable"].asBool());
- EXPECT_TRUE(buttons_capabilities_so[i]["upDownAvailable"].asBool());
+ auto index = static_cast<int32_t>(i);
+ ASSERT_TRUE(
+ (buttons_capabilities_so[index])
+ .keyExists(rc_rpc_plugin::enums_value::kShortPressAvailable));
+ ASSERT_TRUE(
+ (buttons_capabilities_so[index])
+ .keyExists(rc_rpc_plugin::enums_value::kLongPressAvailable));
+ ASSERT_TRUE((buttons_capabilities_so[index])
+ .keyExists(rc_rpc_plugin::enums_value::kUpDownAvailable));
+ EXPECT_TRUE(buttons_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .asBool());
+ EXPECT_TRUE(
+ buttons_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .asBool());
+ EXPECT_TRUE(
+ buttons_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .asBool());
}
- const smart_objects::SmartObject display_capabilities_so =
+
+ const auto display_capabilities_so =
*(hmi_capabilities_test->display_capabilities());
// Check display type
- EXPECT_EQ(hmi_apis::Common_DisplayType::GEN2_8_DMA,
+ EXPECT_EQ(hmi_apis::Common_DisplayType::SDL_GENERIC,
static_cast<hmi_apis::Common_DisplayType::eType>(
display_capabilities_so[hmi_response::display_type].asInt()));
@@ -291,27 +454,36 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
display_capabilities_so[hmi_response::text_fields].length();
EXPECT_NE(0u, text_len);
for (uint32_t i = 0; i < text_len; ++i) {
- EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][i])
+ const int32_t index = static_cast<int32_t>(i);
+ EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][index])
.keyExists(strings::name));
- EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][i])
+ EXPECT_TRUE((display_capabilities_so[hmi_response::text_fields][index])
.keyExists(strings::character_set));
}
// Check image fields
- EXPECT_TRUE((display_capabilities_so).keyExists(hmi_response::image_fields));
- const uint32_t img_len =
+ ASSERT_TRUE((display_capabilities_so).keyExists(hmi_response::image_fields));
+ const uint64_t img_len =
display_capabilities_so[hmi_response::image_fields].length();
EXPECT_NE(0u, img_len);
for (uint32_t i = 0; i < img_len; ++i) {
- EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][i])
+ const int32_t index = static_cast<int32_t>(i);
+ EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][index])
.keyExists(strings::name));
- EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][i])
- .keyExists(strings::image_type_supported));
- if (display_capabilities_so[hmi_response::image_fields][i][strings::name] ==
- hmi_apis::Common_ImageFieldName::locationImage) {
+
+ const hmi_apis::Common_ImageFieldName::eType field_name =
+ static_cast<hmi_apis::Common_ImageFieldName::eType>(
+ display_capabilities_so[hmi_response::image_fields][index]
+ [strings::name]
+ .asInt());
+
+ if ((field_name == hmi_apis::Common_ImageFieldName::locationImage) ||
+ (field_name == hmi_apis::Common_ImageFieldName::alertIcon)) {
+ EXPECT_TRUE((display_capabilities_so[hmi_response::image_fields][index])
+ .keyExists(strings::image_type_supported));
EXPECT_EQ(hmi_apis::Common_FileType::GRAPHIC_PNG,
static_cast<hmi_apis::Common_FileType::eType>(
- display_capabilities_so[hmi_response::image_fields][i]
+ display_capabilities_so[hmi_response::image_fields][index]
[strings::image_type_supported][0]
.asInt()));
}
@@ -329,7 +501,7 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
display_capabilities_so[hmi_response::media_clock_formats][i].asUInt());
}
- EXPECT_TRUE(
+ ASSERT_TRUE(
(display_capabilities_so).keyExists(hmi_response::image_capabilities));
EXPECT_EQ(hmi_apis::Common_ImageType::DYNAMIC,
static_cast<hmi_apis::Common_ImageType::eType>(
@@ -340,9 +512,15 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
display_capabilities_so[hmi_response::image_capabilities][1]
.asInt()));
+ // templatesAvailable parameter could be as empty array
+ ASSERT_TRUE(
+ display_capabilities_so.keyExists(hmi_response::templates_available));
+
// Check audio pass thru
- const smart_objects::SmartObject audio_pass_thru_capabilities_so =
+ const auto audio_pass_thru_capabilities_so =
*(hmi_capabilities_test->audio_pass_thru_capabilities());
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Array,
+ audio_pass_thru_capabilities_so.getType());
EXPECT_EQ(smart_objects::SmartType_Array,
audio_pass_thru_capabilities_so.getType());
EXPECT_EQ(1u, audio_pass_thru_capabilities_so.length());
@@ -357,35 +535,67 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
audio_pass_thru_capabilities_so[0]["audioType"].asInt()));
// Check hmi zone capabilities
- const smart_objects::SmartObject hmi_zone_capabilities_so =
+ const auto hmi_zone_capabilities_so =
*(hmi_capabilities_test->hmi_zone_capabilities());
EXPECT_EQ(hmi_apis::Common_HmiZoneCapabilities::FRONT,
static_cast<hmi_apis::Common_HmiZoneCapabilities::eType>(
hmi_zone_capabilities_so.asInt()));
- const smart_objects::SmartObject soft_button_capabilities_so =
+ // Check Soft Button capabilities
+ const auto& soft_button_capabilities_so =
*(hmi_capabilities_test->soft_button_capabilities());
- EXPECT_TRUE(soft_button_capabilities_so[0]["shortPressAvailable"].asBool());
- EXPECT_TRUE(soft_button_capabilities_so[0]["longPressAvailable"].asBool());
- EXPECT_TRUE(soft_button_capabilities_so[0]["upDownAvailable"].asBool());
- EXPECT_TRUE(soft_button_capabilities_so[0]["imageSupported"].asBool());
+ const uint32_t soft_butons_length =
+ static_cast<uint32_t>(soft_button_capabilities_so.length());
+
+ for (uint32_t i = 0; i < soft_butons_length; ++i) {
+ int32_t index = static_cast<int32_t>(i);
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kShortPressAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kLongPressAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kUpDownAvailable));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so
+ [index][rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .getType());
+
+ EXPECT_TRUE(soft_button_capabilities_so[index].keyExists(
+ hmi_response::image_supported));
+ EXPECT_EQ(smart_objects::SmartType::SmartType_Boolean,
+ soft_button_capabilities_so[index][hmi_response::image_supported]
+ .getType());
+ }
- const smart_objects::SmartObject preset_bank_so =
+ const auto preset_bank_so =
*(hmi_capabilities_test->preset_bank_capabilities());
- EXPECT_TRUE(preset_bank_so["onScreenPresetsAvailable"].asBool());
+ EXPECT_TRUE(
+ preset_bank_so.keyExists(hmi_response::on_screen_presets_available));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ preset_bank_so[hmi_response::on_screen_presets_available].getType());
// Check vehicle type
- const smart_objects::SmartObject vehicle_type_so =
- *(hmi_capabilities_test->vehicle_type());
+ const auto vehicle_type_so = *(hmi_capabilities_test->vehicle_type());
- EXPECT_EQ("Ford", vehicle_type_so["make"].asString());
- EXPECT_EQ("Fiesta", vehicle_type_so["model"].asString());
- EXPECT_EQ("2013", vehicle_type_so["modelYear"].asString());
+ EXPECT_EQ("SDL", vehicle_type_so["make"].asString());
+ EXPECT_EQ("Generic", vehicle_type_so["model"].asString());
+ EXPECT_EQ("2019", vehicle_type_so["modelYear"].asString());
EXPECT_EQ("SE", vehicle_type_so["trim"].asString());
- // Check system capabilities
- smart_objects::SmartObject navigation_capability_so =
+ // Check navigation capabilities
+ const auto navigation_capability_so =
*(hmi_capabilities_test->navigation_capability());
EXPECT_TRUE(navigation_capability_so.keyExists("sendLocationEnabled"));
@@ -396,15 +606,14 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
// since we have navigation capabilities, the feature should be supported
EXPECT_TRUE(hmi_capabilities_test->navigation_supported());
- const smart_objects::SmartObject phone_capability_so =
- *(hmi_capabilities_test->phone_capability());
+ const auto phone_capability_so = *(hmi_capabilities_test->phone_capability());
EXPECT_TRUE(phone_capability_so.keyExists("dialNumberEnabled"));
EXPECT_TRUE(phone_capability_so["dialNumberEnabled"].asBool());
EXPECT_TRUE(hmi_capabilities_test->phone_call_supported());
- const smart_objects::SmartObject vs_capability_so =
+ const auto vs_capability_so =
*(hmi_capabilities_test->video_streaming_capability());
EXPECT_TRUE(vs_capability_so.keyExists(strings::preferred_resolution));
@@ -425,81 +634,256 @@ TEST_F(HMICapabilitiesTest, LoadCapabilitiesFromFile) {
EXPECT_TRUE(vs_capability_so.keyExists(strings::supported_formats));
const uint32_t supported_formats_len =
vs_capability_so[strings::supported_formats].length();
- EXPECT_EQ(2u, supported_formats_len);
+ EXPECT_EQ(1u, supported_formats_len);
+
EXPECT_TRUE(vs_capability_so[strings::supported_formats][0].keyExists(
strings::protocol));
EXPECT_TRUE(vs_capability_so[strings::supported_formats][0].keyExists(
strings::codec));
- EXPECT_EQ(0,
+ EXPECT_EQ(hmi_apis::Common_VideoStreamingProtocol::RAW,
vs_capability_so[strings::supported_formats][0][strings::protocol]
.asInt());
EXPECT_EQ(
- 0,
+ hmi_apis::Common_VideoStreamingCodec::H264,
vs_capability_so[strings::supported_formats][0][strings::codec].asInt());
- EXPECT_TRUE(vs_capability_so[strings::supported_formats][1].keyExists(
- strings::protocol));
- EXPECT_TRUE(vs_capability_so[strings::supported_formats][1].keyExists(
- strings::codec));
- EXPECT_EQ(1,
- vs_capability_so[strings::supported_formats][1][strings::protocol]
- .asInt());
- EXPECT_EQ(
- 2,
- vs_capability_so[strings::supported_formats][1][strings::codec].asInt());
EXPECT_TRUE(
vs_capability_so.keyExists(strings::haptic_spatial_data_supported));
- EXPECT_TRUE(
+ EXPECT_FALSE(
vs_capability_so[strings::haptic_spatial_data_supported].asBool());
EXPECT_TRUE(hmi_capabilities_test->video_streaming_supported());
- // Check remote control capabilites
- const smart_objects::SmartObject rc_capability_so =
- *(hmi_capabilities_test->rc_capability());
-
- EXPECT_TRUE(rc_capability_so.keyExists("climateControlCapabilities"));
- EXPECT_TRUE(rc_capability_so.keyExists("radioControlCapabilities"));
- EXPECT_TRUE(rc_capability_so.keyExists("buttonCapabilities"));
-
+ // Check Remote Control capabilites
+
+ const auto rc_capability_so = *(hmi_capabilities_test->rc_capability());
+
+ // Check climate control capabilities
+ ASSERT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kclimateControlCapabilities));
+ const auto& climate_control_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kclimateControlCapabilities][0];
+
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kFanSpeedAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kDesiredTemperatureAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kAcEnableAvailable]
+ .asBool());
+ EXPECT_TRUE(climate_control_capabilities_so
+ [rc_rpc_plugin::strings::kAcMaxEnableAvailable]
+ .asBool());
+
+ // Check radio control capabilities
+ ASSERT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kradioControlCapabilities));
+ const auto& radio_control_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kradioControlCapabilities][0];
+
+ EXPECT_EQ("radio", radio_control_capabilities_so["moduleName"].asString());
+
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::message_params::kAvailableHdChannelsAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSignalChangeThresholdAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSignalStrengthAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kHdRadioEnableAvailable]
+ .asBool());
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kSiriusxmRadioAvailable]
+ .asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["fanSpeedAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kSisDataAvailable]
.asBool());
- EXPECT_TRUE(rc_capability_so["climateControlCapabilities"][0]
- ["desiredTemperatureAvailable"]
- .asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["acEnableAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kStateAvailable]
.asBool());
EXPECT_TRUE(
- rc_capability_so["climateControlCapabilities"][0]["acMaxEnableAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kRadioBandAvailable]
.asBool());
-
+ EXPECT_TRUE(radio_control_capabilities_so
+ [rc_rpc_plugin::strings::kRadioFrequencyAvailable]
+ .asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["radioBandAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kHdChannelAvailable]
.asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["radioFrequencyAvailable"]
+ radio_control_capabilities_so[rc_rpc_plugin::strings::kRdsDataAvailable]
.asBool());
+
+ ASSERT_TRUE(radio_control_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ ASSERT_TRUE(
+ radio_control_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo]
+ .keyExists(rc_rpc_plugin::message_params::kModuleId));
+
+ // Check button capabilities
+
+ ASSERT_TRUE(
+ rc_capability_so.keyExists(rc_rpc_plugin::strings::kbuttonCapabilities));
+ const auto& button_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kbuttonCapabilities];
+
+ const uint32_t button_capabilities_length =
+ static_cast<uint32_t>(button_capabilities_so.length());
+
+ for (uint32_t i = 0; i < button_capabilities_length; ++i) {
+ const int32_t index = static_cast<int32_t>(i);
+
+ ASSERT_TRUE(button_capabilities_so[index].keyExists("name"));
+
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kLongPressAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kLongPressAvailable]
+ .getType());
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kShortPressAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kShortPressAvailable]
+ .getType());
+
+ ASSERT_TRUE(button_capabilities_so[index].keyExists(
+ rc_rpc_plugin::enums_value::kUpDownAvailable));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Boolean,
+ button_capabilities_so[index]
+ [rc_rpc_plugin::enums_value::kUpDownAvailable]
+ .getType());
+ }
+
+ // Check audio capabilities
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kaudioControlCapabilities));
+
+ const auto& audio_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kaudioControlCapabilities][0];
+
+ EXPECT_TRUE(audio_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+
+ const auto& audio_cap_module_info =
+ audio_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
+ EXPECT_TRUE(audio_cap_module_info.keyExists(
+ rc_rpc_plugin::message_params::kModuleId));
+ EXPECT_TRUE(audio_cap_module_info.keyExists(
+ rc_rpc_plugin::strings::kAllowMultipleAccess));
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["hdChannelAvailable"]
+ audio_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
.asBool());
+
+ EXPECT_TRUE(
+ audio_capabilities_so[rc_rpc_plugin::strings::kSourceAvailable].asBool());
EXPECT_TRUE(
- rc_capability_so["radioControlCapabilities"][0]["rdsDataAvailable"]
+ audio_capabilities_so[rc_rpc_plugin::strings::kVolumeAvailable].asBool());
+ EXPECT_TRUE(audio_capabilities_so[rc_rpc_plugin::strings::kEqualizerAvailable]
+ .asBool());
+ EXPECT_TRUE(
+ audio_capabilities_so[rc_rpc_plugin::strings::kKeepContextAvailable]
.asBool());
+ EXPECT_EQ(
+ kEqualizerMaxChanelId,
+ audio_capabilities_so[rc_rpc_plugin::strings::kEqualizerMaxChannelId]
+ .asInt());
- EXPECT_TRUE(rc_capability_so["buttonCapabilities"][0]["shortPressAvailable"]
- .asBool());
+ // Check Seat Capabilities
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::kseatControlCapabilities));
+ const auto& seat_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::kseatControlCapabilities][0];
+
+ EXPECT_TRUE(seat_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ const auto& seat_cap_module_info =
+ seat_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
EXPECT_TRUE(
- rc_capability_so["buttonCapabilities"][0]["longPressAvailable"].asBool());
+ seat_cap_module_info.keyExists(rc_rpc_plugin::message_params::kModuleId));
+ EXPECT_TRUE(seat_cap_module_info.keyExists(
+ rc_rpc_plugin::strings::kAllowMultipleAccess));
+ EXPECT_FALSE(
+ seat_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
+ .asBool());
+
+ // Check Light Capabilities
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::klightControlCapabilities));
+ const auto& light_capabilities_so =
+ rc_capability_so[rc_rpc_plugin::strings::klightControlCapabilities];
+
+ EXPECT_TRUE(light_capabilities_so.keyExists(
+ rc_rpc_plugin::message_params::kModuleInfo));
+ const auto& light_cap_module_info =
+ light_capabilities_so[rc_rpc_plugin::message_params::kModuleInfo];
+ EXPECT_TRUE(light_cap_module_info.keyExists(
+ rc_rpc_plugin::message_params::kModuleId));
EXPECT_FALSE(
- rc_capability_so["buttonCapabilities"][0]["upDownAvailable"].asBool());
+ light_cap_module_info[rc_rpc_plugin::strings::kAllowMultipleAccess]
+ .asBool());
+
+ EXPECT_TRUE(light_capabilities_so.keyExists(
+ rc_rpc_plugin::strings::kSupportedLights));
+ const auto& supported_lights =
+ light_capabilities_so[rc_rpc_plugin::strings::kSupportedLights];
+
+ const uint32_t supported_lights_length =
+ static_cast<uint32_t>(supported_lights.length());
+ for (uint32_t i = 0; i < supported_lights_length; ++i) {
+ int32_t index = static_cast<int32_t>(i);
+
+ EXPECT_TRUE(
+ IsLightNameExists(static_cast<hmi_apis::Common_LightName::eType>(
+ supported_lights[index]["name"].asInt())));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kStatusAvailable));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kDensityAvailable));
+ EXPECT_TRUE(supported_lights[index].keyExists(
+ rc_rpc_plugin::strings::kRGBColorSpaceAvailable));
+ }
+
+ EXPECT_TRUE(rc_capability_so.keyExists(
+ rc_rpc_plugin::strings::klightControlCapabilities));
+ const auto& light_ctrl_cap_so =
+ rc_capability_so[rc_rpc_plugin::strings::klightControlCapabilities];
+
+ EXPECT_TRUE(light_ctrl_cap_so.keyExists("moduleName"));
+ EXPECT_TRUE(
+ light_ctrl_cap_so.keyExists(rc_rpc_plugin::strings::kSupportedLights));
+ EXPECT_EQ(
+ smart_objects::SmartType::SmartType_Array,
+ light_ctrl_cap_so[rc_rpc_plugin::strings::kSupportedLights].getType());
+
+ const auto& supported_light_so =
+ light_ctrl_cap_so[rc_rpc_plugin::strings::kSupportedLights];
+
+ const uint32_t sup_lights_length =
+ static_cast<uint32_t>(supported_light_so.length());
+
+ for (uint32_t i = 0; i < sup_lights_length; ++i) {
+ int32_t index = static_cast<int32_t>(i);
+ EXPECT_TRUE(
+ supported_light_so[index].keyExists(rc_rpc_plugin::strings::kName));
+ }
}
TEST_F(HMICapabilitiesTest,
LoadCapabilitiesFromFileAndVerifyUnsupportedSystemCapabilities) {
MockApplicationManager mock_app_mngr;
- event_engine_test::MockEventDispatcher mock_dispatcher;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_dispatcher;
MockApplicationManagerSettings mock_application_manager_settings;
const std::string hmi_capabilities_file = "hmi_capabilities_sc1.json";
@@ -518,9 +902,7 @@ TEST_F(HMICapabilitiesTest,
EXPECT_CALL(mock_application_manager_settings, launch_hmi())
.WillOnce(Return(false));
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
+ DeleteFileIfExists(kAppInfoDataFile);
std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
@@ -542,7 +924,7 @@ TEST_F(HMICapabilitiesTest,
TEST_F(HMICapabilitiesTest,
LoadCapabilitiesFromFileAndVerifyEmptySystemCapabilities) {
MockApplicationManager mock_app_mngr;
- event_engine_test::MockEventDispatcher mock_dispatcher;
+ NiceMock<event_engine_test::MockEventDispatcher> mock_dispatcher;
MockApplicationManagerSettings mock_application_manager_settings;
const std::string hmi_capabilities_file = "hmi_capabilities_sc2.json";
@@ -561,9 +943,7 @@ TEST_F(HMICapabilitiesTest,
EXPECT_CALL(mock_application_manager_settings, launch_hmi())
.WillOnce(Return(false));
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
+ DeleteFileIfExists(kAppInfoDataFile);
std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
@@ -610,9 +990,7 @@ TEST_F(HMICapabilitiesTest,
CommonLanguageFromString(_))
.WillRepeatedly(Invoke(TestCommonLanguageFromString));
- if (file_system::FileExists("./app_info_data")) {
- EXPECT_TRUE(::file_system::DeleteFile("./app_info_data"));
- }
+ DeleteFileIfExists(kAppInfoDataFile);
std::shared_ptr<HMICapabilitiesForTesting> hmi_capabilities =
std::make_shared<HMICapabilitiesForTesting>(mock_app_mngr);
@@ -644,7 +1022,6 @@ TEST_F(HMICapabilitiesTest,
TEST_F(HMICapabilitiesTest, VerifyImageType) {
const int32_t image_type = 1;
smart_objects::SmartObject sm_obj;
- EXPECT_CALL(app_mngr_, IsSOStructValid(_, _)).WillOnce(Return(true));
sm_obj[hmi_response::image_capabilities][0] = image_type;
hmi_capabilities_test->set_display_capabilities(sm_obj);
diff --git a/src/components/application_manager/test/include/application_manager/hmi_capabilities_for_testing.h b/src/components/application_manager/test/include/application_manager/hmi_capabilities_for_testing.h
index cc979cade2..2cdd01f343 100644
--- a/src/components/application_manager/test/include/application_manager/hmi_capabilities_for_testing.h
+++ b/src/components/application_manager/test/include/application_manager/hmi_capabilities_for_testing.h
@@ -45,7 +45,7 @@ class HMICapabilitiesForTesting
HMICapabilitiesForTesting(::application_manager::ApplicationManager& app_mngr)
: HMICapabilitiesImpl(app_mngr) {}
bool LoadCapabilitiesFromFile() {
- return LoadCapabilitiesFromFile();
+ return HMICapabilitiesImpl::LoadCapabilitiesFromFile();
}
};