diff options
author | Igor Gapchuk <igapchuck@luxoft.com> | 2020-03-13 17:34:46 +0200 |
---|---|---|
committer | Igor Gapchuk <igapchuck@luxoft.com> | 2020-03-13 17:34:46 +0200 |
commit | 30da1b6a38d9dc6fcc3d6bd7e55817d2dd0c1440 (patch) | |
tree | a6df27eb528ca8efc283663f490315b7d92d4fd3 | |
parent | 38b5a5268defd4ba794200bf2e040f162d7c7bee (diff) | |
download | sdl_core-fix/refactor_rc_capabilities_storing.tar.gz |
Refactor RC capabilities storing and retrieving. Fix related UTs.fix/refactor_rc_capabilities_storing
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(); } }; |