summaryrefslogtreecommitdiff
path: root/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc')
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc87
1 files changed, 59 insertions, 28 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc
index a3eb9244bd..c5a76612f6 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc
@@ -53,81 +53,112 @@ UIGetCapabilitiesResponse::~UIGetCapabilitiesResponse() {}
void UIGetCapabilitiesResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
+ const auto result_code = static_cast<hmi_apis::Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
+
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetCapabilities);
+
+ if (hmi_apis::Common_Result::SUCCESS != result_code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
+
+ std::vector<std::string> sections_to_update;
const smart_objects::SmartObject& msg_params =
(*message_)[strings::msg_params];
if (msg_params.keyExists(hmi_response::display_capabilities)) {
- hmi_capabilities.set_display_capabilities(
+ sections_to_update.push_back(hmi_response::display_capabilities);
+ hmi_capabilities_.set_display_capabilities(
msg_params[hmi_response::display_capabilities]);
}
if (msg_params.keyExists(hmi_response::hmi_zone_capabilities)) {
- hmi_capabilities.set_hmi_zone_capabilities(
+ sections_to_update.push_back(hmi_response::hmi_zone_capabilities);
+ hmi_capabilities_.set_hmi_zone_capabilities(
msg_params[hmi_response::hmi_zone_capabilities]);
}
if (msg_params.keyExists(hmi_response::soft_button_capabilities)) {
- hmi_capabilities.set_soft_button_capabilities(
+ sections_to_update.push_back(hmi_response::soft_button_capabilities);
+ hmi_capabilities_.set_soft_button_capabilities(
msg_params[hmi_response::soft_button_capabilities]);
}
// use newer parameter "audioPassThruCapabilitiesList" when available
if (msg_params.keyExists(strings::audio_pass_thru_capabilities_list)) {
- hmi_capabilities.set_audio_pass_thru_capabilities(
+ sections_to_update.push_back(strings::audio_pass_thru_capabilities);
+ hmi_capabilities_.set_audio_pass_thru_capabilities(
msg_params[strings::audio_pass_thru_capabilities_list]);
} else if (msg_params.keyExists(strings::audio_pass_thru_capabilities)) {
smart_objects::SmartObject audio_pass_thru_capabilities_list(
smart_objects::SmartType_Array);
audio_pass_thru_capabilities_list[0] =
msg_params[strings::audio_pass_thru_capabilities];
- hmi_capabilities.set_audio_pass_thru_capabilities(
+ sections_to_update.push_back(strings::audio_pass_thru_capabilities);
+ hmi_capabilities_.set_audio_pass_thru_capabilities(
audio_pass_thru_capabilities_list);
}
if (msg_params.keyExists(strings::hmi_capabilities)) {
if (msg_params[strings::hmi_capabilities].keyExists(strings::navigation)) {
- hmi_capabilities.set_navigation_supported(
+ sections_to_update.push_back(strings::navigation);
+ hmi_capabilities_.set_navigation_supported(
msg_params[strings::hmi_capabilities][strings::navigation].asBool());
}
if (msg_params[strings::hmi_capabilities].keyExists(strings::phone_call)) {
- hmi_capabilities.set_phone_call_supported(
+ sections_to_update.push_back(strings::phone_call);
+ hmi_capabilities_.set_phone_call_supported(
msg_params[strings::hmi_capabilities][strings::phone_call].asBool());
}
if (msg_params[strings::hmi_capabilities].keyExists(
strings::video_streaming)) {
- hmi_capabilities.set_video_streaming_supported(
+ sections_to_update.push_back(strings::video_streaming);
+ hmi_capabilities_.set_video_streaming_supported(
msg_params[strings::hmi_capabilities][strings::video_streaming]
.asBool());
}
}
if (msg_params.keyExists(strings::system_capabilities)) {
- if (msg_params[strings::system_capabilities].keyExists(
- strings::navigation_capability)) {
- hmi_capabilities.set_navigation_capability(
- msg_params[strings::system_capabilities]
- [strings::navigation_capability]);
+ auto& system_capabilities_so = msg_params[strings::system_capabilities];
+
+ if (system_capabilities_so.keyExists(strings::navigation_capability)) {
+ sections_to_update.push_back(strings::navigation_capability);
+ hmi_capabilities_.set_navigation_capability(
+ system_capabilities_so[strings::navigation_capability]);
}
- if (msg_params[strings::system_capabilities].keyExists(
- strings::phone_capability)) {
- hmi_capabilities.set_phone_capability(
- msg_params[strings::system_capabilities][strings::phone_capability]);
+ if (system_capabilities_so.keyExists(strings::phone_capability)) {
+ sections_to_update.push_back(strings::phone_capability);
+ hmi_capabilities_.set_phone_capability(
+ system_capabilities_so[strings::phone_capability]);
}
- if (msg_params[strings::system_capabilities].keyExists(
- strings::video_streaming_capability)) {
- hmi_capabilities.set_video_streaming_capability(
- msg_params[strings::system_capabilities]
- [strings::video_streaming_capability]);
+ if (system_capabilities_so.keyExists(strings::video_streaming_capability)) {
+ sections_to_update.push_back(strings::video_streaming_capability);
+ hmi_capabilities_.set_video_streaming_capability(
+ system_capabilities_so[strings::video_streaming_capability]);
}
- if (msg_params[strings::system_capabilities].keyExists(
- strings::display_capabilities)) {
- hmi_capabilities.set_system_display_capabilities(
- msg_params[strings::system_capabilities]
- [strings::display_capabilities]);
+ if (system_capabilities_so.keyExists(strings::display_capabilities)) {
+ sections_to_update.push_back(strings::display_capabilities);
+ hmi_capabilities_.set_system_display_capabilities(
+ system_capabilities_so[strings::display_capabilities]);
}
}
+
+ if (msg_params.keyExists(strings::pcm_stream_capabilities)) {
+ sections_to_update.push_back(strings::pcm_stream_capabilities);
+ hmi_capabilities_.set_pcm_stream_capabilities(
+ msg_params[strings::pcm_stream_capabilities]);
+ }
+
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::ui, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save UI.GetCapabilities response to cache");
+ }
}
} // namespace commands