summaryrefslogtreecommitdiff
path: root/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi
diff options
context:
space:
mode:
authorYevhenii Dementieiev <57259850+ydementieiev@users.noreply.github.com>2020-07-17 18:48:45 +0300
committerGitHub <noreply@github.com>2020-07-17 11:48:45 -0400
commit5e2dff6d31554d5bd4534ec7f7702dc2f877340e (patch)
tree15f000c7e8b816845333bc62ba9513c088f36ff1 /src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi
parent81fb32e394ead932632bf2ee175f561027afbe2b (diff)
downloadsdl_core-5e2dff6d31554d5bd4534ec7f7702dc2f877340e.tar.gz
[SDL 0249] Feature/persisting hmi capabilities (#3397)
* Replace raw pointers with shared pointers * Save UI.GetCapabilities, UI.GetLanguage, UI.GetSupportedLanguages responses into the file specified by ini file If ini file contains an empty path to the cache file, this feature will be disabled and SDL will work as before. SDL will save each response only first time, after that file will not be overwritten. On master reset SDL will remove the cache file. SDL will read default hmi capability values from the cache file on each system boot up * Fix doxygen * Define HMI interfaces aliases * Implement caching for VR, TTS, Buttons, VehicheInfo and RC capabilities * Fix default capabilities structure according to the HMI API * Send requests to get capabilities from HMI in case any capability is missing in cache * Refactor RC capabilities storing and retrieving. Fix related UTs. * Created implementation and unit tests for HMI capabilities persistence after SW update * Created implementation for save and received MetaInfo * Increase unit tests coverage on persistence HMI capabilities * Do not rewrite MetaInfo in case invalid BC.GetSystemInfo response from HMI * Read pcm_stream_capabilities from HMI and save to the cache * Refactor hmi capabilities test * Fix wrong convert PrerecordedSpeech and added unit test for check * Suspend response to RAI requests until HMI has responded to all the HMI capabilities * Request appropriate capabilities if they are not present in the cache and the default capabilities as well * fixup! Send requests to get capabilities from HMI in case any capability is missing in cache * Remove hm_capabilities.json test file It should be removed because during UT building the real hmi_capabilities.json file is copying to the test directory * Re-factor HMICapabilitiesImpl and add the new one method Make changes in the next places: - GetRequestsRequiredForCapabilities method rename to IsRequestsRequiredForCapabilities and return value change to bool. This commit provides the next implementation: the method checks if specified request should be sent to the HMI; - in the save_hmi_capability_field_to_json method remove redundant section in the json node to save; - JsonCapabilitiesGetter: GetInterfaceJsonMember method rename to IsInterfaceJsonMemberExists. Return value change to bool; - Add the new one function GetInterfaceGetter: returns the JsonCapabilitiesGetter according to specified interface name; - Parsing the capabilities cache file wrapped to the try/catch construction; - Add AddRequiredRequestsForCapabilities method; - Remove MatchesCCPUVersion method as redundant; - Rework PrepareXXXJsonValueForSaving methods; - Add new Unit tests for HMICapabilitiesImpl; - Update existing Unit tests according to the appropriate changes; * Update CCPU Version max value parameter (regular and external policies) * Minor updates: - Remove input parameter for the GetSystemInfo method, move the OnSoftwareVersionReceived method out of GetSystemInfo method; - UIGetCapabilitiesResponse: retrieve reference for a specific section from a message instead of using the whole path to needed section; - OnTTSLanguageChangeNotification: add saving cached capabilities for VR; - OnVRLanguageChangeNotification: update log info; - VRGetCapabilitiesResponse: retrieve reference for a specific section from a message instead of using the whole path to needed section; - VRGetSupportedLanguagesResponse: update log info; - CacheManager (regular and external policies): add doxygen description for the SetPreloadedPtFlag method; move back meta info out of "for" loop; * Minor changes for the Unit tests * Fix SDL Core crash during getting RC capability There the case when RC capability didn't initialized yet and rc_capability() method is calling and returns invalid pointer to the RC capability. This commit provides the next changes: - Add check for returned pointer to rc_capability; - Add the new one capabilitiesStatus parameter "kInvalidStatus" for return value for the GetModuleDataCapabilities method; - Update capabilitiesStatus parameter names according to the coding style; * fixup! Re-factor HMICapabilitiesImpl and add the new one method * fixup! Re-factor HMICapabilitiesImpl and add the new one method * fixup! Re-factor HMICapabilitiesImpl and add the new one method * Remove "system_display_capabilities" smart key * Add to the RequestToHMI the RequestCapabilities method The "RequestCapabilities" methos is common for the all *IsReady requests. Because of that it was moved to the base class with common logic. * Re-factor all *IsReady request. The logic for getting capabilities from HMI is common for the all *IsReady request. This logic is implemented in the base RequestToHMI class. So, this logic should be removed from each request and the method of the base class should be used. * fixup! Re-factor all *IsReady request. Co-authored-by: LitvinenkoIra <ilytvynenko@luxoft.com> Co-authored-by: Igor Gapchuk <igapchuck@luxoft.com> Co-authored-by: Yevhenii Dementieiev (GitHub) <ydementieiev@luxoft.com> Co-authored-by: sniukalov <sniukaov@luxoft.com>
Diffstat (limited to 'src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi')
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_response.cc18
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_response.cc36
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ready_notification.cc2
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc21
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ui_language_change_notification.cc13
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc13
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_response.cc28
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_is_ready_request.cc16
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_response.cc25
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_response.cc18
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_response.cc20
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_is_ready_request.cc25
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_response.cc84
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_response.cc17
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_response.cc20
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_is_ready_request.cc25
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_response.cc27
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_response.cc17
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_request.cc5
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_response.cc10
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_is_ready_request.cc24
32 files changed, 367 insertions, 154 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_request.cc
index 6696689174..c0d22dcb89 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_request.cc
@@ -58,6 +58,12 @@ void ButtonGetCapabilitiesRequest::Run() {
SendRequest();
}
+void ButtonGetCapabilitiesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::Buttons_GetCapabilities);
+}
+
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_response.cc
index b6ab822c47..cc3a61a9df 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/button_get_capabilities_response.cc
@@ -58,22 +58,32 @@ void ButtonGetCapabilitiesResponse::Run() {
static_cast<hmi_apis::Common_Result::eType>(
(*message_)[strings::params][hmi_response::code].asInt());
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::Buttons_GetCapabilities);
+
if (hmi_apis::Common_Result::SUCCESS != code) {
LOG4CXX_ERROR(logger_, "Error is returned. Capabilities won't be updated.");
return;
}
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
-
- hmi_capabilities.set_button_capabilities(
+ std::vector<std::string> sections_to_update{
+ hmi_response::button_capabilities};
+ hmi_capabilities_.set_button_capabilities(
(*message_)[strings::msg_params][hmi_response::capabilities]);
if ((*message_)[strings::msg_params].keyExists(
hmi_response::preset_bank_capabilities)) {
- hmi_capabilities.set_preset_bank_capabilities(
+ sections_to_update.push_back(hmi_response::preset_bank_capabilities);
+ hmi_capabilities_.set_preset_bank_capabilities(
(*message_)[strings::msg_params]
[hmi_response::preset_bank_capabilities]);
}
+
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::buttons, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save Buttons.GetCapabilities response to cache");
+ }
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_request.cc
index 8546252119..7a505a46f3 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_request.cc
@@ -59,6 +59,11 @@ void GetSystemInfoRequest::Run() {
SendRequest();
}
+void GetSystemInfoRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateCachedCapabilities();
+}
+
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_response.cc
index baff925a4e..7a7d015e21 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/get_system_info_response.cc
@@ -53,38 +53,38 @@ GetSystemInfoResponse::~GetSystemInfoResponse() {}
void GetSystemInfoResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- const hmi_apis::Common_Result::eType code =
- static_cast<hmi_apis::Common_Result::eType>(
- (*message_)[strings::params][hmi_response::code].asInt());
+ const auto code = static_cast<hmi_apis::Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
- const SystemInfo& info = GetSystemInfo(code);
+ hmi_capabilities_.set_ccpu_version(policy_handler_.GetCCPUVersionFromPT());
+
+ if (hmi_apis::Common_Result::SUCCESS != code) {
+ LOG4CXX_WARN(logger_, "GetSystemError returns an error code " << code);
+ hmi_capabilities_.UpdateCachedCapabilities();
+ policy_handler_.SetPreloadedPtFlag(false);
+ return;
+ }
+
+ const SystemInfo& info = GetSystemInfo();
- // We have to set preloaded flag as false in policy table on any response
- // of GetSystemInfo (SDLAQ-CRS-2365)
policy_handler_.OnGetSystemInfo(
info.ccpu_version, info.wers_country_code, info.language);
+
+ hmi_capabilities_.OnSoftwareVersionReceived(info.ccpu_version);
}
-const SystemInfo GetSystemInfoResponse::GetSystemInfo(
- const hmi_apis::Common_Result::eType code) const {
+const SystemInfo GetSystemInfoResponse::GetSystemInfo() const {
SystemInfo info;
- if (hmi_apis::Common_Result::SUCCESS != code) {
- LOG4CXX_WARN(logger_, "GetSystemError returns an error code " << code);
- return info;
- }
info.ccpu_version =
(*message_)[strings::msg_params]["ccpu_version"].asString();
info.wers_country_code =
(*message_)[strings::msg_params]["wersCountryCode"].asString();
- const uint32_t lang_code =
- (*message_)[strings::msg_params]["language"].asUInt();
- info.language = application_manager::MessageHelper::CommonLanguageToString(
- static_cast<hmi_apis::Common_Language::eType>(lang_code));
-
- hmi_capabilities_.set_ccpu_version(info.ccpu_version);
+ const auto lang_code = static_cast<hmi_apis::Common_Language::eType>(
+ (*message_)[strings::msg_params]["language"].asUInt());
+ info.language = MessageHelper::CommonLanguageToString(lang_code);
return info;
}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ready_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ready_notification.cc
index da3612b043..c9270fd80b 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ready_notification.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ready_notification.cc
@@ -54,7 +54,7 @@ OnReadyNotification::~OnReadyNotification() {}
void OnReadyNotification::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- application_manager_.OnHMIStartedCooperation();
+ application_manager_.OnHMIReady();
event_engine::Event event(hmi_apis::FunctionID::BasicCommunication_OnReady);
event.set_smart_object(*message_);
event.raise(application_manager_.event_dispatcher());
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc
index f89baad737..293857f8d5 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_tts_language_change_notification.cc
@@ -59,20 +59,31 @@ OnTTSLanguageChangeNotification::~OnTTSLanguageChangeNotification() {}
void OnTTSLanguageChangeNotification::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
-
- hmi_capabilities.set_active_tts_language(
+ hmi_capabilities_.set_active_tts_language(
static_cast<hmi_apis::Common_Language::eType>(
(*message_)[strings::msg_params][strings::language].asInt()));
/* need to clarify, because unchanged VR
cause WRONG_LANGUAGE on Register */
- hmi_capabilities.set_active_vr_language(
+ hmi_capabilities_.set_active_vr_language(
static_cast<hmi_apis::Common_Language::eType>(
(*message_)[strings::msg_params][strings::language].asInt()));
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save TTS.OnLanguageChange response to cache");
+ }
+
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::vr, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save VR.OnLanguageChange response to cache");
+ }
+
(*message_)[strings::msg_params][strings::hmi_display_language] =
- hmi_capabilities.active_ui_language();
+ hmi_capabilities_.active_ui_language();
(*message_)[strings::params][strings::function_id] =
static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ui_language_change_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ui_language_change_notification.cc
index 697b2036c4..995d69cc45 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ui_language_change_notification.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_ui_language_change_notification.cc
@@ -59,17 +59,22 @@ OnUILanguageChangeNotification::~OnUILanguageChangeNotification() {}
void OnUILanguageChangeNotification::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
-
- hmi_capabilities.set_active_ui_language(
+ hmi_capabilities_.set_active_ui_language(
static_cast<hmi_apis::Common_Language::eType>(
(*message_)[strings::msg_params][strings::language].asInt()));
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::ui, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save UI.OnLanguageChange response to cache");
+ }
+
(*message_)[strings::msg_params][strings::hmi_display_language] =
(*message_)[strings::msg_params][strings::language];
(*message_)[strings::msg_params][strings::language] =
- hmi_capabilities.active_vr_language();
+ hmi_capabilities_.active_vr_language();
(*message_)[strings::params][strings::function_id] =
static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc
index c308af9b92..1500f272ab 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_vr_language_change_notification.cc
@@ -60,14 +60,19 @@ OnVRLanguageChangeNotification::~OnVRLanguageChangeNotification() {}
void OnVRLanguageChangeNotification::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
-
- hmi_capabilities.set_active_vr_language(
+ hmi_capabilities_.set_active_vr_language(
static_cast<hmi_apis::Common_Language::eType>(
(*message_)[strings::msg_params][strings::language].asInt()));
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::vr, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save VR.OnLanguageChange response to cache");
+ }
+
(*message_)[strings::msg_params][strings::hmi_display_language] =
- hmi_capabilities.active_ui_language();
+ hmi_capabilities_.active_ui_language();
(*message_)[strings::params][strings::function_id] =
static_cast<int32_t>(mobile_apis::FunctionID::OnLanguageChangeID);
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_request.cc
index d8ad6087a6..d882dcd6e7 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/rc_get_capabilities_request.cc
@@ -57,6 +57,12 @@ void RCGetCapabilitiesRequest::Run() {
SendRequest();
}
+void RCGetCapabilitiesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::RC_GetCapabilities);
+}
+
} // namespace commands
} // namespace sdl_rpc_plugin
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
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 5e4af1503a..4ea0d43dc3 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
@@ -31,6 +31,9 @@
*/
#include "sdl_rpc_plugin/commands/hmi/rc_is_ready_request.h"
+
+#include <set>
+
#include "application_manager/rpc_service.h"
namespace sdl_rpc_plugin {
@@ -77,11 +80,13 @@ void RCIsReadyRequest::on_event(const event_engine::Event& event) {
if (!app_mngr::commands::CheckAvailabilityHMIInterfaces(
application_manager_, HmiInterfaces::HMI_INTERFACE_RC)) {
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::RC_GetCapabilities);
LOG4CXX_INFO(logger_,
"HmiInterfaces::HMI_INTERFACE_RC isn't available");
return;
}
- SendMessageToHMI();
+ RequestInterfaceCapabilities(hmi_interface::rc);
break;
}
default: {
@@ -93,14 +98,7 @@ void RCIsReadyRequest::on_event(const event_engine::Event& event) {
void RCIsReadyRequest::onTimeOut() {
// Note(dtrunov): According to new requirment APPLINK-27956
- SendMessageToHMI();
-}
-
-void RCIsReadyRequest::SendMessageToHMI() {
- std::shared_ptr<smart_objects::SmartObject> get_capabilities(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::RC_GetCapabilities, application_manager_));
- rpc_service_.ManageHMICommand(get_capabilities);
+ RequestInterfaceCapabilities(hmi_interface::rc);
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_request.cc
index 9baaabf401..85f0b93b8c 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_request.cc
@@ -57,6 +57,11 @@ void TTSGetCapabilitiesRequest::Run() {
SendRequest();
}
+void TTSGetCapabilitiesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetCapabilities);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_response.cc
index c0581a6380..e6edcdb365 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_capabilities_response.cc
@@ -52,19 +52,38 @@ TTSGetCapabilitiesResponse::~TTSGetCapabilitiesResponse() {}
void TTSGetCapabilitiesResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
+ const auto result_code = static_cast<hmi_apis::Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_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;
if ((*message_)[strings::msg_params].keyExists(
hmi_response::speech_capabilities)) {
- hmi_capabilities.set_speech_capabilities(
+ sections_to_update.push_back(hmi_response::speech_capabilities);
+ hmi_capabilities_.set_speech_capabilities(
(*message_)[strings::msg_params][hmi_response::speech_capabilities]);
}
if ((*message_)[strings::msg_params].keyExists(
hmi_response::prerecorded_speech_capabilities)) {
- hmi_capabilities.set_prerecorded_speech(
+ sections_to_update.push_back(hmi_response::prerecorded_speech_capabilities);
+ hmi_capabilities_.set_prerecorded_speech(
(*message_)[strings::msg_params]
[hmi_response::prerecorded_speech_capabilities]);
}
+
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save TTS.GetCapabilities response to cache");
+ }
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_request.cc
index 7d2c15a9bf..d62c9627f5 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_request.cc
@@ -57,6 +57,11 @@ void TTSGetLanguageRequest::Run() {
SendRequest();
}
+void TTSGetLanguageRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetLanguage);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_response.cc
index 627056dce1..1487fd7915 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_language_response.cc
@@ -56,6 +56,18 @@ void TTSGetLanguageResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
using namespace hmi_apis;
+ const Common_Result::eType result_code = static_cast<Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
+
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetLanguage);
+
+ if (Common_Result::SUCCESS != result_code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
+
Common_Language::eType language = Common_Language::INVALID_ENUM;
if ((*message_).keyExists(strings::msg_params) &&
@@ -66,6 +78,12 @@ void TTSGetLanguageResponse::Run() {
hmi_capabilities_.set_active_tts_language(language);
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, message_->getSchema())) {
+ LOG4CXX_DEBUG(logger_, "Failed to save TTS.GetLanguage response to cache");
+ }
+
LOG4CXX_DEBUG(logger_,
"Raising event for function_id " << function_id()
<< " and correlation_id "
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_request.cc
index 2cb47380d5..5d758c84b7 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_request.cc
@@ -57,6 +57,11 @@ void TTSGetSupportedLanguagesRequest::Run() {
SendRequest();
}
+void TTSGetSupportedLanguagesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_response.cc
index a70d1c89a3..baa10394c5 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_get_supported_languages_response.cc
@@ -59,11 +59,23 @@ void TTSGetSupportedLanguagesResponse::Run() {
static_cast<hmi_apis::Common_Result::eType>(
(*message_)[strings::params][hmi_response::code].asInt());
- if (hmi_apis::Common_Result::SUCCESS == code) {
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::TTS_GetSupportedLanguages);
- hmi_capabilities.set_tts_supported_languages(
- (*message_)[strings::msg_params][hmi_response::languages]);
+ if (hmi_apis::Common_Result::SUCCESS != code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
+
+ hmi_capabilities_.set_tts_supported_languages(
+ (*message_)[strings::msg_params][hmi_response::languages]);
+
+ std::vector<std::string> sections_to_update{hmi_response::languages};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::tts, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save TTS.GetSupportedLanguages response to cache");
}
}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_is_ready_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_is_ready_request.cc
index 89b5961895..4ae737bec4 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_is_ready_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/tts_is_ready_request.cc
@@ -31,7 +31,6 @@
*/
#include "sdl_rpc_plugin/commands/hmi/tts_is_ready_request.h"
-#include "application_manager/message_helper.h"
#include "application_manager/rpc_service.h"
namespace sdl_rpc_plugin {
@@ -74,11 +73,13 @@ void TTSIsReadyRequest::on_event(const event_engine::Event& event) {
hmi_capabilities.set_is_tts_cooperating(is_available);
if (!app_mngr::commands::CheckAvailabilityHMIInterfaces(
application_manager_, HmiInterfaces::HMI_INTERFACE_TTS)) {
+ UpdateRequiredInterfaceCapabilitiesRequests(hmi_interface::tts);
LOG4CXX_INFO(logger_,
"HmiInterfaces::HMI_INTERFACE_TTS isn't available");
return;
}
- SendMessageToHMI();
+
+ RequestInterfaceCapabilities(hmi_interface::tts);
break;
}
default: {
@@ -90,25 +91,7 @@ void TTSIsReadyRequest::on_event(const event_engine::Event& event) {
void TTSIsReadyRequest::onTimeOut() {
// Note(dtrunov): According to new requirment APPLINK-27956
- SendMessageToHMI();
-}
-
-void TTSIsReadyRequest::SendMessageToHMI() {
- std::shared_ptr<smart_objects::SmartObject> get_language(
- MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::TTS_GetLanguage,
- application_manager_));
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
- hmi_capabilities.set_handle_response_for(*get_language);
- rpc_service_.ManageHMICommand(get_language);
- std::shared_ptr<smart_objects::SmartObject> get_all_languages(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::TTS_GetSupportedLanguages,
- application_manager_));
- rpc_service_.ManageHMICommand(get_all_languages);
- std::shared_ptr<smart_objects::SmartObject> get_capabilities(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::TTS_GetCapabilities, application_manager_));
- rpc_service_.ManageHMICommand(get_capabilities);
+ RequestInterfaceCapabilities(hmi_interface::tts);
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_request.cc
index 5f8704b3e5..32c19eabcd 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_capabilities_request.cc
@@ -57,6 +57,11 @@ void UIGetCapabilitiesRequest::Run() {
SendRequest();
}
+void UIGetCapabilitiesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetCapabilities);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
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 45ae49f205..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,86 +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)) {
- hmi_capabilities.set_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
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_request.cc
index d3b44d1168..948adbdece 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_request.cc
@@ -57,6 +57,11 @@ void UIGetLanguageRequest::Run() {
SendRequest();
}
+void UIGetLanguageRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetLanguage);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_response.cc
index 2a5c0ab016..e32dbf3c47 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_language_response.cc
@@ -56,6 +56,17 @@ UIGetLanguageResponse::~UIGetLanguageResponse() {}
void UIGetLanguageResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
using namespace hmi_apis;
+ const Common_Result::eType result_code = static_cast<Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
+
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetLanguage);
+
+ if (Common_Result::SUCCESS != result_code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
Common_Language::eType language = Common_Language::INVALID_ENUM;
@@ -67,6 +78,12 @@ void UIGetLanguageResponse::Run() {
hmi_capabilities_.set_active_ui_language(language);
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::ui, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_, "Failed to save UI.GetLanguage response to cache");
+ }
+
LOG4CXX_DEBUG(logger_,
"Raising event for function_id " << function_id()
<< " and correlation_id "
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_request.cc
index 0665612525..0001af9203 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_request.cc
@@ -57,6 +57,11 @@ void UIGetSupportedLanguagesRequest::Run() {
SendRequest();
}
+void UIGetSupportedLanguagesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetSupportedLanguages);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_response.cc
index 19ee62e51d..53704b3705 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_get_supported_languages_response.cc
@@ -59,11 +59,23 @@ void UIGetSupportedLanguagesResponse::Run() {
static_cast<hmi_apis::Common_Result::eType>(
(*message_)[strings::params][hmi_response::code].asInt());
- if (hmi_apis::Common_Result::SUCCESS == code) {
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::UI_GetSupportedLanguages);
- hmi_capabilities.set_ui_supported_languages(
- (*message_)[strings::msg_params][hmi_response::languages]);
+ if (hmi_apis::Common_Result::SUCCESS != code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
+
+ hmi_capabilities_.set_ui_supported_languages(
+ (*message_)[strings::msg_params][hmi_response::languages]);
+
+ std::vector<std::string> sections_to_update{hmi_response::languages};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::ui, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save UI.GetSupportedLanguages response to cache");
}
}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_is_ready_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_is_ready_request.cc
index 2546b704b2..4882095d42 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_is_ready_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_is_ready_request.cc
@@ -31,7 +31,6 @@
*/
#include "sdl_rpc_plugin/commands/hmi/ui_is_ready_request.h"
-#include "application_manager/message_helper.h"
#include "application_manager/rpc_service.h"
namespace sdl_rpc_plugin {
@@ -73,11 +72,13 @@ void UIIsReadyRequest::on_event(const event_engine::Event& event) {
hmi_capabilities.set_is_ui_cooperating(is_available);
if (!app_mngr::commands::CheckAvailabilityHMIInterfaces(
application_manager_, HmiInterfaces::HMI_INTERFACE_UI)) {
+ UpdateRequiredInterfaceCapabilitiesRequests(hmi_interface::ui);
LOG4CXX_INFO(logger_,
"HmiInterfaces::HMI_INTERFACE_UI isn't available");
return;
}
- SendMessageToHMI();
+
+ RequestInterfaceCapabilities(hmi_interface::ui);
break;
}
default: {
@@ -89,25 +90,7 @@ void UIIsReadyRequest::on_event(const event_engine::Event& event) {
void UIIsReadyRequest::onTimeOut() {
// Note(dtrunov): According to new requirment APPLINK-27956
- SendMessageToHMI();
-}
-
-void UIIsReadyRequest::SendMessageToHMI() {
- std::shared_ptr<smart_objects::SmartObject> get_language(
- MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::UI_GetLanguage,
- application_manager_));
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
- hmi_capabilities.set_handle_response_for(*get_language);
- rpc_service_.ManageHMICommand(get_language);
- std::shared_ptr<smart_objects::SmartObject> get_all_languages(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::UI_GetSupportedLanguages,
- application_manager_));
- rpc_service_.ManageHMICommand(get_all_languages);
- std::shared_ptr<smart_objects::SmartObject> get_capabilities(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::UI_GetCapabilities, application_manager_));
- rpc_service_.ManageHMICommand(get_capabilities);
+ RequestInterfaceCapabilities(hmi_interface::ui);
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_request.cc
index b06bfa0e77..dd0d78cf2d 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_request.cc
@@ -57,6 +57,11 @@ void VRGetCapabilitiesRequest::Run() {
SendRequest();
}
+void VRGetCapabilitiesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetCapabilities);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_response.cc
index 80c308ea40..79d532bff8 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_capabilities_response.cc
@@ -52,11 +52,32 @@ VRGetCapabilitiesResponse::~VRGetCapabilitiesResponse() {}
void VRGetCapabilitiesResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
+ const auto result_code = static_cast<hmi_apis::Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetCapabilities);
- hmi_capabilities.set_vr_capabilities(
- (*message_)[strings::msg_params][strings::vr_capabilities]);
+ if (hmi_apis::Common_Result::SUCCESS != result_code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
+
+ const smart_objects::SmartObject& msg_params =
+ (*message_)[strings::msg_params];
+
+ std::vector<std::string> sections_to_update;
+ if (msg_params.keyExists(strings::vr_capabilities)) {
+ sections_to_update.push_back(strings::vr_capabilities);
+ hmi_capabilities_.set_vr_capabilities(msg_params[strings::vr_capabilities]);
+ }
+
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::vr, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_,
+ "Failed to save VR.GetCapabilities response to cache");
+ }
}
} // namespace commands
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_request.cc
index 84179f6357..3aa36aee33 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_request.cc
@@ -57,6 +57,11 @@ void VRGetLanguageRequest::Run() {
SendRequest();
}
+void VRGetLanguageRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetLanguage);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_response.cc
index 6b7fec736d..462ccc529c 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_language_response.cc
@@ -56,6 +56,17 @@ VRGetLanguageResponse::~VRGetLanguageResponse() {}
void VRGetLanguageResponse::Run() {
LOG4CXX_AUTO_TRACE(logger_);
using namespace hmi_apis;
+ const Common_Result::eType result_code = static_cast<Common_Result::eType>(
+ (*message_)[strings::params][hmi_response::code].asInt());
+
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetLanguage);
+
+ if (Common_Result::SUCCESS != result_code) {
+ LOG4CXX_DEBUG(logger_,
+ "Request was not successful. Don't change HMI capabilities");
+ return;
+ }
Common_Language::eType language = Common_Language::INVALID_ENUM;
@@ -67,6 +78,12 @@ void VRGetLanguageResponse::Run() {
hmi_capabilities_.set_active_vr_language(language);
+ std::vector<std::string> sections_to_update{hmi_response::language};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::vr, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(logger_, "Failed to save VR.GetLanguage response to cache");
+ }
+
LOG4CXX_DEBUG(logger_,
"Raising event for function_id " << function_id()
<< " and correlation_id "
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_request.cc
index 351940bf68..5755b91ab6 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_request.cc
@@ -57,6 +57,11 @@ void VRGetSupportedLanguagesRequest::Run() {
SendRequest();
}
+void VRGetSupportedLanguagesRequest::onTimeOut() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetSupportedLanguages);
+}
} // namespace commands
} // namespace sdl_rpc_plugin
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_response.cc
index 4c725267fa..59602cf10a 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_response.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_get_supported_languages_response.cc
@@ -60,10 +60,20 @@ void VRGetSupportedLanguagesResponse::Run() {
static_cast<hmi_apis::Common_Result::eType>(
(*message_)[strings::params][hmi_response::code].asInt());
+ hmi_capabilities_.UpdateRequestsRequiredForCapabilities(
+ hmi_apis::FunctionID::VR_GetSupportedLanguages);
+
if (hmi_apis::Common_Result::SUCCESS == code) {
HMICapabilities& hmi_capabilities = hmi_capabilities_;
hmi_capabilities.set_vr_supported_languages(
(*message_)[strings::msg_params][hmi_response::languages]);
+
+ std::vector<std::string> sections_to_update{hmi_response::languages};
+ if (!hmi_capabilities_.SaveCachedCapabilitiesToFile(
+ hmi_interface::vr, sections_to_update, message_->getSchema())) {
+ LOG4CXX_ERROR(
+ logger_, "Failed to save VR.GetSupportedLanguages response to cache");
+ }
}
}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_is_ready_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_is_ready_request.cc
index 12414eab10..f65f58f423 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_is_ready_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_is_ready_request.cc
@@ -73,11 +73,13 @@ void VRIsReadyRequest::on_event(const event_engine::Event& event) {
hmi_capabilities.set_is_vr_cooperating(is_available);
if (!app_mngr::commands::CheckAvailabilityHMIInterfaces(
application_manager_, HmiInterfaces::HMI_INTERFACE_VR)) {
+ UpdateRequiredInterfaceCapabilitiesRequests(hmi_interface::vr);
LOG4CXX_INFO(logger_,
"HmiInterfaces::HMI_INTERFACE_VR isn't available");
return;
}
- SendMessageToHMI();
+
+ RequestInterfaceCapabilities(hmi_interface::vr);
break;
}
default: {
@@ -89,25 +91,7 @@ void VRIsReadyRequest::on_event(const event_engine::Event& event) {
void VRIsReadyRequest::onTimeOut() {
// Note(dtrunov): According to new requirment APPLINK-27956
- SendMessageToHMI();
-}
-
-void VRIsReadyRequest::SendMessageToHMI() {
- std::shared_ptr<smart_objects::SmartObject> get_language(
- MessageHelper::CreateModuleInfoSO(hmi_apis::FunctionID::VR_GetLanguage,
- application_manager_));
- HMICapabilities& hmi_capabilities = hmi_capabilities_;
- hmi_capabilities.set_handle_response_for(*get_language);
- rpc_service_.ManageHMICommand(get_language);
- std::shared_ptr<smart_objects::SmartObject> get_all_languages(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::VR_GetSupportedLanguages,
- application_manager_));
- rpc_service_.ManageHMICommand(get_all_languages);
- std::shared_ptr<smart_objects::SmartObject> get_capabilities(
- MessageHelper::CreateModuleInfoSO(
- hmi_apis::FunctionID::VR_GetCapabilities, application_manager_));
- rpc_service_.ManageHMICommand(get_capabilities);
+ RequestInterfaceCapabilities(hmi_interface::vr);
}
} // namespace commands