OSDN Git Service

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