diff options
Diffstat (limited to 'src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc')
-rw-r--r-- | src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc index 128b111c5e..910c12e979 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc @@ -53,13 +53,26 @@ RCGetCapabilitiesResponse::~RCGetCapabilitiesResponse() {} void RCGetCapabilitiesResponse::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::RC_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; bool rc_capability_exists = (*message_)[strings::msg_params].keyExists(strings::rc_capability); if (rc_capability_exists) { - hmi_capabilities.set_rc_capability( + hmi_capabilities_.set_rc_capability( (*message_)[strings::msg_params][strings::rc_capability]); + sections_to_update.push_back(strings::rc_capability); } bool seat_location_capability_exists = @@ -67,11 +80,18 @@ void RCGetCapabilitiesResponse::Run() { strings::seat_location_capability); if (seat_location_capability_exists) { - hmi_capabilities.set_seat_location_capability( + hmi_capabilities_.set_seat_location_capability( (*message_)[strings::msg_params][strings::seat_location_capability]); + sections_to_update.push_back(strings::seat_location_capability); } - hmi_capabilities.set_rc_supported(rc_capability_exists); + hmi_capabilities_.set_rc_supported(rc_capability_exists); + + if (!hmi_capabilities_.SaveCachedCapabilitiesToFile( + hmi_interface::rc, sections_to_update, message_->getSchema())) { + LOG4CXX_ERROR(logger_, + "Failed to save RC.GetCapabilities response to cache"); + } } } // namespace commands |