summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShobhit Adlakha <ShobhitAd@users.noreply.github.com>2020-05-18 10:11:42 -0400
committerGitHub <noreply@github.com>2020-05-18 10:11:42 -0400
commitb982ad29b92dccb6ff5d92648324dc937c0e2ffe (patch)
treed1a597a6d38cb1996eca0a3c639212f21a416886
parent86f87ca36c83f552d414033d0c3c2a7a818b733d (diff)
downloadsdl_core-b982ad29b92dccb6ff5d92648324dc937c0e2ffe.tar.gz
Fix/Add Startup PTU trigger check (#3363)
* Add Startup PTU check * Reset Stop PTU etry when first app is registered * Address review comment
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h2
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc2
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc6
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h9
-rw-r--r--src/components/include/policy/policy_regular/policy/policy_manager.h5
-rw-r--r--src/components/include/test/application_manager/policies/mock_policy_handler_interface.h1
-rw-r--r--src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h1
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_manager_impl.h5
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc12
9 files changed, 43 insertions, 0 deletions
diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h
index 2070554cd8..2c7b878023 100644
--- a/src/components/application_manager/include/application_manager/policies/policy_handler.h
+++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h
@@ -324,6 +324,8 @@ class PolicyHandler : public PolicyHandlerInterface,
void OnSystemRequestReceived() const OVERRIDE;
+ void TriggerPTUOnStartupIfRequired() OVERRIDE;
+
/**
* @brief Get appropriate message parameters and send them with response
* to HMI
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index e6705a4d8e..878cf5765e 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -898,6 +898,8 @@ void ApplicationManagerImpl::OnHMIStartedCooperation() {
resume_controller().ResetLaunchTime();
RefreshCloudAppInformation();
+
+ policy_handler_->TriggerPTUOnStartupIfRequired();
}
std::string ApplicationManagerImpl::PolicyIDByIconUrl(const std::string url) {
diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc
index 11decf45c3..678916f7eb 100644
--- a/src/components/application_manager/src/policies/policy_handler.cc
+++ b/src/components/application_manager/src/policies/policy_handler.cc
@@ -787,6 +787,12 @@ void PolicyHandler::OnSystemRequestReceived() const {
policy_manager_->ResetTimeout();
}
+void PolicyHandler::TriggerPTUOnStartupIfRequired() {
+#ifndef EXTERNAL_PROPRIETARY_MODE
+ policy_manager_->TriggerPTUOnStartupIfRequired();
+#endif
+}
+
void PolicyHandler::GetRegisteredLinks(
std::map<std::string, std::string>& out_links) const {
DataAccessor<ApplicationSet> accessor = application_manager_.applications();
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
index f85483f98e..735f44a314 100644
--- a/src/components/include/application_manager/policies/policy_handler_interface.h
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -768,6 +768,15 @@ class PolicyHandlerInterface : public VehicleDataItemProvider {
*/
virtual void OnSystemRequestReceived() const = 0;
+ /**
+ * @brief Triggers a PolicyTableUpdate on startup (only if an update is
+ * required)
+ *
+ * Currently, this function is only implemented for regular policies
+ * since the device consent is not enabled by default for external policies.
+ */
+ virtual void TriggerPTUOnStartupIfRequired() = 0;
+
private:
/**
* @brief Processes data received via OnAppPermissionChanged notification
diff --git a/src/components/include/policy/policy_regular/policy/policy_manager.h b/src/components/include/policy/policy_regular/policy/policy_manager.h
index 0689a5b768..99f38673ef 100644
--- a/src/components/include/policy/policy_regular/policy/policy_manager.h
+++ b/src/components/include/policy/policy_regular/policy/policy_manager.h
@@ -801,6 +801,11 @@ class PolicyManager : public usage_statistics::StatisticsManager,
*/
virtual void ResetTimeout() = 0;
+ /**
+ * @brief Trigger a PTU once on startup if it is required
+ */
+ virtual void TriggerPTUOnStartupIfRequired() = 0;
+
protected:
/**
* @brief Checks is PT exceeded IgnitionCycles
diff --git a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
index bcff478023..0dde38bc79 100644
--- a/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
+++ b/src/components/include/test/application_manager/policies/mock_policy_handler_interface.h
@@ -217,6 +217,7 @@ class MockPolicyHandlerInterface : public policy::PolicyHandlerInterface {
MOCK_CONST_METHOD1(SendOnAppPropertiesChangeNotification,
void(const std::string& policy_app_id));
MOCK_METHOD0(OnPTExchangeNeeded, void());
+ MOCK_METHOD0(TriggerPTUOnStartupIfRequired, void());
MOCK_METHOD1(GetAvailableApps, void(std::queue<std::string>& apps));
MOCK_METHOD3(
AddApplication,
diff --git a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
index c803f63c9d..ac0fab4328 100644
--- a/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
+++ b/src/components/include/test/policy/policy_regular/policy/mock_policy_manager.h
@@ -262,6 +262,7 @@ class MockPolicyManager : public PolicyManager {
MOCK_METHOD0(ExceededIgnitionCycles, bool());
MOCK_METHOD0(ExceededDays, bool());
MOCK_METHOD0(StartPTExchange, void());
+ MOCK_METHOD0(TriggerPTUOnStartupIfRequired, void());
// --- Statistics Manager section
MOCK_METHOD1(Increment, void(usage_statistics::GlobalCounterId type));
diff --git a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
index b608c6f7ec..aa77019613 100644
--- a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
+++ b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h
@@ -797,6 +797,11 @@ class PolicyManagerImpl : public PolicyManager {
AppIdURL RetrySequenceUrl(const struct RetrySequenceURL& rs,
const EndpointUrls& urls) const OVERRIDE;
+ /**
+ * @brief Trigger a PTU once on startup if it is required
+ */
+ virtual void TriggerPTUOnStartupIfRequired() OVERRIDE;
+
#ifdef BUILD_TESTS
/**
* @brief Getter for cache_manager instance
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc
index b8380b761d..c6389b503b 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -713,6 +713,11 @@ void PolicyManagerImpl::UpdatePTUReadyAppsCount(const uint32_t new_app_count) {
void PolicyManagerImpl::OnAppRegisteredOnMobile(
const std::string& device_id, const std::string& application_id) {
if (application_id != last_registered_policy_app_id_) {
+ if (last_registered_policy_app_id_.empty()) {
+ LOG4CXX_DEBUG(logger_, "Stopping update after first app is registered");
+ // ResetRetrySequence(ResetRetryCountType::kResetInternally);
+ StopRetrySequence();
+ }
StartPTExchange();
last_registered_policy_app_id_ = application_id;
}
@@ -1867,6 +1872,13 @@ bool PolicyManagerImpl::FunctionGroupNeedEncryption(
: false;
}
+void PolicyManagerImpl::TriggerPTUOnStartupIfRequired() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ if (ignition_check) {
+ StartPTExchange();
+ }
+}
+
const std::string PolicyManagerImpl::GetPolicyFunctionName(
const uint32_t function_id) const {
return policy_table::EnumToJsonString(