diff options
author | Andrey Oleynik <AOleynik@luxoft.com> | 2016-01-17 20:47:09 +0200 |
---|---|---|
committer | Herasym Oleh <oolleehh@gmail.com> | 2016-02-02 18:15:49 +0200 |
commit | d29adf0dbd563856fe737ce83eeff06455d73969 (patch) | |
tree | e6c50a3e2ea7d4fb71414b915972501dfe6bbe8c | |
parent | f8b1723720344b4440f8503f9330b327e6e8a754 (diff) | |
download | sdl_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
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); |