diff options
author | JackLivio <jack@livio.io> | 2018-07-13 15:04:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 15:04:06 -0400 |
commit | 6c9ad77522b38a34b4d522eda7a7828091f6f3cd (patch) | |
tree | b14567adbe6909798da29b5d72e98c8466ea9a3a | |
parent | 0e70eea7754b5724ef910319cca7ec624c7c756e (diff) | |
parent | f780d36ad6f67a4f0a4ce839abb006bff01be0de (diff) | |
download | sdl_core-6c9ad77522b38a34b4d522eda7a7828091f6f3cd.tar.gz |
Merge pull request #2208 from smartdevicelink/feature/rc_seat
Feature/RC SEAT
10 files changed, 401 insertions, 75 deletions
diff --git a/src/appMain/hmi_capabilities.json b/src/appMain/hmi_capabilities.json index 50cb479a74..4eedd6b17a 100755 --- a/src/appMain/hmi_capabilities.json +++ b/src/appMain/hmi_capabilities.json @@ -462,6 +462,26 @@ "signalStrengthAvailable": true, "stateAvailable": true } + ], + "seatControlCapabilities": [ + { + "moduleName": "driver_seat", + "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 + } ] } } 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 181c536b8a..f2037aabbb 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 @@ -40,10 +40,7 @@ namespace strings { const char kclimateControlCapabilities[] = "climateControlCapabilities"; const char kradioControlCapabilities[] = "radioControlCapabilities"; const char kbuttonCapabilities[] = "buttonCapabilities"; -// RemoteControlCapabilities constants - -const char kRadioControlData[] = "radioControlData"; -const char kClimateControlData[] = "climateControlData"; +const char kseatControlCapabilities[] = "seatControlCapabilities"; } // strings namespace result_codes { @@ -90,6 +87,7 @@ const char kCode[] = "code"; namespace message_params { const char kName[] = "name"; +const char kId[] = "id"; // SetInteriorVehicleData request const char kModuleData[] = "moduleData"; @@ -160,6 +158,7 @@ const char kVentilationMode[] = "ventilationMode"; // ModuleData struct const char kRadioControlData[] = "radioControlData"; const char kClimateControlData[] = "climateControlData"; +const char kSeatControlData[] = "seatControlData"; // ModuleData struct const char kHMIAppID[] = "appID"; @@ -173,6 +172,7 @@ namespace enums_value { // ModuleType enum const char kClimate[] = "CLIMATE"; const char kRadio[] = "RADIO"; +const char kSeat[] = "SEAT"; // ModuleType enum // RadioBand enum diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc index 38f94637c2..06c44d2ff3 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc @@ -63,18 +63,20 @@ bool CheckIfModuleTypeExistInCapabilities( const smart_objects::SmartObject& rc_capabilities, const std::string& module_type) { LOG4CXX_AUTO_TRACE(logger_); - if (enums_value::kRadio == module_type && - !rc_capabilities.keyExists(strings::kradioControlCapabilities)) { - LOG4CXX_DEBUG(logger_, " Radio control capabilities not present"); - return false; - } - if (enums_value::kClimate == module_type && - !rc_capabilities.keyExists(strings::kclimateControlCapabilities)) { - LOG4CXX_DEBUG(logger_, " Climate control capabilities not present"); - return false; + const std::map<std::string, std::string> params = { + {enums_value::kRadio, strings::kradioControlCapabilities}, + {enums_value::kClimate, strings::kclimateControlCapabilities}, + {enums_value::kSeat, strings::kseatControlCapabilities}}; + bool is_module_type_valid = false; + for (const auto& param : params) { + if (param.first == module_type) { + if (rc_capabilities.keyExists(param.second)) { + is_module_type_valid = true; + break; + } + } } - - return true; + return is_module_type_valid; } void GetInteriorVehicleDataRequest::Execute() { diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc index e76572c773..83bb526076 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc @@ -61,6 +61,14 @@ std::vector<std::string> GetModuleReadOnlyParams( return module_ro_params; } +const std::map<std::string, std::string> GetModuleTypeToDataMapping() { + std::map<std::string, std::string> mapping = { + {enums_value::kRadio, message_params::kRadioControlData}, + {enums_value::kClimate, message_params::kClimateControlData}, + {enums_value::kSeat, message_params::kSeatControlData}}; + return mapping; +} + const std::map<std::string, std::string> GetModuleDataToCapabilitiesMapping() { std::map<std::string, std::string> mapping; // climate @@ -87,6 +95,25 @@ const std::map<std::string, std::string> GetModuleDataToCapabilitiesMapping() { mapping["radioEnable"] = "radioEnableAvailable"; mapping["state"] = "stateAvailable"; + // seat + mapping["heatingEnabled"] = "heatingEnabledAvailable"; + mapping["coolingEnabled"] = "coolingEnabledAvailable"; + mapping["heatingLevel"] = "heatingLevelAvailable"; + mapping["coolingLevel"] = "coolingLevelAvailable"; + mapping["horizontalPosition"] = "horizontalPositionAvailable"; + mapping["verticalPosition"] = "verticalPositionAvailable"; + mapping["frontVerticalPosition"] = "frontVerticalPositionAvailable"; + mapping["backVerticalPosition"] = "backVerticalPositionAvailable"; + mapping["backTiltAngle"] = "backTiltAngleAvailable"; + mapping["headSupportHorizontalPosition"] = + "headSupportHorizontalPositionAvailable"; + mapping["headSupportVerticalPosition"] = + "headSupportVerticalPositionAvailable"; + mapping["massageEnabled"] = "massageEnabledAvailable"; + mapping["massageMode"] = "massageModeAvailable"; + mapping["massageCushionFirmness"] = "massageCushionFirmnessAvailable"; + mapping["memory"] = "memoryAvailable"; + return mapping; } } // namespace @@ -114,12 +141,14 @@ bool CheckControlDataByCapabilities( const smart_objects::SmartObject& control_data) { std::map<std::string, std::string> mapping = GetModuleDataToCapabilitiesMapping(); - + const smart_objects::SmartObject& capabilities_status = module_caps[0]; auto it = control_data.map_begin(); for (; it != control_data.map_end(); ++it) { const std::string& request_parameter = it->first; + if (message_params::kId == request_parameter) { + continue; + } const std::string& caps_key = mapping[request_parameter]; - const smart_objects::SmartObject& capabilities_status = module_caps[0]; LOG4CXX_DEBUG(logger_, "Checking request parameter " << request_parameter @@ -146,30 +175,39 @@ bool CheckIfModuleDataExistInCapabilities( const smart_objects::SmartObject& rc_capabilities, const smart_objects::SmartObject& module_data) { LOG4CXX_AUTO_TRACE(logger_); - bool is_radio_data_valid = true; - bool is_climate_data_valid = true; - if (module_data.keyExists(message_params::kRadioControlData)) { - if (!rc_capabilities.keyExists(strings::kradioControlCapabilities)) { - LOG4CXX_DEBUG(logger_, " Radio control capabilities not present"); - return false; + const std::map<std::string, std::string> params = { + {message_params::kRadioControlData, strings::kradioControlCapabilities}, + {message_params::kClimateControlData, + strings::kclimateControlCapabilities}, + {message_params::kSeatControlData, strings::kseatControlCapabilities}}; + bool is_module_data_valid = false; + for (const auto& param : params) { + if (module_data.keyExists(param.first)) { + if (!rc_capabilities.keyExists(param.second)) { + LOG4CXX_DEBUG(logger_, param.first << " capabilities not present"); + return false; + } + const smart_objects::SmartObject& caps = rc_capabilities[param.second]; + is_module_data_valid = + CheckControlDataByCapabilities(caps, module_data[param.first]); } - const smart_objects::SmartObject& radio_caps = - rc_capabilities[strings::kradioControlCapabilities]; - is_radio_data_valid = CheckControlDataByCapabilities( - radio_caps, module_data[strings::kRadioControlData]); } - if (module_data.keyExists(message_params::kClimateControlData)) { - if (!rc_capabilities.keyExists(strings::kclimateControlCapabilities)) { - LOG4CXX_DEBUG(logger_, " Climate control capabilities not present"); - return false; + return is_module_data_valid; +} + +bool isModuleTypeAndDataMatch(const std::string& module_type, + const smart_objects::SmartObject& module_data) { + LOG4CXX_AUTO_TRACE(logger_); + std::map<std::string, std::string> data_mapping = + GetModuleTypeToDataMapping(); + bool module_type_and_data_match = false; + for (const auto& data : data_mapping) { + if (data.first == module_type) { + module_type_and_data_match = module_data.keyExists(data.second); + break; } - const smart_objects::SmartObject& climate_caps = - rc_capabilities[strings::kclimateControlCapabilities]; - is_climate_data_valid = CheckControlDataByCapabilities( - climate_caps, module_data[strings::kClimateControlData]); } - - return is_radio_data_valid && is_climate_data_valid; + return module_type_and_data_match; } void SetInteriorVehicleDataRequest::Execute() { @@ -178,19 +216,8 @@ void SetInteriorVehicleDataRequest::Execute() { smart_objects::SmartObject& module_data = (*message_)[app_mngr::strings::msg_params][message_params::kModuleData]; const std::string module_type = ModuleType(); - bool module_type_and_data_match = true; - - if (enums_value::kRadio == module_type) { - module_type_and_data_match = - !(module_data.keyExists(message_params::kClimateControlData)); - } - if (enums_value::kClimate == module_type) { - module_type_and_data_match = - !(module_data.keyExists(message_params::kRadioControlData)); - } - - if (module_type_and_data_match) { + if (isModuleTypeAndDataMatch(module_type, module_data)) { const smart_objects::SmartObject* rc_capabilities = hmi_capabilities_.rc_capability(); if (rc_capabilities && @@ -266,13 +293,16 @@ void SetInteriorVehicleDataRequest::on_event( const smart_objects::SmartObject& SetInteriorVehicleDataRequest::ControlData( const smart_objects::SmartObject& module_data) { - const std::string module = ModuleType(); - - if (enums_value::kRadio == module) { - return module_data[message_params::kRadioControlData]; - } else { - return module_data[message_params::kClimateControlData]; + const std::string module_type = ModuleType(); + std::map<std::string, std::string> data_mapping = + GetModuleTypeToDataMapping(); + for (const auto& data : data_mapping) { + if (data.first == module_type) { + return module_data[data.second]; + } } + NOTREACHED(); + return module_data[0]; } bool SetInteriorVehicleDataRequest::AreAllParamsReadOnly( diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml index bf0f71b9c3..378649ec0b 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -1552,7 +1552,133 @@ <enum name="ModuleType"> <element name="CLIMATE"/> <element name="RADIO"/> - </enum> + <element name="SEAT"/> +</enum> + + <enum name="MassageZone"> + <description>List possible zones of a multi-contour massage seat.</description> + <element name="LUMBAR"> + <description>The back of a multi-contour massage seat. or SEAT_BACK</description> + </element> + <element name="SEAT_CUSHION"> + <description>The bottom a multi-contour massage seat. or SEAT_BOTTOM </description> + </element> + </enum> + + <enum name="MassageMode"> + <description>List possible modes of a massage zone.</description> + <element name="OFF"/> + <element name="LOW"/> + <element name="HIGH"/> + </enum> + + <struct name="MassageModeData"> + <description>Specify the mode of a massage zone.</description> + <param name="massageZone" type="MassageZone" mandatory="true"></param> + <param name="massageMode" type="MassageMode" mandatory="true"></param> + </struct> + + <enum name="MassageCushion"> + <description>List possible cushions of a multi-contour massage seat.</description> + <element name="TOP_LUMBAR"/> + <element name="MIDDLE_LUMBAR"/> + <element name="BOTTOM_LUMBAR"/> + <element name="BACK_BOLSTERS"/> + <element name="SEAT_BOLSTERS"/> + </enum> + + <struct name="MassageCushionFirmness"> + <description>The intensity or firmness of a cushion.</description> + <param name="cushion" type="MassageCushion" mandatory="true"></param> + <param name="firmness" type="Integer" minvalue="0" maxvalue="100" mandatory="true"></param> + </struct> + + <enum name="SeatMemoryActionType"> + <element name="SAVE"> + <description>Save current seat postions and settings to seat memory.</description> + </element> + <element name="RESTORE"> + <description>Restore / apply the seat memory settings to the current seat. </description> + </element> + <element name="NONE"> + <description>No action to be performed.</description> + </element> + </enum> + + <struct name="SeatMemoryAction"> + <param name="id" type="Integer" minvalue="1" maxvalue="10" mandatory="true"/> + <param name="label" type="String" maxlength="100" mandatory="false"/> + <param name="action" type="SeatMemoryActionType" mandatory="true"/> + </struct> + + <enum name="SupportedSeat"> + <description>List possible seats that is a remote controllable seat.</description> + <element name="DRIVER"/> + <element name="FRONT_PASSENGER"/> + </enum> + + <struct name="SeatControlData"> + <description>Seat control data corresponds to "SEAT" ModuleType. </description> + <param name="id" type="SupportedSeat" mandatory="true"></param> + + <param name="heatingEnabled" type="Boolean" mandatory="false"></param> + <param name="coolingEnabled" type="Boolean" mandatory="false"></param> + <param name="heatingLevel" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="coolingLevel" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="horizontalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="verticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="frontVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="backVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="backTiltAngle" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="headSupportHorizontalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="headSupportVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="massageEnabled" type="Boolean" mandatory="false"></param> + <param name="massageMode" type="MassageModeData" minsize="1" maxsize="2" array="true" mandatory="false"></param> + <param name="massageCushionFirmness" type="MassageCushionFirmness" minsize="1" maxsize="5" array="true" mandatory="false"></param> + <param name="memory" type="SeatMemoryAction" mandatory="false"></param> + </struct> + + <struct name="SeatControlCapabilities"> + <param name="moduleName" type="String" maxlength="100" mandatory="true"> + <description> + The short friendly name of the light control module. + It should not be used to identify a module by mobile application. + </description> + </param> + <param name="heatingEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="coolingEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="heatingLevelAvailable" type="Boolean" mandatory="false"> + </param> + <param name="coolingLevelAvailable" type="Boolean" mandatory="false"> + </param> + <param name="horizontalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="verticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="frontVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="backVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="backTiltAngleAvailable" type="Boolean" mandatory="false"> + </param> + <param name="headSupportHorizontalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="headSupportVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageModeAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageCushionFirmnessAvailable" type="Boolean" mandatory="false"> + </param> + <param name="memoryAvailable" type="Boolean" mandatory="false"> + </param> + </struct> <enum name="RadioBand"> <element name="AM"/> @@ -1820,6 +1946,8 @@ </param> <param name="climateControlData" type="Common.ClimateControlData" mandatory="false"> </param> + <param name="seatControlData" type="SeatControlData" mandatory="false"> + </param> </struct> <enum name="RCAccessMode"> @@ -2788,6 +2916,11 @@ <param name="buttonCapabilities" type="ButtonCapabilities" mandatory="false" minsize="1" maxsize="100" array="true" > <description>If included, the platform supports RC button controls with the included button names.</description > </param> + <param name="seatControlCapabilities" type="SeatControlCapabilities" mandatory="false" minsize="1" maxsize="100" array="true"> + <description> + If included, the platform supports seat controls. + </description > + </param> </struct> <struct name="Rectangle"> diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml index bf8b912849..a751447bd3 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -1369,6 +1369,7 @@ <enum name="ModuleType"> <element name="CLIMATE"/> <element name="RADIO"/> + <element name="SEAT"/> </enum> <enum name="DefrostZone"> @@ -2674,7 +2675,132 @@ </struct> <!---Remote control --> - + + <enum name="MassageZone"> + <description>List possible zones of a multi-contour massage seat.</description> + <element name="LUMBAR"> + <description>The back of a multi-contour massage seat. or SEAT_BACK</description> + </element> + <element name="SEAT_CUSHION"> + <description>The bottom a multi-contour massage seat. or SEAT_BOTTOM </description> + </element> + </enum> + + <enum name="MassageMode"> + <description>List possible modes of a massage zone.</description> + <element name="OFF"/> + <element name="LOW"/> + <element name="HIGH"/> + </enum> + + <struct name="MassageModeData"> + <description>Specify the mode of a massage zone.</description> + <param name="massageZone" type="MassageZone" mandatory="true"></param> + <param name="massageMode" type="MassageMode" mandatory="true"></param> + </struct> + + <enum name="MassageCushion"> + <description>List possible cushions of a multi-contour massage seat.</description> + <element name="TOP_LUMBAR"/> + <element name="MIDDLE_LUMBAR"/> + <element name="BOTTOM_LUMBAR"/> + <element name="BACK_BOLSTERS"/> + <element name="SEAT_BOLSTERS"/> + </enum> + + <struct name="MassageCushionFirmness"> + <description>The intensity or firmness of a cushion.</description> + <param name="cushion" type="MassageCushion" mandatory="true"></param> + <param name="firmness" type="Integer" minvalue="0" maxvalue="100" mandatory="true"></param> + </struct> + + <enum name="SeatMemoryActionType"> + <element name="SAVE"> + <description>Save current seat postions and settings to seat memory.</description> + </element> + <element name="RESTORE"> + <description>Restore / apply the seat memory settings to the current seat. </description> + </element> + <element name="NONE"> + <description>No action to be performed.</description> + </element> + </enum> + + <struct name="SeatMemoryAction"> + <param name="id" type="Integer" minvalue="1" maxvalue="10" mandatory="true"/> + <param name="label" type="String" maxlength="100" mandatory="false"/> + <param name="action" type="SeatMemoryActionType" mandatory="true"/> + </struct> + + <enum name="SupportedSeat"> + <description>List possible seats that is a remote controllable seat.</description> + <element name="DRIVER"/> + <element name="FRONT_PASSENGER"/> + </enum> + + <struct name="SeatControlData"> + <description>Seat control data corresponds to "SEAT" ModuleType. </description> + <param name="id" type="SupportedSeat" mandatory="true"></param> + + <param name="heatingEnabled" type="Boolean" mandatory="false"></param> + <param name="coolingEnabled" type="Boolean" mandatory="false"></param> + <param name="heatingLevel" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="coolingLevel" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="horizontalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="verticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="frontVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="backVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="backTiltAngle" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="headSupportHorizontalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + <param name="headSupportVerticalPosition" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param> + + <param name="massageEnabled" type="Boolean" mandatory="false"></param> + <param name="massageMode" type="MassageModeData" minsize="1" maxsize="2" array="true" mandatory="false"></param> + <param name="massageCushionFirmness" type="MassageCushionFirmness" minsize="1" maxsize="5" array="true" mandatory="false"></param> + <param name="memory" type="SeatMemoryAction" mandatory="false"></param> + </struct> + + <struct name="SeatControlCapabilities"> + <param name="moduleName" type="String" maxlength="100" mandatory="true"> + <description> + The short friendly name of the light control module. + It should not be used to identify a module by mobile application. + </description> + </param> + <param name="heatingEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="coolingEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="heatingLevelAvailable" type="Boolean" mandatory="false"> + </param> + <param name="coolingLevelAvailable" type="Boolean" mandatory="false"> + </param> + <param name="horizontalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="verticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="frontVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="backVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="backTiltAngleAvailable" type="Boolean" mandatory="false"> + </param> + <param name="headSupportHorizontalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="headSupportVerticalPositionAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageEnabledAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageModeAvailable" type="Boolean" mandatory="false"> + </param> + <param name="massageCushionFirmnessAvailable" type="Boolean" mandatory="false"> + </param> + <param name="memoryAvailable" type="Boolean" mandatory="false"> + </param> + </struct> + <struct name="Temperature"> <param name="unit" type="TemperatureUnit" mandatory="true"> <description>Temperature Unit</description> @@ -2763,16 +2889,6 @@ </param> </struct> - <struct name="ModuleData"> - <description>The moduleType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the moduleType is CLIMATE then a "climateControlData" should exist</description> - <param name="moduleType" type="ModuleType" mandatory="true"> - </param> - <param name="radioControlData" type="RadioControlData" mandatory="false"> - </param> - <param name="climateControlData" type="ClimateControlData" mandatory="false"> - </param> - </struct> - <struct name="RadioControlCapabilities"> <description>Contains information about a radio control module's capabilities.</description> <!-- need an ID in the future --> @@ -2911,6 +3027,18 @@ </param> </struct> + <struct name="ModuleData"> + <description>The moduleType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the moduleType is CLIMATE then a "climateControlData" should exist</description> + <param name="moduleType" type="ModuleType" mandatory="true"> + </param> + <param name="radioControlData" type="RadioControlData" mandatory="false"> + </param> + <param name="climateControlData" type="ClimateControlData" mandatory="false"> + </param> + <param name="seatControlData" type="SeatControlData" mandatory="false"> + </param> + </struct> + <struct name="RemoteControlCapabilities"> <param name="climateControlCapabilities" type="ClimateControlCapabilities" mandatory="false" minsize="1" maxsize="100" array="true"> <description>If included, the platform supports RC climate controls. For this baseline version, maxsize=1. i.e. only one climate control module is supported.</description > @@ -2921,6 +3049,11 @@ <param name="buttonCapabilities" type="ButtonCapabilities" mandatory="false" minsize="1" maxsize="100" array="true" > <description>If included, the platform supports RC button controls with the included button names.</description > </param> + <param name="seatControlCapabilities" type="SeatControlCapabilities" mandatory="false" minsize="1" maxsize="100" array="true"> + <description> + If included, the platform supports seat controls. + </description > + </param> </struct> <!-- End of RC --> diff --git a/src/components/policy/policy_external/include/policy/policy_table/enums.h b/src/components/policy/policy_external/include/policy/policy_table/enums.h index 02dad1ac3e..d13c545a94 100644 --- a/src/components/policy/policy_external/include/policy/policy_table/enums.h +++ b/src/components/policy/policy_external/include/policy/policy_table/enums.h @@ -167,10 +167,7 @@ bool IsValidEnum(Input val); const char* EnumToJsonString(Input val); bool EnumFromJsonString(const std::string& literal, Input* result); -enum ModuleType { - MT_CLIMATE, - MT_RADIO, -}; +enum ModuleType { MT_CLIMATE, MT_RADIO, MT_SEAT }; bool IsValidEnum(ModuleType val); const char* EnumToJsonString(ModuleType val); bool EnumFromJsonString(const std::string& literal, ModuleType* result); diff --git a/src/components/policy/policy_external/src/policy_table/enums.cc b/src/components/policy/policy_external/src/policy_table/enums.cc index 12ee0326de..58bae43000 100644 --- a/src/components/policy/policy_external/src/policy_table/enums.cc +++ b/src/components/policy/policy_external/src/policy_table/enums.cc @@ -771,6 +771,8 @@ bool IsValidEnum(ModuleType val) { return true; case MT_RADIO: return true; + case MT_SEAT: + return true; default: return false; } @@ -781,6 +783,8 @@ const char* EnumToJsonString(ModuleType val) { return "CLIMATE"; case MT_RADIO: return "RADIO"; + case MT_SEAT: + return "SEAT"; default: return ""; } @@ -793,6 +797,9 @@ bool EnumFromJsonString(const std::string& literal, ModuleType* result) { } else if ("RADIO" == literal) { *result = MT_RADIO; return true; + } else if ("SEAT" == literal) { + *result = MT_SEAT; + return true; } else { return false; } diff --git a/src/components/policy/policy_regular/include/policy/policy_table/enums.h b/src/components/policy/policy_regular/include/policy/policy_table/enums.h index 9c5fa2691e..8d81a742e4 100644 --- a/src/components/policy/policy_regular/include/policy/policy_table/enums.h +++ b/src/components/policy/policy_regular/include/policy/policy_table/enums.h @@ -153,10 +153,7 @@ bool IsValidEnum(Input val); const char* EnumToJsonString(Input val); bool EnumFromJsonString(const std::string& literal, Input* result); -enum ModuleType { - MT_CLIMATE, - MT_RADIO, -}; +enum ModuleType { MT_CLIMATE, MT_RADIO, MT_SEAT }; bool IsValidEnum(ModuleType val); const char* EnumToJsonString(ModuleType val); bool EnumFromJsonString(const std::string& literal, ModuleType* result); diff --git a/src/components/policy/policy_regular/src/policy_table/enums.cc b/src/components/policy/policy_regular/src/policy_table/enums.cc index 6768fc50e2..2f5ba69ad7 100644 --- a/src/components/policy/policy_regular/src/policy_table/enums.cc +++ b/src/components/policy/policy_regular/src/policy_table/enums.cc @@ -641,6 +641,8 @@ bool IsValidEnum(ModuleType val) { return true; case MT_RADIO: return true; + case MT_SEAT: + return true; default: return false; } @@ -651,6 +653,8 @@ const char* EnumToJsonString(ModuleType val) { return "CLIMATE"; case MT_RADIO: return "RADIO"; + case MT_SEAT: + return "SEAT"; default: return ""; } @@ -663,6 +667,9 @@ bool EnumFromJsonString(const std::string& literal, ModuleType* result) { } else if ("RADIO" == literal) { *result = MT_RADIO; return true; + } else if ("SEAT" == literal) { + *result = MT_SEAT; + return true; } else { return false; } |