summaryrefslogtreecommitdiff
path: root/src/components/include/application_manager/policies/policy_handler_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include/application_manager/policies/policy_handler_interface.h')
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h390
1 files changed, 390 insertions, 0 deletions
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
new file mode 100644
index 0000000000..8fdb56b6df
--- /dev/null
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -0,0 +1,390 @@
+/*
+ * Copyright (c) 2015, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_POLICIES_POLICY_HANDLER_INTERFACE_H_
+#define SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_POLICIES_POLICY_HANDLER_INTERFACE_H_
+
+#include <string>
+#include <map>
+#include <set>
+#include <vector>
+#include <queue>
+#include "interfaces/MOBILE_API.h"
+#include "policy/policy_types.h"
+#include "application_manager/policies/policy_handler_observer.h"
+#include "policy/usage_statistics/statistics_manager.h"
+#include "utils/custom_string.h"
+#include "policy/policy_settings.h"
+#include "smart_objects/smart_object.h"
+
+namespace policy {
+namespace smart_objects = NsSmartDeviceLink::NsSmartObjects;
+class PolicyHandlerInterface {
+ public:
+ virtual ~PolicyHandlerInterface() {}
+
+ virtual bool LoadPolicyLibrary() = 0;
+ virtual bool PolicyEnabled() const = 0;
+ virtual bool InitPolicyTable() = 0;
+ virtual bool ResetPolicyTable() = 0;
+ virtual bool ClearUserConsent() = 0;
+ virtual bool SendMessageToSDK(const BinaryMessage& pt_string,
+ const std::string& url) = 0;
+ virtual bool ReceiveMessageFromSDK(const std::string& file,
+ const BinaryMessage& pt_string) = 0;
+ virtual bool UnloadPolicyLibrary() = 0;
+ virtual void OnPermissionsUpdated(const std::string& policy_app_id,
+ const Permissions& permissions,
+ const HMILevel& default_hmi) = 0;
+
+ virtual void OnPermissionsUpdated(const std::string& policy_app_id,
+ const Permissions& permissions) = 0;
+
+ virtual bool GetPriority(const std::string& policy_app_id,
+ std::string* priority) const = 0;
+ virtual void CheckPermissions(const PTString& app_id,
+ const PTString& hmi_level,
+ const PTString& rpc,
+ const RPCParams& rpc_params,
+ CheckPermissionResult& result) = 0;
+
+ virtual uint32_t GetNotificationsNumber(
+ const std::string& priority) const = 0;
+ virtual DeviceConsent GetUserConsentForDevice(
+ const std::string& device_id) const = 0;
+ virtual bool GetDefaultHmi(const std::string& policy_app_id,
+ std::string* default_hmi) const = 0;
+ virtual bool GetInitialAppData(const std::string& application_id,
+ StringArray* nicknames = NULL,
+ StringArray* app_hmi_types = NULL) = 0;
+ virtual void GetServiceUrls(const std::string& service_type,
+ EndpointUrls& end_points) = 0;
+ virtual std::string GetLockScreenIconUrl() const = 0;
+ virtual void ResetRetrySequence() = 0;
+ virtual uint32_t NextRetryTimeout() = 0;
+ virtual int TimeoutExchange() = 0;
+ virtual void OnExceededTimeout() = 0;
+ virtual void OnSystemReady() = 0;
+ virtual void PTUpdatedAt(Counters counter, int value) = 0;
+ virtual void add_listener(PolicyHandlerObserver* listener) = 0;
+ virtual void remove_listener(PolicyHandlerObserver* listener) = 0;
+
+ virtual utils::SharedPtr<usage_statistics::StatisticsManager>
+ GetStatisticManager() const = 0;
+
+ virtual void SendOnAppPermissionsChanged(
+ const AppPermissions& permissions,
+ const std::string& policy_app_id) const = 0;
+
+ /**
+ * @brief CheckSystemAction allows to check whether certain system
+ * action is enabled.
+ *
+ * @param system_action system action to check.
+ *
+ * @return true if specified system action is enabled, false otherwise.
+ */
+ virtual bool CheckSystemAction(mobile_apis::SystemAction::eType system_action,
+ const std::string& policy_app_id) const = 0;
+
+ /**
+ * Lets client to notify PolicyHandler that more kilometers expired
+ * @param kms New value of odometer
+ */
+ virtual void KmsChanged(int kms) = 0;
+
+ /**
+ * @brief Gather information for application and sends it to HMI
+ * @param connection_key Connection key for application
+ */
+ virtual void OnActivateApp(uint32_t connection_key,
+ uint32_t correlation_id) = 0;
+
+ /**
+ * @brief Process user consent on mobile data connection access
+ * @param Device id or empty string, if concern to all SDL functionality
+ * @param User consent from response
+ */
+ virtual void OnAllowSDLFunctionalityNotification(
+ bool is_allowed, const std::string& device_id) = 0;
+
+ /**
+ * @brief Increment counter for ignition cycles
+ */
+ virtual void OnIgnitionCycleOver() = 0;
+
+ virtual void OnPendingPermissionChange(const std::string& policy_app_id) = 0;
+
+ /**
+ * Initializes PT exchange at user request
+ * @param correlation_id correlation id of request
+ */
+ virtual void PTExchangeAtUserRequest(uint32_t correlation_id) = 0;
+
+ /**
+ * @brief Add's device to policy table
+ * @param device_id Device mac address
+ * @param connection_type Device connection type
+ */
+ virtual void AddDevice(const std::string& device_id,
+ const std::string& connection_type) = 0;
+
+ /**
+ * @brief Save device info for specific device to policy table
+ * @param device_id Device mac address
+ * @param device_info Device params
+ */
+ virtual void SetDeviceInfo(const std::string& device_id,
+ const DeviceInfo& device_info) = 0;
+
+ /**
+ * @brief Store user-changed permissions consent to DB
+ * @param connection_key Connection key of application or 0, if permissions
+ * should be applied to all applications
+ * @param permissions User-changed group permissions consent
+ */
+ virtual void OnAppPermissionConsent(const uint32_t connection_key,
+ const PermissionConsent& permissions) = 0;
+
+ /**
+ * @brief Get appropriate message parameters and send them with response
+ * to HMI
+ * @param message_codes RPC message codes
+ * @param language Language
+ * @param correlation_id correlation id of request
+ */
+ virtual void OnGetUserFriendlyMessage(
+ const std::vector<std::string>& message_codes,
+ const std::string& language,
+ uint32_t correlation_id) = 0;
+
+ /**
+ * @brief Get list of permissions for application/device binded to
+ * connection key from request and send response
+ * @param connection_key Connection key for specific application or 0 for all
+ * currently registered applications
+ * @param correlation_id Correlation id from request
+ */
+ virtual void OnGetListOfPermissions(const uint32_t connection_key,
+ const uint32_t correlation_id) = 0;
+
+ /**
+ * @brief Get current policy table update state and send response
+ * @param correlation_id Correlation id from request
+ */
+ virtual void OnGetStatusUpdate(const uint32_t correlation_id) = 0;
+
+ /**
+ * @brief Send notification to HMI with changed policy update status
+ * @param status Current policy update state
+ */
+ virtual void OnUpdateStatusChanged(const std::string& status) = 0;
+
+ /**
+ * @brief Update currently used device id in policies manager for given
+ * application
+ * @param policy_app_id Application id
+ */
+ virtual std::string OnCurrentDeviceIdUpdateRequired(
+ const std::string& policy_app_id) = 0;
+
+ /**
+ * @brief Set parameters from OnSystemInfoChanged to policy table
+ * @param language System language
+ */
+ virtual void OnSystemInfoChanged(const std::string& language) = 0;
+
+ /**
+ * @brief Save data from GetSystemInfo request to policy table
+ * @param ccpu_version CCPU version
+ * @param wers_country_code WERS country code
+ * @param language System language
+ */
+ virtual void OnGetSystemInfo(const std::string& ccpu_version,
+ const std::string& wers_country_code,
+ const std::string& language) = 0;
+
+ /**
+ * @brief Send request to HMI to get update on system parameters
+ */
+ virtual void OnSystemInfoUpdateRequired() = 0;
+
+ /**
+ * @brief Sends GetVehicleData request in case when Vechicle info is ready.
+ */
+ virtual void OnVIIsReady() = 0;
+
+ /**
+ * @brief Allows to update vechicle data info.
+ * @param SmartObject which contains all needed information.
+ */
+ virtual void OnVehicleDataUpdated(
+ const smart_objects::SmartObject& message) = 0;
+
+ /**
+ * Removes device
+ * @param device_id id of device
+ */
+ virtual void RemoveDevice(const std::string& device_id) = 0;
+
+ /**
+ * Adds statistics info
+ * @param type type of info
+ */
+ virtual void AddStatisticsInfo(int type) = 0;
+
+ /**
+ * Handles system error
+ * @param code code of error
+ */
+ virtual void OnSystemError(int code) = 0;
+
+ /**
+ * @brief Choose application id to be used for snapshot sending
+ * @return Application id or 0, if there are no applications registered
+ */
+ virtual uint32_t GetAppIdForSending() const = 0;
+
+ virtual utils::custom_string::CustomString GetAppName(
+ const std::string& policy_app_id) = 0;
+
+ virtual void OnUpdateHMIAppType(
+ std::map<std::string, StringArray> app_hmi_types) = 0;
+
+ virtual void OnCertificateUpdated(const std::string& certificate_data) = 0;
+
+ virtual bool CanUpdate() = 0;
+
+ virtual void OnDeviceConsentChanged(const std::string& device_id,
+ const bool is_allowed) = 0;
+
+ virtual void OnPTExchangeNeeded() = 0;
+
+ virtual void GetAvailableApps(std::queue<std::string>& apps) = 0;
+
+ /**
+ * @brief Allows to add new or update existed application during
+ * registration process
+ * @param application_id The policy aplication id.
+ */
+ virtual void AddApplication(const std::string& application_id) = 0;
+
+ /**
+ * Checks whether application is revoked
+ * @param app_id id application
+ * @return true if application is revoked
+ */
+ virtual bool IsApplicationRevoked(const std::string& app_id) = 0;
+
+ /**
+ * @brief Notifies policy manager, that PTS was sent out
+ */
+ virtual void OnUpdateRequestSentToMobile() = 0;
+
+ /**
+ * Returns heart beat timeout
+ * @param app_id application id
+ * @return if timeout was set then value in milliseconds greater zero
+ * otherwise heart beat for specific application isn't set
+ */
+ virtual uint32_t HeartBeatTimeout(const std::string& app_id) const = 0;
+
+ /**
+ * @brief Handler on applications search started
+ */
+ virtual void OnAppsSearchStarted() = 0;
+
+ /**
+ * @brief Handler on applications search completed
+ */
+ virtual void OnAppsSearchCompleted() = 0;
+
+ /**
+ * @brief OnAppRegisteredOnMobile allows to handle event when application were
+ * succesfully registered on mobile device.
+ * It will send OnAppPermissionSend notification and will try to start PTU.
+ *
+ * @param application_id registered application.
+ */
+ virtual void OnAppRegisteredOnMobile(const std::string& application_id) = 0;
+
+ /**
+ * @brief Checks if certain request type is allowed for application
+ * @param policy_app_id Unique applicaion id
+ * @param type Request type
+ * @return true, if allowed, otherwise - false
+ */
+ virtual bool IsRequestTypeAllowed(
+ const std::string& policy_app_id,
+ mobile_apis::RequestType::eType type) const = 0;
+
+ /**
+ * @brief Gets application request types
+ * @param policy_app_id Unique application id
+ * @return request types
+ */
+ virtual const std::vector<std::string> GetAppRequestTypes(
+ const std::string& policy_app_id) const = 0;
+
+ /**
+ * @brief Gets vehicle information
+ * @return Structure with vehicle information
+ */
+ virtual const VehicleInfo GetVehicleInfo() const = 0;
+
+ virtual void Increment(usage_statistics::GlobalCounterId type) = 0;
+ virtual void Increment(const std::string& app_id,
+ usage_statistics::AppCounterId type) = 0;
+ virtual void Set(const std::string& app_id,
+ usage_statistics::AppInfoId type,
+ const std::string& value) = 0;
+ virtual void Add(const std::string& app_id,
+ usage_statistics::AppStopwatchId type,
+ int32_t timespan_seconds) = 0;
+
+#ifdef ENABLE_SECURITY
+ virtual std::string RetrieveCertificate() const = 0;
+#endif // ENABLE_SECURITY
+
+ virtual const PolicySettings& get_settings() const = 0;
+ virtual const std::string RemoteAppsUrl() const = 0;
+
+ private:
+ virtual void OnAppPermissionConsentInternal(
+ const uint32_t connection_key, PermissionConsent& permissions) = 0;
+
+ friend class AppPermissionDelegate;
+};
+
+} // namespace policy
+
+#endif // SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_POLICIES_POLICY_HANDLER_INTERFACE_H_