summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authorAndrey Oleynik <AOleynik@luxoft.com>2016-01-17 20:47:09 +0200
committerHerasym Oleh <oolleehh@gmail.com>2016-02-02 18:15:49 +0200
commitd29adf0dbd563856fe737ce83eeff06455d73969 (patch)
treee6c50a3e2ea7d4fb71414b915972501dfe6bbe8c /src/components
parentf8b1723720344b4440f8503f9330b327e6e8a754 (diff)
downloadsdl_core-d29adf0dbd563856fe737ce83eeff06455d73969.tar.gz
Adds methods for conversion of HMI <---> Mobile languages
Implements: APPLINK-20560 Conflicts: src/components/application_manager/include/application_manager/message_helper.h
Diffstat (limited to 'src/components')
-rw-r--r--src/components/application_manager/include/application_manager/message_helper.h140
-rw-r--r--src/components/application_manager/src/hmi_language_handler.cc15
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc40
3 files changed, 132 insertions, 63 deletions
diff --git a/src/components/application_manager/include/application_manager/message_helper.h b/src/components/application_manager/include/application_manager/message_helper.h
index f76c58158b..afaf27e0ea 100644
--- a/src/components/application_manager/include/application_manager/message_helper.h
+++ b/src/components/application_manager/include/application_manager/message_helper.h
@@ -601,72 +601,96 @@ class MessageHelper {
static std::string CommonLanguageToString(
hmi_apis::Common_Language::eType language);
- /**
- * @brief Converts string to common language enum value
- * @param language language as string
- * @return Common language enum value
- */
- static hmi_apis::Common_Language::eType CommonLanguageFromString(
- const std::string& language);
+ /**
+ * @brief Converts string to common language enum value
+ * @param language language as string
+ * @return Common language enum value
+ */
+ static hmi_apis::Common_Language::eType CommonLanguageFromString(
+ const std::string& language);
- /**
- * @brief Gets command limit number per minute for specific application
- * @param policy_app_id Unique application id
- * @return Limit for number of command per minute
- */
- static uint32_t GetAppCommandLimit(const std::string& policy_app_id);
+ /**
+ * @brief Converts mobile language to string representation
+ * @param language Mobile language
+ * @return Mobile language string representation
+ */
+ static std::string MobileLanguageToString(
+ mobile_apis::Language::eType language);
- /**
- * @brief Creates TTS.SetGlobalProperties request and sends
- * to HMI for VCA module.
- * @param app contains application which sends TTS GlobalProperties to HMI
- * after timeout or first time when application register with level NONE or
- * BACKGROUND
- * @param default_help_prompt
- * if default_help_prompt=TRUE->TTSGlobalProperties request will be created
- * with
- * default helpPrompt array, otherwise TTSGlobalProperties request will be
- * created
- * with empty helpPrompt array.
- */
- static void SendTTSGlobalProperties(ApplicationSharedPtr app,
- bool default_help_prompt);
+ /**
+ * @brief Converts string to mobile language enum value
+ * @param language language as string
+ * @return Mobile language enum value
+ */
+ static mobile_apis::Language::eType MobileLanguageFromString(
+ const std::string& language);
- /**
- * @brief SendSetAppIcon allows to send SetAppIcon request.
- *
- * @param app_id application for which icon request should be sent.
- *
- * @param icon_path path to the icon.
- */
- static void SendSetAppIcon(uint32_t app_id, const std::string& icon_path);
+ /**
+ * @brief Converts mobile language enum to HMI language enum
+ * @param language Mobile language enum
+ * @return HMI language enum
+ */
+ static hmi_apis::Common_Language::eType MobileToCommonLanguage(
+ const mobile_apis::Language::eType language);
- private:
- /**
- * @brief Creates new request object and fill its header
- * @return New request object
- */
- static smart_objects::SmartObjectSPtr CreateRequestObject();
+ /**
+ * @brief Converts HMI language enum to mobile language enum
+ * @param language HMI language enum
+ * @return Mobile language enum
+ */
+ static mobile_apis::Language::eType CommonToMobileLanguage(
+ const hmi_apis::Common_Language::eType language);
- /**
- * @brief Allows to fill SO according to the current permissions.
- * @param permissions application permissions.
- * @param message which should be filled.
- */
- static void FillAppRevokedPermissions(
- const policy::AppPermissions& permissions,
- smart_objects::SmartObject& message);
+ /**
+ * @brief Gets command limit number per minute for specific application
+ * @param policy_app_id Unique application id
+ * @return Limit for number of command per minute
+ */
+ static uint32_t GetAppCommandLimit(const std::string& policy_app_id);
- static smart_objects::SmartObjectSPtr CreateChangeRegistration(
- int32_t function_id,
- int32_t language,
- uint32_t app_id,
- const smart_objects::SmartObject* app_types = NULL);
+ /**
+ * @brief Creates TTS.SetGlobalProperties request and sends
+ * to HMI for VCA module.
+ * @param app contains application which sends TTS GlobalProperties to HMI
+ * after timeout or first time when application register with level NONE or
+ * BACKGROUND
+ * @param default_help_prompt
+ * if default_help_prompt=TRUE->TTSGlobalProperties request will be created with
+ * default helpPrompt array, otherwise TTSGlobalProperties request will be created
+ * with empty helpPrompt array.
+ */
+ static void SendTTSGlobalProperties(
+ ApplicationSharedPtr app, bool default_help_prompt);
+
+ /**
+ * @brief Sends DecryptCertificate request to HMI
+ * @param file_name path to file containing encrypted certificate
+ */
+ static void SendDecryptCertificateToHMI(const std::string& file_name);
+
+ private:
+ /**
+ * @brief Creates new request object and fill its header
+ * @return New request object
+ */
+ static smart_objects::SmartObjectSPtr CreateRequestObject();
+
+ /**
+ * @brief Allows to fill SO according to the current permissions.
+ * @param permissions application permissions.
+ * @param message which should be filled.
+ */
+ static void FillAppRevokedPermissions(const policy::AppPermissions& permissions,
+ smart_objects::SmartObject& message);
+
+ static smart_objects::SmartObjectSPtr CreateChangeRegistration(
+ int32_t function_id, int32_t language, uint32_t app_id,
+ const smart_objects::SmartObject* app_types = NULL);
- MessageHelper();
+ MessageHelper();
- static const VehicleData vehicle_data_;
- DISALLOW_COPY_AND_ASSIGN(MessageHelper);
+ static const VehicleData vehicle_data_;
+ DISALLOW_COPY_AND_ASSIGN(MessageHelper);
};
} // namespace application_manager
diff --git a/src/components/application_manager/src/hmi_language_handler.cc b/src/components/application_manager/src/hmi_language_handler.cc
index e56308b47e..931c5db346 100644
--- a/src/components/application_manager/src/hmi_language_handler.cc
+++ b/src/components/application_manager/src/hmi_language_handler.cc
@@ -157,7 +157,7 @@ void HMILanguageHandler::set_handle_response_for(
static_cast<hmi_apis::FunctionID::eType>(
request[strings::params][strings::function_id].asInt());
- if (!Compare<hmi_apis::FunctionID::eType, ONE, EQ>(
+ if (!Compare<hmi_apis::FunctionID::eType, EQ, ONE>(
function_id,
hmi_apis::FunctionID::UI_GetLanguage,
hmi_apis::FunctionID::VR_GetLanguage,
@@ -176,6 +176,7 @@ void HMILanguageHandler::set_handle_response_for(
void HMILanguageHandler::VerifyRegisteredApps() const {
LOG4CXX_AUTO_TRACE(logger_);
+ using namespace helpers;
HMICapabilities& hmi_capabilities =
ApplicationManagerImpl::instance()->hmi_capabilities();
@@ -189,16 +190,20 @@ void HMILanguageHandler::VerifyRegisteredApps() const {
ApplicationSetIt it = accessor.begin();
for (; accessor.end() != it;) {
ApplicationSharedPtr app = *it++;
- if (app->ui_language() != static_cast<mobile_apis::Language::eType>(ui_language) ||
- (app->language() != static_cast<mobile_apis::Language::eType>(vr_language) ||
- app->language() != static_cast<mobile_apis::Language::eType>(tts_language)))
+ if (app->ui_language() !=
+ MessageHelper::CommonToMobileLanguage(ui_language) ||
+ !Compare<mobile_apis::Language::eType, EQ, ALL>(
+ app->language(),
+ MessageHelper::CommonToMobileLanguage(vr_language),
+ MessageHelper::CommonToMobileLanguage(tts_language))) {
MessageHelper::SendOnLanguageChangeToMobile(app->app_id());
MessageHelper::SendOnAppInterfaceUnregisteredNotificationToMobile(
app->app_id(),
mobile_api::AppInterfaceUnregisteredReason::LANGUAGE_CHANGE);
ApplicationManagerImpl::instance()->UnregisterApplication(
app->app_id(), mobile_apis::Result::SUCCESS, false);
+ }
}
}
-}
+} // namespace application_manager
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc
index 53caa73823..eb47467eb8 100644
--- a/src/components/application_manager/src/message_helper/message_helper.cc
+++ b/src/components/application_manager/src/message_helper/message_helper.cc
@@ -219,6 +219,46 @@ hmi_apis::Common_Language::eType MessageHelper::CommonLanguageFromString(
return hmi_apis::Common_Language::INVALID_ENUM;
}
+std::string MessageHelper::MobileLanguageToString(
+ mobile_apis::Language::eType language) {
+ using namespace NsSmartDeviceLink::NsSmartObjects;
+ const char* str = 0;
+ if (EnumConversionHelper<mobile_apis::Language::eType>::EnumToCString(
+ language, &str)) {
+ return str ? str : "";
+ }
+ return std::string();
+}
+
+mobile_apis::Language::eType MessageHelper::MobileLanguageFromString(
+ const std::string& language) {
+ using namespace NsSmartDeviceLink::NsSmartObjects;
+ mobile_apis::Language::eType value;
+ if (EnumConversionHelper<mobile_apis::Language::eType>::StringToEnum(
+ language, &value)) {
+ return value;
+ }
+ return mobile_apis::Language::INVALID_ENUM;
+}
+
+hmi_apis::Common_Language::eType MessageHelper::MobileToCommonLanguage(
+ const mobile_apis::Language::eType language) {
+ const std::string result = MobileLanguageToString(language);
+ if (result.empty()) {
+ return hmi_apis::Common_Language::INVALID_ENUM;
+ }
+ return CommonLanguageFromString(result);
+}
+
+mobile_apis::Language::eType MessageHelper::CommonToMobileLanguage(
+ const hmi_apis::Common_Language::eType language) {
+ const std::string result = CommonLanguageToString(language);
+ if (result.empty()) {
+ return mobile_api::Language::INVALID_ENUM;
+ }
+ return MobileLanguageFromString(result);
+}
+
uint32_t MessageHelper::GetAppCommandLimit(const std::string& policy_app_id) {
std::string priority;
policy::PolicyHandler::instance()->GetPriority(policy_app_id, &priority);