• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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