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 25namespace OHOS { 26namespace Telephony { 27enum 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 36enum class RecoveryState : int32_t { 37 STATE_REQUEST_CONTEXT_LIST, 38 STATE_CLEANUP_CONNECTIONS, 39 STATE_REREGISTER_NETWORK, 40 STATE_RADIO_STATUS_RESTART 41}; 42 43struct AddressInfo { 44 std::string ip = ""; 45 std::string netMask = ""; 46 uint8_t type = 0; 47 uint8_t prefixLen = 0; 48}; 49 50struct RouteInfo { 51 std::string ip = ""; 52 uint8_t type = 0; 53 std::string destination = ""; 54}; 55 56struct 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}; 63enum RegisterType { 64 UNKOWN, 65 REGISTER, 66 REQUEST 67}; 68struct NetRequest { 69 uint64_t capability = 0; 70 std::string ident = ""; 71 int32_t registerType = UNKOWN; 72 uint64_t bearTypes = 0; 73 uint32_t uid = 0; 74}; 75 76static const uint32_t DEFAULT_BANDWIDTH = 14; 77struct LinkBandwidthInfo { 78 uint32_t upBandwidth = DEFAULT_BANDWIDTH; 79 uint32_t downBandwidth = DEFAULT_BANDWIDTH; 80}; 81 82constexpr 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 102constexpr 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 123enum 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}; 136 137enum class DataContextPriority : int32_t { PRIORITY_NONE, PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_HIGH }; 138 139enum TelCallStatus { 140 CALL_STATUS_UNKNOWN = -1, 141 CALL_STATUS_ACTIVE = 0, 142 CALL_STATUS_HOLDING = 1, 143 CALL_STATUS_DIALING = 2, 144 CALL_STATUS_ALERTING = 3, 145 CALL_STATUS_INCOMING = 4, 146 CALL_STATUS_WAITING = 5, 147 CALL_STATUS_DISCONNECTED = 6, 148 CALL_STATUS_DISCONNECTING = 7, 149 CALL_STATUS_IDLE = 8, 150}; 151 152enum class DisConnectionReason : int32_t { 153 REASON_NORMAL, 154 REASON_GSM_AND_CALLING_ONLY, 155 REASON_RETRY_CONNECTION, 156 REASON_CLEAR_CONNECTION, 157 REASON_CHANGE_CONNECTION, 158 REASON_PERMANENT_REJECT 159}; 160 161enum class ApnTypes : int32_t { 162 NONETYPE = 0, 163 DEFAULT = 1, 164 MMS = 2, 165 SUPL = 4, 166 DUN = 8, 167 HIPRI = 16, 168 FOTA = 32, 169 IMS = 64, 170 CBS = 128, 171 IA = 256, 172 EMERGENCY = 512, 173 MCX = 1024, 174 XCAP = 2048, 175 INTERNAL_DEFAULT = 4096, 176 ALL = 8191, 177}; 178 179enum class RetryScene : int32_t { 180 RETRY_SCENE_SETUP_DATA = 0, 181 RETRY_SCENE_MODEM_DEACTIVATE = 1, 182 RETRY_SCENE_OTHERS = 2, 183}; 184 185static constexpr const char *DATA_CONTEXT_ROLE_ALL = "*"; 186static constexpr const char *DATA_CONTEXT_ROLE_DEFAULT = "default"; 187static constexpr const char *DATA_CONTEXT_ROLE_MMS = "mms"; 188static constexpr const char *DATA_CONTEXT_ROLE_SUPL = "supl"; 189static constexpr const char *DATA_CONTEXT_ROLE_DUN = "dun"; 190static constexpr const char *DATA_CONTEXT_ROLE_IMS = "ims"; 191static constexpr const char *DATA_CONTEXT_ROLE_IA = "ia"; 192static constexpr const char *DATA_CONTEXT_ROLE_EMERGENCY = "emergency"; 193static constexpr const char *DATA_CONTEXT_ROLE_INTERNAL_DEFAULT = "internal_default"; 194static constexpr const char *DATA_CONTEXT_ROLE_XCAP = "xcap"; 195static const int32_t DATA_PROFILE_DEFAULT = 0; 196static const int32_t DATA_PROFILE_MMS = 1; 197static const int32_t DATA_PROFILE_INTERNAL_DEFAULT = 2; 198static const int32_t DATA_PROFILE_SUPL = 3; 199static const int32_t DATA_PROFILE_DUN = 4; 200static const int32_t DATA_PROFILE_IA = 5; 201static const int32_t DATA_PROFILE_XCAP = 6; 202static const int32_t CMCC_MCC_MNC = 46002; 203static const int32_t DEFAULT_AUTH_TYPE = 0; 204static const int32_t DEFAULT_MTU = 1500; 205static const uint8_t DEFAULT_STRENGTH = 20; 206static const uint32_t DEFAULT_FREQUENCY = 50; 207static const int64_t CORE_INIT_DELAY_TIME = 1000; 208static const int32_t MASK_BYTE_BIT = 8; 209static const int32_t IPV4_BIT = 32; 210static const int32_t IPV6_BIT = 128; 211static const int32_t MIN_IPV6_ITEM = 16; 212static const int32_t MAX_IPV4_ITEM = 8; 213static const int32_t MIN_IPV4_ITEM = 4; 214static constexpr const char *DEFAULT_OPERATOR_NUMERIC = "46001"; 215static constexpr const char *DATA_METERED_CONTEXT_ROLES = "default"; 216static constexpr const char *IS_CELLULAR_DATA_ENABLE = "isCellularDataEnable"; 217static constexpr const char *IS_ROAMING = "isRoaming"; 218static constexpr const char *SETTING_SWITCH = "settingSwitch"; 219static constexpr const char *IDENT_PREFIX = "simId"; 220static constexpr const char *DEFAULT_HOSTNAME = ""; 221static constexpr const char *DEFAULT_MASK = ""; 222static constexpr const char *CELLULAR_DATA_RDB_URI = "datashare:///com.ohos.pdpprofileability"; 223static constexpr const char *CELLULAR_DATA_RDB_SELECTION = 224 "datashare:///com.ohos.pdpprofileability/net/pdp_profile"; 225static constexpr const char *CELLULAR_DATA_RDB_RESET = 226 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/reset"; 227static constexpr const char *CELLULAR_DATA_RDB_PREFER = 228 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/preferapn"; 229static constexpr const char *CELLULAR_DATA_RDB_INIT = 230 "datashare:///com.ohos.pdpprofileability/net/pdp_profile/init"; 231static constexpr const char *CELLULAR_DATA_SETTING_URI = 232 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true"; 233static constexpr const char *CELLULAR_DATA_SETTING_EXT_URI = "datashare:///com.ohos.settingsdata.DataAbility"; 234static constexpr const char *CELLULAR_DATA_SETTING_DATA_ENABLE_URI = 235 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_enable"; 236static constexpr const char *CELLULAR_DATA_SETTING_DATA_ROAMING_URI = 237 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_roaming_enable"; 238static constexpr const char *CELLULAR_DATA_SETTING_DATA_INCALL_URI = 239 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=cellular_data_incall_enable"; 240static constexpr const char *CELLULAR_DATA_SETTING_INTELLIGENCE_SWITCH_URI = 241 "datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?" 242 "Proxy=true&key=intelligence_card_switch_enable"; 243static const int32_t DEFAULT_NET_STATISTICS_PERIOD = 3 * 1000; 244static const int32_t DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 60 * 10; 245static const int32_t DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 10; 246static const int32_t ESTABLISH_DATA_CONNECTION_DELAY = 1 * 1000; 247static const int32_t CONNECTION_DISCONNECTION_TIMEOUT = 180 * 1000; 248static const int32_t RECOVERY_TRIGGER_PACKET = 10; 249static const int32_t ERROR_APN_ID = -1; 250static const int32_t VALID_IP_SIZE = 2; 251static const int32_t TYPE_REQUEST_NET = 1; 252static const int32_t TYPE_RELEASE_NET = 0; 253static const int32_t DEFAULT_READ_APN_TIME = 2; 254static const int32_t DEFAULT_MCC_SIZE = 3; 255static const int32_t NULL_POINTER_EXCEPTION = -1; 256static const int32_t PATH_PARAMETER_SIZE = 128; 257static constexpr const char *ROUTED_IPV4 = "0.0.0.0"; 258static constexpr const char *ROUTED_IPV6 = "::"; 259static constexpr const char *CONFIG_DOWNLINK_THRESHOLDS = "persist.sys.data.downlink"; 260static constexpr const char *CONFIG_UPLINK_THRESHOLDS = "persist.sys.data.uplink"; 261static constexpr const char *CONFIG_TCP_BUFFER = "persist.sys.data.tcpbuffer"; 262static constexpr const char *CONFIG_PREFERAPN = "persist.sys.data.preferapn"; 263static constexpr const char *CONFIG_MOBILE_MTU = "persist.sys.data.mobilemtu"; 264static constexpr const char *CONFIG_DATA_SERVICE_EXT_PATH = "persist.sys.data.dataextpath"; 265static constexpr const char *CONFIG_MULTIPLE_CONNECTIONS = "persist.sys.data.multiple.connections"; 266static constexpr const char *CAPACITY_THRESHOLDS_FOR_DOWNLINK = "100,500,1000,5000,10000,20000,50000,75000," 267 "100000,200000,500000,1000000,1500000,2000000"; 268static constexpr const char *CAPACITY_THRESHOLDS_FOR_UPLINK = "100,500,1000,5000,10000,20000,50000,75000," 269 "100000,200000,500000"; 270static constexpr const char *DEFAULT_TCP_BUFFER_CONFIG = "UMTS:58254,349525,1048576,58254,349525,1048576;" 271 "HSPA:40778,244668,734003,16777,100663,301990;" 272 "HSUPA:131072,262144,2441216,4096,16384,399360;" 273 "HSDPA:61167,367002,1101005,8738,52429,262114;" 274 "HSPAP:122334,734003,2202010,32040,192239,576717;" 275 "EDGE:4093,26280,70800,4096,16384,70800;" 276 "eHRPD:131072,262144,1048576,4096,16384,524288;" 277 "1xRTT:16384,32768,131072,4096,16384,102400;" 278 "GPRS:4092,8760,48000,4096,8760,48000;" 279 "EVDO:4094,87380,262144,4096,16384,262144;" 280 "LTE:524288,4194304,8388608,262144,524288,1048576;" 281 "NR:2097152,6291456,16777216,512000,2097152,8388608;" 282 "LTE_CA:4096,6291456,12582912,4096,1048576,2097152"; 283constexpr const char *DEFAULT_BANDWIDTH_CONFIG = 284 "GPRS:24,24;EDGE:70,18;UMTS:115,115;CDMA-IS95A:14,14;" 285 "CDMA-IS95B:14,14;1xRTT:30,30;EvDo-rev.0:750,48;EvDo-rev.A:950,550;HSDPA:4300,620;" 286 "HSUPA:4300,1800;HSPA:4300,1800;EvDo-rev.B:1500,550;eHRPD:750,48;HSPAP:13000,3400;" 287 "TD-SCDMA:115,115;LTE:30000,15000;NR_NSA:47000,18000;NR_NSA_MMWAVE:145000,60000;" 288 "NR_SA:145000,60000"; 289static constexpr const char *DEFAULT_PREFER_APN = "1"; 290static constexpr const char *DEFAULT_MOBILE_MTU = "1500"; 291static constexpr const char *DEFAULT_MULTIPLE_CONNECTIONS = "1"; 292static const int MAX_BUFFER_SIZE = 1024; 293static const int MIN_BUFFER_SIZE = 5; 294static const int UP_DOWN_LINK_SIZE = 100; 295static const int32_t VALID_VECTOR_SIZE = 2; 296static const int32_t DELAY_SET_RIL_BANDWIDTH_MS = 3000; 297static const int32_t DELAY_SET_RIL_UP_DOWN_BANDWIDTH_MS = 50; 298static constexpr const char *CELLULAR_DATA_COLUMN_ENABLE = "cellular_data_enable"; 299static constexpr const char *CELLULAR_DATA_COLUMN_ROAMING = "cellular_data_roaming_enable"; 300static constexpr const char *CELLULAR_DATA_COLUMN_INCALL = "cellular_data_incall_enable"; 301static constexpr const char *INTELLIGENCE_SWITCH_COLUMN_ENABLE = "intelligence_card_switch_enable"; 302static constexpr const char *CELLULAR_DATA_COLUMN_KEYWORD = "KEYWORD"; 303static constexpr const char *CELLULAR_DATA_COLUMN_VALUE = "VALUE"; 304static const int32_t INVALID_SIM_ID = 0; 305static const int32_t INVALID_SLOT_ID = -1; 306static const int32_t CELLULAR_DATA_VSIM_SLOT_ID = 2; 307static const int32_t SUPPLIER_INVALID_REG_STATE = -1; 308static const int32_t INVALID_DELAY_NO_RETRY = -1; 309} // namespace Telephony 310} // namespace OHOS 311#endif // CELLULAR_DATA_CONSTANT_H 312