1 /*
2  * Copyright (C) 2021-2023 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 #ifndef I_CELLULAR_DATA_MANAGER_H
17 #define I_CELLULAR_DATA_MANAGER_H
18 
19 #include "iremote_broker.h"
20 #include "sim_account_callback.h"
21 #include "apn_item.h"
22 #include "cellular_data_constant.h"
23 
24 namespace OHOS {
25 namespace Telephony {
26 class ICellularDataManager : public IRemoteBroker {
27 public:
28     /**
29      * Whether the cellular data user switch is enabled
30      *
31      * @return return errorCode of is cellulardata enabled
32      */
33     virtual int32_t IsCellularDataEnabled(bool &dataEnabled) = 0;
34 
35     /**
36      * Whether to enable cellular data user switch
37      *
38      * @param enable allow or not
39      * @return return 84082688 invalid parameter, 1 data enable success, 0 enable fail
40      */
41     virtual int32_t EnableCellularData(bool enable) = 0;
42 
43     /**
44      * Whether to enable intelligence switch
45      *
46      * @param enable allow or not
47      * @return return 84082688 invalid parameter, 1 data enable success, 0 enable fail
48      */
49     virtual int32_t EnableIntelligenceSwitch(bool enable) = 0;
50 
51     /**
52      * Cellular data connection status
53      *
54      * @return 84082688 Indicates that a cellular data link is unknown
55      *         11 Indicates that a cellular data link is disconnected
56      *         12 Indicates that a cellular data link is being connected
57      *         13 Indicates that a cellular data link is connected
58      *         14 Indicates that a cellular data link is suspended
59      */
60     virtual int32_t GetCellularDataState() = 0;
61 
62     /**
63      * Whether roaming is allowed
64      *
65      * @param slotId card slot identification
66      * @param dataRoamingEnabled result of data is enabled
67      * @return return errorCode of is cellulardata enabled
68      */
69     virtual int32_t IsCellularDataRoamingEnabled(int32_t slotId, bool &dataRoamingEnabled) = 0;
70 
71     /**
72      * Whether roaming switches are allowed
73      *
74      * @param slotId card slot identification
75      * @param enable Whether roaming switches are allowed
76      * @return Returns 0 on failure, 1 on failure. 84082688 invalid parameter
77      */
78     virtual int32_t EnableCellularDataRoaming(int32_t slotId, bool enable) = 0;
79 
80     /**
81      * Processing of APN content changes
82      *
83      * @param slotId card slot identification
84      * @param apns changed apns
85      * @return the number of apns created else 84082688 invalid parameter
86      */
87     virtual int32_t HandleApnChanged(int32_t slotId) = 0;
88 
89     /**
90      * Get the slotId that uses the data traffic by default
91      *
92      * @return default settings data card, -1 error code
93      */
94     virtual int32_t GetDefaultCellularDataSlotId() = 0;
95 
96     /**
97      * Get the simId that uses the data traffic by default
98      *
99      * @param simId Returns default settings data sim id
100      * @return Returns 0 on success, others on failure.
101      */
102     virtual int32_t GetDefaultCellularDataSimId(int32_t &simId) = 0;
103 
104     /**
105      * set the slotId that uses the data traffic by default
106      *
107      * @return 1 set success, 0 set fail, 84082688 invalid parameter
108      */
109     virtual int32_t SetDefaultCellularDataSlotId(int32_t slotId) = 0;
110 
111     /**
112      * get data packet type
113      *
114      * @return 0 Indicates that there is no uplink or down link data,
115      *         1 Indicates that there is only down link data,
116      *         2 Indicates that there is only uplink data,
117      *         3 Indicates that there is uplink and down link data
118      *         4 Indicates that there is no uplink or down link data,
119      *           and the bottom-layer link is in the dormant state
120      *         84082688 Indicates invalid parameter
121      */
122     virtual int32_t GetCellularDataFlowType() = 0;
123 
124     /**
125      * get intelligence switch state
126      *
127      * @param state the state of intelligence switch
128      * @return return 84082688 invalid parameter, 1 data enable success, 0 enable fail
129      */
130     virtual int32_t GetIntelligenceSwitchState(bool &state) = 0;
131 
132     virtual int32_t HasInternetCapability(int32_t slotId, int32_t cid) = 0;
133 
134     virtual int32_t ClearCellularDataConnections(int32_t slotId) = 0;
135 
136     virtual int32_t ClearAllConnections(int32_t slotId, DisConnectionReason reason) = 0;
137 
138     virtual int32_t RegisterSimAccountCallback(const sptr<SimAccountCallback> callback) = 0;
139 
140     virtual int32_t UnregisterSimAccountCallback() = 0;
141 
142     virtual int32_t GetDataConnApnAttr(int32_t slotId, ApnItem::Attribute &apnAttr) = 0;
143 
144     virtual int32_t GetDataConnIpType(int32_t slotId, std::string &ipType) = 0;
145 
146     virtual int32_t GetApnState(int32_t slotId, const std::string &apnType) = 0;
147 
148     virtual int32_t GetDataRecoveryState() = 0;
149 
150     virtual int32_t IsNeedDoRecovery(int32_t slotId, bool needDoRecovery) = 0;
151 
152     virtual int32_t InitCellularDataController(int32_t slotId) = 0;
153 
154 public:
155     DECLARE_INTERFACE_DESCRIPTOR(u"ohos.telephony.ICellularDataManager");
156 };
157 } // namespace Telephony
158 } // namespace OHOS
159 #endif // I_CELLULAR_DATA_MANAGER_H
160