APPLINK-6746. Add priority param to some RPC commands.
authorAndrey Oleynik <AOleynik@luxoft.com>
Thu, 10 Apr 2014 09:48:55 +0000 (12:48 +0300)
committerJustin Dickow <jjdickow@gmail.com>
Wed, 9 Jul 2014 18:11:50 +0000 (14:11 -0400)
src/components/application_manager/src/message_helper.cc
src/components/application_manager/src/policies/policy_handler.cc
src/components/policy

index 0a47e7a..8e932bb 100644 (file)
@@ -37,6 +37,7 @@
 #include "utils/macro.h"
 #include "application_manager/application_manager_impl.h"
 #include "application_manager/message_helper.h"
+#include "application_manager/policies/policy_handler.h"
 #include "application_manager/commands/command_impl.h"
 #include "connection_handler/connection_handler_impl.h"
 #include "application_manager/application.h"
@@ -67,6 +68,26 @@ hmi_apis::Common_Language::eType ToCommonLanguage(
   return hmi_apis::Common_Language::eType(lang_val);
 }
 
+typedef std::map<std::string, hmi_apis::Common_AppPriority::eType> CommonAppPriorityMap;
+CommonAppPriorityMap app_priority_values =
+{
+  {"NORMAL", hmi_apis::Common_AppPriority::NORMAL},
+  {"COMMUNICATION", hmi_apis::Common_AppPriority::COMMUNICATION},
+  {"EMERGENCY", hmi_apis::Common_AppPriority::EMERGENCY},
+  {"NAVIGATION", hmi_apis::Common_AppPriority::NAVIGATION},
+  {"NONE", hmi_apis::Common_AppPriority::NONE},
+  {"VOICE_COMMUNICATION", hmi_apis::Common_AppPriority::VOICE_COMMUNICATION},
+  {"INVALID_ENUM", hmi_apis::Common_AppPriority::INVALID_ENUM}
+};
+
+const uint32_t GetPriorityCode(const std::string& priority) {
+  CommonAppPriorityMap::const_iterator it = app_priority_values.find(priority);
+  if (app_priority_values.end() != it) {
+    return static_cast<uint32_t>((*it).second);
+  }
+  return static_cast<uint32_t>(hmi_apis::Common_AppPriority::INVALID_ENUM);
+}
+
 } // namespase
 
 namespace application_manager {
@@ -316,6 +337,12 @@ void MessageHelper::SendOnAppRegisteredNotificationToHMI(
     message[strings::msg_params][strings::tts_name] = *(application_impl
         .tts_name());
   }
+  std::string priority;
+  policy::PolicyHandler::instance()->policy_manager()->GetPriority(
+        application_impl.mobile_app_id()->asString(), &priority);
+  if (!priority.empty()) {
+    message[strings::msg_params]["priority"] = GetPriorityCode(priority);
+  }
   DCHECK(ApplicationManagerImpl::instance()->ManageHMICommand(notification));
 }
 
@@ -1188,6 +1215,18 @@ void MessageHelper::SendActivateAppToHMI(uint32_t const app_id) {
     ApplicationManagerImpl::instance()->GetNextHMICorrelationID();
   (*message)[strings::msg_params][strings::app_id] = app_id;
 
+  application_manager::ApplicationConstSharedPtr app =
+      application_manager::ApplicationManagerImpl::instance()
+      ->application(app_id);
+
+  std::string priority;
+  policy::PolicyHandler::instance()->policy_manager()->GetPriority(
+    app->mobile_app_id()->asString(), &priority);
+
+  if (!priority.empty()) {
+    (*message)[strings::msg_params]["priority"] = GetPriorityCode(priority);
+  }
+
   ApplicationManagerImpl::instance()->ManageHMICommand(message);
 }
 
@@ -1266,6 +1305,10 @@ void MessageHelper::SendActivateAppResponse(policy::AppPermissions& permissions,
     (*message)[strings::msg_params]["isPermissionsConsentNeeded"] = permissions
         .appPermissionsConsentNeeded;
   }
+  if (!permissions.priority.empty()) {
+    (*message)[strings::msg_params]["priority"] = GetPriorityCode(
+                                                    permissions.priority);
+  }
 
   ApplicationManagerImpl::instance()->ManageHMICommand(message);
 
@@ -1878,6 +1921,10 @@ void MessageHelper::SendOnAppPermissionsChangedNotification(
     message[strings::msg_params]["appUnauthorized"] = permissions
         .appUnauthorized;
   }
+  if (!permissions.priority.empty()) {
+    message[strings::msg_params]["priority"] = GetPriorityCode(
+                                                 permissions.priority);
+  }
 
   ApplicationManagerImpl::instance()->ManageHMICommand(&message);
 }
index 7346f9d..5926e3d 100644 (file)
@@ -584,7 +584,7 @@ void PolicyHandler::OnActivateApp(uint32_t connection_key,
   }
 #else
   permissions.isSDLAllowed = true;
-#endif
+#endif  
 
   if (permissions.isSDLAllowed &&
       PolicyTableStatus::StatusUpdateRequired == policy_manager_->GetPolicyTableStatus()) {
index e6453c7..7cefabb 160000 (submodule)
@@ -1 +1 @@
-Subproject commit e6453c78aea88ae6463e2bc412ebbc56cf2fa8a3
+Subproject commit 7cefabbf8a8757062cbf73b70d057a98b1fefb68