diff options
Diffstat (limited to 'src/components/policy/policy_regular/src')
7 files changed, 250 insertions, 66 deletions
diff --git a/src/components/policy/policy_regular/src/cache_manager.cc b/src/components/policy/policy_regular/src/cache_manager.cc index 94ce52b6f1..d121886765 100644 --- a/src/components/policy/policy_regular/src/cache_manager.cc +++ b/src/components/policy/policy_regular/src/cache_manager.cc @@ -856,8 +856,47 @@ bool CacheManager::UnknownRPCPassthroughAllowed( return false; } +const boost::optional<bool> CacheManager::LockScreenDismissalEnabledState() + const { + LOG4CXX_AUTO_TRACE(logger_); + boost::optional<bool> empty; + CACHE_MANAGER_CHECK(empty); + sync_primitives::AutoLock auto_lock(cache_lock_); + policy_table::ModuleConfig& module_config = pt_->policy_table.module_config; + if (module_config.lock_screen_dismissal_enabled.is_initialized()) { + LOG4CXX_TRACE(logger_, + "state = " << *module_config.lock_screen_dismissal_enabled); + return boost::optional<bool>(*module_config.lock_screen_dismissal_enabled); + } + LOG4CXX_TRACE(logger_, "state = empty"); + return empty; +} + +const boost::optional<std::string> +CacheManager::LockScreenDismissalWarningMessage( + const std::string& language) const { + LOG4CXX_AUTO_TRACE(logger_); + boost::optional<std::string> empty; + CACHE_MANAGER_CHECK(empty); + + const std::string lock_screen_dismissal_warning_message = + "LockScreenDismissalWarning"; + sync_primitives::AutoLock auto_lock(cache_lock_); + + std::vector<std::string> msg_codes{lock_screen_dismissal_warning_message}; + + const auto messages = GetUserFriendlyMsg(msg_codes, language); + + if (messages.empty() || messages[0].text_body.empty()) { + return empty; + } + + return boost::optional<std::string>(messages[0].text_body); +} + std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg( - const std::vector<std::string>& msg_codes, const std::string& language) { + const std::vector<std::string>& msg_codes, + const std::string& language) const { LOG4CXX_AUTO_TRACE(logger_); std::vector<UserFriendlyMessage> result; CACHE_MANAGER_CHECK(result); @@ -903,6 +942,12 @@ std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg( UserFriendlyMessage msg; msg.message_code = *it; + msg.tts = *message_string.tts; + msg.label = *message_string.label; + msg.line1 = *message_string.line1; + msg.line2 = *message_string.line2; + msg.text_body = *message_string.textBody; + result.push_back(msg); } return result; diff --git a/src/components/policy/policy_regular/src/policy_helper.cc b/src/components/policy/policy_regular/src/policy_helper.cc index 5fa0b314b3..26e4984e6d 100644 --- a/src/components/policy/policy_regular/src/policy_helper.cc +++ b/src/components/policy/policy_regular/src/policy_helper.cc @@ -263,30 +263,45 @@ bool CheckAppPolicy::IsKnownAppication( void policy::CheckAppPolicy::NotifySystem( const policy::AppPoliciesValueType& app_policy) const { - pm_->listener()->OnPendingPermissionChange(app_policy.first); + auto& listener = *pm_->listener(); + const auto devices_ids = listener.GetDevicesIds(app_policy.first); + if (devices_ids.empty()) { + LOG4CXX_WARN( + logger_, + "Couldn't find device info for application id: " << app_policy.first); + return; + } + + for (const auto& device_id : devices_ids) { + listener.OnPendingPermissionChange(device_id, app_policy.first); + } } void CheckAppPolicy::SendPermissionsToApp( const std::string& app_id, const policy_table::Strings& groups) const { - const std::string device_id = pm_->GetCurrentDeviceId(app_id); - if (device_id.empty()) { + const auto devices_ids = pm_->listener()->GetDevicesIds(app_id); + if (devices_ids.empty()) { LOG4CXX_WARN(logger_, "Couldn't find device info for application id: " << app_id); return; } - std::vector<FunctionalGroupPermission> group_permissons; - pm_->GetPermissionsForApp(device_id, app_id, group_permissons); - Permissions notification_data; - pm_->PrepareNotificationData(update_->policy_table.functional_groupings, - groups, - group_permissons, - notification_data); + for (const auto& device_id : devices_ids) { + std::vector<FunctionalGroupPermission> group_permissons; + pm_->GetPermissionsForApp(device_id, app_id, group_permissons); + + Permissions notification_data; + pm_->PrepareNotificationData(update_->policy_table.functional_groupings, + groups, + group_permissons, + notification_data); - LOG4CXX_INFO(logger_, "Send notification for application_id: " << app_id); - // Default_hmi is Ford-specific and should not be used with basic policy - const std::string default_hmi; - pm_->listener()->OnPermissionsUpdated(app_id, notification_data, default_hmi); + LOG4CXX_INFO(logger_, "Send notification for application_id: " << app_id); + // Default_hmi is Ford-specific and should not be used with basic policy + const std::string default_hmi; + pm_->listener()->OnPermissionsUpdated( + device_id, app_id, notification_data, default_hmi); + } } bool CheckAppPolicy::IsAppRevoked( 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 0884fc53b6..5a7c822a9b 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -53,10 +53,12 @@ #include "policy/access_remote.h" #include "policy/access_remote_impl.h" -policy::PolicyManager* CreateManager() { +__attribute__((visibility("default"))) policy::PolicyManager* CreateManager() { return new policy::PolicyManagerImpl(); } -void DeleteManager(policy::PolicyManager* pm) { + +__attribute__((visibility("default"))) void DeleteManager( + policy::PolicyManager* pm) { delete pm; } @@ -356,6 +358,7 @@ bool PolicyManagerImpl::LoadPT(const std::string& file, ForcePTExchange(); return false; } + CheckPermissionsChangesAfterUpdate(*pt_update, *policy_table_snapshot); listener_->OnCertificateUpdated( *(pt_update->policy_table.module_config.certificate)); @@ -390,7 +393,7 @@ bool PolicyManagerImpl::LoadPT(const std::string& file, void PolicyManagerImpl::CheckPermissionsChanges( const std::shared_ptr<policy_table::Table> pt_update, const std::shared_ptr<policy_table::Table> snapshot) { - LOG4CXX_INFO(logger_, "Checking incoming permissions."); + LOG4CXX_AUTO_TRACE(logger_); // Replace predefined policies with its actual setting, e.g. "123":"default" // to actual values of default section @@ -401,6 +404,17 @@ void PolicyManagerImpl::CheckPermissionsChanges( CheckAppPolicy(this, pt_update, snapshot)); } +void PolicyManagerImpl::CheckPermissionsChangesAfterUpdate( + const policy_table::Table& update, const policy_table::Table& snapshot) { + const auto new_lock_screen_dismissal_enabled = + update.policy_table.module_config.lock_screen_dismissal_enabled; + const auto old_lock_screen_dismissal_enabled = + snapshot.policy_table.module_config.lock_screen_dismissal_enabled; + if (new_lock_screen_dismissal_enabled != old_lock_screen_dismissal_enabled) { + listener()->OnLockScreenDismissalStateChanged(); + } +} + void PolicyManagerImpl::PrepareNotificationData( const policy_table::FunctionalGroupings& groups, const policy_table::Strings& group_names, @@ -514,9 +528,9 @@ void PolicyManagerImpl::OnAppsSearchCompleted(const bool trigger_ptu) { } void PolicyManagerImpl::OnAppRegisteredOnMobile( - const std::string& application_id) { + const std::string& device_id, const std::string& application_id) { StartPTExchange(); - SendNotificationOnPermissionsUpdated(application_id); + SendNotificationOnPermissionsUpdated(device_id, application_id); } void PolicyManagerImpl::OnDeviceSwitching(const std::string& device_id_from, @@ -669,16 +683,8 @@ bool PolicyManagerImpl::ResetUserConsent() { } void PolicyManagerImpl::SendNotificationOnPermissionsUpdated( - const std::string& application_id) { + const std::string& device_id, const std::string& application_id) { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(application_id); - if (device_id.empty()) { - LOG4CXX_WARN(logger_, - "Couldn't find device info for application id " - "'" << application_id - << "'"); - return; - } std::vector<FunctionalGroupPermission> app_group_permissions; GetPermissionsForApp(device_id, application_id, app_group_permissions); @@ -687,12 +693,8 @@ void PolicyManagerImpl::SendNotificationOnPermissionsUpdated( cache_->GetFunctionalGroupings(functional_groupings); policy_table::Strings app_groups; - std::vector<FunctionalGroupPermission>::const_iterator it = - app_group_permissions.begin(); - std::vector<FunctionalGroupPermission>::const_iterator it_end = - app_group_permissions.end(); - for (; it != it_end; ++it) { - app_groups.push_back((*it).group_name); + for (const auto& group_permission : app_group_permissions) { + app_groups.push_back(group_permission.group_name); } Permissions notification_data; @@ -702,19 +704,19 @@ void PolicyManagerImpl::SendNotificationOnPermissionsUpdated( notification_data); LOG4CXX_INFO(logger_, - "Send notification for application_id:" << application_id); + "Send notification for application_id: " << application_id); - std::string default_hmi; - default_hmi = "NONE"; + std::string default_hmi = "NONE"; const ApplicationOnDevice who = {device_id, application_id}; if (access_remote_->IsAppRemoteControl(who)) { - listener()->OnPermissionsUpdated(application_id, notification_data); + listener()->OnPermissionsUpdated( + device_id, application_id, notification_data); return; } listener()->OnPermissionsUpdated( - application_id, notification_data, default_hmi); + device_id, application_id, notification_data, default_hmi); } bool PolicyManagerImpl::CleanupUnpairedDevices() { @@ -744,8 +746,13 @@ void PolicyManagerImpl::SetUserConsentForDevice(const std::string& device_id, } } -bool PolicyManagerImpl::ReactOnUserDevConsentForApp(const std::string app_id, - bool is_device_allowed) { +bool PolicyManagerImpl::ReactOnUserDevConsentForApp( + const transport_manager::DeviceHandle& device_handle, + const std::string app_id, + bool is_device_allowed) { + UNUSED(device_handle); + UNUSED(app_id); + UNUSED(is_device_allowed); return true; } @@ -856,11 +863,11 @@ void PolicyManagerImpl::SetUserConsentForApp( LOG4CXX_AUTO_TRACE(logger_); } -bool PolicyManagerImpl::GetDefaultHmi(const std::string& policy_app_id, +bool PolicyManagerImpl::GetDefaultHmi(const std::string& device_id, + const std::string& policy_app_id, std::string* default_hmi) const { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(policy_app_id); - DeviceConsent device_consent = GetUserConsentForDevice(device_id); + const DeviceConsent device_consent = GetUserConsentForDevice(device_id); const std::string app_id = policy::kDeviceAllowed != device_consent ? kPreDataConsentId : policy_app_id; @@ -943,7 +950,7 @@ void PolicyManagerImpl::GetPermissionsForApp( app_id_to_check = kDefaultId; allowed_by_default = true; } else if (cache_->IsPredataPolicy(policy_app_id) || - policy::kDeviceDisallowed == GetUserConsentForDevice(device_id)) { + policy::kDeviceAllowed != GetUserConsentForDevice(device_id)) { app_id_to_check = kPreDataConsentId; allowed_by_default = true; } @@ -998,9 +1005,11 @@ void PolicyManagerImpl::GetPermissionsForApp( } std::string& PolicyManagerImpl::GetCurrentDeviceId( + const transport_manager::DeviceHandle& device_handle, const std::string& policy_app_id) const { LOG4CXX_AUTO_TRACE(logger_); - last_device_id_ = listener()->OnCurrentDeviceIdUpdateRequired(policy_app_id); + last_device_id_ = + listener()->OnCurrentDeviceIdUpdateRequired(device_handle, policy_app_id); return last_device_id_; } @@ -1068,6 +1077,17 @@ void PolicyManagerImpl::KmsChanged(int kilometers) { } } +const boost::optional<bool> PolicyManagerImpl::LockScreenDismissalEnabledState() + const { + return cache_->LockScreenDismissalEnabledState(); +} + +const boost::optional<std::string> +PolicyManagerImpl::LockScreenDismissalWarningMessage( + const std::string& language) const { + return cache_->LockScreenDismissalWarningMessage(language); +} + void PolicyManagerImpl::IncrementIgnitionCycles() { cache_->IncrementIgnitionCycles(); } @@ -1179,7 +1199,8 @@ bool PolicyManagerImpl::IsApplicationRevoked(const std::string& app_id) const { return cache_->IsApplicationRevoked(app_id); } -bool PolicyManagerImpl::IsConsentNeeded(const std::string& app_id) { +bool PolicyManagerImpl::IsConsentNeeded(const std::string& device_id, + const std::string& app_id) { LOG4CXX_AUTO_TRACE(logger_); return false; } @@ -1187,14 +1208,15 @@ bool PolicyManagerImpl::IsConsentNeeded(const std::string& app_id) { void PolicyManagerImpl::SetVINValue(const std::string& value) {} AppPermissions PolicyManagerImpl::GetAppPermissionsChanges( - const std::string& policy_app_id) { + const std::string& device_id, const std::string& policy_app_id) { typedef std::map<std::string, AppPermissions>::iterator PermissionsIt; PermissionsIt app_id_diff = app_permissions_diff_.find(policy_app_id); AppPermissions permissions(policy_app_id); if (app_permissions_diff_.end() != app_id_diff) { permissions = app_id_diff->second; } else { - permissions.appPermissionsConsentNeeded = IsConsentNeeded(policy_app_id); + permissions.appPermissionsConsentNeeded = + IsConsentNeeded(device_id, policy_app_id); permissions.appRevoked = IsApplicationRevoked(policy_app_id); GetPriority(permissions.application_id, &permissions.priority); } @@ -1282,11 +1304,11 @@ class CallStatusChange : public utils::Callable { }; StatusNotifier PolicyManagerImpl::AddApplication( + const std::string& device_id, const std::string& application_id, const rpc::policy_table_interface_base::AppHmiTypes& hmi_types) { LOG4CXX_AUTO_TRACE(logger_); - const std::string device_id = GetCurrentDeviceId(application_id); - DeviceConsent device_consent = GetUserConsentForDevice(device_id); + auto device_consent = GetUserConsentForDevice(device_id); sync_primitives::AutoLock lock(apps_registration_lock_); if (IsNewApplication(application_id)) { AddNewApplication(application_id, device_consent); @@ -1414,10 +1436,13 @@ void PolicyManagerImpl::RetrySequence() { timer_retry_sequence_.Start(timeout_msec, timer::kPeriodic); } -void PolicyManagerImpl::SetDefaultHmiTypes(const std::string& application_id, - const std::vector<int>& hmi_types) { +void PolicyManagerImpl::SetDefaultHmiTypes( + const transport_manager::DeviceHandle& device_handle, + const std::string& application_id, + const std::vector<int>& hmi_types) { LOG4CXX_INFO(logger_, "SetDefaultHmiTypes"); - const std::string device_id = GetCurrentDeviceId(application_id); + const std::string device_id = + GetCurrentDeviceId(device_handle, application_id); ApplicationOnDevice who = {device_id, application_id}; access_remote_->SetDefaultHmiTypes(who, hmi_types); } @@ -1455,7 +1480,7 @@ bool PolicyManagerImpl::CheckModule(const PTString& app_id, void PolicyManagerImpl::SendHMILevelChanged(const ApplicationOnDevice& who) { std::string default_hmi("NONE"); - if (GetDefaultHmi(who.app_id, &default_hmi)) { + if (GetDefaultHmi(who.dev_id, who.app_id, &default_hmi)) { listener()->OnUpdateHMIStatus(who.dev_id, who.app_id, default_hmi); } else { LOG4CXX_WARN( @@ -1492,7 +1517,8 @@ void PolicyManagerImpl::SendAppPermissionsChanged( const std::string& device_id, const std::string& application_id) { Permissions notification_data; GetPermissions(device_id, application_id, ¬ification_data); - listener()->OnPermissionsUpdated(application_id, notification_data); + listener()->OnPermissionsUpdated( + device_id, application_id, notification_data); } void PolicyManagerImpl::SendAuthTokenUpdated(const std::string policy_app_id) { diff --git a/src/components/policy/policy_regular/src/policy_table/enums.cc b/src/components/policy/policy_regular/src/policy_table/enums.cc index 421ccacded..56bbd53762 100644 --- a/src/components/policy/policy_regular/src/policy_table/enums.cc +++ b/src/components/policy/policy_regular/src/policy_table/enums.cc @@ -859,6 +859,18 @@ bool IsValidEnum(FunctionID val) { return true; case PerformAppServiceInteractionID: return true; + case UnpublishAppServiceID: + return true; + case CancelInteractionID: + return true; + case CreateWindowID: + return true; + case DeleteWindowID: + return true; + case CloseApplicationID: + return true; + case ShowAppMenuID: + return true; case OnHMIStatusID: return true; case OnAppInterfaceUnregisteredID: @@ -1022,6 +1034,18 @@ const char* EnumToJsonString(FunctionID val) { return "GetAppServiceData"; case PerformAppServiceInteractionID: return "PerformAppServiceInteraction"; + case UnpublishAppServiceID: + return "UnpublishAppService"; + case CancelInteractionID: + return "CancelInteraction"; + case CreateWindowID: + return "CreateWindow"; + case DeleteWindowID: + return "DeleteWindow"; + case CloseApplicationID: + return "CloseApplication"; + case ShowAppMenuID: + return "ShowAppMenu"; case OnHMIStatusID: return "OnHMIStatus"; case OnAppInterfaceUnregisteredID: @@ -1346,6 +1370,36 @@ bool EnumFromJsonString(const std::string& literal, FunctionID* result) { return true; } + if ("UnpublishAppService" == literal) { + *result = UnpublishAppServiceID; + return true; + } + + if ("CancelInteraction" == literal) { + *result = CancelInteractionID; + return true; + } + + if ("CreateWindow" == literal) { + *result = CreateWindowID; + return true; + } + + if ("DeleteWindow" == literal) { + *result = DeleteWindowID; + return true; + } + + if ("CloseApplication" == literal) { + *result = CloseApplicationID; + return true; + } + + if ("ShowAppMenu" == literal) { + *result = ShowAppMenuID; + return true; + } + if ("OnHMIStatus" == literal) { *result = OnHMIStatusID; return true; diff --git a/src/components/policy/policy_regular/src/policy_table/types.cc b/src/components/policy/policy_regular/src/policy_table/types.cc index bdf1329dee..7fdfde996c 100644 --- a/src/components/policy/policy_regular/src/policy_table/types.cc +++ b/src/components/policy/policy_regular/src/policy_table/types.cc @@ -678,7 +678,9 @@ ModuleConfig::ModuleConfig(const Json::Value* value__) , vehicle_model(impl::ValueMember(value__, "vehicle_model")) , vehicle_year(impl::ValueMember(value__, "vehicle_year")) , preloaded_date(impl::ValueMember(value__, "preloaded_date")) - , certificate(impl::ValueMember(value__, "certificate")) {} + , certificate(impl::ValueMember(value__, "certificate")) + , lock_screen_dismissal_enabled( + impl::ValueMember(value__, "lock_screen_dismissal_enabled")) {} void ModuleConfig::SafeCopyFrom(const ModuleConfig& from) { // device_certificates = from.device_certificates; // According to the @@ -692,6 +694,8 @@ void ModuleConfig::SafeCopyFrom(const ModuleConfig& from) { notifications_per_minute_by_priority = from.notifications_per_minute_by_priority; + lock_screen_dismissal_enabled = from.lock_screen_dismissal_enabled; + vehicle_make.assign_if_valid(from.vehicle_make); vehicle_model.assign_if_valid(from.vehicle_model); vehicle_year.assign_if_valid(from.vehicle_year); @@ -723,6 +727,9 @@ Json::Value ModuleConfig::ToJsonValue() const { impl::WriteJsonField("vehicle_year", vehicle_year, &result__); impl::WriteJsonField("certificate", certificate, &result__); impl::WriteJsonField("preloaded_date", preloaded_date, &result__); + impl::WriteJsonField("lock_screen_dismissal_enabled", + lock_screen_dismissal_enabled, + &result__); return result__; } @@ -754,6 +761,9 @@ bool ModuleConfig::is_valid() const { if (!notifications_per_minute_by_priority.is_valid()) { return false; } + if (!lock_screen_dismissal_enabled.is_valid()) { + return false; + } if (!vehicle_make.is_valid()) { return false; } @@ -808,6 +818,9 @@ bool ModuleConfig::struct_empty() const { if (notifications_per_minute_by_priority.is_initialized()) { return false; } + if (lock_screen_dismissal_enabled.is_initialized()) { + return false; + } if (vehicle_make.is_initialized()) { return false; } @@ -863,6 +876,10 @@ void ModuleConfig::ReportErrors(rpc::ValidationReport* report__) const { notifications_per_minute_by_priority.ReportErrors( &report__->ReportSubobject("notifications_per_minute_by_priority")); } + if (!lock_screen_dismissal_enabled.is_valid()) { + lock_screen_dismissal_enabled.ReportErrors( + &report__->ReportSubobject("lock_screen_dismissal_enabled")); + } if (!vehicle_make.is_valid()) { vehicle_make.ReportErrors(&report__->ReportSubobject("vehicle_make")); } @@ -902,6 +919,7 @@ void ModuleConfig::SetPolicyTableType(PolicyTableType pt_type) { seconds_between_retries.SetPolicyTableType(pt_type); endpoints.SetPolicyTableType(pt_type); notifications_per_minute_by_priority.SetPolicyTableType(pt_type); + lock_screen_dismissal_enabled.SetPolicyTableType(pt_type); vehicle_make.SetPolicyTableType(pt_type); vehicle_model.SetPolicyTableType(pt_type); vehicle_year.SetPolicyTableType(pt_type); diff --git a/src/components/policy/policy_regular/src/sql_pt_queries.cc b/src/components/policy/policy_regular/src/sql_pt_queries.cc index a97b0ab153..b3816d37f8 100644 --- a/src/components/policy/policy_regular/src/sql_pt_queries.cc +++ b/src/components/policy/policy_regular/src/sql_pt_queries.cc @@ -71,7 +71,8 @@ const std::string kCreateSchema = " `certificate` TEXT, " " `vehicle_make` VARCHAR(45), " " `vehicle_model` VARCHAR(45), " - " `vehicle_year` VARCHAR(4) " + " `vehicle_year` VARCHAR(4), " + " `lock_screen_dismissal_enabled` BOOL" "); " "CREATE TABLE IF NOT EXISTS `functional_group`( " " `id` INTEGER PRIMARY KEY NOT NULL, " @@ -419,7 +420,7 @@ const std::string kInsertInitData = " VALUES (0, 0, 0, 0); " "INSERT OR IGNORE INTO `module_config` (`preloaded_pt`, `is_first_run`," " `exchange_after_x_ignition_cycles`, `exchange_after_x_kilometers`, " - " `exchange_after_x_days`, `timeout_after_x_seconds`) " + " `exchange_after_x_days`, `timeout_after_x_seconds`)" " VALUES(1, 0, 0, 0, 0, 0); " "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('EMERGENCY'); " "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('NAVIGATION'); " @@ -674,15 +675,17 @@ const std::string kInsertLanguage = "INSERT OR IGNORE INTO `language` (`code`) VALUES (?)"; const std::string kInsertMessageString = - "INSERT INTO `message` (`language_code`, `message_type_name`) " - "VALUES (?, ?)"; + "INSERT INTO `message` (`language_code`, `message_type_name`, `tts`, " + "`label`, `line1`, `line2`, `textBody`) " + "VALUES (?, ?, ?, ?, ?, ?, ?)"; const std::string kUpdateModuleConfig = "UPDATE `module_config` SET `preloaded_pt` = ?, " " `exchange_after_x_ignition_cycles` = ?," " `exchange_after_x_kilometers` = ?, `exchange_after_x_days` = ?, " " `timeout_after_x_seconds` = ?, `certificate` = ?, `vehicle_make` = ?, " - " `vehicle_model` = ?, `vehicle_year` = ? "; + " `vehicle_model` = ?, `vehicle_year` = ?, lock_screen_dismissal_enabled " + "= ?"; const std::string kInsertEndpoint = "INSERT INTO `endpoint` (`service`, `url`, `application_id`) " @@ -722,7 +725,7 @@ const std::string kSelectModuleConfig = "SELECT `preloaded_pt`, `exchange_after_x_ignition_cycles`, " " `exchange_after_x_kilometers`, `exchange_after_x_days`, " " `timeout_after_x_seconds`, `certificate`, `vehicle_make`," - " `vehicle_model`, `vehicle_year` " + " `vehicle_model`, `vehicle_year` ,`lock_screen_dismissal_enabled`" " FROM `module_config`"; const std::string kSelectEndpoints = @@ -907,6 +910,5 @@ const std::string kSaveModuleMeta = "`ignition_cycles_since_last_exchange` = ? "; const std::string kSelectModuleMeta = "SELECT* FROM `module_meta`"; - } // namespace sql_pt } // namespace policy diff --git a/src/components/policy/policy_regular/src/sql_pt_representation.cc b/src/components/policy/policy_regular/src/sql_pt_representation.cc index 20ba9ec651..8ac04ba5f3 100644 --- a/src/components/policy/policy_regular/src/sql_pt_representation.cc +++ b/src/components/policy/policy_regular/src/sql_pt_representation.cc @@ -525,7 +525,9 @@ void SQLPTRepresentation::GatherModuleConfig( *config->vehicle_make = query.GetString(6); *config->vehicle_model = query.GetString(7); *config->vehicle_year = query.GetString(8); - *config->preloaded_date = query.GetString(9); + if (!query.IsNull(9)) { + *config->lock_screen_dismissal_enabled = query.GetBoolean(9); + } } utils::dbms::SQLQuery endpoints(db()); @@ -1365,6 +1367,9 @@ bool SQLPTRepresentation::SaveModuleConfig( : query.Bind(7); config.vehicle_year.is_initialized() ? query.Bind(8, *(config.vehicle_year)) : query.Bind(8); + config.lock_screen_dismissal_enabled.is_initialized() + ? query.Bind(9, *(config.lock_screen_dismissal_enabled)) + : query.Bind(9); if (!query.Exec()) { LOG4CXX_WARN(logger_, "Incorrect update module config"); return false; @@ -1519,6 +1524,25 @@ bool SQLPTRepresentation::SaveMessageString( query.Bind(0, lang); query.Bind(1, type); + if (strings.tts.is_valid() && strings.tts.is_initialized()) { + query.Bind(2, (*strings.tts)); + } + + if (strings.label.is_valid() && strings.label.is_initialized()) { + query.Bind(3, (*strings.label)); + } + + if (strings.line1.is_valid() && strings.line1.is_initialized()) { + query.Bind(4, *(strings.line1)); + } + + if (strings.line2.is_valid() && strings.line2.is_initialized()) { + query.Bind(5, (*strings.line2)); + } + + if (strings.textBody.is_valid() && strings.textBody.is_initialized()) { + query.Bind(6, (*strings.textBody)); + } if (!query.Exec() || !query.Reset()) { LOG4CXX_WARN(logger_, "Incorrect insert into message."); |