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 #ifndef CELLULAR_DATA_CONSTANT_H
17 #define CELLULAR_DATA_CONSTANT_H
18
19 #include <array>
20 #include <string>
21 #include <vector>
22
23 #include "cellular_data_types.h"
24
25 namespace OHOS {
26 namespace Telephony {
27 enum ApnProfileState {
28 PROFILE_STATE_IDLE,
29 PROFILE_STATE_CONNECTING,
30 PROFILE_STATE_CONNECTED,
31 PROFILE_STATE_DISCONNECTING,
32 PROFILE_STATE_FAILED,
33 PROFILE_STATE_RETRYING
34 };
35
36 enum class RecoveryState : int32_t {
37 STATE_REQUEST_CONTEXT_LIST,
38 STATE_CLEANUP_CONNECTIONS,
39 STATE_REREGISTER_NETWORK,
40 STATE_RADIO_STATUS_RESTART
41 };
42
43 struct AddressInfo {
44 std::string ip = "";
45 std::string netMask = "";
46 uint8_t type = 0;
47 uint8_t prefixLen = 0;
48 };
49
50 struct RouteInfo {
51 std::string ip = "";
52 uint8_t type = 0;
53 std::string destination = "";
54 };
55
56 struct NetSupplier {
57 uint32_t supplierId = 0;
58 uint64_t capability = 0;
59 int32_t slotId = 0;
60 int32_t simId = 0;
61 int32_t regState = -1;
62 };
63 enum RegisterType {
64 RELEASE,
65 REGISTER,
66 REQUEST
67 };
68 struct NetRequest {
69 uint64_t capability = 0;
70 std::string ident = "";
71 int32_t registerType = RELEASE;
72 uint64_t bearTypes = 0;
73 uint32_t uid = 0;
74 };
75
76 static const uint32_t DEFAULT_BANDWIDTH = 14;
77 struct LinkBandwidthInfo {
78 uint32_t upBandwidth = DEFAULT_BANDWIDTH;
79 uint32_t downBandwidth = DEFAULT_BANDWIDTH;
80 };
81
CellularDataStateAdapter(ApnProfileState state)82 constexpr int32_t CellularDataStateAdapter(ApnProfileState state)
83 {
84 switch (state) {
85 case PROFILE_STATE_CONNECTING:
86 return static_cast<int32_t>(DataConnectionStatus::DATA_STATE_CONNECTING);
87 case PROFILE_STATE_CONNECTED:
88 [[fallthrough]]; // fall_through
89 case PROFILE_STATE_DISCONNECTING:
90 return static_cast<int32_t>(DataConnectionStatus::DATA_STATE_CONNECTED);
91 case PROFILE_STATE_FAILED:
92 [[fallthrough]]; // fall_through
93 case PROFILE_STATE_RETRYING:
94 [[fallthrough]]; // fall_through
95 case PROFILE_STATE_IDLE:
96 return static_cast<int32_t>(DataConnectionStatus::DATA_STATE_DISCONNECTED);
97 default:
98 return static_cast<int32_t>(DataConnectionStatus::DATA_STATE_DISCONNECTED);
99 }
100 }
101
WrapCellularDataState(const int32_t cellularDataState)102 constexpr int32_t WrapCellularDataState(const int32_t cellularDataState)
103 {
104 switch (cellularDataState) {
105 case static_cast<int32_t>(DataConnectionStatus::DATA_STATE_DISCONNECTED): {
106 return static_cast<int32_t>(DataConnectState::DATA_STATE_DISCONNECTED);
107 }
108 case static_cast<int32_t>(DataConnectionStatus::DATA_STATE_CONNECTING): {
109 return static_cast<int32_t>(DataConnectState::DATA_STATE_CONNECTING);
110 }
111 case static_cast<int32_t>(DataConnectionStatus::DATA_STATE_CONNECTED): {
112 return static_cast<int32_t>(DataConnectState::DATA_STATE_CONNECTED);
113 }
114 case static_cast<int32_t>(DataConnectionStatus::DATA_STATE_SUSPENDED): {
115 return static_cast<int32_t>(DataConnectState::DATA_STATE_SUSPENDED);
116 }
117 default: {
118 return static_cast<int32_t>(DataConnectState::DATA_STATE_UNKNOWN);
119 }
120 }
121 }
122
123 enum DataContextRolesId {
124 DATA_CONTEXT_ROLE_INVALID_ID = -1,
125 DATA_CONTEXT_ROLE_ALL_ID = 0,
126 DATA_CONTEXT_ROLE_DEFAULT_ID = 1,
127 DATA_CONTEXT_ROLE_MMS_ID = 2,
128 DATA_CONTEXT_ROLE_SUPL_ID = 3,
129 DATA_CONTEXT_ROLE_DUN_ID = 4,
130 DATA_CONTEXT_ROLE_IMS_ID = 5,
131 DATA_CONTEXT_ROLE_IA_ID = 6,
132 DATA_CONTEXT_ROLE_EMERGENCY_ID = 7,
133 DATA_CONTEXT_ROLE_INTERNAL_DEFAULT_ID = 8,
134 DATA_CONTEXT_ROLE_XCAP_ID = 9,
135 DATA_CONTEXT_ROLE_BIP_ID = 10,
136 DATA_CONTEXT_ROLE_SNSSAI1_ID = 11,
137 DATA_CONTEXT_ROLE_SNSSAI2_ID = 12,
138 DATA_CONTEXT_ROLE_SNSSAI3_ID = 13,
139 DATA_CONTEXT_ROLE_SNSSAI4_ID = 14,
140 DATA_CONTEXT_ROLE_SNSSAI5_ID = 15,
141 DATA_CONTEXT_ROLE_SNSSAI6_ID = 16
142 };
143
144 enum class DataContextPriority : int32_t { PRIORITY_NONE, PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_HIGH };
145
146 enum TelCallStatus {
147 CALL_STATUS_UNKNOWN = -1,
148 CALL_STATUS_ACTIVE = 0,
149 CALL_STATUS_HOLDING = 1,
150 CALL_STATUS_DIALING = 2,
151 CALL_STATUS_ALERTING = 3,
152 CALL_STATUS_INCOMING = 4,
153 CALL_STATUS_WAITING = 5,
154 CALL_STATUS_DISCONNECTED = 6,
155 CALL_STATUS_DISCONNECTING = 7,
156 CALL_STATUS_IDLE = 8,
157 };
158
159 enum class DisConnectionReason : int32_t {
160 REASON_NORMAL,
161 REASON_GSM_AND_CALLING_ONLY,
162 REASON_RETRY_CONNECTION,
163 REASON_CLEAR_CONNECTION,
164 REASON_CHANGE_CONNECTION,
165 REASON_PERMANENT_REJECT
166 };
167
168 enum class ApnTypes : int32_t {
169 NONETYPE = 0,
170 DEFAULT = 1,
171 MMS = 2,
172 SUPL = 4,
173 DUN = 8,
174 HIPRI = 16,
175 FOTA = 32,
176 IMS = 64,
177 CBS = 128,
178 IA = 256,
179 EMERGENCY = 512,
180 MCX = 1024,
181 XCAP = 2048,
182 INTERNAL_DEFAULT = 4096,
183 BIP = 8192,
184 SNSSAI1 = 16384,
185 SNSSAI2 = 32768,
186 SNSSAI3 = 65536,
187 SNSSAI4 = 131072,
188 SNSSAI5 = 262144,
189 SNSSAI6 = 524288,
190 ALL = 1048575
191 };
192
193 enum class RetryScene : int32_t {
194 RETRY_SCENE_SETUP_DATA = 0,
195 RETRY_SCENE_MODEM_DEACTIVATE = 1,
196 RETRY_SCENE_OTHERS = 2,
197 };
198
199 static constexpr const char *DATA_CONTEXT_ROLE_ALL = "*";
200 static constexpr const char *DATA_CONTEXT_ROLE_DEFAULT = "default";
201 static constexpr const char *DATA_CONTEXT_ROLE_MMS = "mms";
202 static constexpr const char *DATA_CONTEXT_ROLE_SUPL = "supl";
203 static constexpr const char *DATA_CONTEXT_ROLE_DUN = "dun";
204 static constexpr const char *DATA_CONTEXT_ROLE_IMS = "ims";
205 static constexpr const char *DATA_CONTEXT_ROLE_BIP = "bip";
206 static constexpr const char *DATA_CONTEXT_ROLE_IA = "ia";
207 static constexpr const char *DATA_CONTEXT_ROLE_EMERGENCY = "emergency";
208 static constexpr const char *DATA_CONTEXT_ROLE_INTERNAL_DEFAULT = "internal_default";
209 static constexpr const char *DATA_CONTEXT_ROLE_XCAP = "xcap";
210 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI1 = "snssai1";
211 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI2 = "snssai2";
212 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI3 = "snssai3";
213 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI4 = "snssai4";
214 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI5 = "snssai5";
215 static constexpr const char *DATA_CONTEXT_ROLE_SNSSAI6 = "snssai6";
216 static const int32_t DATA_PROFILE_DEFAULT = 0;
217 static const int32_t DATA_PROFILE_MMS = 1;
218 static const int32_t DATA_PROFILE_INTERNAL_DEFAULT = 2;
219 static const int32_t DATA_PROFILE_SUPL = 3;
220 static const int32_t DATA_PROFILE_DUN = 4;
221 static const int32_t DATA_PROFILE_IA = 5;
222 static const int32_t DATA_PROFILE_XCAP = 6;
223 static const int32_t DATA_PROFILE_BIP = 7;
224 static const int32_t DATA_PROFILE_SNSSAI1 = 8;
225 static const int32_t DATA_PROFILE_SNSSAI2 = 9;
226 static const int32_t DATA_PROFILE_SNSSAI3 = 10;
227 static const int32_t DATA_PROFILE_SNSSAI4 = 11;
228 static const int32_t DATA_PROFILE_SNSSAI5 = 12;
229 static const int32_t DATA_PROFILE_SNSSAI6 = 13;
230 static const int32_t CMCC_MCC_MNC = 46002;
231 static const int32_t DEFAULT_AUTH_TYPE = 0;
232 static const int32_t DEFAULT_MTU = 1500;
233 static const uint8_t DEFAULT_STRENGTH = 20;
234 static const uint32_t DEFAULT_FREQUENCY = 50;
235 static const int64_t CORE_INIT_DELAY_TIME = 1000;
236 static const int32_t MASK_BYTE_BIT = 8;
237 static const int32_t IPV4_BIT = 32;
238 static const int32_t IPV6_BIT = 128;
239 static const int32_t MIN_IPV6_ITEM = 16;
240 static const int32_t MAX_IPV4_ITEM = 8;
241 static const int32_t MIN_IPV4_ITEM = 4;
242 static constexpr const char *DEFAULT_OPERATOR_NUMERIC = "46001";
243 static constexpr const char *DATA_METERED_CONTEXT_ROLES = "default";
244 static constexpr const char *IS_CELLULAR_DATA_ENABLE = "isCellularDataEnable";
245 static constexpr const char *IS_ROAMING = "isRoaming";
246 static constexpr const char *SETTING_SWITCH = "settingSwitch";
247 static constexpr const char *IDENT_PREFIX = "simId";
248 static constexpr const char *DEFAULT_HOSTNAME = "";
249 static constexpr const char *DEFAULT_MASK = "";
250 static constexpr const char *CELLULAR_DATA_RDB_URI = "datashare:///com.ohos.pdpprofileability";
251 static constexpr const char *CELLULAR_DATA_RDB_SELECTION =
252 "datashare:///com.ohos.pdpprofileability/net/pdp_profile";
253 static constexpr const char *CELLULAR_DATA_RDB_RESET =
254 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/reset";
255 static constexpr const char *CELLULAR_DATA_RDB_PREFER =
256 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/preferapn";
257 static constexpr const char *CELLULAR_DATA_RDB_INIT =
258 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/init";
259 static constexpr const char *CELLULAR_DATA_SETTING_URI =
260 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true";
261 static constexpr const char *CELLULAR_DATA_SETTING_EXT_URI = "datashare:///com.ohos.settingsdata.DataAbility";
262 static constexpr const char *CELLULAR_DATA_SETTING_DATA_ENABLE_URI =
263 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_enable";
264 static constexpr const char *CELLULAR_DATA_SETTING_ANY_SIM_DETECTED_URI =
265 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=any_sim_detected";
266 static constexpr const char *CELLULAR_DATA_SETTING_DATA_ROAMING_URI =
267 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_roaming_enable";
268 static constexpr const char *CELLULAR_DATA_SETTING_DATA_INCALL_URI =
269 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_incall_enable";
270 static constexpr const char *CELLULAR_DATA_SETTING_INTELLIGENCE_SWITCH_URI =
271 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?"
272 "Proxy=true&key=intelligence_card_switch_enable";
273 static constexpr const char *CELLULAR_DATA_SETTING_INTELLIGENCE_NETWORK_URI =
274 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?"
275 "Proxy=true&key=intelligence_network_switching";
276 static constexpr const char *CELLULAR_DATA_AIRPLANE_MODE_URI =
277 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=airplane_mode";
278 static const int32_t DEFAULT_NET_STATISTICS_PERIOD = 3 * 1000;
279 static const int32_t DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 60 * 10;
280 static const int32_t DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 10;
281 static const int32_t ESTABLISH_DATA_CONNECTION_DELAY = 1 * 1000;
282 static const int32_t CONNECTION_TIMEOUT = 180 * 1000;
283 static const int32_t DISCONNECTION_TIMEOUT = 90 * 1000;
284 static const int32_t CONNECTION_TASK_TIME = 170 * 1000;
285 static const int32_t RESUME_DATA_PERMITTED_TIMEOUT = 30 * 1000;
286 static const int32_t RECOVERY_TRIGGER_PACKET = 10;
287 static const int32_t ERROR_APN_ID = -1;
288 static const int32_t VALID_IP_SIZE = 2;
289 static const int32_t TYPE_REQUEST_NET = 1;
290 static const int32_t TYPE_RELEASE_NET = 0;
291 static const int32_t DEFAULT_READ_APN_TIME = 2;
292 static const int32_t DEFAULT_MCC_SIZE = 3;
293 static const int32_t NULL_POINTER_EXCEPTION = -1;
294 static const int32_t PATH_PARAMETER_SIZE = 128;
295 static constexpr const char *ROUTED_IPV4 = "0.0.0.0";
296 static constexpr const char *ROUTED_IPV6 = "::";
297 static constexpr const char *CONFIG_DOWNLINK_THRESHOLDS = "persist.sys.data.downlink";
298 static constexpr const char *CONFIG_UPLINK_THRESHOLDS = "persist.sys.data.uplink";
299 static constexpr const char *CONFIG_TCP_BUFFER = "persist.sys.data.tcpbuffer";
300 static constexpr const char *CONFIG_PREFERAPN = "persist.sys.data.preferapn";
301 static constexpr const char *CONFIG_MOBILE_MTU = "persist.sys.data.mobilemtu";
302 static constexpr const char *CONFIG_DATA_SERVICE_EXT_PATH = "persist.sys.data.dataextpath";
303 static constexpr const char *CONFIG_MULTIPLE_CONNECTIONS = "persist.sys.data.multiple.connections";
304 static constexpr const char *CAPACITY_THRESHOLDS_FOR_DOWNLINK = "100,500,1000,5000,10000,20000,50000,75000,"
305 "100000,200000,500000,1000000,1500000,2000000";
306 static constexpr const char *CAPACITY_THRESHOLDS_FOR_UPLINK = "100,500,1000,5000,10000,20000,50000,75000,"
307 "100000,200000,500000";
308 static constexpr const char *DEFAULT_TCP_BUFFER_CONFIG = "UMTS:58254,349525,1048576,58254,349525,1048576;"
309 "HSPA:40778,244668,734003,16777,100663,301990;"
310 "HSUPA:131072,262144,2441216,4096,16384,399360;"
311 "HSDPA:61167,367002,1101005,8738,52429,262114;"
312 "HSPAP:122334,734003,2202010,32040,192239,576717;"
313 "EDGE:4093,26280,70800,4096,16384,70800;"
314 "eHRPD:131072,262144,1048576,4096,16384,524288;"
315 "1xRTT:16384,32768,131072,4096,16384,102400;"
316 "GPRS:4092,8760,48000,4096,8760,48000;"
317 "EVDO:4094,87380,262144,4096,16384,262144;"
318 "LTE:524288,4194304,8388608,262144,524288,1048576;"
319 "NR:2097152,6291456,16777216,512000,2097152,8388608;"
320 "LTE_CA:4096,6291456,12582912,4096,1048576,2097152";
321 constexpr const char *DEFAULT_BANDWIDTH_CONFIG =
322 "GPRS:24,24;EDGE:70,18;UMTS:115,115;CDMA-IS95A:14,14;"
323 "CDMA-IS95B:14,14;1xRTT:30,30;EvDo-rev.0:750,48;EvDo-rev.A:950,550;HSDPA:4300,620;"
324 "HSUPA:4300,1800;HSPA:4300,1800;EvDo-rev.B:1500,550;eHRPD:750,48;HSPAP:13000,3400;"
325 "TD-SCDMA:115,115;LTE:30000,15000;NR_NSA:47000,18000;NR_NSA_MMWAVE:145000,60000;"
326 "NR_SA:145000,60000";
327 static constexpr const char *DEFAULT_PREFER_APN = "1";
328 static constexpr const char *DEFAULT_MOBILE_MTU = "1500";
329 static constexpr const char *DEFAULT_MULTIPLE_CONNECTIONS = "1";
330 static const int MAX_BUFFER_SIZE = 1024;
331 static const int MIN_BUFFER_SIZE = 5;
332 static const int UP_DOWN_LINK_SIZE = 100;
333 static const int32_t VALID_VECTOR_SIZE = 2;
334 static const int32_t DELAY_SET_RIL_BANDWIDTH_MS = 3000;
335 static const int32_t DELAY_SET_RIL_UP_DOWN_BANDWIDTH_MS = 50;
336 static const int32_t MAX_REPLY_COUNT = 200;
337 static constexpr const char *CELLULAR_DATA_COLUMN_ENABLE = "cellular_data_enable";
338 static constexpr const char *SIM_DETECTED_COLUMN_ENABLE = "any_sim_detected";
339 static constexpr const char *CELLULAR_DATA_COLUMN_ROAMING = "cellular_data_roaming_enable";
340 static constexpr const char *CELLULAR_DATA_COLUMN_INCALL = "cellular_data_incall_enable";
341 static constexpr const char *INTELLIGENCE_SWITCH_COLUMN_ENABLE = "intelligence_card_switch_enable";
342 static constexpr const char *INTELLIGENCE_NETWORK_COLUMN_ENABLE = "intelligence_network_switching";
343 static constexpr const char *CELLULAR_DATA_COLUMN_AIRPLANE = "settings.telephony.airplanemode";
344 static constexpr const char *CELLULAR_DATA_COLUMN_KEYWORD = "KEYWORD";
345 static constexpr const char *CELLULAR_DATA_COLUMN_VALUE = "VALUE";
346 static const int32_t INVALID_SIM_ID = 0;
347 static const int32_t INVALID_SLOT_ID = -1;
348 static const int32_t CELLULAR_DATA_VSIM_SLOT_ID = 2;
349 static const int32_t SUPPLIER_INVALID_REG_STATE = -1;
350 static const int32_t MAX_SLOT_NUM = 2;
351 static constexpr const char *PROTOCOL_IPV4 = "IP";
352 static constexpr const char *PROTOCOL_IPV6 = "IPV6";
353 static constexpr const char *PROTOCOL_IPV4V6 = "IPV4V6";
354 static constexpr const char *NOT_FILLED_IN = "not-filled-in";
355 static const int32_t APN_CREATE_RETRY_TIMES = 3;
356 static const int32_t RETRY_DELAY_TIME = 5 * 1000;
357 } // namespace Telephony
358 } // namespace OHOS
359 #endif // CELLULAR_DATA_CONSTANT_H
360