1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.radio@1.0;
18
19enum RadioConst : int32_t {
20    CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
21    CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
22    MAX_RILDS = 3,
23    MAX_SOCKET_NAME_LENGTH = 6,
24    MAX_CLIENT_ID_LENGTH = 2,
25    MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
26    MAX_QEMU_PIPE_NAME_LENGTH = 11,
27    MAX_UUID_LENGTH = 64,
28    CARD_MAX_APPS = 8,
29    CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
30    SS_INFO_MAX = 4,
31    NUM_SERVICE_CLASSES = 7,
32    NUM_TX_POWER_LEVELS = 5,
33};
34
35enum RadioCdmaSmsConst : int32_t {
36    ADDRESS_MAX = 36,
37    SUBADDRESS_MAX = 36,
38    BEARER_DATA_MAX = 255,
39    UDH_MAX_SND_SIZE = 128,
40    UDH_EO_DATA_SEGMENT_MAX = 131,
41    MAX_UD_HEADERS = 7,
42    USER_DATA_MAX = 229,
43    UDH_LARGE_PIC_SIZE = 128,
44    UDH_SMALL_PIC_SIZE = 32,
45    UDH_VAR_PIC_SIZE = 134,
46    UDH_ANIM_NUM_BITMAPS = 4,
47    UDH_LARGE_BITMAP_SIZE = 32,
48    UDH_SMALL_BITMAP_SIZE = 8,
49    UDH_OTHER_SIZE = 226,
50    IP_ADDRESS_SIZE = 4,
51};
52
53enum RadioError : int32_t {
54    NONE = 0,                             // Success
55    RADIO_NOT_AVAILABLE = 1,              // If radio did not start or is resetting
56    GENERIC_FAILURE = 2,
57    PASSWORD_INCORRECT = 3,               // for PIN/PIN2 methods only
58    SIM_PIN2 = 4,                         // Operation requires SIM PIN2 to be entered
59    SIM_PUK2 = 5,                         // Operation requires SIM PIN2 to be entered
60    REQUEST_NOT_SUPPORTED = 6,
61    CANCELLED = 7,
62    OP_NOT_ALLOWED_DURING_VOICE_CALL = 8, // data ops are not allowed during voice
63                                          // call on a Class C GPRS device
64    OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,  // data ops are not allowed before device
65                                          // registers in network
66    SMS_SEND_FAIL_RETRY = 10,             // fail to send sms and need retry
67    SIM_ABSENT = 11,                      // fail to set the location where CDMA subscription
68                                          // shall be retrieved because of SIM or RUIM
69                                          // card absent
70    SUBSCRIPTION_NOT_AVAILABLE = 12,      // fail to find CDMA subscription from specified
71                                          // location
72    MODE_NOT_SUPPORTED = 13,              // HW does not support preferred network type
73    FDN_CHECK_FAILURE = 14,               // command failed because recipient is not on FDN list
74    ILLEGAL_SIM_OR_ME = 15,               // network selection failed due to illegal SIM or ME
75    MISSING_RESOURCE = 16,                // no logical channel available
76    NO_SUCH_ELEMENT = 17,                 // application not found on SIM
77    DIAL_MODIFIED_TO_USSD = 18,           // DIAL request modified to USSD
78    DIAL_MODIFIED_TO_SS = 19,             // DIAL request modified to SS
79    DIAL_MODIFIED_TO_DIAL = 20,           // DIAL request modified to DIAL with different data
80    USSD_MODIFIED_TO_DIAL = 21,           // USSD request modified to DIAL
81    USSD_MODIFIED_TO_SS = 22,             // USSD request modified to SS
82    USSD_MODIFIED_TO_USSD = 23,           // USSD request modified to different USSD request
83    SS_MODIFIED_TO_DIAL = 24,             // SS request modified to DIAL
84    SS_MODIFIED_TO_USSD = 25,             // SS request modified to USSD
85    SUBSCRIPTION_NOT_SUPPORTED = 26,      // Subscription not supported by RIL
86    SS_MODIFIED_TO_SS = 27,               // SS request modified to different SS request
87    LCE_NOT_SUPPORTED = 36,               // LCE service not supported(36 in RILConstants.java)
88    NO_MEMORY = 37,                       // Not sufficient memory to process the request
89    INTERNAL_ERR = 38,                    // Modem hit unexpected error scenario while handling
90                                          // this request
91    SYSTEM_ERR = 39,                      // Hit platform or system error
92    MODEM_ERR = 40,                       // Vendor RIL got unexpected or incorrect response
93                                          // from modem for this request
94    INVALID_STATE = 41,                   // Unexpected request for the current state
95    NO_RESOURCES = 42,                    // Not sufficient resource to process the request
96    SIM_ERR = 43,                         // Received error from SIM card
97    INVALID_ARGUMENTS = 44,               // Received invalid arguments in request
98    INVALID_SIM_STATE = 45,               // Cannot process the request in current SIM state
99    INVALID_MODEM_STATE = 46,             // Cannot process the request in current Modem state
100    INVALID_CALL_ID = 47,                 // Received invalid call id in request
101    NO_SMS_TO_ACK = 48,                   // ACK received when there is no SMS to ack
102    NETWORK_ERR = 49,                     // Received error from network
103    REQUEST_RATE_LIMITED = 50,            // Operation denied due to overly-frequent requests
104    SIM_BUSY = 51,                        // SIM is busy
105    SIM_FULL = 52,                        // The target EF is full
106    NETWORK_REJECT = 53,                  // Request is rejected by network
107    OPERATION_NOT_ALLOWED = 54,           // Not allowed the request now
108    EMPTY_RECORD = 55,                    // The request record is empty
109    INVALID_SMS_FORMAT = 56,              // Invalid sms format
110    ENCODING_ERR = 57,                    // Message not encoded properly
111    INVALID_SMSC_ADDRESS = 58,            // SMSC address specified is invalid
112    NO_SUCH_ENTRY = 59,                   // No such entry present to perform the request
113    NETWORK_NOT_READY = 60,               // Network is not ready to perform the request
114    NOT_PROVISIONED = 61,                 // Device does not have this value provisioned
115    NO_SUBSCRIPTION = 62,                 // Device does not have subscription
116    NO_NETWORK_FOUND = 63,                // Network cannot be found
117    DEVICE_IN_USE = 64,                   // Operation cannot be performed because the device
118                                          // is currently in use
119    ABORTED = 65,                         // Operation aborted
120    INVALID_RESPONSE = 66,                // Response from vendor had invalid data
121
122    OEM_ERROR_1 = 501,
123    OEM_ERROR_2 = 502,
124    OEM_ERROR_3 = 503,
125    OEM_ERROR_4 = 504,
126    OEM_ERROR_5 = 505,
127    OEM_ERROR_6 = 506,
128    OEM_ERROR_7 = 507,
129    OEM_ERROR_8 = 508,
130    OEM_ERROR_9 = 509,
131    OEM_ERROR_10 = 510,
132    OEM_ERROR_11 = 511,
133    OEM_ERROR_12 = 512,
134    OEM_ERROR_13 = 513,
135    OEM_ERROR_14 = 514,
136    OEM_ERROR_15 = 515,
137    OEM_ERROR_16 = 516,
138    OEM_ERROR_17 = 517,
139    OEM_ERROR_18 = 518,
140    OEM_ERROR_19 = 519,
141    OEM_ERROR_20 = 520,
142    OEM_ERROR_21 = 521,
143    OEM_ERROR_22 = 522,
144    OEM_ERROR_23 = 523,
145    OEM_ERROR_24 = 524,
146    OEM_ERROR_25 = 525,
147};
148
149enum RadioResponseType : int32_t {
150    SOLICITED,
151    SOLICITED_ACK,
152    SOLICITED_ACK_EXP,
153};
154
155enum RadioIndicationType : int32_t {
156    UNSOLICITED,
157    UNSOLICITED_ACK_EXP,
158};
159
160enum RestrictedState : int32_t {
161    NONE = 0x00,
162    CS_EMERGENCY = 0x01,
163    CS_NORMAL = 0x02,
164    CS_ALL = 0x04,
165    PS_ALL = 0x10,
166};
167
168enum CardState : int32_t {
169    ABSENT,
170    PRESENT,
171    ERROR,
172    RESTRICTED,                           // card is present but not usable due to carrier
173                                          // restrictions
174};
175
176enum PinState : int32_t {
177    UNKNOWN,
178    ENABLED_NOT_VERIFIED,
179    ENABLED_VERIFIED,
180    DISABLED,
181    ENABLED_BLOCKED,
182    ENABLED_PERM_BLOCKED,
183};
184
185enum AppType : int32_t {
186    UNKNOWN,
187    SIM,
188    USIM,
189    RUIM,
190    CSIM,
191    ISIM,
192};
193
194enum AppState : int32_t {
195    UNKNOWN,
196    DETECTED,
197    PIN,                                  // If PIN1 or UPin is required
198    PUK,                                  // If PUK1 or Puk for UPin is required
199    SUBSCRIPTION_PERSO,                   // perso_substate must be look at when app_state is
200                                          // assigned to this value
201    READY,
202};
203
204enum PersoSubstate : int32_t {
205    UNKNOWN,                              // initial state
206    IN_PROGRESS,                          // in between each lock transition
207    READY,                                // when either SIM or RUIM Perso is finished since each
208                                          // app must only have 1 active perso involved
209    SIM_NETWORK,
210    SIM_NETWORK_SUBSET,
211    SIM_CORPORATE,
212    SIM_SERVICE_PROVIDER,
213    SIM_SIM,
214    SIM_NETWORK_PUK,                      // The corresponding perso lock is blocked
215    SIM_NETWORK_SUBSET_PUK,
216    SIM_CORPORATE_PUK,
217    SIM_SERVICE_PROVIDER_PUK,
218    SIM_SIM_PUK,
219    RUIM_NETWORK1,
220    RUIM_NETWORK2,
221    RUIM_HRPD,
222    RUIM_CORPORATE,
223    RUIM_SERVICE_PROVIDER,
224    RUIM_RUIM,
225    RUIM_NETWORK1_PUK,                    // The corresponding perso lock is blocked
226    RUIM_NETWORK2_PUK,
227    RUIM_HRPD_PUK,
228    RUIM_CORPORATE_PUK,
229    RUIM_SERVICE_PROVIDER_PUK,
230    RUIM_RUIM_PUK,
231};
232
233enum RadioState : int32_t {
234    OFF = 0,                              // Radio explicitly powered off (eg CFUN=0)
235    UNAVAILABLE = 1,                      // Radio unavailable (eg, resetting or not booted)
236    ON = 10,                              // Radio is ON
237};
238
239enum SapConnectRsp : int32_t {
240    SUCCESS,
241    CONNECT_FAILURE,
242    MSG_SIZE_TOO_LARGE,
243    MSG_SIZE_TOO_SMALL,
244    CONNECT_OK_CALL_ONGOING,
245};
246
247enum SapDisconnectType : int32_t {
248    GRACEFUL,
249    IMMEDIATE,
250};
251
252enum SapApduType : int32_t {
253    APDU,
254    APDU7816,
255};
256
257enum SapResultCode : int32_t {
258    SUCCESS,
259    GENERIC_FAILURE,
260    CARD_NOT_ACCESSSIBLE,
261    CARD_ALREADY_POWERED_OFF,
262    CARD_REMOVED,
263    CARD_ALREADY_POWERED_ON,
264    DATA_NOT_AVAILABLE,
265    NOT_SUPPORTED,
266};
267
268enum SapStatus : int32_t {
269    UNKNOWN_ERROR,
270    CARD_RESET,
271    CARD_NOT_ACCESSIBLE,
272    CARD_REMOVED,
273    CARD_INSERTED,
274    RECOVERED,
275};
276
277enum SapTransferProtocol : int32_t {
278    T0,
279    T1,
280};
281
282enum CallState : int32_t {
283    ACTIVE,
284    HOLDING,
285    DIALING,                              // MO call only
286    ALERTING,                             // MO call only
287    INCOMING,                             // MT call only
288    WAITING,                              // MT call only
289};
290
291/**
292 * User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0
293 */
294enum UusType : int32_t {
295    TYPE1_IMPLICIT,
296    TYPE1_REQUIRED,
297    TYPE1_NOT_REQUIRED,
298    TYPE2_REQUIRED,
299    TYPE2_NOT_REQUIRED,
300    TYPE3_REQUIRED,
301    TYPE3_NOT_REQUIRED,
302};
303
304/**
305 * User-to-User Signaling Information data coding schemes. Possible values for
306 * Octet 3 (Protocol Discriminator field) in the UUIE. The values have been
307 * specified in section 10.5.4.25 of 3GPP TS 24.008
308 */
309enum UusDcs : int32_t {
310    USP,                                  // User specified protocol
311    OSIHLP,                               // OSI higher layer protocol
312    X244,                                 // X.244
313    RMCF,                                 // Reserved for system management convergence function
314    IA5C,                                 // IA5 characters
315};
316
317enum CallPresentation : int32_t {
318    ALLOWED,
319    RESTRICTED,
320    UNKNOWN,
321    PAYPHONE,
322};
323
324enum Clir : int32_t {
325    DEFAULT,                              // "use subscription default value"
326    INVOCATION,                           // restrict CLI presentation
327    SUPPRESSION,                          // allow CLI presentation
328};
329
330enum LastCallFailCause : int32_t {
331    UNOBTAINABLE_NUMBER = 1,
332    NO_ROUTE_TO_DESTINATION = 3,
333    CHANNEL_UNACCEPTABLE = 6,
334    OPERATOR_DETERMINED_BARRING = 8,
335    NORMAL = 16,
336    BUSY = 17,
337    NO_USER_RESPONDING = 18,
338    NO_ANSWER_FROM_USER = 19,
339    CALL_REJECTED = 21,
340    NUMBER_CHANGED = 22,
341    PREEMPTION = 25,
342    DESTINATION_OUT_OF_ORDER = 27,
343    INVALID_NUMBER_FORMAT = 28,
344    FACILITY_REJECTED = 29,
345    RESP_TO_STATUS_ENQUIRY = 30,
346    NORMAL_UNSPECIFIED = 31,
347    CONGESTION = 34,
348    NETWORK_OUT_OF_ORDER = 38,
349    TEMPORARY_FAILURE = 41,
350    SWITCHING_EQUIPMENT_CONGESTION = 42,
351    ACCESS_INFORMATION_DISCARDED = 43,
352    REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
353    RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
354    QOS_UNAVAILABLE = 49,
355    REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
356    INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
357    BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
358    BEARER_CAPABILITY_UNAVAILABLE = 58,
359    SERVICE_OPTION_NOT_AVAILABLE = 63,
360    BEARER_SERVICE_NOT_IMPLEMENTED = 65,
361    ACM_LIMIT_EXCEEDED = 68,
362    REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
363    ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
364    SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
365    INVALID_TRANSACTION_IDENTIFIER = 81,
366    USER_NOT_MEMBER_OF_CUG = 87,
367    INCOMPATIBLE_DESTINATION = 88,
368    INVALID_TRANSIT_NW_SELECTION = 91,
369    SEMANTICALLY_INCORRECT_MESSAGE = 95,
370    INVALID_MANDATORY_INFORMATION = 96,
371    MESSAGE_TYPE_NON_IMPLEMENTED = 97,
372    MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
373    INFORMATION_ELEMENT_NON_EXISTENT = 99,
374    CONDITIONAL_IE_ERROR = 100,
375    MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
376    RECOVERY_ON_TIMER_EXPIRED = 102,
377    PROTOCOL_ERROR_UNSPECIFIED = 111,
378    INTERWORKING_UNSPECIFIED = 127,
379    CALL_BARRED = 240,
380    FDN_BLOCKED = 241,
381    IMSI_UNKNOWN_IN_VLR = 242,
382    IMEI_NOT_ACCEPTED = 243,
383    DIAL_MODIFIED_TO_USSD = 244,          // STK Call Control
384    DIAL_MODIFIED_TO_SS = 245,
385    DIAL_MODIFIED_TO_DIAL = 246,
386    RADIO_OFF = 247,                      // Radio is OFF
387    OUT_OF_SERVICE = 248,                 // No cellular coverage
388    NO_VALID_SIM = 249,                   // No valid SIM is present
389    RADIO_INTERNAL_ERROR = 250,           // Internal error at Modem
390    NETWORK_RESP_TIMEOUT = 251,           // No response from network
391    NETWORK_REJECT = 252,                 // Explicit network reject
392    RADIO_ACCESS_FAILURE = 253,           // RRC connection failure. Eg.RACH
393    RADIO_LINK_FAILURE = 254,             // Radio Link Failure
394    RADIO_LINK_LOST = 255,                // Radio link lost due to poor coverage
395    RADIO_UPLINK_FAILURE = 256,           // Radio uplink failure
396    RADIO_SETUP_FAILURE = 257,            // RRC connection setup failure
397    RADIO_RELEASE_NORMAL = 258,           // RRC connection release, normal
398    RADIO_RELEASE_ABNORMAL = 259,         // RRC connection release, abnormal
399    ACCESS_CLASS_BLOCKED = 260,           // Access class barring
400    NETWORK_DETACH = 261,                 // Explicit network detach
401    CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
402    CDMA_DROP = 1001,
403    CDMA_INTERCEPT = 1002,
404    CDMA_REORDER = 1003,
405    CDMA_SO_REJECT = 1004,
406    CDMA_RETRY_ORDER = 1005,
407    CDMA_ACCESS_FAILURE = 1006,
408    CDMA_PREEMPTED = 1007,
409    CDMA_NOT_EMERGENCY = 1008,            // For non-emergency number dialed during emergency
410                                          // callback mode
411    CDMA_ACCESS_BLOCKED = 1009,
412
413    /**
414     * OEM specific error codes. Used to distinguish error from
415     * CALL_FAIL_ERROR_UNSPECIFIED and help assist debugging */
416    OEM_CAUSE_1 = 0xf001,
417    OEM_CAUSE_2 = 0xf002,
418    OEM_CAUSE_3 = 0xf003,
419    OEM_CAUSE_4 = 0xf004,
420    OEM_CAUSE_5 = 0xf005,
421    OEM_CAUSE_6 = 0xf006,
422    OEM_CAUSE_7 = 0xf007,
423    OEM_CAUSE_8 = 0xf008,
424    OEM_CAUSE_9 = 0xf009,
425    OEM_CAUSE_10 = 0xf00a,
426    OEM_CAUSE_11 = 0xf00b,
427    OEM_CAUSE_12 = 0xf00c,
428    OEM_CAUSE_13 = 0xf00d,
429    OEM_CAUSE_14 = 0xf00e,
430    OEM_CAUSE_15 = 0xf00f,
431
432    ERROR_UNSPECIFIED = 0xffff,           // This error will be deprecated soon,
433                                          // vendor code must make sure to map error
434                                          // code to specific error
435};
436
437enum DataCallFailCause : int32_t {
438    NONE = 0,                             // an integer cause code defined in TS 24.008
439                                          // section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
440                                          // If the implementation does not have access to the exact
441                                          // cause codes, then it must return one of the
442                                          // following values, as the UI layer needs to distinguish
443                                          // these cases for error notification and potential
444                                          // retries.
445    OPERATOR_BARRED = 0x08,               // no retry
446    NAS_SIGNALLING = 0x0E,                // PDP_FAIL_LLC_SNDCP = 0x19,
447    INSUFFICIENT_RESOURCES = 0x1A,
448    MISSING_UKNOWN_APN = 0x1B,            // no retry
449    UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,      // no retry
450    USER_AUTHENTICATION = 0x1D,           // no retry
451    ACTIVATION_REJECT_GGSN = 0x1E,        // no retry
452    ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
453    SERVICE_OPTION_NOT_SUPPORTED = 0x20,  // no retry
454    SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, // no retry
455    SERVICE_OPTION_OUT_OF_ORDER = 0x22,
456    NSAPI_IN_USE = 0x23,                  // no retry
457    REGULAR_DEACTIVATION = 0x24,          // possibly restart radio,
458                                          // based on framework config
459    QOS_NOT_ACCEPTED = 0x25,
460    NETWORK_FAILURE = 0x26,
461    UMTS_REACTIVATION_REQ = 0x27,
462    FEATURE_NOT_SUPP = 0x28,
463    TFT_SEMANTIC_ERROR = 0x29,
464    TFT_SYTAX_ERROR = 0x2A,
465    UNKNOWN_PDP_CONTEXT = 0x2B,
466    FILTER_SEMANTIC_ERROR = 0x2C,
467    FILTER_SYTAX_ERROR = 0x2D,
468    PDP_WITHOUT_ACTIVE_TFT = 0x2E,
469    ONLY_IPV4_ALLOWED = 0x32,             // no retry
470    ONLY_IPV6_ALLOWED = 0x33,             // no retry
471    ONLY_SINGLE_BEARER_ALLOWED = 0x34,
472    ESM_INFO_NOT_RECEIVED = 0x35,
473    PDN_CONN_DOES_NOT_EXIST = 0x36,
474    MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37,
475    MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41,
476    UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42,
477    INVALID_TRANSACTION_ID = 0x51,
478    MESSAGE_INCORRECT_SEMANTIC = 0x5F,
479    INVALID_MANDATORY_INFO = 0x60,
480    MESSAGE_TYPE_UNSUPPORTED = 0x61,
481    MSG_TYPE_NONCOMPATIBLE_STATE = 0x62,
482    UNKNOWN_INFO_ELEMENT = 0x63,
483    CONDITIONAL_IE_ERROR = 0x64,
484    MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65,
485    PROTOCOL_ERRORS = 0x6F,               // no retry
486    APN_TYPE_CONFLICT = 0x70,
487    INVALID_PCSCF_ADDR = 0x71,
488    INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72,
489    EMM_ACCESS_BARRED = 0x73,
490    EMERGENCY_IFACE_ONLY = 0x74,
491    IFACE_MISMATCH = 0x75,
492    COMPANION_IFACE_IN_USE = 0x76,
493    IP_ADDRESS_MISMATCH = 0x77,
494    IFACE_AND_POL_FAMILY_MISMATCH = 0x78,
495    EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79,
496    AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A,
497    OEM_DCFAILCAUSE_1 = 0x1001,
498
499    OEM_DCFAILCAUSE_2 = 0x1002,
500    OEM_DCFAILCAUSE_3 = 0x1003,
501    OEM_DCFAILCAUSE_4 = 0x1004,
502    OEM_DCFAILCAUSE_5 = 0x1005,
503    OEM_DCFAILCAUSE_6 = 0x1006,
504    OEM_DCFAILCAUSE_7 = 0x1007,
505    OEM_DCFAILCAUSE_8 = 0x1008,
506    OEM_DCFAILCAUSE_9 = 0x1009,
507    OEM_DCFAILCAUSE_10 = 0x100A,
508    OEM_DCFAILCAUSE_11 = 0x100B,
509    OEM_DCFAILCAUSE_12 = 0x100C,
510    OEM_DCFAILCAUSE_13 = 0x100D,
511    OEM_DCFAILCAUSE_14 = 0x100E,
512    OEM_DCFAILCAUSE_15 = 0x100F,
513
514    // Not mentioned in the specification
515    VOICE_REGISTRATION_FAIL = -1,
516    DATA_REGISTRATION_FAIL = -2,
517
518    // reasons for data call drop - network/modem disconnect
519    SIGNAL_LOST = -3,
520    PREF_RADIO_TECH_CHANGED = -4,         // preferred technology has changed, must retry
521                                          // with parameters appropriate for new technology
522    RADIO_POWER_OFF = -5,                 // data call was disconnected because radio was resetting,
523                                          // powered off - no retry
524    TETHERED_CALL_ACTIVE = -6,            // data call was disconnected by modem because tethered
525                                          // mode was up on same APN/data profile - no retry until
526                                          // tethered call is off
527    ERROR_UNSPECIFIED = 0xffff,
528};
529
530/**
531 * Please note that registration state UNKNOWN is
532 * treated as "out of service" in the Android telephony.
533 * Registration state REG_DENIED must be returned if Location Update
534 * Reject (with cause 17 - Network Failure) is received
535 * repeatedly from the network, to facilitate
536 * "managed roaming"
537 */
538enum RegState : int32_t {
539    NOT_REG_MT_NOT_SEARCHING_OP = 0,      // Not registered, MT is not currently searching
540                                          // a new operator to register
541    REG_HOME = 1,                         // Registered, home network
542    NOT_REG_MT_SEARCHING_OP = 2,          // Not registered, but MT is currently searching
543                                          // a new operator to register
544    REG_DENIED = 3,                       // Registration denied
545    UNKNOWN = 4,                          // Unknown
546    REG_ROAMING = 5,                      // Registered, roaming
547    NOT_REG_MT_NOT_SEARCHING_OP_EM = 10,  // Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that
548                                          // emergency calls are enabled.
549    NOT_REG_MT_SEARCHING_OP_EM = 12,      // Same as NOT_REG_MT_SEARCHING_OP but indicates that
550                                          // emergency calls are enabled.
551    REG_DENIED_EM = 13,                   // Same as REG_DENIED but indicates that
552                                          // emergency calls are enabled.
553    UNKNOWN_EM = 14,                      // Same as UNKNOWN but indicates that
554                                          // emergency calls are enabled.
555};
556
557enum RadioTechnology : int32_t {
558    UNKNOWN = 0,
559    GPRS = 1,
560    EDGE = 2,
561    UMTS = 3,
562    IS95A = 4,
563    IS95B = 5,
564    ONE_X_RTT = 6,
565    EVDO_0 = 7,
566    EVDO_A = 8,
567    HSDPA = 9,
568    HSUPA = 10,
569    HSPA = 11,
570    EVDO_B = 12,
571    EHRPD = 13,
572    LTE = 14,
573    HSPAP = 15,                           // HSPA+
574    GSM = 16,                             // Only supports voice
575    TD_SCDMA = 17,
576    IWLAN = 18,
577    LTE_CA = 19,
578};
579
580enum DataProfileId : int32_t {
581    DEFAULT = 0,
582    TETHERED = 1,
583    IMS = 2,
584    FOTA = 3,
585    CBS = 4,
586    OEM_BASE = 1000,                      // Start of OEM-specific profiles
587    INVALID = 0xFFFFFFFF,
588};
589
590enum SmsAcknowledgeFailCause : int32_t {
591    MEMORY_CAPACITY_EXCEEDED = 0xD3,
592    UNSPECIFIED_ERROR = 0XFF,
593};
594
595enum CallForwardInfoStatus : int32_t {
596    DISABLE,
597    ENABLE,
598    INTERROGATE,
599    REGISTRATION,
600    ERASURE,
601};
602
603enum ClipStatus : int32_t {
604    CLIP_PROVISIONED,                     // CLIP provisioned
605    CLIP_UNPROVISIONED,                   // CLIP not provisioned
606    UNKNOWN,                              // unknown, e.g. no network etc
607};
608
609enum SmsWriteArgsStatus : int32_t {
610    REC_UNREAD,
611    REC_READ,
612    STO_UNSENT,
613    STO_SENT,
614};
615
616enum RadioBandMode : int32_t  {
617    BAND_MODE_UNSPECIFIED,                // "unspecified" (selected by baseband automatically)
618    BAND_MODE_EURO,                       // "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
619    BAND_MODE_USA,                        // "US band"
620                                          // (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
621    BAND_MODE_JPN,                        // "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
622    BAND_MODE_AUS,                        // "AUS band"
623                                          // (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
624    BAND_MODE_AUS_2,                      // "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
625    BAND_MODE_CELL_800,                   // "Cellular" (800-MHz Band)
626    BAND_MODE_PCS,                        // "PCS" (1900-MHz Band)
627    BAND_MODE_JTACS,                      // "Band Class 3" (JTACS Band)
628    BAND_MODE_KOREA_PCS,                  // "Band Class 4" (Korean PCS Band)
629    BAND_MODE_5_450M,                     // "Band Class 5" (450-MHz Band)
630    BAND_MODE_IMT2000,                    // "Band Class 6" (2-GMHz IMT2000 Band)
631    BAND_MODE_7_700M_2,                   // "Band Class 7" (Upper 700-MHz Band)
632    BAND_MODE_8_1800M,                    // "Band Class 8" (1800-MHz Band)
633    BAND_MODE_9_900M,                     // "Band Class 9" (900-MHz Band)
634    BAND_MODE_10_800M_2,                  // "Band Class 10" (Secondary 800-MHz Band)
635    BAND_MODE_EURO_PAMR_400M,             // "Band Class 11" (400-MHz European PAMR Band)
636    BAND_MODE_AWS,                        // "Band Class 15" (AWS Band)
637    BAND_MODE_USA_2500M,                  // "Band Class 16" (US 2.5-GHz Band)
638};
639
640enum OperatorStatus : int32_t {
641    UNKNOWN,
642    AVAILABLE,
643    CURRENT,
644    FORBIDDEN,
645};
646
647enum PreferredNetworkType : int32_t {
648    GSM_WCDMA,                            // GSM/WCDMA (WCDMA preferred)
649    GSM_ONLY,                             // GSM only
650    WCDMA,                                // WCDMA
651    GSM_WCDMA_AUTO,                       // GSM/WCDMA (auto mode, according to PRL)
652    CDMA_EVDO_AUTO,                       // CDMA and EvDo (auto mode, according to PRL)
653    CDMA_ONLY,                            // CDMA only
654    EVDO_ONLY,                            // EvDo only
655    GSM_WCDMA_CDMA_EVDO_AUTO,             // GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
656    LTE_CDMA_EVDO,                        // LTE, CDMA and EvDo
657    LTE_GSM_WCDMA,                        // LTE, GSM/WCDMA
658    LTE_CMDA_EVDO_GSM_WCDMA,              // LTE, CDMA, EvDo, GSM/WCDMA
659    LTE_ONLY,                             // LTE only
660    LTE_WCDMA,                            // LTE/WCDMA
661    TD_SCDMA_ONLY,                        // TD-SCDMA only
662    TD_SCDMA_WCDMA,                       // TD-SCDMA and WCDMA
663    TD_SCDMA_LTE,                         // TD-SCDMA and LTE
664    TD_SCDMA_GSM,                         // TD-SCDMA and GSM
665    TD_SCDMA_GSM_LTE,                     // TD-SCDMA,GSM and LTE
666    TD_SCDMA_GSM_WCDMA,                   // TD-SCDMA, GSM/WCDMA
667    TD_SCDMA_WCDMA_LTE,                   // TD-SCDMA, WCDMA and LTE
668    TD_SCDMA_GSM_WCDMA_LTE,               // TD-SCDMA, GSM/WCDMA and LTE
669    TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO,    // TD-SCDMA, GSM/WCDMA, CDMA and EvDo
670    TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA,     // TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA
671};
672
673enum CdmaSubscriptionSource : int32_t {
674    RUIM_SIM,
675    NV,
676};
677
678enum CdmaRoamingType : int32_t {
679    HOME_NETWORK,
680    AFFILIATED_ROAM,
681    ANY_ROAM,
682};
683
684enum TtyMode : int32_t {
685    OFF,
686    FULL,
687    HCO,                                  // Hearing carryover
688    VCO,                                  // Voice carryover
689};
690
691enum NvItem : int32_t {
692    // CDMA radio and account information (items 1-10)
693    CDMA_MEID = 1,                        // CDMA MEID (hex)
694    CDMA_MIN = 2,                         // CDMA MIN (MSID)
695    CDMA_MDN = 3,                         // CDMA MDN
696    CDMA_ACCOLC = 4,                      // CDMA access overload control
697
698    // Carrier device provisioning (items 11-30)
699    DEVICE_MSL = 11,                      // device MSL
700    RTN_RECONDITIONED_STATUS = 12,        // RTN reconditioned status
701    RTN_ACTIVATION_DATE = 13,             // RTN activation date
702    RTN_LIFE_TIMER = 14,                  // RTN life timer
703    RTN_LIFE_CALLS = 15,                  // RTN life calls
704    RTN_LIFE_DATA_TX = 16,                // RTN life data TX
705    RTN_LIFE_DATA_RX = 17,                // RTN life data RX
706    OMADM_HFA_LEVEL = 18,                 // HFA in progress
707
708    // Mobile IP profile information (items 31-50)
709    MIP_PROFILE_NAI = 31,                 // NAI realm
710    MIP_PROFILE_HOME_ADDRESS = 32,        // MIP home address
711    MIP_PROFILE_AAA_AUTH = 33,            // AAA auth
712    MIP_PROFILE_HA_AUTH = 34,             // HA auth
713    MIP_PROFILE_PRI_HA_ADDR = 35,         // primary HA address
714    MIP_PROFILE_SEC_HA_ADDR = 36,         // secondary HA address
715    MIP_PROFILE_REV_TUN_PREF = 37,        // reverse TUN preference
716    MIP_PROFILE_HA_SPI = 38,              // HA SPI
717    MIP_PROFILE_AAA_SPI = 39,             // AAA SPI
718    MIP_PROFILE_MN_HA_SS = 40,            // HA shared secret
719    MIP_PROFILE_MN_AAA_SS = 41,           // AAA shared secret
720
721    // CDMA network and band config (items 51-70)
722    CDMA_PRL_VERSION = 51,                // CDMA PRL version
723    CDMA_BC10 = 52,                       // CDMA band class 10
724    CDMA_BC14 = 53,                       // CDMA band class 14
725    CDMA_SO68 = 54,                       // CDMA SO68
726    CDMA_SO73_COP0 = 55,                  // CDMA SO73 COP0
727    CDMA_SO73_COP1TO7 = 56,               // CDMA SO73 COP1-7
728    CDMA_1X_ADVANCED_ENABLED = 57,        // CDMA 1X Advanced enabled
729    CDMA_EHRPD_ENABLED = 58,              // CDMA eHRPD enabled
730    CDMA_EHRPD_FORCED = 59,               // CDMA eHRPD forced
731
732    // LTE network and band config (items 71-90)
733    LTE_BAND_ENABLE_25 = 71,              // LTE band 25 enable
734    LTE_BAND_ENABLE_26 = 72,              // LTE band 26 enable
735    LTE_BAND_ENABLE_41 = 73,              // LTE band 41 enable
736
737    LTE_SCAN_PRIORITY_25 = 74,            // LTE band 25 scan priority
738    LTE_SCAN_PRIORITY_26 = 75,            // LTE band 26 scan priority
739    LTE_SCAN_PRIORITY_41 = 76,            // LTE band 41 scan priority
740
741    LTE_HIDDEN_BAND_PRIORITY_25 = 77,     // LTE hidden band 25 priority
742    LTE_HIDDEN_BAND_PRIORITY_26 = 78,     // LTE hidden band 26 priority
743    LTE_HIDDEN_BAND_PRIORITY_41 = 79,     // LTE hidden band 41 priority
744};
745
746enum ResetNvType : int32_t {
747    RELOAD,                               // reload all NV items
748    ERASE,                                // erase NV reset (SCRTN)
749    FACTORY_RESET,                        // factory reset (RTN)
750};
751
752enum HardwareConfigType : int32_t {
753    MODEM,
754    SIM,
755};
756
757enum HardwareConfigState : int32_t {
758    ENABLED,
759    STANDBY,
760    DISABLED,
761};
762
763enum LceStatus : int32_t {
764    NOT_SUPPORTED,
765    STOPPED,
766    ACTIVE
767};
768
769enum CarrierMatchType : int32_t {
770    ALL = 0,                              // Apply to all carriers with the same mcc/mnc
771    SPN = 1,                              // Use SPN and mcc/mnc to identify the carrier
772    IMSI_PREFIX = 2,                      // Use IMSI prefix and mcc/mnc to identify the carrier
773    GID1 = 3,                             // Use GID1 and mcc/mnc to identify the carrier
774    GID2 = 4,                             // Use GID2 and mcc/mnc to identify the carrier
775};
776
777struct NeighboringCell {
778    string cid;                           // Combination of LAC and Cell Id in 32 bits in GSM.
779                                          // Upper 16 bits is LAC and lower 16 bits
780                                          // is CID (as described in TS 27.005)
781                                          // Primary Scrambling Code (as described in TS 25.331)
782                                          // in 9 bits in UMTS
783                                          // Valid values are hexadecimal 0x0000 - 0xffffffff.
784    int32_t rssi;                         // Received RSSI in GSM,
785                                          // Level index of CPICH Received Signal Code Power in UMTS
786};
787
788enum CdmaSmsDigitMode : int32_t {
789    FOUR_BIT,                             // DTMF digits
790    EIGHT_BIT,
791};
792
793enum CdmaSmsNumberMode : int32_t {
794    NOT_DATA_NETWORK,
795    DATA_NETWORK,
796};
797
798enum CdmaSmsNumberType : int32_t {
799    UNKNOWN,
800    INTERNATIONAL_OR_DATA_IP,             // INTERNATIONAL is used when number mode is not data
801                                          // network
802                                          // address. DATA_IP is used when the number mode is data
803                                          // network address
804    NATIONAL_OR_INTERNET_MAIL,            // NATIONAL is used when the number mode is not data
805                                          // network address. INTERNET_MAIL is used when the number
806                                          // mode is data network address. For INTERNET_MAIL, in
807                                          // the address data "digits", each byte contains an ASCII
808                                          // character.
809                                          // Examples are "x@y.com,a@b.com - ref
810                                          // TIA/EIA-637A 3.4.3.3
811    NETWORK,
812    SUBSCRIBER,
813    ALPHANUMERIC,                         // GSM SMS: address value is GSM 7-bit chars
814    ABBREVIATED,
815    RESERVED_7,
816};
817
818enum CdmaSmsNumberPlan : int32_t {
819    UNKNOWN,
820    TELEPHONY,                            // CCITT E.164 and E.163, including ISDN plan
821    RESERVED_2,
822    DATA,                                 // CCITT X.121
823    TELEX,                                // CCITT F.69
824    RESERVED_5,
825    RESERVED_6,
826    RESERVED_7,
827    RESERVED_8,
828    PRIVATE,
829    RESERVED_10,
830    RESERVED_11,
831    RESERVED_12,
832    RESERVED_13,
833    RESERVED_14,
834    RESERVED_15,
835};
836
837enum CdmaSmsSubaddressType : int32_t {
838    NSAP,                                 // CCITT X.213 or ISO 8348 AD2
839    USER_SPECIFIED,                       // e.g. X.25
840};
841
842enum CdmaSmsErrorClass : int32_t {
843    NO_ERROR,
844    ERROR,
845};
846
847enum CdmaSmsWriteArgsStatus : int32_t {
848    REC_UNREAD,
849    REC_READ,
850    STO_UNSENT,
851    STO_SENT
852};
853
854enum CellInfoType : int32_t {
855    NONE = 0,
856    GSM = 1,
857    CDMA = 2,
858    LTE = 3,
859    WCDMA = 4,
860    TD_SCDMA = 5
861};
862
863enum TimeStampType : int32_t {
864    UNKNOWN,
865    ANTENNA,
866    MODEM,
867    OEM_RIL,
868    JAVA_RIL,
869};
870
871enum ApnAuthType : int32_t {
872    NO_PAP_NO_CHAP,                       // PAP and CHAP is never performed.
873    PAP_NO_CHAP,                          // PAP may be performed; CHAP is never performed.
874    NO_PAP_CHAP,                          // CHAP may be performed; PAP is never performed.
875    PAP_CHAP                              // PAP / CHAP may be performed - baseband dependent.
876};
877
878enum RadioTechnologyFamily : int32_t {
879    THREE_GPP,                            // 3GPP Technologies - GSM, WCDMA
880    THREE_GPP2                            // 3GPP2 Technologies - CDMA
881};
882
883enum RadioCapabilityPhase : int32_t {
884    CONFIGURED = 0,                       // Logical Modem's (LM)  initial value
885                                          // and value after FINISH completes
886    START      = 1,                       // START is sent before APPLY and indicates that an
887                                          // APPLY is forthcoming with these same parameters
888    APPLY      = 2,                       // APPLY is sent after all LM's receive START and returned
889                                          // RadioCapability.status = 0. If any START's fail, hal
890                                          // implementation must not send APPLY.
891    UNSOL_RSP  = 3,                       // UNSOL_RSP is sent with unsolicited radioCapability()
892    FINISH     = 4                        // FINISH is sent after all commands have completed. If an
893                                          // error occurs in any previous command, the
894                                          // RadioAccessesFamily and logicalModemUuid fields must be
895                                          // the prior configuration thus restoring the
896                                          // configuration to the previous value. An error returned
897                                          // by FINISH will generally be ignored or may cause that
898                                          // logical modem to be removed from service.
899};
900
901enum RadioCapabilityStatus : int32_t {
902    NONE       = 0,                       // This parameter has no meaning with
903                                          // RadioCapabilityPhase:START, RadioCapabilityPhase:APPLY
904    SUCCESS    = 1,                       // Tell modem the action transaction of set radio
905                                          // capability was success with RadioCapabilityPhase:FINISH
906    FAIL       = 2,                       // Tell modem the action transaction of set radio
907                                          // capability is fail with RadioCapabilityPhase:FINISH.
908};
909
910enum RadioAccessFamily : int32_t {
911    UNKNOWN = 1 << RadioTechnology:UNKNOWN,
912    GPRS = 1 << RadioTechnology:GPRS,
913    EDGE = 1 << RadioTechnology:EDGE,
914    UMTS = 1 << RadioTechnology:UMTS,
915    IS95A = 1 << RadioTechnology:IS95A,
916    IS95B = 1 << RadioTechnology:IS95B,
917    ONE_X_RTT = 1 << RadioTechnology:ONE_X_RTT,
918    EVDO_0 = 1 << RadioTechnology:EVDO_0,
919    EVDO_A = 1 << RadioTechnology:EVDO_A,
920    HSDPA = 1 << RadioTechnology:HSDPA,
921    HSUPA = 1 << RadioTechnology:HSUPA,
922    HSPA = 1 << RadioTechnology:HSPA,
923    EVDO_B = 1 << RadioTechnology:EVDO_B,
924    EHRPD = 1 << RadioTechnology:EHRPD,
925    LTE = 1 << RadioTechnology:LTE,
926    HSPAP = 1 << RadioTechnology:HSPAP,
927    GSM = 1 << RadioTechnology:GSM,
928    TD_SCDMA = 1 << RadioTechnology:TD_SCDMA,
929    LTE_CA = 1 << RadioTechnology:LTE_CA
930};
931
932enum UssdModeType : int32_t {
933    NOTIFY,                               // USSD-Notify
934    REQUEST,                              // USSD-Request
935    NW_RELEASE,                           // Session terminated by network
936    LOCAL_CLIENT,                         // other local client (eg, SIM Toolkit) has responded
937    NOT_SUPPORTED,                        // Operation not supported
938    NW_TIMEOUT,                           // Network timeout
939};
940
941enum SimRefreshType : int32_t {
942    SIM_FILE_UPDATE = 0,                  // A file on SIM has been updated.
943    SIM_INIT = 1,                         // SIM initialized. All files should be re-read.
944    SIM_RESET = 2                         // SIM reset. SIM power required, SIM may be locked a
945                                          // nd all files must be re-read.
946};
947
948enum SrvccState :int32_t {
949    HANDOVER_STARTED = 0,
950    HANDOVER_COMPLETED = 1,
951    HANDOVER_FAILED = 2,
952    HANDOVER_CANCELED = 3
953};
954
955enum UiccSubActStatus : int32_t {
956    DEACTIVATE,
957    ACTIVATE
958};
959
960enum SubscriptionType : int32_t {
961    SUBSCRIPTION_1,
962    SUBSCRIPTION_2,
963    SUBSCRIPTION_3
964};
965
966enum DataProfileInfoType : int32_t {
967    COMMON,
968    THREE_GPP,
969    THREE_GPP2
970};
971
972enum PhoneRestrictedState : int32_t {
973    NONE = 0x00,                          // No restriction at all including voice/SMS/USSD/SS/AV64
974                                          // and packet data
975    CS_EMERGENCY = 0x01,                  // Block emergency call due to restriction. But allow all
976                                          // normal voice/SMS/USSD/SS/AV64.
977    CS_NORMAL = 0x02,                     // Block all normal voice/SMS/USSD/SS/AV64 due to
978                                          // restriction. Only Emergency call allowed.
979    CS_ALL = 0x04,                        // Block all voice/SMS/USSD/SS/AV64 including emergency
980                                          // call due to restriction.
981    PS_ALL = 0x10                         // Block packet data access due to restriction.
982};
983
984enum CdmaCallWaitingNumberPresentation : int32_t {
985    ALLOWED = 0,
986    RESTRICTED = 1,
987    UNKNOWN = 2,
988};
989
990enum CdmaCallWaitingNumberType : int32_t {
991    UNKNOWN = 0,
992    INTERNATIONAL = 1,
993    NATIONAL = 2,
994    NETWORK_SPECIFIC = 3,
995    SUBSCRIBER = 4
996};
997
998enum CdmaCallWaitingNumberPlan : int32_t {
999    UNKNOWN = 0,
1000    ISDN = 1,
1001    DATA = 3,
1002    TELEX = 4,
1003    NATIONAL = 8,
1004    PRIVATE = 9
1005};
1006
1007enum CdmaOtaProvisionStatus : int32_t {
1008    SPL_UNLOCKED,
1009    SPC_RETRIES_EXCEEDED,
1010    A_KEY_EXCHANGED,
1011    SSD_UPDATED,
1012    NAM_DOWNLOADED,
1013    MDN_DOWNLOADED,
1014    IMSI_DOWNLOADED,
1015    PRL_DOWNLOADED,
1016    COMMITTED,
1017    OTAPA_STARTED,
1018    OTAPA_STOPPED,
1019    OTAPA_ABORTED
1020};
1021
1022/** Names of the CDMA info records (C.S0005 section 3.7.5) */
1023enum CdmaInfoRecName : int32_t {
1024    DISPLAY,
1025    CALLED_PARTY_NUMBER,
1026    CALLING_PARTY_NUMBER,
1027    CONNECTED_NUMBER,
1028    SIGNAL,
1029    REDIRECTING_NUMBER,
1030    LINE_CONTROL,
1031    EXTENDED_DISPLAY,
1032    T53_CLIR,
1033    T53_RELEASE,
1034    T53_AUDIO_CONTROL
1035};
1036
1037/** Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11 */
1038enum CdmaRedirectingReason : int32_t {
1039    UNKNOWN = 0,
1040    CALL_FORWARDING_BUSY = 1,
1041    CALL_FORWARDING_NO_REPLY = 2,
1042    CALLED_DTE_OUT_OF_ORDER = 9,
1043    CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
1044    CALL_FORWARDING_UNCONDITIONAL = 15,
1045    RESERVED
1046};
1047
1048enum SsServiceType : int32_t {
1049    CFU,
1050    CF_BUSY,
1051    CF_NO_REPLY,
1052    CF_NOT_REACHABLE,
1053    CF_ALL,
1054    CF_ALL_CONDITIONAL,
1055    CLIP,
1056    CLIR,
1057    COLP,
1058    COLR,
1059    WAIT,
1060    BAOC,
1061    BAOIC,
1062    BAOIC_EXC_HOME,
1063    BAIC,
1064    BAIC_ROAMING,
1065    ALL_BARRING,
1066    OUTGOING_BARRING,
1067    INCOMING_BARRING
1068};
1069
1070enum SsRequestType : int32_t {
1071    ACTIVATION,
1072    DEACTIVATION,
1073    INTERROGATION,
1074    REGISTRATION,
1075    ERASURE
1076};
1077
1078enum SsTeleserviceType : int32_t {
1079    ALL_TELE_AND_BEARER_SERVICES,
1080    ALL_TELESEVICES,
1081    TELEPHONY,
1082    ALL_DATA_TELESERVICES,
1083    SMS_SERVICES,
1084    ALL_TELESERVICES_EXCEPT_SMS
1085};
1086
1087enum SuppServiceClass : int32_t {
1088    NONE = 0,
1089    VOICE = 1 << 0,
1090    DATA = 1 << 1,
1091    FAX = 1 << 2,
1092    SMS = 1 << 3,
1093    DATA_SYNC = 1 << 4,
1094    DATA_ASYNC = 1 << 5,
1095    PACKET = 1 << 6,
1096    PAD = 1 << 7,
1097    MAX = 1 << 7
1098};
1099
1100enum ApnTypes : int32_t {
1101    NONE = 0,                             // None
1102    DEFAULT = 1 << 0,                     // APN type for default data traffic
1103    MMS = 1 << 1,                         // APN type for MMS traffic
1104    SUPL = 1 << 2,                        // APN type for SUPL assisted GPS
1105    DUN = 1 << 3,                         // APN type for DUN traffic
1106    HIPRI = 1 << 4,                       // APN type for HiPri traffic
1107    FOTA = 1 << 5,                        // APN type for FOTA
1108    IMS = 1 << 6,                         // APN type for IMS
1109    CBS = 1 << 7,                         // APN type for CBS
1110    IA = 1 << 8,                          // APN type for IA Initial Attach APN
1111    EMERGENCY = 1 << 9,                   // APN type for Emergency PDN. This is not an IA apn,
1112                                          // but is used for access to carrier services in an
1113                                          // emergency call situation.
1114    ALL = DEFAULT | MMS | SUPL | DUN | HIPRI | FOTA | IMS | CBS | IA | EMERGENCY,
1115};
1116
1117enum IndicationFilter : int32_t {
1118    NONE = 0,
1119    SIGNAL_STRENGTH = 1 << 0,             // When this bit is set, modem should always send the
1120                                          // signal strength update through
1121                                          // IRadioIndication.currentSignalStrength(),
1122                                          // otherwise suppress it.
1123    FULL_NETWORK_STATE = 1 << 1,          // When this bit is set, modem should always invoke
1124                                          // IRadioIndication.networkStateChanged() when any field
1125                                          // in VoiceRegStateResult or DataRegStateResult changes.
1126                                          // When this bit is not set, modem should suppress
1127                                          // IRadioIndication.networkStateChanged() when there are
1128                                          // only changes from those insignificant fields
1129                                          // (e.g. cell info). Modem should continue invoking
1130                                          // IRadioIndication.networkStateChanged()
1131                                          // when significant fields are updated even when this bit
1132                                          // is not set. The following fields are considered
1133                                          // significant, registration state and radio technology.
1134    DATA_CALL_DORMANCY_CHANGED = 1 << 2,  // When this bit is set, modem should send the data call
1135                                          // list changed indication
1136                                          // IRadioIndication.dataCallListChanged() whenever any
1137                                          // field in ITypes.SetupDataCallResult changes. Otherwise
1138                                          // modem should suppress the indication when the only
1139                                          // changed field is 'active' (for data dormancy).
1140                                          // For all other fields change, modem should continue
1141                                          // sending IRadioIndication.dataCallListChanged()
1142                                          // regardless this bit is set or not.
1143    ALL = SIGNAL_STRENGTH | FULL_NETWORK_STATE | DATA_CALL_DORMANCY_CHANGED,
1144};
1145
1146enum MvnoType : int32_t {
1147    NONE,                                 // None
1148    IMSI,                                 // The matching data is based on IMSI.
1149    GID,                                  // The matching data is based on group id.
1150    SPN,                                  // The matching data is based service provider name.
1151};
1152
1153enum DeviceStateType : int32_t {
1154    POWER_SAVE_MODE,                      // Device power save mode (provided by PowerManager)
1155                                          // True indicates the device is in power save mode.
1156    CHARGING_STATE,                       // Device charging state (provided by BatteryManager)
1157                                          // True indicates the device is charging.
1158    LOW_DATA_EXPECTED                     // Low data expected mode. True indicates low data traffic
1159                                          // is expected, for example, when the device is idle
1160                                          // (e.g. not doing tethering in the background). Note
1161                                          // this doesn't mean no data is expected.
1162};
1163
1164enum P2Constant : int32_t {
1165    NO_P2 = -1,                           // No P2 value is provided
1166};
1167
1168struct RadioResponseInfo {
1169    RadioResponseType type;               // Response type
1170    int32_t serial;                       // Serial number of the request
1171    RadioError error;                     // Response error
1172};
1173
1174struct AppStatus {
1175    AppType appType;
1176    AppState appState;
1177    PersoSubstate persoSubstate;          // applicable only if app_state == SUBSCRIPTION_PERSO
1178    string aidPtr;                        // e.g., from 0xA0, 0x00 -> 0x41,
1179                                          // 0x30, 0x30, 0x30
1180    string appLabelPtr;
1181    int32_t pin1Replaced;                 // applicable to USIM, CSIM and ISIM
1182    PinState pin1;
1183    PinState pin2;
1184};
1185
1186struct CardStatus {
1187    CardState cardState;
1188    PinState universalPinState;           // applicable to USIM and CSIM
1189    int32_t gsmUmtsSubscriptionAppIndex;  // value < RadioConst:CARD_MAX_APPS, -1 if none
1190    int32_t cdmaSubscriptionAppIndex;     // value < RadioConst:CARD_MAX_APPS, -1 if none
1191    int32_t imsSubscriptionAppIndex;      // value < RadioConst:CARD_MAX_APPS, -1 if none
1192    vec<AppStatus> applications;          // size <= RadioConst:CARD_MAX_APPS
1193};
1194
1195/**
1196 * User-to-User Signaling Information defined in 3GPP 23.087 v8.0
1197 */
1198struct UusInfo {
1199    UusType uusType;                      // UUS Type
1200    UusDcs uusDcs;                        // UUS Data Coding Scheme
1201    string uusData;                       // UUS data
1202};
1203
1204struct Call {
1205    CallState state;
1206    int32_t index;                        // Connection Index for use with, eg, AT+CHLD
1207    int32_t toa;                          // type of address, eg 145 = intl
1208    bool isMpty;                          // true if is mpty call
1209    bool isMT;                            // true if call is mobile terminated
1210    uint8_t als;                          // ALS line indicator if available (0 = line 1)
1211    bool isVoice;                         // true if this is is a voice call
1212    bool isVoicePrivacy;                  // true if CDMA voice privacy mode is active
1213    string number;                        // Remote party number
1214    CallPresentation numberPresentation;
1215    string name;                          // Remote party name
1216    CallPresentation namePresentation;
1217    vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
1218};
1219
1220struct Dial {
1221    string address;
1222    Clir clir;
1223    vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
1224};
1225
1226struct LastCallFailCauseInfo {
1227    LastCallFailCause causeCode;
1228    string vendorCause;
1229};
1230
1231struct GsmSignalStrength {
1232    uint32_t signalStrength;              // Valid values are (0-61, 99) as defined in
1233                                          // TS 27.007 8.69
1234    uint32_t bitErrorRate;                // bit error rate (0-7, 99) as defined in TS 27.007 8.5
1235    int32_t timingAdvance;                // Timing Advance in bit periods. 1 bit period = 48/13 us.
1236                                          // INT_MAX denotes invalid value
1237};
1238
1239struct WcdmaSignalStrength{
1240    int32_t signalStrength;               // Valid values are (0-31, 99) as defined in
1241                                          // TS 27.007 8.5
1242    int32_t bitErrorRate;                 // bit error rate (0-7, 99) as defined in TS 27.007 8.5
1243};
1244
1245struct CdmaSignalStrength {
1246    uint32_t dbm;                         // This value is the actual RSSI
1247                                          // value multiplied by -1. Example: If the
1248                                          // actual RSSI is -75, then this response value will
1249                                          // be 75.
1250    uint32_t ecio;                        // This value is the actual
1251                                          // Ec/Io multiplied by -10. Example: If the
1252                                          // actual Ec/Io is -12.5 dB, then this response value
1253                                          // will be 125.
1254};
1255
1256struct EvdoSignalStrength {
1257    uint32_t dbm;                         // This value is the actual
1258                                          // RSSI value multiplied by -1.
1259                                          // Example: If the actual RSSI is -75,
1260                                          // then this response value will be 75.
1261    uint32_t ecio;                        // This value is the actual
1262                                          // Ec/Io multiplied by -10. Example: If the
1263                                          // actual Ec/Io is -12.5 dB, then this response value
1264                                          // will be 125.
1265    uint32_t signalNoiseRatio;            // Valid values are 0-8. 8 is the highest signal to
1266                                          // noise ratio.
1267};
1268
1269struct LteSignalStrength {
1270    uint32_t signalStrength;              // Valid values are (0-31, 99) as defined in
1271                                          // TS 27.007 8.5
1272    uint32_t rsrp;                        // The current Reference Signal Receive Power in dBm
1273                                          // multipled by -1.
1274                                          // Range: 44 to 140 dBm
1275                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
1276                                          // Reference: 3GPP TS 36.133 9.1.4
1277    uint32_t rsrq;                        // The current Reference Signal Receive Quality in dB
1278                                          // multiplied by -1.
1279                                          // Range: 20 to 3 dB.
1280                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
1281                                          // Reference: 3GPP TS 36.133 9.1.7
1282    int32_t rssnr;                        // The current reference signal signal-to-noise ratio in
1283                                          // 0.1 dB units.
1284                                          // Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
1285                                          // INT_MAX : 0x7FFFFFFF denotes invalid value.
1286                                          // Reference: 3GPP TS 36.101 8.1.1
1287    uint32_t cqi;                         // The current Channel Quality Indicator.
1288                                          // Range: 0 to 15.
1289                                          // INT_MAX : 0x7FFFFFFF denotes invalid value.
1290                                          // Reference: 3GPP TS 36.101 9.2, 9.3, A.4
1291    uint32_t timingAdvance;               // timing advance in micro seconds for a one way trip
1292                                          // from cell to device.
1293                                          // Approximate distance is calculated using
1294                                          // 300m/us * timingAdvance.
1295                                          // Range: 0 to 1282 inclusive.
1296                                          // INT_MAX : 0x7FFFFFFF denotes unknown value.
1297                                          // Reference: 3GPP 36.213 section 4.2.3
1298};
1299
1300struct TdScdmaSignalStrength {
1301    uint32_t rscp;                        // The Received Signal Code Power in dBm multiplied by -1.
1302                                          // Range : 25 to 120
1303                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
1304                                          // Reference: 3GPP TS 25.123, section 9.1.1.1
1305};
1306
1307struct SignalStrength {
1308    GsmSignalStrength gw;
1309    CdmaSignalStrength cdma;
1310    EvdoSignalStrength evdo;
1311    LteSignalStrength lte;
1312    TdScdmaSignalStrength tdScdma;
1313};
1314
1315struct SendSmsResult {
1316    int32_t messageRef;                   // TP-Message-Reference for GSM, and BearerData MessageId
1317                                          // for CDMA (See 3GPP2 C.S0015-B, v2.0, table 4.5-1)
1318    string ackPDU;                        // or empty string if n/a
1319    int32_t errorCode;                    // See 3GPP 27.005, 3.2.5 for GSM/UMTS,
1320                                          // 3GPP2 N.S0005 (IS-41C) Table 171 for CDMA,
1321                                          // -1 if unknown or not applicable
1322};
1323
1324struct SetupDataCallResult {
1325    DataCallFailCause status;             // Data call fail cause. DataCallFailCause.NONE if no
1326                                          // error.
1327    int32_t suggestedRetryTime;           // If status != DataCallFailCause.NONE, this field
1328                                          // indicates the suggested retry back-off timer value RIL
1329                                          // wants to override the one pre-configured in FW.
1330                                          // The unit is milliseconds.
1331                                          // The value < 0 means no value is suggested.
1332                                          // The value 0 means retry must be done ASAP.
1333                                          // The value of INT_MAX(0x7fffffff) means no retry.
1334    int32_t cid;                          // Context ID, uniquely identifies this call
1335    int32_t active;                       // 0=inactive, 1=active/physical link down,
1336                                          // 2=active/physical link up */
1337    string type;                          // One of the PDP_type values in TS 27.007 section 10.1.1.
1338                                          // For example, "IP", "IPV6", "IPV4V6", or "PPP". If
1339                                          // status is
1340                                          // DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this
1341                                          // is the type supported such as "IP" or "IPV6".
1342    string ifname;                        // The network interface name
1343    string addresses;                     // A space-delimited list of addresses with optional "/"
1344                                          // prefix length, e.g., "192.0.1.3" or
1345                                          // "192.0.1.11/16 2001:db8::1/64".
1346                                          // Typically 1 IPv4 or 1 IPv6 or
1347                                          // one of each. If the prefix length is absent the
1348                                          // addresses are assumed to be point to point with IPv4
1349                                          // having a prefix length of 32 and IPv6 128.
1350    string dnses;                         // A space-delimited list of DNS server addresses,
1351                                          // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
1352                                          // Empty if no dns server addresses returned.
1353    string gateways;                      // A space-delimited list of default gateway addresses,
1354                                          // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
1355                                          // When empty, the addresses represent
1356                                          // point to point connections.
1357    string pcscf;                         // the Proxy Call State Control Function address
1358                                          // via PCO(Protocol Configuration Option) for IMS client.
1359    int32_t mtu;                          // MTU received from network
1360                                          // Value <= 0 means network has either not sent a
1361                                          // value or sent an invalid value
1362};
1363
1364struct IccIo {
1365    int32_t command;                      // one of the commands listed for TS 27.007 +CRSM
1366    int32_t fileId;                       // EF id
1367    string path;                          // "pathid" from TS 27.007 +CRSM command.
1368                                          // Path is in hex ascii format eg "7f205f70"
1369                                          // Path must always be provided.
1370    int32_t p1;                           // Values of p1, p2 and p3 defined as per 3GPP TS 51.011
1371    int32_t p2;
1372    int32_t p3;
1373    string data;                          // information to be written to the SIM
1374    string pin2;
1375    string aid;                           // AID value, See ETSI 102.221 8.1 and 101.220 4, empty
1376                                          // string if no value.
1377};
1378
1379struct IccIoResult {
1380    int32_t sw1;
1381    int32_t sw2;
1382    string simResponse;                   // In hex string format ([a-fA-F0-9]*), except for
1383                                          // SIM_AUTHENTICATION response for which it is in
1384                                          // Base64 format, see 3GPP TS 31.102 7.1.2
1385};
1386
1387// See also com.android.internal.telephony.gsm.CallForwardInfo
1388struct CallForwardInfo {
1389    CallForwardInfoStatus status;         // For queryCallForwardStatus()
1390                                          // status is DISABLE (Not used by vendor code currently)
1391                                          // For setCallForward():
1392                                          // status must be
1393                                          // DISABLE, ENABLE, INTERROGATE, REGISTRATION, ERASURE
1394    int32_t reason;                       // from TS 27.007 7.11 "reason"
1395    int32_t serviceClass;                 // From 27.007 +CCFC/+CLCK "class"
1396                                          // See table for Android mapping from
1397                                          // MMI service code
1398                                          // 0 means user doesn't input class
1399    int32_t toa;                          // "type" from TS 27.007 7.11
1400    string number;                        // "number" from TS 27.007 7.11.
1401    int32_t timeSeconds;
1402};
1403
1404// Response struct used in responseQueryAvailableNetworks
1405struct OperatorInfo {
1406    string alphaLong;                     // long alpha ONS or EONS
1407    string alphaShort;                    // short alpha ONS or EONS
1408    string operatorNumeric;               // 5 or 6 digit numeric code (MCC + MNC)
1409    OperatorStatus status;
1410};
1411
1412struct SmsWriteArgs {
1413    SmsWriteArgsStatus status;            // Status of message. See TS 27.005 3.1
1414    string pdu;                           // PDU of message to write, as an ASCII hex string less
1415                                          // the SMSC address, the TP-layer length is strlen(pdu)/2.
1416    string smsc;                          // SMSC address in GSM BCD format prefixed by a length
1417                                          // byte (as expected by TS 27.005) or NULL for default
1418                                          // SMSC
1419};
1420
1421struct CdmaSmsAddress {
1422    CdmaSmsDigitMode digitMode;           // CdmaSmsDigitMode is of two types : 4 bit and 8 bit.
1423                                          // For 4-bit type, only "digits" field defined below in
1424                                          // this struct is used.
1425    CdmaSmsNumberMode numberMode;         // Used only when digitMode is 8-bit
1426    CdmaSmsNumberType numberType;         // Used only when digitMode is 8-bit.
1427                                          // To specify an international address, use the following:
1428                                          // digitMode = CdmaSmsDigitMode:EIGHT_BIT:
1429                                          // numberMode = CdmaSmsNumberMode:NOT_DATA_NETWORK
1430                                          // numberType = CdmaSmsNumberType:INTERNATIONAL_OR_DATA_IP
1431                                          // numberPlan = CdmaSmsNumberPlan:TELEPHONY
1432                                          // numberOfDigits = number of digits
1433                                          // digits = ASCII digits, e.g. '1', '2', '3', '4', and '5'
1434    CdmaSmsNumberPlan numberPlan;         // Used only when digitMode is 8-bit
1435    vec<uint8_t> digits;                  // Each byte in this array represents a 4 bit or 8-bit
1436                                          // digit of address data
1437};
1438
1439struct CdmaSmsSubaddress {
1440    CdmaSmsSubaddressType subaddressType;
1441    bool odd;                             // true means the last byte's lower 4 bits must be ignored
1442    vec<uint8_t> digits;                  // Each byte represents an 8-bit digit of subaddress data
1443};
1444
1445struct CdmaSmsMessage {
1446    int32_t teleserviceId;
1447    bool isServicePresent;
1448    int32_t serviceCategory;
1449    CdmaSmsAddress address;
1450    CdmaSmsSubaddress subAddress;
1451    vec<uint8_t> bearerData;              // 3GPP2 C.S0015-B, v2.0,
1452};
1453
1454struct CdmaSmsAck {
1455    CdmaSmsErrorClass errorClass;
1456    int32_t smsCauseCode;                 // As defined in N.S00005, 6.5.2.125.
1457                                          // Currently, only 35 (resource shortage) and
1458                                          // 39 (other terminal problem) are reported.
1459};
1460
1461struct CdmaBroadcastSmsConfigInfo {
1462    int32_t serviceCategory;              // serviceCategory defines a Broadcast message identifier
1463                                          // whose value is 0x0000 - 0xFFFF as defined in
1464                                          // C.R1001G 9.3.1 and 9.3.2.
1465    int32_t language;                     // language code of Broadcast Message
1466                                          // whose value is 0x00 - 0x07 as defined in C.R1001G 9.2.
1467    bool selected;                        // selected false means message types specified in
1468                                          // serviceCategory are not accepted, while true means
1469                                          // accepted.
1470};
1471
1472struct CdmaSmsWriteArgs {
1473    CdmaSmsWriteArgsStatus status;        // Status of message. See TS 27.005 3.1
1474    CdmaSmsMessage message;
1475};
1476
1477
1478/**
1479 * Which types of Cell Broadcast Message (CBM) are to be received by the ME
1480 *
1481 * fromServiceID - uToServiceID defines a range of CBM message identifiers
1482 * whose value is 0x0000 - 0xFFFF as defined in TS 23.041 9.4.1.2.2 for GMS
1483 * and 9.4.4.2.2 for UMTS. All other values must be treated as empty
1484 * CBM message ID.
1485 *
1486 * fromCodeScheme - uToCodeScheme defines a range of CBM data coding schemes
1487 * whose value is 0x00 - 0xFF as defined in TS 23.041 9.4.1.2.3 for GMS
1488 * and 9.4.4.2.3 for UMTS.
1489 * All other values must be treated as empty CBM data coding scheme.
1490 *
1491 * selected false means message types specified in <fromServiceId, toServiceId>
1492 * and <fromCodeScheme, toCodeScheme>are not accepted, while true means accepted.
1493 */
1494struct GsmBroadcastSmsConfigInfo {
1495    int32_t fromServiceId;
1496    int32_t toServiceId;
1497    int32_t fromCodeScheme;
1498    int32_t toCodeScheme;
1499    bool selected;
1500};
1501
1502struct CellIdentityGsm {
1503    string mcc;                           // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
1504    string mnc;                           // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
1505                                          // unknown
1506    int32_t lac;                          // 16-bit Location Area Code, 0..65535, INT_MAX if unknown
1507    int32_t cid;                          // 16-bit GSM Cell Identity described in
1508                                          // TS 27.007, 0..65535, INT_MAX if unknown
1509    int32_t arfcn;                        // 16-bit GSM Absolute RF channel number; this value must
1510                                          // be valid
1511    uint8_t bsic;                         // 6-bit Base Station Identity Code, 0xFF if unknown
1512};
1513
1514struct CellIdentityWcdma {
1515    string mcc;                           // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
1516    string mnc;                           // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX
1517                                          // if unknown
1518    int32_t lac;                          // 16-bit Location Area Code, 0..65535, INT_MAX if unknown
1519    int32_t cid;                          // 28-bit UMTS Cell Identity described in
1520                                          // TS 25.331, 0..268435455, INT_MAX if unknown
1521    int32_t psc;                          // 9-bit UMTS Primary Scrambling Code described in
1522                                          // TS 25.331, 0..511; this value must be valid
1523    int32_t uarfcn;                       // 16-bit UMTS Absolute RF Channel Number; this value must
1524                                          // be valid
1525};
1526
1527struct CellIdentityCdma {
1528    int32_t networkId;                    // Network Id 0..65535, INT_MAX if unknown
1529    int32_t systemId;                     // CDMA System Id 0..32767, INT_MAX if unknown
1530    int32_t baseStationId;                // Base Station Id 0..65535, INT_MAX if unknown
1531    int32_t longitude;                    // Longitude is a decimal number as specified in
1532                                          // 3GPP2 C.S0005-A v6.0. It is represented in units of
1533                                          // 0.25 seconds and ranges from -2592000 to 2592000,
1534                                          // both values inclusive (corresponding to a range of -180
1535                                          // to +180 degrees). INT_MAX if unknown
1536    int32_t latitude;                     // Latitude is a decimal number as specified in
1537                                          // 3GPP2 C.S0005-A v6.0. It is represented in units of
1538                                          // 0.25 seconds and ranges from -1296000 to 1296000,
1539                                          // both values inclusive (corresponding to a range of -90
1540                                          // to +90 degrees). INT_MAX if unknown
1541};
1542
1543struct CellIdentityLte {
1544    string mcc;                           // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
1545    string mnc;                           // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
1546                                          // unknown
1547    int32_t ci;                           // 28-bit Cell Identity described in TS TS 27.007, INT_MAX
1548                                          // if unknown
1549    int32_t pci;                          // physical cell id 0..503; this value must be valid
1550    int32_t tac;                          // 16-bit tracking area code, INT_MAX if unknown
1551    int32_t earfcn;                       // 18-bit LTE Absolute RF Channel Number; this value must
1552                                          // be valid
1553};
1554
1555struct CellIdentityTdscdma {
1556    string mcc;                           // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
1557    string mnc;                           // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
1558                                          // unknown
1559    int32_t lac;                          // 16-bit Location Area Code, 0..65535, INT_MAX if
1560                                          // unknown
1561    int32_t cid;                          // 28-bit UMTS Cell Identity described in
1562                                          // TS 25.331, 0..268435455, INT_MAX if unknown
1563    int32_t cpid;                         // 8-bit Cell Parameters ID described in
1564                                          // TS 25.331, 0..127, INT_MAX if unknown
1565};
1566
1567struct CellInfoGsm {
1568    CellIdentityGsm cellIdentityGsm;
1569    GsmSignalStrength signalStrengthGsm;
1570};
1571
1572struct CellInfoWcdma {
1573    CellIdentityWcdma cellIdentityWcdma;
1574    WcdmaSignalStrength signalStrengthWcdma;
1575};
1576
1577struct CellInfoCdma {
1578    CellIdentityCdma cellIdentityCdma;
1579    CdmaSignalStrength signalStrengthCdma;
1580    EvdoSignalStrength signalStrengthEvdo;
1581};
1582
1583struct CellInfoLte {
1584    CellIdentityLte cellIdentityLte;
1585    LteSignalStrength signalStrengthLte;
1586};
1587
1588struct CellInfoTdscdma {
1589    CellIdentityTdscdma cellIdentityTdscdma;
1590    TdScdmaSignalStrength signalStrengthTdscdma;
1591};
1592
1593struct CellInfo {
1594    CellInfoType cellInfoType;            // cell type for selecting from union CellInfo
1595    bool registered;                      // true if this cell is registered false if not registered
1596    TimeStampType timeStampType;          // type of time stamp represented by timeStamp
1597    uint64_t timeStamp;                   // Time in nanos as returned by ril_nano_time
1598    // Only one of the below vectors must be of size 1 based on the CellInfoType and others must be
1599    // of size 0
1600    vec<CellInfoGsm> gsm;                 // Valid only if type = gsm and size = 1 else must be
1601                                          // empty
1602    vec<CellInfoCdma> cdma;               // Valid only if type = cdma and size = 1 else must be
1603                                          // empty
1604    vec<CellInfoLte> lte;                 // Valid only if type = lte and size = 1 else must be
1605                                          // empty
1606    vec<CellInfoWcdma> wcdma;             // Valid only if type = wcdma and size = 1 else must be
1607                                          // empty
1608    vec<CellInfoTdscdma> tdscdma;         // Valid only if type = tdscdma and size = 1 else must be
1609                                          // empty
1610};
1611
1612struct CellIdentity {
1613    CellInfoType cellInfoType;            // cell type for selecting from union CellInfo
1614    // Only one of the below vectors must be of size 1, based on a valid CellInfoType and
1615    // others must be of size 0. If cell info type is NONE, then all the vectors
1616    // must be of size 0.
1617    vec<CellIdentityGsm> cellIdentityGsm;
1618    vec<CellIdentityWcdma> cellIdentityWcdma;
1619    vec<CellIdentityCdma> cellIdentityCdma;
1620    vec<CellIdentityLte> cellIdentityLte;
1621    vec<CellIdentityTdscdma> cellIdentityTdscdma;
1622};
1623
1624struct VoiceRegStateResult {
1625    RegState regState;                    // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
1626                                          // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
1627                                          // UNKNOWN, REG_ROAMING defined in RegState
1628    int32_t rat;                          // indicates the available voice radio technology,
1629                                          // valid values as defined by RadioTechnology.
1630    bool cssSupported;                    // concurrent services support indicator. if
1631                                          // registered on a CDMA system.
1632                                          // false - Concurrent services not supported,
1633                                          // true - Concurrent services supported
1634    int32_t roamingIndicator;             // TSB-58 Roaming Indicator if registered
1635                                          // on a CDMA or EVDO system or -1 if not.
1636                                          // Valid values are 0-255.
1637    int32_t systemIsInPrl;                // indicates whether the current system is in the
1638                                          // PRL if registered on a CDMA or EVDO system or -1 if
1639                                          // not. 0=not in the PRL, 1=in the PRL
1640    int32_t defaultRoamingIndicator;      // default Roaming Indicator from the PRL,
1641                                          // if registered on a CDMA or EVDO system or -1 if not.
1642                                          // Valid values are 0-255.
1643    int32_t reasonForDenial;              // reasonForDenial if registration state is 3
1644                                          // (Registration denied) this is an enumerated reason why
1645                                          // registration was denied. See 3GPP TS 24.008,
1646                                          // 10.5.3.6 and Annex G.
1647                                          // 0 - General
1648                                          // 1 - Authentication Failure
1649                                          // 2 - IMSI unknown in HLR
1650                                          // 3 - Illegal MS
1651                                          // 4 - Illegal ME
1652                                          // 5 - PLMN not allowed
1653                                          // 6 - Location area not allowed
1654                                          // 7 - Roaming not allowed
1655                                          // 8 - No Suitable Cells in this Location Area
1656                                          // 9 - Network failure
1657                                          // 10 - Persistent location update reject
1658                                          // 11 - PLMN not allowed
1659                                          // 12 - Location area not allowed
1660                                          // 13 - Roaming not allowed in this Location Area
1661                                          // 15 - No Suitable Cells in this Location Area
1662                                          // 17 - Network Failure
1663                                          // 20 - MAC Failure
1664                                          // 21 - Sync Failure
1665                                          // 22 - Congestion
1666                                          // 23 - GSM Authentication unacceptable
1667                                          // 25 - Not Authorized for this CSG
1668                                          // 32 - Service option not supported
1669                                          // 33 - Requested service option not subscribed
1670                                          // 34 - Service option temporarily out of order
1671                                          // 38 - Call cannot be identified
1672                                          // 48-63 - Retry upon entry into a new cell
1673                                          // 95 - Semantically incorrect message
1674                                          // 96 - Invalid mandatory information
1675                                          // 97 - Message type non-existent or not implemented
1676                                          // 98 - Message type not compatible with protocol state
1677                                          // 99 - Information element non-existent or not implemented
1678                                          // 100 - Conditional IE error
1679                                          // 101 - Message not compatible with protocol state
1680                                          // 111 - Protocol error, unspecified
1681    CellIdentity cellIdentity;
1682};
1683
1684struct DataRegStateResult {
1685    RegState regState;                    // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
1686                                          // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
1687                                          // UNKNOWN, REG_ROAMING defined in RegState
1688    int32_t rat;                          // indicates the available data radio technology,
1689                                          // valid values as defined by RadioTechnology.
1690    int32_t reasonDataDenied;             // if registration state is 3 (Registration
1691                                          // denied) this is an enumerated reason why
1692                                          // registration was denied. See 3GPP TS 24.008,
1693                                          // Annex G.6 "Additional cause codes for GMM".
1694                                          // 7 == GPRS services not allowed
1695                                          // 8 == GPRS services and non-GPRS services not allowed
1696                                          // 9 == MS identity cannot be derived by the network
1697                                          // 10 == Implicitly detached
1698                                          // 14 == GPRS services not allowed in this PLMN
1699                                          // 16 == MSC temporarily not reachable
1700                                          // 40 == No PDP context activated
1701    int32_t maxDataCalls;                 // The maximum number of simultaneous Data Calls that
1702                                          // must be established using setupDataCall().
1703    CellIdentity cellIdentity;
1704};
1705
1706struct GsmSmsMessage {
1707    string smscPdu;                       // SMSC address in GSM BCD format prefixed by a length
1708                                          // byte (as expected by TS 27.005) or empty string for
1709                                          // default SMSC
1710    string pdu;                           // SMS in PDU format as an ASCII hex string less the
1711                                          // SMSC address. TP-Layer-Length is be "strlen(pdu)/2
1712};
1713
1714struct ImsSmsMessage {
1715    RadioTechnologyFamily tech;
1716    bool retry;                           // false == not retry, true == retry */
1717    int32_t messageRef;                   // Valid field if retry is set to true.
1718                                          // Contains messageRef from SendSmsResult struct
1719                                          // corresponding to failed MO SMS.
1720    // Only one of the below vectors must be of size 1 based on the RadioTechnologyFamily and others
1721    // must be of size 0
1722    vec<CdmaSmsMessage> cdmaMessage;      // Valid field if tech is 3GPP2 and size = 1 else must be
1723                                          // empty
1724    vec<GsmSmsMessage> gsmMessage;        // Valid field if tech is 3GPP and size = 1 else must be
1725                                          // empty
1726};
1727
1728struct SimApdu {
1729    int32_t sessionId;                    // "sessionid" from TS 27.007 +CGLA command. Must be
1730                                          // ignored for +CSIM command.
1731    // Following fields are used to derive the APDU ("command" and "length"
1732    // values in TS 27.007 +CSIM and +CGLA commands).
1733    int32_t cla;
1734    int32_t instruction;
1735    int32_t p1;
1736    int32_t p2;
1737    int32_t p3;                           // A negative P3 implies a 4 byte APDU.
1738    string data;                          // In hex string format ([a-fA-F0-9]*).
1739};
1740
1741struct NvWriteItem {
1742    NvItem itemId;
1743    string value;
1744};
1745
1746struct SelectUiccSub {
1747    int32_t slot;
1748    int32_t appIndex;                     // array subscriptor from
1749                                          // applications[RadioConst:CARD_MAX_APPS] in
1750                                          // getIccCardStatus()
1751    SubscriptionType subType;
1752    UiccSubActStatus actStatus;
1753};
1754
1755struct HardwareConfigModem {
1756    int32_t rilModel;
1757    uint32_t rat;                         // bitset - ref. RadioTechnology.
1758    int32_t maxVoice;
1759    int32_t maxData;
1760    int32_t maxStandby;
1761};
1762
1763struct HardwareConfigSim {
1764    string modemUuid;                     // RadioConst:MAX_UUID_LENGTH is max length of the string
1765};
1766
1767struct HardwareConfig {
1768    HardwareConfigType type;
1769    string uuid;                          // RadioConst:MAX_UUID_LENGTH is max length of the string
1770    HardwareConfigState state;
1771
1772    // Only one of the below vectors must have size = 1 based on the HardwareConfigType and other
1773    // must have size = 0.
1774    vec<HardwareConfigModem> modem;       // Valid only if type is Modem and size = 1 else must be
1775                                          // empty
1776    vec<HardwareConfigSim> sim;           // Valid only if type is SIM or else empty and size = 1
1777                                          // else must be empty
1778};
1779
1780struct DataProfileInfo {
1781    DataProfileId profileId;              // id of the data profile
1782    string apn;                           // The APN to connect to
1783    string protocol;                      // One of the PDP_type values in TS 27.007 section 10.1.1.
1784                                          // For example, "IP", "IPV6", "IPV4V6", or "PPP".
1785    string roamingProtocol;               // one of the PDP_type values in TS 27.007 section 10.1.1
1786                                          // used on roaming network. For example, "IP", "IPV6",
1787                                          // "IPV4V6", or "PPP".
1788    ApnAuthType authType;                 // APN authentication type
1789    string user;                          // The username for APN, or empty string
1790    string password;                      // The password for APN, or empty string
1791    DataProfileInfoType type;             // Data profile technology type
1792    int32_t maxConnsTime;                 // The period in seconds to limit the maximum connections
1793    int32_t maxConns;                     // The maximum connections during maxConnsTime
1794    int32_t waitTime;                     // The required wait time in seconds after a successful UE
1795                                          // initiated disconnect of a given PDN connection before
1796                                          // the device can send a new PDN connection request for
1797                                          // that given PDN
1798    bool enabled;                         // True to enable the profile, false to disable
1799    bitfield<ApnTypes> supportedApnTypesBitmap; // Supported APN types bitmap. See ApnTypes for the
1800                                          // value of each bit.
1801    bitfield<RadioAccessFamily> bearerBitmap; // The bearer bitmap. See RadioAccessFamily for the
1802                                          // value of each bit.
1803    int32_t mtu;                          // Maximum transmission unit (MTU) size in bytes
1804    MvnoType mvnoType;                    // The MVNO matching data type
1805    string mvnoMatchData;                 // MVNO matching data. This is defined by the carrier.
1806                                          // For example,
1807                                          //      SPN like: "A MOBILE", "BEN NL", etc...
1808                                          //      IMSI like: "302720x94", "2060188", etc...
1809                                          //      GID like: "4E", "33", etc...
1810};
1811
1812struct RadioCapability {
1813    int32_t session;                      // Unique session value defined by framework returned in
1814                                          // all "responses/unsol"
1815    RadioCapabilityPhase phase;
1816    bitfield<RadioAccessFamily> raf;      // 32-bit bitmap of RadioAccessFamily
1817    string logicalModemUuid;              // A UUID typically "com.xxxx.lmX where X is the logical
1818                                          // modem. RadioConst:MAX_UUID_LENGTH is the max
1819                                          // length
1820    RadioCapabilityStatus status;
1821};
1822
1823struct LceStatusInfo {
1824    LceStatus lceStatus;
1825    uint8_t actualIntervalMs;             // actual LCE reporting interval,
1826                                          // meaningful only if LceStatus = ACTIVE.
1827};
1828
1829struct LceDataInfo {
1830    uint32_t lastHopCapacityKbps;         // last-hop cellular capacity: kilobits/second.
1831    uint8_t confidenceLevel;              // capacity estimate confidence: 0-100
1832    bool lceSuspended;                    // LCE report going to be suspended? (e.g., radio
1833                                          // moves to inactive state or network type change)
1834                                          // true = suspended;
1835                                          // false = not suspended.
1836};
1837
1838struct ActivityStatsInfo {
1839    uint32_t sleepModeTimeMs;             // total time (in ms) when modem is in a low power or
1840                                          // sleep state
1841    uint32_t idleModeTimeMs;              // total time (in ms) when modem is awake but neither
1842                                          // the transmitter nor receiver are active/awake
1843    uint32_t[RadioConst:NUM_TX_POWER_LEVELS] txmModetimeMs;
1844                                          // Each index represent total time (in ms) during which
1845                                          // the transmitter is active/awake for a particular
1846                                          // power range as shown below.
1847                                          // index 0 = tx_power < 0dBm
1848                                          // index 1 = 0dBm < tx_power < 5dBm
1849                                          // index 2 = 5dBm < tx_power < 15dBm
1850                                          // index 3 = 15dBm < tx_power < 20dBm
1851                                          // index 4 = tx_power > 20dBm
1852    uint32_t rxModeTimeMs;                // total time (in ms) for which receiver is
1853                                          // active/awake and the transmitter is inactive
1854};
1855
1856struct Carrier {
1857    string mcc;
1858    string mnc;
1859    CarrierMatchType matchType;           // Specify match type for the carrier.
1860                                          // If it’s ALL, matchData is empty string;
1861                                          // otherwise, matchData is the value for the match type.
1862    string matchData;
1863};
1864
1865struct CarrierRestrictions {
1866    vec<Carrier> allowedCarriers;         // whitelist for allowed carriers
1867    vec<Carrier> excludedCarriers;        // blacklist for explicitly excluded carriers
1868                                          // which match allowed_carriers. Eg. allowedCarriers
1869                                          // match mcc/mnc, excludedCarriers has same mcc/mnc and
1870                                          // gid1 is ABCD. It means except the carrier whose gid1
1871                                          // is ABCD, all carriers with the same mcc/mnc are
1872                                          // allowed.
1873};
1874
1875struct SuppSvcNotification {
1876    bool isMT;                            // notification type
1877                                          // false = MO intermediate result code
1878                                          // true = MT unsolicited result code
1879    int32_t code;                         // result code. See 27.007 7.17.
1880    int32_t index;                        // CUG index. See 27.007 7.17.
1881    int32_t type;                         // "type" from 27.007 7.17 (MT only).
1882    string number;                        // "number" from 27.007 7.17
1883                                          // (MT only, may be empty string).
1884};
1885
1886struct SimRefreshResult {
1887    SimRefreshType type;
1888    int32_t efId;                         // is the EFID of the updated file if the result is
1889                                          // SIM_FILE_UPDATE or 0 for any other result.
1890    string aid;                           // is AID(application ID) of the card application
1891                                          // See ETSI 102.221 8.1 and 101.220 4
1892                                          // For SIM_FILE_UPDATE result it must be set to AID of
1893                                          // application in which updated EF resides or it must be
1894                                          // empty string if EF is outside of an application.
1895                                          // For SIM_INIT result this field is set to AID of
1896                                          // application that caused REFRESH
1897                                          // For SIM_RESET result it is empty string.
1898};
1899
1900/** CDMA Signal Information Record as defined in C.S0005 section 3.7.5.5 */
1901struct CdmaSignalInfoRecord {
1902    bool isPresent;                       // true if signal information record is present
1903    int8_t signalType;                    // as defined 3.7.5.5-1
1904    int8_t alertPitch;                    // as defined 3.7.5.5-2
1905    int8_t signal;                        // as defined 3.7.5.5-3, 3.7.5.5-4 or 3.7.5.5-5
1906};
1907
1908struct CdmaCallWaiting {
1909    string number;                        // Remote party number
1910    CdmaCallWaitingNumberPresentation numberPresentation;
1911    string name;                          // Remote party name
1912    CdmaSignalInfoRecord signalInfoRecord;
1913    // Number type/Number plan required to support International Call Waiting
1914    CdmaCallWaitingNumberType numberType;
1915    CdmaCallWaitingNumberPlan numberPlan;
1916};
1917
1918/**
1919 * Display Info Rec as defined in C.S0005 section 3.7.5.1
1920 * Extended Display Info Rec as defined in C.S0005 section 3.7.5.16
1921 * Note: the Extended Display info rec contains multiple records of the
1922 * form: display_tag, display_len, and display_len occurrences of the
1923 * char field if the display_tag is not 10000000 or 10000001.
1924 * To save space, the records are stored consecutively in a byte buffer.
1925 * The display_tag, display_len and chari fields are all 1 byte.
1926 */
1927struct CdmaDisplayInfoRecord {
1928    string alphaBuf;                      // Max length = RadioConst:CDMA_ALPHA_INFO_BUFFER_LENGTH
1929};
1930
1931/**
1932 * Called Party Number Info Rec as defined in C.S0005 section 3.7.5.2
1933 * Calling Party Number Info Rec as defined in C.S0005 section 3.7.5.3
1934 * Connected Number Info Rec as defined in C.S0005 section 3.7.5.4
1935 */
1936struct CdmaNumberInfoRecord {
1937    string number;                        // Max length = RADIP_CDMA_NUMBER_INFO_BUFFER_LENGTH
1938    uint8_t numberType;
1939    uint8_t numberPlan;
1940    uint8_t pi;
1941    uint8_t si;
1942};
1943
1944struct  CdmaRedirectingNumberInfoRecord{
1945    CdmaNumberInfoRecord redirectingNumber;
1946    CdmaRedirectingReason redirectingReason; // redirectingReason is set to UNKNOWN if not included
1947};
1948
1949/** Line Control Information Record as defined in C.S0005 section 3.7.5.15 */
1950struct CdmaLineControlInfoRecord {
1951    uint8_t lineCtrlPolarityIncluded;
1952    uint8_t lineCtrlToggle;
1953    uint8_t lineCtrlReverse;
1954    uint8_t lineCtrlPowerDenial;
1955};
1956
1957/** T53 CLIR Information Record */
1958struct CdmaT53ClirInfoRecord {
1959    uint8_t cause;
1960};
1961
1962/** T53 Audio Control Information Record */
1963struct CdmaT53AudioControlInfoRecord {
1964    uint8_t upLink;
1965    uint8_t downLink;
1966};
1967
1968struct CdmaInformationRecord {
1969    CdmaInfoRecName name;
1970    // Only one of the below vectors must have size = 1 based on the
1971    // CdmaInfoRecName. All other vectors must have size 0.
1972    vec<CdmaDisplayInfoRecord> display;   // Display and Extended Display Info Rec
1973    vec<CdmaNumberInfoRecord> number;     // Called Party Number, Calling Party Number, Connected
1974                                          // number Info Rec
1975    vec<CdmaSignalInfoRecord> signal;     // Signal Info Rec
1976    vec<CdmaRedirectingNumberInfoRecord> redir; // Redirecting Number Info Rec
1977    vec<CdmaLineControlInfoRecord> lineCtrl;    // Line Control Info Rec
1978    vec<CdmaT53ClirInfoRecord> clir;      // T53 CLIR Info Rec
1979    vec<CdmaT53AudioControlInfoRecord> audioCtrl; // T53 Audio Control Info Rec
1980};
1981
1982struct CdmaInformationRecords {
1983    vec<CdmaInformationRecord> infoRec;   // Max length = RadioConst:CDMA_MAX_NUMBER_OF_INFO_RECS
1984};
1985
1986struct CfData {
1987    vec<CallForwardInfo> cfInfo;          // This is the response data
1988                                          // for SS request to query call
1989                                          // forward status. see getCallForwardStatus()
1990                                          // Max size = RadioConst:NUM_SERVICE_CLASSES
1991};
1992
1993struct SsInfoData {
1994    vec<int32_t> ssInfo;                  // This is the response data for all of the SS GET/SET
1995                                          // Radio requests. E.g. IRadio.getClir() returns
1996                                          // two ints, so first two values of ssInfo[] will be
1997                                          // used for response if serviceType is SS_CLIR and
1998                                          // requestType is SS_INTERROGATION
1999                                          // Max size = RadioConst:SS_INFO_MAX
2000};
2001
2002struct StkCcUnsolSsResult {
2003    SsServiceType serviceType;
2004    SsRequestType requestType;
2005    SsTeleserviceType teleserviceType;
2006    bitfield<SuppServiceClass> serviceClass;
2007    RadioError result;
2008    // Only one of the below vectors may contain values and other must be empty
2009    vec<SsInfoData> ssInfo;               // Valid only for all SsServiceType except
2010                                          // SsServiceType:CF_* else empty.
2011    vec<CfData> cfData;                   // Valid for SsServiceType:CF_* else empty
2012};
2013
2014struct PcoDataInfo {
2015    int32_t cid;                          // Context ID, uniquely identifies this call
2016    string bearerProto;                   // One of the PDP_type values in TS 27.007 section 10.1.1.
2017                                          // For example, "IP", "IPV6", "IPV4V6"
2018    int32_t pcoId;                        // The protocol ID for this box. Note that only IDs from
2019                                          // FF00H - FFFFH are accepted. If more than one is
2020                                          // included from the network, multiple calls must be made
2021                                          // to send all of them.
2022    vec<uint8_t> contents;                // Carrier-defined content. It is binary, opaque and
2023                                          // loosely defined in LTE Layer 3 spec 24.008
2024};
2025