APPLINK-6593:
authorKonstantin Kolodiy <KKolodiy@luxoft.com>
Thu, 10 Apr 2014 08:01:54 +0000 (12:01 +0400)
committerJustin Dickow <jjdickow@gmail.com>
Wed, 9 Jul 2014 18:11:45 +0000 (14:11 -0400)
- Implemente SDL.UpdateSDL from HMI API

src/components/application_manager/include/application_manager/policies/policy_handler.h
src/components/application_manager/src/hmi_command_factory.cc
src/components/application_manager/src/message_helper.cc
src/components/application_manager/src/policies/policy_handler.cc

index 0801c7e..07fef5e 100644 (file)
@@ -115,6 +115,12 @@ class PolicyHandler : public utils::Singleton<PolicyHandler>,
   void PTExchangeAtIgnition();
 
   /**
+   * Initializes PT exchange at user request
+   * @param correlation_id correlation id of request
+   */
+  void PTExchangeAtUserRequest(uint32_t correlation_id);
+
+  /**
    * @brief Save device info for specific device to policy table
    * @param device_id Device mac address
    * @param device_info Device params
index d45baf6..2cbb6d8 100644 (file)
@@ -1069,15 +1069,14 @@ CommandSharedPtr HMICommandFactory::CreateCommand(
       command.reset(new commands::OnSDLConsentNeededNotification(message));
       break;
     }
-    /*
     case hmi_apis::FunctionID::SDL_UpdateSDL: {
-    if (is_response) {
-    command.reset(new commands::UpdateSDLResponse(message));
-    } else {
-    command.reset(new commands::UpdateSDLRequest(message));
+      if (is_response) {
+        command.reset(new commands::UpdateSDLResponse(message));
+      } else {
+        command.reset(new commands::UpdateSDLRequest(message));
+      }
+      break;
     }
-    break;
-    */
     case hmi_apis::FunctionID::BasicCommunication_OnIgnitionCycleOver: {
       command.reset(new commands::OnIgnitionCycleOverNotification(message));
       break;
index f59ae15..0a47e7a 100644 (file)
@@ -1328,6 +1328,26 @@ void MessageHelper::SendPolicyUpdate(
   ApplicationManagerImpl::instance()->ManageHMICommand(message);
 }
 
+void MessageHelper::SendUpdateSDLResponse(const std::string& result,
+                                          uint32_t correlation_id) {
+  smart_objects::SmartObject* message = new smart_objects::SmartObject(
+    smart_objects::SmartType_Map);
+  if (!message) {
+    return;
+  }
+
+  (*message)[strings::params][strings::function_id] =
+    hmi_apis::FunctionID::SDL_UpdateSDL;
+  (*message)[strings::params][strings::message_type] =
+    MessageType::kResponse;
+  (*message)[strings::params][strings::correlation_id] = correlation_id;
+  (*message)[strings::params][hmi_response::code] = 0;
+
+  (*message)[strings::msg_params]["result"] = result;
+
+  ApplicationManagerImpl::instance()->ManageHMICommand(message);
+}
+
 void MessageHelper::SendGetUserFriendlyMessageResponse(
   const std::vector<policy::UserFriendlyMessage>& msg,
   uint32_t correlation_id) {
index c775377..7346f9d 100644 (file)
@@ -451,8 +451,6 @@ bool PolicyHandler::ReceiveMessageFromSDK(const BinaryMessage& pt_string) {
     event_observer_.get()->subscribe_on_event(
       hmi_apis::FunctionID::VehicleInfo_GetVehicleData, correlation_id);
     application_manager::MessageHelper::CreateGetDeviceData(correlation_id);
-    // TODO(KKolodiy): when we must reset counter of ignition cyles, update days
-    // and kms?
   }
   return ret;
 }
@@ -498,9 +496,6 @@ void PolicyHandler::StartPTExchange(bool skip_device_selection) {
     }
   }
 
-  // TODO(KKolodiy): when we must reset counter of ignition cyles,
-  // update days and kms?
-
   retry_sequence_lock_.Ackquire();
   retry_sequence_.stop();
   policy_manager_->ResetRetrySequence();
@@ -636,6 +631,17 @@ void PolicyHandler::PTExchangeAtOdometer(int kilometers) {
   }
 }
 
+void PolicyHandler::PTExchangeAtUserRequest(uint32_t correlation_id) {
+  LOG4CXX_TRACE(logger_, "PT exchange at user request");
+  policy::PolicyTableStatus status = policy_manager_->GetPolicyTableStatus();
+  if (status == policy::StatusUpdateRequired) {
+    OnPTExchangeNeeded();
+    status = policy::StatusUpdatePending;
+  }
+  application_manager::MessageHelper::SendUpdateSDLResponse(
+        ConvertUpdateStatus(status), correlation_id);
+}
+
 void PolicyHandler::OnPTExchangeNeeded() {
   StartPTExchange();
 }