1 /*
2 * Copyright (C) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "data_switch_settings.h"
17
18 #include "cellular_data_constant.h"
19 #include "cellular_data_settings_rdb_helper.h"
20 #include "core_manager_inner.h"
21 #include "telephony_log_wrapper.h"
22
23 namespace OHOS {
24 namespace Telephony {
DataSwitchSettings(int32_t slotId)25 DataSwitchSettings::DataSwitchSettings(int32_t slotId) : slotId_(slotId) {}
26
LoadSwitchValue()27 void DataSwitchSettings::LoadSwitchValue()
28 {
29 GetUserDataOn();
30 IsUserDataRoamingOn();
31 TELEPHONY_LOGI("LoadSwitchValue userDataOn_:%{public}d userDataRoaming_:%{public}d policyDataOn_:%{public}d",
32 userDataOn_, userDataRoaming_, policyDataOn_);
33 }
34
IsInternalDataOn() const35 bool DataSwitchSettings::IsInternalDataOn() const
36 {
37 return internalDataOn_;
38 }
39
SetInternalDataOn(bool internalDataOn)40 void DataSwitchSettings::SetInternalDataOn(bool internalDataOn)
41 {
42 internalDataOn_ = internalDataOn;
43 }
44
SetUserDataOn(bool userDataOn)45 void DataSwitchSettings::SetUserDataOn(bool userDataOn)
46 {
47 std::shared_ptr<CellularDataSettingsRdbHelper> settingsRdbHelper = CellularDataSettingsRdbHelper::GetInstance();
48 if (settingsRdbHelper == nullptr) {
49 TELEPHONY_LOGE("SetUserDataOn settingsRdbHelper == nullptr!");
50 return;
51 }
52 int value = (userDataOn ? static_cast<int>(DataSwitchCode::CELLULAR_DATA_ENABLED)
53 : static_cast<int>(DataSwitchCode::CELLULAR_DATA_DISABLED));
54 TELEPHONY_LOGI("SetUserDataOn value:%{public}d", value);
55 Uri userDataEnableUri(CELLULAR_DATA_SETTING_DATA_ENABLE_URI);
56 settingsRdbHelper->PutValue(userDataEnableUri, CELLULAR_DATA_COLUMN_ENABLE, value);
57 userDataOn_ = userDataOn;
58 }
59
GetUserDataOn()60 bool DataSwitchSettings::GetUserDataOn()
61 {
62 std::shared_ptr<CellularDataSettingsRdbHelper> settingsRdbHelper = CellularDataSettingsRdbHelper::GetInstance();
63 if (settingsRdbHelper == nullptr) {
64 TELEPHONY_LOGE("LoadSwitchValue settingsRdbHelper == nullptr!");
65 return userDataOn_;
66 }
67 Uri userDataEnableUri(CELLULAR_DATA_SETTING_DATA_ENABLE_URI);
68 int userDataOnValue = settingsRdbHelper->GetValue(userDataEnableUri, CELLULAR_DATA_COLUMN_ENABLE);
69 userDataOn_ = (userDataOnValue == static_cast<int>(DataSwitchCode::CELLULAR_DATA_ENABLED) ? true : false);
70 return userDataOn_;
71 }
72
SetUserDataRoamingOn(bool dataRoamingEnabled)73 void DataSwitchSettings::SetUserDataRoamingOn(bool dataRoamingEnabled)
74 {
75 std::shared_ptr<CellularDataSettingsRdbHelper> settingsRdbHelper = CellularDataSettingsRdbHelper::GetInstance();
76 if (settingsRdbHelper == nullptr) {
77 TELEPHONY_LOGE("SetUserDataRoamingOn settingsRdbHelper == nullptr!");
78 return;
79 }
80 int value = (dataRoamingEnabled ? static_cast<int>(RoamingSwitchCode::CELLULAR_DATA_ROAMING_ENABLED)
81 : static_cast<int>(RoamingSwitchCode::CELLULAR_DATA_ROAMING_DISABLED));
82 TELEPHONY_LOGI("SetUserDataRoamingOn value:%{public}d", value);
83 Uri userDataRoamingUri(std::string(CELLULAR_DATA_SETTING_DATA_ROAMING_URI) + std::to_string(slotId_));
84 settingsRdbHelper->PutValue(
85 userDataRoamingUri, std::string(CELLULAR_DATA_COLUMN_ROAMING) + std::to_string(slotId_), value);
86 userDataRoaming_ = dataRoamingEnabled;
87 }
88
IsUserDataRoamingOn()89 bool DataSwitchSettings::IsUserDataRoamingOn()
90 {
91 std::shared_ptr<CellularDataSettingsRdbHelper> settingsRdbHelper = CellularDataSettingsRdbHelper::GetInstance();
92 if (settingsRdbHelper == nullptr) {
93 TELEPHONY_LOGE("LoadSwitchValue settingsRdbHelper == nullptr!");
94 return userDataRoaming_;
95 }
96 Uri userDataRoamingUri(std::string(CELLULAR_DATA_SETTING_DATA_ROAMING_URI) + std::to_string(slotId_));
97 int userDataRoamingValue = settingsRdbHelper->GetValue(
98 userDataRoamingUri, std::string(CELLULAR_DATA_COLUMN_ROAMING) + std::to_string(slotId_));
99 userDataRoaming_ =
100 (userDataRoamingValue == static_cast<int>(RoamingSwitchCode::CELLULAR_DATA_ROAMING_ENABLED) ? true : false);
101 return userDataRoaming_;
102 }
103
IsPolicyDataOn() const104 bool DataSwitchSettings::IsPolicyDataOn() const
105 {
106 return policyDataOn_;
107 }
108
SetPolicyDataOn(bool policyDataOn)109 void DataSwitchSettings::SetPolicyDataOn(bool policyDataOn)
110 {
111 policyDataOn_ = policyDataOn;
112 }
113
IsCarrierDataOn() const114 bool DataSwitchSettings::IsCarrierDataOn() const
115 {
116 return carrierDataOn_;
117 }
118
SetCarrierDataOn(bool carrierDataOn)119 void DataSwitchSettings::SetCarrierDataOn(bool carrierDataOn)
120 {
121 carrierDataOn_ = carrierDataOn;
122 }
123
IsAllowActiveData() const124 bool DataSwitchSettings::IsAllowActiveData() const
125 {
126 if (userDataOn_ && policyDataOn_) {
127 return true;
128 } else {
129 TELEPHONY_LOGE("Activation not allowed[user:%{public}d policy:%{public}d]", userDataOn_, policyDataOn_);
130 return false;
131 }
132 }
133 } // namespace Telephony
134 } // namespace OHOS
135