diff options
Diffstat (limited to 'src/components/policy/policy_external/include')
18 files changed, 641 insertions, 151 deletions
diff --git a/src/components/policy/policy_external/include/policy/access_remote.h b/src/components/policy/policy_external/include/policy/access_remote.h index fd185af075..eadef088ad 100644 --- a/src/components/policy/policy_external/include/policy/access_remote.h +++ b/src/components/policy/policy_external/include/policy/access_remote.h @@ -32,9 +32,9 @@ #ifndef SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_ACCESS_REMOTE_H_ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_ACCESS_REMOTE_H_ -#include <vector> #include <ostream> #include <string> +#include <vector> #include "policy/policy_table/types.h" #include "policy/policy_types.h" diff --git a/src/components/policy/policy_external/include/policy/cache_manager.h b/src/components/policy/policy_external/include/policy/cache_manager.h index d30e7cea24..15eb51565d 100644 --- a/src/components/policy/policy_external/include/policy/cache_manager.h +++ b/src/components/policy/policy_external/include/policy/cache_manager.h @@ -35,15 +35,15 @@ #include <map> -#include "policy/pt_representation.h" +#include "policy/cache_manager_interface.h" #include "policy/pt_ext_representation.h" +#include "policy/pt_representation.h" #include "policy/usage_statistics/statistics_manager.h" -#include "policy/cache_manager_interface.h" #include "utils/threads/thread.h" #include "utils/threads/thread_delegate.h" -#include "utils/lock.h" #include "utils/conditional_variable.h" +#include "utils/lock.h" namespace policy { class PolicySettings; @@ -159,6 +159,108 @@ class CacheManager : public CacheManagerInterface { virtual const VehicleInfo GetVehicleInfo() const; /** + * @brief Get a list of enabled cloud applications + * @param enabled_apps List filled with the policy app id of each enabled + * cloud application + */ + virtual void GetEnabledCloudApps( + std::vector<std::string>& enabled_apps) const; + + /** + * @brief Get cloud app policy information, all fields that aren't set for a + * given app will be filled with empty strings + * @param policy_app_id Unique application id + * @param enabled Whether or not the app is enabled + * @param endpoint Filled with the endpoint used to connect to the cloud + * application + * @param certificate Filled with the certificate used to for creating a + * secure connection to the cloud application + * @param auth_token Filled with the token used for authentication when + * reconnecting to the cloud app + * @param cloud_transport_type Filled with the transport type used by the + * cloud application (ex. "WSS") + * @param hybrid_app_preference Filled with the hybrid app preference for the + * cloud application set by the user + */ + virtual bool GetCloudAppParameters(const std::string& policy_app_id, + bool& enabled, + std::string& endpoint, + std::string& certificate, + std::string& auth_token, + std::string& cloud_transport_type, + std::string& hybrid_app_preference) const; + + /** + * Initializes a new cloud application with default policies + * Then adds cloud specific policies + * @param app_id application id + * @return true if success + */ + virtual void InitCloudApp(const std::string& policy_app_id); + + /** + * @brief Enable or disable a cloud application in the HMI + * @param enabled Cloud app enabled state + */ + virtual void SetCloudAppEnabled(const std::string& policy_app_id, + const bool enabled); + + /** + * @brief Set an app's auth token + * @param auth_token Cloud app authentication token + */ + virtual void SetAppAuthToken(const std::string& policy_app_id, + const std::string& auth_token); + + /** + * @brief Set a cloud app's transport type + * @param cloud_transport_type Cloud app transport type + */ + virtual void SetAppCloudTransportType( + const std::string& policy_app_id, + const std::string& cloud_transport_type); + + /** + * @brief Set a cloud app's endpoint url + * @param endpoint URL for websocket connection + */ + virtual void SetAppEndpoint(const std::string& policy_app_id, + const std::string& endpoint); + + /** + * @brief Set a cloud app's nicknames + * @param nicknames Nicknames for cloud app + */ + virtual void SetAppNicknames(const std::string& policy_app_id, + const StringArray& nicknames); + + /** + * @brief Set the user preference for how a hybrid (cloud and mobile) app + * should be used + * @param hybrid_app_preference Hybrid app user preference + */ + virtual void SetHybridAppPreference(const std::string& policy_app_id, + const std::string& hybrid_app_preference); + + /** + * @brief Get app service parameters from the policy table + * @param policy_app_id Unique application id + * @param app_service_parameters Pointer to struct containing all app service + * information + */ + virtual void GetAppServiceParameters( + const std::string& policy_app_id, + policy_table::AppServiceParameters* app_service_parameters) const; + + /** + * @brief Check if an app can send unknown rpc requests to an app service + * provider + * @param policy_app_id Unique application id + */ + virtual bool UnknownRPCPassthroughAllowed( + const std::string& policy_app_id) const; + + /** * @brief Allows to update 'vin' field in module_meta table. * * @param new 'vin' value. @@ -192,6 +294,15 @@ class CacheManager : public CacheManagerInterface { virtual std::string GetLockScreenIconUrl() const; /** + * @brief Get Icon Url used for showing a cloud apps icon before the intial + *registration + * + * @return url which point to the resourse where icon could be + *obtained. + */ + virtual std::string GetIconUrl(const std::string& policy_app_id) const; + + /** * @brief Gets list of URL to send PTS to * @param service_type If URLs for specific service are preset, * return them otherwise default URLs. @@ -687,35 +798,36 @@ class CacheManager : public CacheManagerInterface { ExternalConsentStatus GetExternalConsentEntities() OVERRIDE; /** - * @brief Creates collection of ExternalConsent items known by current - * functional - * groupings and appropiate section - * (disallowed_by_external_consent_entities_on/off) where - * is item is being holded. If item is not found it's not included into - * collection - * @param status Current status containing collection of ExternalConsent items - * @return Collection of ExternalConsent items mapped to list of groups with - * section - * marker where the item is found - */ + * @brief Creates collection of ExternalConsent items known by current + * functional + * groupings and appropiate section + * (disallowed_by_external_consent_entities_on/off) where + * is item is being holded. If item is not found it's not included into + * collection + * @param status Current status containing collection of ExternalConsent items + * @return Collection of ExternalConsent items mapped to list of groups with + * section + * marker where the item is found + */ GroupsByExternalConsentStatus GetGroupsWithSameEntities( const ExternalConsentStatus& status) OVERRIDE; /** - * @brief Gets collection of links device-to-application from device_data - * section of policy table if there any application records present, i.e. if - * any specific user consent is present - * @return Collection of device-to-application links - */ + * @brief Gets collection of links device-to-application from device_data + * section of policy table if there any application records present, i.e. if + * any specific user consent is present + * @return Collection of device-to-application links + */ std::map<std::string, std::string> GetKnownLinksFromPT() OVERRIDE; /** - * @brief Sets groups permissions affected by customer connectivity settings - * entities status, i.e. groups assigned to particular application on - * particular device which have same entities as current ExternalConsent status - * @param permissions Groups permissions which result current ExternalConsent - * status - */ + * @brief Sets groups permissions affected by customer connectivity settings + * entities status, i.e. groups assigned to particular application on + * particular device which have same entities as current ExternalConsent + * status + * @param permissions Groups permissions which result current ExternalConsent + * status + */ void SetExternalConsentForApp(const PermissionConsent& permissions) OVERRIDE; #ifdef BUILD_TESTS diff --git a/src/components/policy/policy_external/include/policy/cache_manager_interface.h b/src/components/policy/policy_external/include/policy/cache_manager_interface.h index bb9ce14c7f..980ad42dcd 100644 --- a/src/components/policy/policy_external/include/policy/cache_manager_interface.h +++ b/src/components/policy/policy_external/include/policy/cache_manager_interface.h @@ -39,9 +39,9 @@ #include "policy/policy_table/types.h" #include "policy/pt_representation.h" -#include "policy/usage_statistics/counter.h" -#include "policy/policy_types.h" #include "policy/policy_settings.h" +#include "policy/policy_types.h" +#include "policy/usage_statistics/counter.h" namespace policy_table = rpc::policy_table_interface_base; @@ -166,6 +166,110 @@ class CacheManagerInterface { virtual const VehicleInfo GetVehicleInfo() const = 0; /** + * @brief Get a list of enabled cloud applications + * @param enabled_apps List filled with the policy app id of each enabled + * cloud application + */ + virtual void GetEnabledCloudApps( + std::vector<std::string>& enabled_apps) const = 0; + + /** + * @brief Get cloud app policy information, all fields that aren't set for a + * given app will be filled with empty strings + * @param policy_app_id Unique application id + * @param enabled Whether or not the app is enabled + * @param endpoint Filled with the endpoint used to connect to the cloud + * application + * @param certificate Filled with the certificate used to for creating a + * secure connection to the cloud application + * @param auth_token Filled with the token used for authentication when + * reconnecting to the cloud app + * @param cloud_transport_type Filled with the transport type used by the + * cloud application (ex. "WSS") + * @param hybrid_app_preference Filled with the hybrid app preference for the + * cloud application set by the user + */ + virtual bool GetCloudAppParameters( + const std::string& policy_app_id, + bool& enabled, + std::string& endpoint, + std::string& certificate, + std::string& auth_token, + std::string& cloud_transport_type, + std::string& hybrid_app_preference) const = 0; + + /** + * Initializes a new cloud application with default policies + * Then adds cloud specific policies + * @param app_id application id + * @return true if success + */ + virtual void InitCloudApp(const std::string& policy_app_id) = 0; + + /** + * @brief Enable or disable a cloud application in the HMI + * @param enabled Cloud app enabled state + */ + virtual void SetCloudAppEnabled(const std::string& policy_app_id, + const bool enabled) = 0; + + /** + * @brief Set an app's auth token + * @param auth_token Cloud app authentication token + */ + virtual void SetAppAuthToken(const std::string& policy_app_id, + const std::string& auth_token) = 0; + + /** + * @brief Set a cloud app's transport type + * @param cloud_transport_type Cloud app transport type + */ + virtual void SetAppCloudTransportType( + const std::string& policy_app_id, + const std::string& cloud_transport_type) = 0; + + /** + * @brief Set a cloud app's endpoint url + * @param endpoint URL for websocket connection + */ + virtual void SetAppEndpoint(const std::string& policy_app_id, + const std::string& endpoint) = 0; + + /** + * @brief Set a cloud app's nicknames + * @param nicknames Nicknames for cloud app + */ + virtual void SetAppNicknames(const std::string& policy_app_id, + const StringArray& nicknames) = 0; + + /** + * @brief Set the user preference for how a hybrid (cloud and mobile) app + * should be used + * @param hybrid_app_preference Hybrid app user preference + */ + virtual void SetHybridAppPreference( + const std::string& policy_app_id, + const std::string& hybrid_app_preference) = 0; + + /** + * @brief Get app service parameters from the policy table + * @param policy_app_id Unique application id + * @param app_service_parameters Pointer to struct containing all app service + * information + */ + virtual void GetAppServiceParameters( + const std::string& policy_app_id, + policy_table::AppServiceParameters* app_service_parameters) const = 0; + + /** + * @brief Check if an app can send unknown rpc requests to an app service + * provider + * @param policy_app_id Unique application id + */ + virtual bool UnknownRPCPassthroughAllowed( + const std::string& policy_app_id) const = 0; + + /** * @brief Allows to update 'vin' field in module_meta table. * * @param new 'vin' value. @@ -208,6 +312,15 @@ class CacheManagerInterface { virtual std::string GetLockScreenIconUrl() const = 0; /** + * @brief Get Icon Url used for showing a cloud apps icon before the intial + *registration + * + * @return url which point to the resourse where icon could be + *obtained. + */ + virtual std::string GetIconUrl(const std::string& policy_app_id) const = 0; + + /** * @brief Get allowed number of notifications * depending on application priority. * @param priority Priority of application @@ -754,9 +867,9 @@ class CacheManagerInterface { virtual std::string GetCertificate() const = 0; /** - * @brief Sets decrypted certificate in policy table - * @param certificate content of certificate - */ + * @brief Sets decrypted certificate in policy table + * @param certificate content of certificate + */ virtual void SetDecryptedCertificate(const std::string& certificate) = 0; /** @@ -781,34 +894,35 @@ class CacheManagerInterface { virtual ExternalConsentStatus GetExternalConsentEntities() = 0; /** - * @brief Creates collection of ExternalConsent items known by current - * functional - * groupings and appropiate section - * (disallowed_by_external_consent_entities_on/off) where - * is item is being holded - * @param status Current status containing collection of ExternalConsent items - * @return Collection of ExternalConsent items mapped to list of groups with - * section - * marker where the item is found - */ + * @brief Creates collection of ExternalConsent items known by current + * functional + * groupings and appropiate section + * (disallowed_by_external_consent_entities_on/off) where + * is item is being holded + * @param status Current status containing collection of ExternalConsent items + * @return Collection of ExternalConsent items mapped to list of groups with + * section + * marker where the item is found + */ virtual GroupsByExternalConsentStatus GetGroupsWithSameEntities( const ExternalConsentStatus& status) = 0; /** - * @brief Gets collection of links device-to-application from device_data - * section of policy table if there any application records present, i.e. if - * any specific user consent is present - * @return Collection of device-to-application links - */ + * @brief Gets collection of links device-to-application from device_data + * section of policy table if there any application records present, i.e. if + * any specific user consent is present + * @return Collection of device-to-application links + */ virtual std::map<std::string, std::string> GetKnownLinksFromPT() = 0; /** - * @brief Sets groups permissions affected by customer connectivity settings - * entities status, i.e. groups assigned to particular application on - * particular device which have same entities as current ExternalConsent status - * @param permissions Groups permissions which result current ExternalConsent - * status - */ + * @brief Sets groups permissions affected by customer connectivity settings + * entities status, i.e. groups assigned to particular application on + * particular device which have same entities as current ExternalConsent + * status + * @param permissions Groups permissions which result current ExternalConsent + * status + */ virtual void SetExternalConsentForApp( const PermissionConsent& permissions) = 0; diff --git a/src/components/policy/policy_external/include/policy/policy_helper.h b/src/components/policy/policy_external/include/policy/policy_helper.h index e3cb509c15..bce2559431 100644 --- a/src/components/policy/policy_external/include/policy/policy_helper.h +++ b/src/components/policy/policy_external/include/policy/policy_helper.h @@ -243,13 +243,13 @@ struct FillActionsForAppPolicies { */ struct FillNotificationData { /** - * @brief Constructor - * @param data Output structure with filled data - * @param group_state Consent of the group processed by instance - * @param undefined_group_consent Defines how to treat 'undefined' consent - * @param does_require_user_consent Specifies whether processed group requires - * user consent - */ + * @brief Constructor + * @param data Output structure with filled data + * @param group_state Consent of the group processed by instance + * @param undefined_group_consent Defines how to treat 'undefined' consent + * @param does_require_user_consent Specifies whether processed group requires + * user consent + */ FillNotificationData(Permissions& data, GroupConsent group_state, GroupConsent undefined_group_consent, diff --git a/src/components/policy/policy_external/include/policy/policy_manager_impl.h b/src/components/policy/policy_external/include/policy/policy_manager_impl.h index 3837dda1fa..2f8f6cf070 100644 --- a/src/components/policy/policy_external/include/policy/policy_manager_impl.h +++ b/src/components/policy/policy_external/include/policy/policy_manager_impl.h @@ -35,15 +35,15 @@ #include <list> -#include "utils/lock.h" +#include "policy/access_remote.h" +#include "policy/access_remote_impl.h" +#include "policy/cache_manager_interface.h" #include "policy/policy_manager.h" #include "policy/policy_table.h" -#include "policy/cache_manager_interface.h" -#include "policy/update_status_manager.h" #include "policy/policy_table/functions.h" +#include "policy/update_status_manager.h" #include "policy/usage_statistics/statistics_manager.h" -#include "policy/access_remote.h" -#include "policy/access_remote_impl.h" +#include "utils/lock.h" namespace policy_table = rpc::policy_table_interface_base; @@ -209,6 +209,15 @@ class PolicyManagerImpl : public PolicyManager { std::string GetLockScreenIconUrl() const OVERRIDE; /** + * @brief Get Icon Url used for showing a cloud apps icon before the intial + *registration + * + * @return url which point to the resourse where icon could be + *obtained. + */ + std::string GetIconUrl(const std::string& policy_app_id) const OVERRIDE; + + /** * @brief Handler of PTS sending out */ void OnUpdateStarted() OVERRIDE; @@ -533,10 +542,10 @@ class PolicyManagerImpl : public PolicyManager { void OnAppsSearchCompleted(const bool trigger_ptu) OVERRIDE; /** - * @brief Get state of request types for given application - * @param policy_app_id Unique application id - * @return request type state - */ + * @brief Get state of request types for given application + * @param policy_app_id Unique application id + * @return request type state + */ RequestType::State GetAppRequestTypesState( const std::string& policy_app_id) const OVERRIDE; @@ -557,10 +566,10 @@ class PolicyManagerImpl : public PolicyManager { const std::string policy_app_id) const OVERRIDE; /** - * @brief Gets request subtypes for application - * @param policy_app_id Unique application id - * @return request subtypes of application - */ + * @brief Gets request subtypes for application + * @param policy_app_id Unique application id + * @return request subtypes of application + */ const std::vector<std::string> GetAppRequestSubTypes( const std::string& policy_app_id) const OVERRIDE; @@ -571,6 +580,108 @@ class PolicyManagerImpl : public PolicyManager { const VehicleInfo GetVehicleInfo() const OVERRIDE; /** + * @brief Get a list of enabled cloud applications + * @param enabled_apps List filled with the policy app id of each enabled + * cloud application + */ + void GetEnabledCloudApps( + std::vector<std::string>& enabled_apps) const OVERRIDE; + + /** + * @brief Get cloud app policy information, all fields that aren't set for a + * given app will be filled with empty strings + * @param policy_app_id Unique application id + * @param enabled Whether or not the app is enabled + * @param endpoint Filled with the endpoint used to connect to the cloud + * application + * @param certificate Filled with the certificate used to for creating a + * secure connection to the cloud application + * @param auth_token Filled with the token used for authentication when + * reconnecting to the cloud app + * @param cloud_transport_type Filled with the transport type used by the + * cloud application (ex. "WSS") + * @param hybrid_app_preference Filled with the hybrid app preference for the + * cloud application set by the user + */ + bool GetCloudAppParameters(const std::string& policy_app_id, + bool& enabled, + std::string& endpoint, + std::string& certificate, + std::string& auth_token, + std::string& cloud_transport_type, + std::string& hybrid_app_preference) const OVERRIDE; + + /** + * @ brief Initialize new cloud app in the policy table + * @ param policy_app_id Application ID + */ + void InitCloudApp(const std::string& policy_app_id) OVERRIDE; + + /** + * @brief Enable or disable a cloud application in the HMI + * @param enabled Cloud app enabled state + */ + void SetCloudAppEnabled(const std::string& policy_app_id, + const bool enabled) OVERRIDE; + + /** + * @brief Set an app's auth token + * @param auth_token Cloud app authentication token + */ + void SetAppAuthToken(const std::string& policy_app_id, + const std::string& auth_token) OVERRIDE; + + /** + * @brief Set a cloud app's transport type + * @param cloud_transport_type Cloud app transport type + */ + void SetAppCloudTransportType( + const std::string& policy_app_id, + const std::string& cloud_transport_type) OVERRIDE; + + /** + * @brief Set a cloud app's endpoint url + * @param endpoint URL for websocket connection + */ + void SetAppEndpoint(const std::string& policy_app_id, + const std::string& endpoint) OVERRIDE; + + /** + * @brief Set a cloud app's nicknames + * @param nicknames Nicknames for cloud app + */ + void SetAppNicknames(const std::string& policy_app_id, + const StringArray& nicknames) OVERRIDE; + + /** + * @brief Set the user preference for how a hybrid (cloud and mobile) app + * should be used + * @param hybrid_app_preference Hybrid app user preference + */ + void SetHybridAppPreference( + const std::string& policy_app_id, + const std::string& hybrid_app_preference) OVERRIDE; + + /** + * @brief Get app service parameters from the policy table + * @param policy_app_id Unique application id + * @param app_service_parameters Pointer to struct containing all app service + * information + */ + void GetAppServiceParameters(const std::string& policy_app_id, + policy_table::AppServiceParameters* + app_service_parameters) const OVERRIDE; + + /** + * @brief Check if an app can send unknown rpc requests to an app service + * provider + * @param policy_app_id Unique application id + * @return bool true if allowed + */ + bool UnknownRPCPassthroughAllowed( + const std::string& policy_app_id) const OVERRIDE; + + /** * @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. * @@ -892,11 +1003,17 @@ class PolicyManagerImpl : public PolicyManager { const std::string& application_id) OVERRIDE; /** - * @brief Gets all allowed module types - * @param policy_app_id unique identifier of application - * @param modules list of allowed module types - * @return true if application has allowed modules - */ + * @brief notify listener of updated auth token for a given policy id + * @param policy_app_id the app id that has an updated auth token + */ + void SendAuthTokenUpdated(const std::string policy_app_id); + + /** + * @brief Gets all allowed module types + * @param policy_app_id unique identifier of application + * @param modules list of allowed module types + * @return true if application has allowed modules + */ bool GetModuleTypes(const std::string& policy_app_id, std::vector<std::string>* modules) const OVERRIDE; diff --git a/src/components/policy/policy_external/include/policy/policy_table.h b/src/components/policy/policy_external/include/policy/policy_table.h index fe27f1cb57..8f0d5f7efb 100644 --- a/src/components/policy/policy_external/include/policy/policy_table.h +++ b/src/components/policy/policy_external/include/policy/policy_table.h @@ -33,8 +33,8 @@ #ifndef SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TABLE_H_ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TABLE_H_ -#include "policy/pt_representation.h" #include "policy/pt_ext_representation.h" +#include "policy/pt_representation.h" namespace policy { diff --git a/src/components/policy/policy_external/include/policy/policy_table/enums.h b/src/components/policy/policy_external/include/policy/policy_table/enums.h index 34864c5602..6733bcb98d 100644 --- a/src/components/policy/policy_external/include/policy/policy_table/enums.h +++ b/src/components/policy/policy_external/include/policy/policy_table/enums.h @@ -96,6 +96,7 @@ enum Parameter { P_FUEL_RANGE, P_TIRE_PRESSURE_VALUE, P_TPMS, + P_CLOUD_APP_VEHICLE_ID, P_LONGTITUDE_DEGREES, P_LATITUDE_DEGREES, P_LOCATION_NAME, @@ -153,6 +154,7 @@ enum RequestType { RT_MEDIA, RT_FOTA, RT_OEM_SPECIFIC, + RT_ICON_URL, RT_EMPTY // Added to allow empty Request Types handling }; @@ -181,6 +183,12 @@ bool IsValidEnum(ModuleType val); const char* EnumToJsonString(ModuleType val); bool EnumFromJsonString(const std::string& literal, ModuleType* result); +enum HybridAppPreference { HAP_MOBILE, HAP_CLOUD, HAP_BOTH }; +bool IsValidEnum(HybridAppPreference val); +const char* EnumToJsonString(HybridAppPreference val); +bool EnumFromJsonString(const std::string& literal, + HybridAppPreference* result); + /** * @brief Enumeration FunctionID. * @@ -434,6 +442,41 @@ enum FunctionID { SendHapticDataID = 49, /** + * @brief SetCloudAppPropertiesID. + */ + SetCloudAppPropertiesID = 50, + + /** + * @brief GetCloudAppPropertiesID. + */ + GetCloudAppPropertiesID = 51, + + /** + * @brief PublishAppServiceID. + */ + PublishAppServiceID = 52, + + /** + * @brief GetAppServiceDataID. + */ + GetAppServiceDataID = 53, + + /** + * @brief GetFileID + */ + GetFileID = 54, + + /** + * @brief PerformAppServiceInteractionID. + */ + PerformAppServiceInteractionID = 55, + + /** + * @brief CloseApplicationID. + */ + CloseApplicationID = 58, + + /** * @brief OnHMIStatusID. */ OnHMIStatusID = 32768, @@ -524,6 +567,16 @@ enum FunctionID { OnRCStatusID = 32785, /** + * @brief OnAppServiceDataID. + */ + OnAppServiceDataID = 32786, + + /** + * @brief OnSystemCapabilityUpdatedID + */ + OnSystemCapabilityUpdatedID = 32787, + + /** * @brief EncodedSyncPDataID. */ EncodedSyncPDataID = 65536, diff --git a/src/components/policy/policy_external/include/policy/policy_table/types.h b/src/components/policy/policy_external/include/policy/policy_table/types.h index 68e29a97ee..994fd86579 100644 --- a/src/components/policy/policy_external/include/policy/policy_table/types.h +++ b/src/components/policy/policy_external/include/policy/policy_table/types.h @@ -52,6 +52,8 @@ struct MessageLanguages; struct MessageString; struct RpcParameters; struct Rpcs; +struct AppServiceHandledRpc; +struct AppServiceInfo; } // namespace policy_table_interface_base } // namespace rpc @@ -104,6 +106,13 @@ typedef Array<Enum<RequestType>, 0, 255> RequestsTypeArray; typedef Strings RequestSubTypes; +typedef String<0, 255> AppServiceType; +typedef String<0, 255> AppServiceName; +typedef Array<AppServiceName, 0, 255> AppServiceNames; +typedef Array<AppServiceHandledRpc, 0, 255> AppServiceHandledRpcs; +typedef Map<AppServiceInfo, 0, 255> AppServiceParameters; +typedef Integer<int32_t, 0, INT32_MAX> FunctionIDInt; + typedef Map<Strings, 0, 255> RemoteRpcs; typedef Map<RemoteRpcs, 0, 255> AccessModules; typedef Array<Enum<ModuleType>, 0, 255> ModuleTypes; @@ -111,6 +120,45 @@ typedef Array<Enum<ModuleType>, 0, 255> ModuleTypes; typedef AppHMIType AppHmiType; typedef std::vector<AppHMIType> AppHmiTypes; +struct AppServiceHandledRpc : CompositeType { + public: + FunctionIDInt function_id; + + public: + AppServiceHandledRpc(); + ~AppServiceHandledRpc(); + AppServiceHandledRpc(const Json::Value* value__); + Json::Value ToJsonValue() const; + bool is_valid() const; + bool is_initialized() const; + bool struct_empty() const; + virtual void SetPolicyTableType(PolicyTableType pt_type); + void ReportErrors(rpc::ValidationReport* report__) const; + + private: + bool Validate() const; +}; + +struct AppServiceInfo : CompositeType { + public: + Optional<AppServiceNames> service_names; + AppServiceHandledRpcs handled_rpcs; + + public: + AppServiceInfo(); + ~AppServiceInfo(); + AppServiceInfo(const Json::Value* value__); + Json::Value ToJsonValue() const; + bool is_valid() const; + bool is_initialized() const; + bool struct_empty() const; + virtual void SetPolicyTableType(PolicyTableType pt_type); + void ReportErrors(rpc::ValidationReport* report__) const; + + private: + bool Validate() const; +}; + struct RequestTypes : public RequestsTypeArray { RequestTypes(); explicit RequestTypes(Json::Value* value); @@ -177,6 +225,18 @@ struct ApplicationParams : PolicyBase { Optional<Integer<uint16_t, 0, 65225> > memory_kb; Optional<Integer<uint32_t, 0, UINT_MAX> > heart_beat_timeout_ms; mutable Optional<ModuleTypes> moduleType; + Optional<String<0, 65535> > certificate; + // Cloud application params + Optional<Enum<HybridAppPreference> > hybrid_app_preference; + Optional<String<0, 255> > endpoint; + Optional<Boolean> enabled; + Optional<String<0, 65535> > auth_token; + Optional<String<0, 255> > cloud_transport_type; + Optional<String<0, 65535> > icon_url; + + // App Service Params + Optional<AppServiceParameters> app_service_parameters; + Optional<Boolean> allow_unknown_rpc_passthrough; public: ApplicationParams(); diff --git a/src/components/policy/policy_external/include/policy/policy_table_interface_ext.xml b/src/components/policy/policy_external/include/policy/policy_table_interface_ext.xml index 26af165506..46c8f40a01 100644 --- a/src/components/policy/policy_external/include/policy/policy_table_interface_ext.xml +++ b/src/components/policy/policy_external/include/policy/policy_table_interface_ext.xml @@ -56,6 +56,7 @@ <element name="fuelRange" /> <element name="tirePressureValue" /> <element name="tpms" /> + <element name="cloudAppVehicleID" /> </enum> <enum name="AppHMIType"> @@ -70,6 +71,12 @@ <element name="TESTING" /> <element name="SYSTEM" /> </enum> + + <enum name="HybridAppPreference"> + <element name="MOBILE" /> + <element name="CLOUD" /> + <element name="BOTH" /> + </enum> <!-- Common parameters end --> <!-- app_policies section start --> @@ -92,8 +99,21 @@ <param name="memory_kb" type="Integer" minvalue="1" maxvalue="65225" mandatory="false"/> <param name="watchdog_timer_ms" type="Integer" minvalue="1" maxvalue="65225" mandatory="false"/> - <param name="certificate" type="String" minlength="0" maxlength="255" + <param name="certificate" type="String" minlength="0" maxlength="65535" + mandatory="false" /> + <param name="endpoint" type="String" minlength="0" maxlength="255" mandatory="false" /> + <param name="enabled" type="Boolean" mandatory="false" /> + <param name="auth_token" type="String" minlength="0" maxlength="65535" + mandatory="false" /> + <param name="cloud_transport_type" type="String" minlength="0" maxlength="255" + mandatory="false" /> + <param name="hybrid_app_preference" type="HybridAppPreference" mandatory="false" /> + <param name="icon_url" type="String" minlength="0" maxlength="65535" mandatory="false" /> + <param name="service_name" type="String" mandatory="false" /> + <param name="service_type" type="String" mandatory="false" /> + <param name="handled_rpcs" array="true" mandatory="false" /> + <param name="allow_unknown_rpc_passthrough" type="Boolean" mandatory="false" /> </struct> <typedef name="HmiLevels" type="HmiLevel" array="true" diff --git a/src/components/policy/policy_external/include/policy/policy_types.h b/src/components/policy/policy_external/include/policy/policy_types.h index 84d9376a93..7247995f48 100644 --- a/src/components/policy/policy_external/include/policy/policy_types.h +++ b/src/components/policy/policy_external/include/policy/policy_types.h @@ -34,15 +34,15 @@ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_POLICY_TYPES_H_ #include <algorithm> -#include <string> -#include <vector> #include <map> +#include <memory> #include <set> +#include <string> #include <utility> -#include <memory> +#include <vector> -#include "utils/helpers.h" #include "transport_manager/common.h" +#include "utils/helpers.h" namespace policy { @@ -119,10 +119,10 @@ typedef std::vector<std::string> StringArray; enum PermitResult { kRpcAllowed = 0, kRpcDisallowed, kRpcUserDisallowed }; /** - * @struct Stores result of check: - * if HMI Level was allowed for RPC to work in - * and list of parameters allowed for RPC if specified in PT. - */ + * @struct Stores result of check: + * if HMI Level was allowed for RPC to work in + * and list of parameters allowed for RPC if specified in PT. + */ struct CheckPermissionResult { CheckPermissionResult() : hmi_level_permitted(kRpcDisallowed) {} diff --git a/src/components/policy/policy_external/include/policy/pt_ext_representation.h b/src/components/policy/policy_external/include/policy/pt_ext_representation.h index 0aa284b707..f03947268a 100644 --- a/src/components/policy/policy_external/include/policy/pt_ext_representation.h +++ b/src/components/policy/policy_external/include/policy/pt_ext_representation.h @@ -280,10 +280,10 @@ class PTExtRepresentation : public virtual PTRepresentation { virtual bool GetFunctionalGroupNames(policy::FunctionalGroupNames& names) = 0; /** - * @brief Set app policy to pre_DataConsented policy - * @param app_id Policy ID of application to be changed - * @return true, if succeeded, otherwise - false - */ + * @brief Set app policy to pre_DataConsented policy + * @param app_id Policy ID of application to be changed + * @return true, if succeeded, otherwise - false + */ virtual bool SetPredataPolicy(const std::string& app_id) = 0; /** diff --git a/src/components/policy/policy_external/include/policy/pt_representation.h b/src/components/policy/policy_external/include/policy/pt_representation.h index f25fcc6cab..6eaa718cf0 100644 --- a/src/components/policy/policy_external/include/policy/pt_representation.h +++ b/src/components/policy/policy_external/include/policy/pt_representation.h @@ -33,11 +33,11 @@ #ifndef SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_PT_REPRESENTATION_H_ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_PT_REPRESENTATION_H_ -#include <vector> #include <string> -#include "policy/policy_types.h" -#include "policy/policy_table/types.h" +#include <vector> #include "policy/policy_settings.h" +#include "policy/policy_table/types.h" +#include "policy/policy_types.h" namespace policy_table = rpc::policy_table_interface_base; @@ -268,10 +268,10 @@ class PTRepresentation { virtual bool IsDefaultPolicy(const std::string& app_id) const = 0; /** - * Checks if the application has pre_data policy - * @param app_id application id - * @return true if application has pre_data policy - */ + * Checks if the application has pre_data policy + * @param app_id application id + * @return true if application has pre_data policy + */ virtual bool IsPredataPolicy(const std::string& app_id) const = 0; /** diff --git a/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h b/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h index bd2097cfe3..889ede9d20 100644 --- a/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h +++ b/src/components/policy/policy_external/include/policy/sql_pt_ext_representation.h @@ -34,8 +34,8 @@ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_SQL_PT_EXT_REPRESENTATION_H_ #include <string> -#include "policy/sql_pt_representation.h" #include "policy/pt_ext_representation.h" +#include "policy/sql_pt_representation.h" namespace policy { diff --git a/src/components/policy/policy_external/include/policy/sql_pt_queries.h b/src/components/policy/policy_external/include/policy/sql_pt_queries.h index dd9e0204e7..5382ff2d6b 100644 --- a/src/components/policy/policy_external/include/policy/sql_pt_queries.h +++ b/src/components/policy/policy_external/include/policy/sql_pt_queries.h @@ -66,6 +66,9 @@ extern const std::string kSelectNicknames; extern const std::string kSelectAppTypes; extern const std::string kSelectRequestTypes; extern const std::string kSelectRequestSubTypes; +extern const std::string kSelectAppServiceTypes; +extern const std::string kSelectAppServiceNames; +extern const std::string kSelectAppServiceHandledRpcs; extern const std::string kSelectSecondsBetweenRetries; extern const std::string kSelectIgnitionCycles; extern const std::string kSelectKilometers; @@ -80,6 +83,9 @@ extern const std::string kInsertNickname; extern const std::string kInsertAppType; extern const std::string kInsertRequestType; extern const std::string kInsertRequestSubType; +extern const std::string kInsertAppServiceTypes; +extern const std::string kInsertAppServiceNames; +extern const std::string kInsertAppServiceHandledRpcs; extern const std::string kInsertMessageType; extern const std::string kInsertLanguage; extern const std::string kInsertMessageString; @@ -101,6 +107,9 @@ extern const std::string kDeleteAppGroup; extern const std::string kDeleteApplication; extern const std::string kDeleteRequestType; extern const std::string kDeleteRequestSubType; +extern const std::string kDeleteAppServiceTypes; +extern const std::string kDeleteAppServiceNames; +extern const std::string kDeleteAppServiceHandledRpcs; extern const std::string kDeleteDevice; extern const std::string kIncrementIgnitionCycles; extern const std::string kResetIgnitionCycles; diff --git a/src/components/policy/policy_external/include/policy/sql_pt_representation.h b/src/components/policy/policy_external/include/policy/sql_pt_representation.h index 13816eb6c5..826c9b3b6e 100644 --- a/src/components/policy/policy_external/include/policy/sql_pt_representation.h +++ b/src/components/policy/policy_external/include/policy/sql_pt_representation.h @@ -35,9 +35,9 @@ #include <string> #include <vector> +#include "policy/policy_table/types.h" #include "policy/pt_representation.h" #include "rpc_base/rpc_base.h" -#include "policy/policy_table/types.h" namespace policy_table = rpc::policy_table_interface_base; @@ -134,6 +134,9 @@ class SQLPTRepresentation : public virtual PTRepresentation { bool GatherRequestSubType( const std::string& app_id, policy_table::RequestSubTypes* request_subtypes) const; + bool GatherAppServiceParameters( + const std::string& app_id, + policy_table::AppServiceParameters* app_service_parameters) const; bool GatherNickName(const std::string& app_id, policy_table::Strings* nicknames) const; @@ -172,6 +175,9 @@ class SQLPTRepresentation : public virtual PTRepresentation { bool SaveRequestSubType( const std::string& app_id, const policy_table::RequestSubTypes& request_subtypes); + bool SaveAppServiceParameters( + const std::string& app_id, + const policy_table::AppServiceParameters& app_service_parameters); public: virtual std::string GetLockScreenIconUrl() const; diff --git a/src/components/policy/policy_external/include/policy/status.h b/src/components/policy/policy_external/include/policy/status.h index 18789ecf99..336d59e869 100644 --- a/src/components/policy/policy_external/include/policy/status.h +++ b/src/components/policy/policy_external/include/policy/status.h @@ -75,41 +75,41 @@ class Status { const policy::PolicyTableStatus enum_status); /** - * @brief Destructor - */ + * @brief Destructor + */ virtual ~Status(); /** - * @brief Process event by setting next status in case event can affect - * current status or ignores the event - * @param manager Status manager pointer - * @param event Event which needs to be processed - */ + * @brief Process event by setting next status in case event can affect + * current status or ignores the event + * @param manager Status manager pointer + * @param event Event which needs to be processed + */ virtual void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) = 0; /** - * @brief Return current status as string value - * @return Status as string - */ + * @brief Return current status as string value + * @return Status as string + */ const std::string get_status_string() const; /** - * @brief Return status as enum value - * @return Status as enum value - */ + * @brief Return status as enum value + * @return Status as enum value + */ PolicyTableStatus get_status() const; /** - * @brief Check whether update is required in terms of status - * @return True if update is required, otherwise - false - */ + * @brief Check whether update is required in terms of status + * @return True if update is required, otherwise - false + */ virtual bool IsUpdateRequired() const; /** - * @brief Check whether update is pending in terms of status - * @return True if update is pending, otherwise - false - */ + * @brief Check whether update is pending in terms of status + * @return True if update is pending, otherwise - false + */ virtual bool IsUpdatePending() const; private: @@ -128,11 +128,11 @@ class UpToDateStatus : public Status { UpToDateStatus(); /** - * @brief Process event by setting next status in case event can affect - * current status or ignores the event - * @param manager Status manager pointer - * @param event Event which needs to be processed - */ + * @brief Process event by setting next status in case event can affect + * current status or ignores the event + * @param manager Status manager pointer + * @param event Event which needs to be processed + */ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE; }; @@ -147,17 +147,17 @@ class UpdateNeededStatus : public Status { UpdateNeededStatus(); /** - * @brief Process event by setting next status in case event can affect - * current status or ignores the event - * @param manager Status manager pointer - * @param event Event which needs to be processed - */ + * @brief Process event by setting next status in case event can affect + * current status or ignores the event + * @param manager Status manager pointer + * @param event Event which needs to be processed + */ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE; /** - * @brief Check whether update is required in terms of status - * @return True if update is required, otherwise - false - */ + * @brief Check whether update is required in terms of status + * @return True if update is required, otherwise - false + */ bool IsUpdateRequired() const OVERRIDE; }; @@ -172,25 +172,25 @@ class UpdatingStatus : public Status { UpdatingStatus(); /** - * @brief Process event by setting next status in case event can affect - * current status or ignores the event - * @param manager Status manager pointer - * @param event Event which needs to be processed - */ + * @brief Process event by setting next status in case event can affect + * current status or ignores the event + * @param manager Status manager pointer + * @param event Event which needs to be processed + */ void ProcessEvent(UpdateStatusManager* manager, UpdateEvent event) OVERRIDE; /** - * @brief Check whether update is required in terms of status - * @return True if update is required, otherwise - false - */ + * @brief Check whether update is required in terms of status + * @return True if update is required, otherwise - false + */ bool IsUpdateRequired() const OVERRIDE; /** - * @brief Check whether update is pending in terms of status - * @return True if update is pending, otherwise - false - */ + * @brief Check whether update is pending in terms of status + * @return True if update is pending, otherwise - false + */ bool IsUpdatePending() const OVERRIDE; }; -} +} // namespace policy #endif // SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_STATUS_H_ diff --git a/src/components/policy/policy_external/include/policy/update_status_manager.h b/src/components/policy/policy_external/include/policy/update_status_manager.h index 3a9e13b83f..9c0e29407e 100644 --- a/src/components/policy/policy_external/include/policy/update_status_manager.h +++ b/src/components/policy/policy_external/include/policy/update_status_manager.h @@ -34,14 +34,13 @@ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_UPDATE_STATUS_MANAGER_H_ #include "policy/policy_types.h" -#include "utils/lock.h" -#include "utils/threads/thread.h" -#include "utils/threads/thread_delegate.h" +#include "policy/status.h" #include "utils/conditional_variable.h" #include "utils/lock.h" #include "utils/logger.h" #include "utils/macro.h" -#include "policy/status.h" +#include "utils/threads/thread.h" +#include "utils/threads/thread_delegate.h" namespace policy { @@ -235,6 +234,6 @@ class UpdateStatusManager { UpdateThreadDelegate* update_status_thread_delegate_; threads::Thread* thread_; }; -} +} // namespace policy #endif // SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_UPDATE_STATUS_MANAGER_H_ diff --git a/src/components/policy/policy_external/include/policy/usage_statistics/counter.h b/src/components/policy/policy_external/include/policy/usage_statistics/counter.h index c145bb432b..047a545150 100644 --- a/src/components/policy/policy_external/include/policy/usage_statistics/counter.h +++ b/src/components/policy/policy_external/include/policy/usage_statistics/counter.h @@ -34,11 +34,11 @@ #define SRC_COMPONENTS_POLICY_POLICY_EXTERNAL_INCLUDE_POLICY_USAGE_STATISTICS_COUNTER_H_ #include <ctime> -#include "policy/usage_statistics/statistics_manager.h" #include "policy/usage_statistics/app_stopwatch.h" +#include "policy/usage_statistics/statistics_manager.h" -#include "utils/timer.h" #include "utils/macro.h" +#include "utils/timer.h" namespace usage_statistics { |