diff options
author | Ira Lytvynenko <ILytvynenko@luxoft.com> | 2018-02-27 12:55:10 +0200 |
---|---|---|
committer | Ira Lytvynenko (GitHub) <ILytvynenko@luxoft.com> | 2018-06-26 13:47:19 +0300 |
commit | 0a3ec8354c9100b9492a3ecc16c61a498549b2f3 (patch) | |
tree | a5418832ddc38089c798206706ecc0ce81aca50f /src/components | |
parent | 22d3d2e92cb084d4987e52f148b1328e7a843952 (diff) | |
download | sdl_core-0a3ec8354c9100b9492a3ecc16c61a498549b2f3.tar.gz |
New RC module SEAT
Diffstat (limited to 'src/components')
9 files changed, 382 insertions, 75 deletions
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 e22f2b64a8..4370eaceb2 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 { @@ -155,6 +152,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"; @@ -168,6 +166,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..aabc21ad31 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,19 @@ 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; + } + } } - - 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 160915f347..9fee9325fe 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 @@ -32,6 +32,7 @@ #include "rc_rpc_plugin/commands/mobile/set_interior_vehicle_data_request.h" #include "rc_rpc_plugin/rc_module_constants.h" +#include "rc_rpc_plugin/rc_rpc_plugin.h" #include "smart_objects/enum_schema_item.h" #include "utils/macro.h" #include "json/json.h" @@ -60,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 @@ -86,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 @@ -113,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 @@ -145,30 +175,38 @@ 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); } - 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() { @@ -177,19 +215,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 && @@ -265,13 +292,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 d20efdd7dc..f5ad1b5fa5 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -1523,7 +1523,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"/> @@ -1791,6 +1917,8 @@ </param> <param name="climateControlData" type="Common.ClimateControlData" mandatory="false"> </param> + <param name="seatControlData" type="SeatControlData" mandatory="false"> + </param> </struct> <enum name="RCAccessMode"> @@ -2740,6 +2868,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 40a4892fff..3c685a545b 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -1267,6 +1267,9 @@ </element> <element name="MOBILE_APP"> </element> + <element name="RADIO_TUNER"> + <description>Radio may be on AM, FM or XM</description> + </element> </enum> <enum name="WiperStatus"> @@ -1339,6 +1342,7 @@ <enum name="ModuleType"> <element name="CLIMATE"/> <element name="RADIO"/> + <element name="SEAT"/> </enum> <enum name="DefrostZone"> @@ -2626,7 +2630,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> @@ -2715,16 +2844,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 --> @@ -2863,6 +2982,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 > @@ -2873,6 +3004,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 96a6748436..296827f7fc 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 @@ -166,10 +166,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 5a9e403053..43c26eb12e 100644 --- a/src/components/policy/policy_external/src/policy_table/enums.cc +++ b/src/components/policy/policy_external/src/policy_table/enums.cc @@ -764,6 +764,8 @@ bool IsValidEnum(ModuleType val) { return true; case MT_RADIO: return true; + case MT_SEAT: + return true; default: return false; } @@ -774,6 +776,8 @@ const char* EnumToJsonString(ModuleType val) { return "CLIMATE"; case MT_RADIO: return "RADIO"; + case MT_SEAT: + return "SEAT"; default: return ""; } @@ -786,6 +790,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 dbe00d0f9c..e1fbb5cf84 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 @@ -151,10 +151,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 2949ef315b..dabba24227 100644 --- a/src/components/policy/policy_regular/src/policy_table/enums.cc +++ b/src/components/policy/policy_regular/src/policy_table/enums.cc @@ -627,6 +627,8 @@ bool IsValidEnum(ModuleType val) { return true; case MT_RADIO: return true; + case MT_SEAT: + return true; default: return false; } @@ -637,6 +639,8 @@ const char* EnumToJsonString(ModuleType val) { return "CLIMATE"; case MT_RADIO: return "RADIO"; + case MT_SEAT: + return "SEAT"; default: return ""; } @@ -649,6 +653,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; } |