• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021-2022 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 OHOS_RIL_TYPE_H
17 #define OHOS_RIL_TYPE_H
18 
19 #include <locale>
20 
21 #include "hril.h"
22 
23 namespace OHOS {
24 namespace Telephony {
25 enum class HRilErrType : int32_t {
26     /** No error */
27     NONE = 0,
28 
29     /** An error that not included in bellow items */
30     HRIL_ERR_GENERIC_FAILURE,
31 
32     /** Invalid parameter */
33     HRIL_ERR_INVALID_PARAMETER,
34 
35     /** Full memory */
36     HRIL_ERR_MEMORY_FULL,
37 
38     /** Send command failed */
39     HRIL_ERR_CMD_SEND_FAILURE,
40 
41     /** NO CARRIER response returned */
42     HRIL_ERR_CMD_NO_CARRIER,
43 
44     /** The response is invalid */
45     HRIL_ERR_INVALID_RESPONSE,
46 
47     /** The new status of radio to set is same with previous */
48     HRIL_ERR_REPEAT_STATUS,
49 
50     /** Network search error */
51     HRIL_ERR_NETWORK_SEARCHING,
52 
53     /** Network search interrupted */
54     HRIL_ERR_NETWORK_SEARCHING_INTERRUPTED,
55 
56     /** The AT channel is closed */
57     HRIL_ERR_MODEM_DEVICE_CLOSE,
58 
59     /** No sim card error */
60     HRIL_ERR_NO_SIMCARD_INSERTED,
61 
62     /** Need pin code */
63     HRIL_ERR_NEED_PIN_CODE,
64 
65     /** Need puk code */
66     HRIL_ERR_NEED_PUK_CODE,
67 
68     /** Network search timeout */
69     HRIL_ERR_NETWORK_SEARCH_TIMEOUT,
70 
71     /** Pin or puk password is not correct */
72     HRIL_ERR_PINPUK_PASSWORD_NOCORRECT,
73 
74     /** Invalid modem parameter */
75     HRIL_ERR_INVALID_MODEM_PARAMETER = 50,
76 
77     /** IPC failure */
78     HRIL_ERR_HDF_IPC_FAILURE = 300,
79 
80     /** Null point error */
81     HRIL_ERR_NULL_POINT,
82 
83     /** Vendor not implement error. */
84     HRIL_ERR_VENDOR_NOT_IMPLEMENT
85 };
86 
87 enum class HRilNotiType { HRIL_NOTIFICATION, HRIL_NO_DEFINE };
88 
89 /**
90  * @brief Indicates the specific APN type.
91  */
92 enum class HRilApnTypes : int32_t {
93     /** None */
94     NONE = 0,
95 
96     /** APN type for default data traffic */
97     DEFAULT = 1,
98 
99     /** APN type for MMS traffic */
100     MMS = 2,
101 
102     /** APN type for SUPL assisted GPS */
103     SUPL = 4,
104 
105     /** APN type for DUN traffic */
106     DUN = 8,
107 
108     /** APN type for HiPri traffic */
109     HIPRI = 16,
110 
111     /** APN type for FOTA */
112     FOTA = 32,
113 
114     /** APN type for IMS */
115     IMS = 64,
116 
117     /** APN type for CBS */
118     CBS = 128,
119 
120     /** APN type for IA Initial Attach APN */
121     IA = 256,
122 
123     /** APN type for Emergency PDN */
124     EMERGENCY = 512,
125 
126     ALL = 1023,
127 };
128 
129 /**
130  * @brief Indicates whether the hril notification need lock.
131  */
132 enum HRilRunningLockTypes { UNNEED_LOCK, NEED_LOCK };
133 
134 /**
135  * @brief Indicates the hril response type.
136  */
137 enum HRilResponseTypes {
138     HRIL_RESPONSE_REQUEST,
139     HRIL_RESPONSE_NOTICE,
140     HRIL_RESPONSE_REQUEST_ACK,
141     HRIL_RESPONSE_REQUEST_MUST_ACK,
142     HRIL_RESPONSE_NOTICE_MUST_ACK,
143 };
144 
145 /**
146  * @brief From 3GPP TS 27.007 V4.3.0 (2001-12) 8.5, AT + CSQ.
147  */
148 struct GsmRssi {
149     /**
150      * Received Signal Strength Indication, value range 0 ~ 31, max is 99,
151      * if unknown then set to max
152      */
153     int32_t rxlev = 0;
154 
155     /**
156      * Bit error rate, value range 0 ~ 7, max is 99, if unknown then set to
157      * max as RXQUAL values in the table in TS 45.008 [20] subclauses 8.2.4.
158      */
159     int32_t ber = 0;
160 };
161 
162 /**
163  * @brief From 3GPP TS 27.007 V17.1.0 (2021-03) 8.69.
164  */
165 struct CdmaRssi {
166     /**
167      * Absolute value of signal strength. This value is the actual Rssi value
168      * multiplied by -1. e.g: Rssi is -75, then this response value will be 75.
169      */
170     int32_t absoluteRssi = 0;
171 
172     /**
173      * integer type, ratio of the received energy per PN chip to the total
174      * received power spectral density (see 3GPP TS 25.133 [95] subclauses)
175      */
176     int32_t ecno = 0;
177 };
178 
179 /**
180  * @brief Indicates some parameters which can reflect the strength of WCDMA signal.
181  */
182 struct WCdmaRssi {
183     /**
184      * integer type, received signal strength level (see 3GPP TS 45.008 [20]
185      * sub-clause 8.1.4) value 0~99.
186      */
187     int32_t rxlev = 0;
188 
189     /**
190      * integer type, ratio of the received energy per PN chip to the total
191      * received power spectral density (see 3GPP TS 25.133 [95] sub-clause).
192      */
193     int32_t ecio = 0;
194 
195     /**
196      * integer type, received signal code power (see 3GPP TS 25.133 [95]
197      * sub-clause 9.1.1.3 and 3GPP TS 25.123 [96] sub-clause 9.1.1.1.3).
198      * range value 0 ~ 96, 255 not known or not detectable.
199      */
200     int32_t rscp = 0;
201 
202     /**
203      * Bit error rate, value range 0 ~ 7, max is 99, if unknown then set to
204      * max
205      */
206     int32_t ber = 0;
207 };
208 
209 /**
210  * @brief Indicates some parameters which can reflect the strength of LTE signal.
211  */
212 struct LteRssi {
213     /**
214      * integer type, received signal strength level
215      * (see 3GPP TS 45.008 [20] sub-clause 8.1.4) value 0~99.
216      */
217     int32_t rxlev = 0;
218 
219     /**
220      * integer type, reference signal received quality (see 3GPP TS 36.133 [96] sub-clause 9.1.7)
221      * value range 0~33, 255 not known or not detectable.
222      */
223     int32_t rsrq = 0;
224 
225     /**
226      * integer type, reference signal received power (see 3GPP TS 36.133 [96] sub-clause 9.1.4)
227      * value range 0~97, 255 not known or not detectable.
228      */
229     int32_t rsrp = 0;
230 
231     /**
232      * integer type, representing the signal-to-interference plus noise ratio, suitable for LTE mode
233      * value range 0~251, 255 not known or not detectable.
234      */
235     int32_t snr = 0;
236 };
237 
238 /**
239  * @brief Indicates some parameters which can reflect the strength of TD-SCDMA signal.
240  */
241 struct TdScdmaRssi {
242     int32_t rscp = 0;
243 };
244 
245 /**
246  * @brief Indicates some parameters which can reflect the strength of NR signal.
247  */
248 struct NrRssi {
249     int32_t rsrp = 0;
250     int32_t rsrq = 0;
251     int32_t sinr = 0;
252 };
253 
254 /**
255  * @brief Indicates signal level of some RATs.
256  */
257 struct Rssi {
258     GsmRssi gw;
259     CdmaRssi cdma;
260     WCdmaRssi wcdma;
261     LteRssi lte;
262     TdScdmaRssi tdScdma;
263     NrRssi nr;
264 };
265 
266 /**
267  * @brief From 3GPP TS 27.007 V4.3.0 (2001-12).
268  */
269 struct GetCallWaitingInfo {
270     /** 0: not active, 1:active */
271     int32_t status = 0;
272 
273     /** <classx> default, SLM790 is 255 */
274     int32_t typeClass = 0;
275 };
276 
277 struct HRilResponseHeadInfo {
278     int32_t slotId = 0;
279     HRilResponseTypes type = HRilResponseTypes::HRIL_RESPONSE_REQUEST;
280 };
281 
282 /**
283  * @brief Indicates the response information, for example whether the
284  * request is success, serial number, response type etc.
285  */
286 struct HRilRadioResponseInfo {
287     int32_t flag = -1;
288     int32_t serial = -1;
289     HRilErrType error = HRilErrType::NONE;
290     HRilResponseTypes type = HRilResponseTypes::HRIL_RESPONSE_REQUEST;
291 };
292 
293 struct HRilRadioStateInfo {
294     int64_t flag = 0;
295     int32_t state = 0;
296 };
297 
298 enum HRilCommonNumber {
299     HRIL_DEC = 10,
300     HRIL_INVALID_HEX_CHAR = 16,
301     HRIL_UPPER_CASE_LETTERS_OFFSET = 32,
302     HRIL_ADAPTER_RADIO_INDICATION = 2001,
303     HRIL_ADAPTER_RADIO_RESPONSE = 2002,
304     HRIL_ADAPTER_RADIO_SEND_ACK,
305 };
306 
307 enum HRilOperatorInfoResult {
308     HRIL_LONE_NAME = 0,
309     HRIL_SHORT_NAME,
310     HRIL_NUMERIC,
311 };
312 
313 enum HRilCircuitModeRegState {
314     /** Not registered, MT is not searching an operator */
315     HRIL_STAT_NO_REG_MT_NO_SEARCHING_OP = 0,
316 
317     /** Registered, home network */
318     HRIL_STAT_REGISTERED_HOME_NETWORK = 1,
319 
320     /**
321      * Not registered, but MT is currently trying to attach or searching an
322      * operator
323      */
324     HRIL_STAT_NO_REGISTERED_MT_TRY_ATTACH = 2,
325 
326     /** Registration denied */
327     HRIL_STAT_REGISTERED_DENIED = 3,
328 
329     /** Unknown (e.g. out of GERAN/UTRAN coverage) */
330     HRIL_STAT_UNKNOWN = 4,
331 
332     /** Registered, roaming */
333     HRIL_STAT_REGISTERED_ROAMING = 5,
334 };
335 
336 enum HRilServiceSupportStat {
337     HRIL_SERVICE_NO_SUPPORT = 0,
338     HRIL_SERVICE_SUPPORT = 1,
339 };
340 
341 /**
342  * @brief Indicates the data denied reason, from 3GPP TS 27.007 V17.1.0 9.2.2.1.1.
343  */
344 enum HRilReasonDataDenied {
345     HREASON_GPRS_SERVICE_NOT_ALLOW = 0,
346     HREASON_GPRS_AND_NON_GPRS_SERVICE_NOT_ALLOW = 1,
347     HREASON_MS_IDENTITY_CANNOT_BE_DERIVED = 2,
348     HREASON_IMPLICITLY_DETACHED = 3,
349     HREASON_GPRS_SERVICE_NOT_ALLOW_IN_PLMN = 4,
350     HREASON_MSC_TEM_NOT_REACH = 5,
351     HREASON_NO_DPD_CONTEXT_ACTIVATED = 6,
352 };
353 
354 enum HRilNetworkMode {
355     HRIL_NETWORK_AUTOMATIC_MODE = 0,
356     HRIL_NETWORK_MANUAL_MODE,
357 };
358 
359 /**
360  * @brief Indicates the specific IMS type.
361  */
362 enum HRilIMSRegType {
363     /** VoLTE type */
364     NETWORK_IMS_REG_FEATURE_TYPE_VOLTE = 0x01,
365 
366     /** SMS over IP type */
367     NETWORK_IMS_REG_FEATURE_TYPE_SMS = 0x02,
368 
369     /** RCS type */
370     NETWORK_IMS_REG_FEATURE_TYPE_RCS = 0x04,
371 
372     /** VT type */
373     NETWORK_IMS_REG_FEATURE_TYPE_VT = 0x08,
374 };
375 
376 /** CS registration response */
377 static constexpr uint32_t HRIL_CS_REG_STATE = 1;
378 static constexpr uint32_t HRIL_CS_REG_RESP_ACT = 4;
379 static constexpr uint32_t HRIL_RSSNR = 7;
380 static constexpr uint32_t HRIL_CS_REG_RESP_ROAMING_INDICATOR = 10;
381 static constexpr uint32_t HRIL_CS_REG_RESP_SYSTEM_IS_IN_PRL = 11;
382 static constexpr uint32_t HRIL_CS_REG_RESP_DEFAULT_ROAMING_INDICATOR = 12;
383 static constexpr uint32_t HRIL_CS_REG_RESP_TIMING_ADVANCE = 13;
384 static constexpr uint32_t HRIL_CS_REG_STATUS_MAX_LEN = 5;
385 
386 /** PS registration response */
387 static constexpr uint32_t HRIL_PS_REG_STATUS_MAX_LEN = 5;
388 static constexpr uint32_t HRIL_PS_RADIO_TECHNOLOGY = 4;
389 static constexpr uint32_t HRIL_PS_DENIED_ERROR_CODE = 4;
390 static constexpr uint32_t HRIL_PS_MAX_DATA_CALLS = 5;
391 static constexpr uint32_t HRIL_PS_DEF_DATA_CALLS_VAL = 1;
392 
393 static constexpr uint32_t HRIL_LOCATION_REG_STATE = 1;
394 static constexpr uint32_t HRIL_LOCATION_LOC = 2;
395 static constexpr uint32_t HRIL_LOCATION_CI = 3;
396 
397 /** IMS registration response */
398 static constexpr uint32_t HRIL_IMS_REG_STATUS_MAX_LEN = 2;
399 static constexpr uint32_t HRIL_IMS_REG_STATUS = 0;
400 static constexpr uint32_t HRIL_IMS_REG_FLAG = 1;
401 
402 static constexpr uint32_t HRIL_NETWORKS_SELECT_MODE = 0;
403 
404 /** Get the number of SIM cards in the system configuration */
405 inline const int32_t HRIL_SYSPARA_SIZE = 128;
406 inline constexpr const char *HRIL_DEFAULT_SLOT_COUNT = "1";
407 inline constexpr const char *HRIL_TEL_SIM_SLOT_COUNT = "const.telephony.slotCount";
408 
409 /** Interface token */
410 inline const std::u16string HRIL_INTERFACE_TOKEN = u"ohos.telephony.hril";
411 } // namespace Telephony
412 } // namespace OHOS
413 #endif // TELEPHONY_N_TYPE_H
414