OSDN Git Service

Develop HIDL interface for radio (RIL).
[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     RADIO_VERSION = 12,
21     RADIO_LAST_IMPRECISE_RIL_VERSION = 12,
22     RADIO_VERSION_MIN = 6,
23     RADIO_CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
24     RADIO_CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
25     RADIO_MAX_RILDS = 3,
26     RADIO_MAX_SOCKET_NAME_LENGTH = 6,
27     RADIO_MAX_CLIENT_ID_LENGTH = 2,
28     RADIO_MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
29     RADIO_MAX_QEMU_PIPE_NAME_LENGTH = 11,
30     RADIO_MAX_UUID_LENGTH = 64,
31     RADIO_RADIO_CAPABILITY_VERSION = 1,
32     RADIO_CARD_MAX_APPS = 8,
33     RADIO_CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
34     RADIO_SS_INFO_MAX = 4,
35     RADIO_NUM_SERVICE_CLASSES = 7,
36     RADIO_NUM_TX_POWER_LEVELS = 5,
37 };
38
39 enum RadioCdmaSmsConst : int32_t {
40     ADDRESS_MAX = 36,
41     SUBADDRESS_MAX = 36,
42     BEARER_DATA_MAX = 255,
43     UDH_MAX_SND_SIZE = 128,
44     UDH_EO_DATA_SEGMENT_MAX = 131,
45     MAX_UD_HEADERS = 7,
46     USER_DATA_MAX = 229,
47     UDH_LARGE_PIC_SIZE = 128,
48     UDH_SMALL_PIC_SIZE = 32,
49     UDH_VAR_PIC_SIZE = 134,
50     UDH_ANIM_NUM_BITMAPS = 4,
51     UDH_LARGE_BITMAP_SIZE = 32,
52     UDH_SMALL_BITMAP_SIZE = 8,
53     UDH_OTHER_SIZE = 226,
54     IP_ADDRESS_SIZE = 4,
55 };
56
57 enum RadioError : int32_t {
58     NONE = 0,                             // Success
59     RADIO_NOT_AVAILABLE = 1,              // If radio did not start or is resetting
60     GENERIC_FAILURE = 2,
61     PASSWORD_INCORRECT = 3,               // for PIN/PIN2 methods only
62     SIM_PIN2 = 4,                         // Operation requires SIM PIN2 to be entered
63     SIM_PUK2 = 5,                         // Operation requires SIM PIN2 to be entered
64     REQUEST_NOT_SUPPORTED = 6,
65     CANCELLED = 7,
66     OP_NOT_ALLOWED_DURING_VOICE_CALL = 8, // data ops are not allowed during voice
67                                           // call on a Class C GPRS device
68     OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,  // data ops are not allowed before device
69                                           // registers in network
70     SMS_SEND_FAIL_RETRY = 10,             // fail to send sms and need retry
71     SIM_ABSENT = 11,                      // fail to set the location where CDMA subscription
72                                           // shall be retrieved because of SIM or RUIM
73                                           // card absent
74     SUBSCRIPTION_NOT_AVAILABLE = 12,      // fail to find CDMA subscription from specified
75                                           // location
76     MODE_NOT_SUPPORTED = 13,              // HW does not support preferred network type
77     FDN_CHECK_FAILURE = 14,               // command failed because recipient is not on FDN list
78     ILLEGAL_SIM_OR_ME = 15,               // network selection failed due to illegal SIM or ME
79     MISSING_RESOURCE = 16,                // no logical channel available
80     NO_SUCH_ELEMENT = 17,                 // application not found on SIM
81     DIAL_MODIFIED_TO_USSD = 18,           // DIAL request modified to USSD
82     DIAL_MODIFIED_TO_SS = 19,             // DIAL request modified to SS
83     DIAL_MODIFIED_TO_DIAL = 20,           // DIAL request modified to DIAL with different data
84     USSD_MODIFIED_TO_DIAL = 21,           // USSD request modified to DIAL
85     USSD_MODIFIED_TO_SS = 22,             // USSD request modified to SS
86     USSD_MODIFIED_TO_USSD = 23,           // USSD request modified to different USSD request
87     SS_MODIFIED_TO_DIAL = 24,             // SS request modified to DIAL
88     SS_MODIFIED_TO_USSD = 25,             // SS request modified to USSD
89     SUBSCRIPTION_NOT_SUPPORTED = 26,      // Subscription not supported by RIL
90     SS_MODIFIED_TO_SS = 27,               // SS request modified to different SS request
91     LCE_NOT_SUPPORTED = 36,               // LCE service not supported(36 in RILConstants.java)
92     NO_MEMORY = 37,                       // Not sufficient memory to process the request
93     INTERNAL_ERR = 38,                    // Hit unexpected vendor internal error scenario
94     SYSTEM_ERR = 39,                      // Hit platform or system error
95     MODEM_ERR = 40,                       // Hit unexpected modem error
96     INVALID_STATE = 41,                   // Unexpected request for the current state
97     NO_RESOURCES = 42,                    // Not sufficient resource to process the request
98     SIM_ERR = 43,                         // Received error from SIM card
99     INVALID_ARGUMENTS = 44,               // Received invalid arguments in request
100     INVALID_SIM_STATE = 45,               // Cannot process the request in current SIM state
101     INVALID_MODEM_STATE = 46,             // Cannot process the request in current Modem state
102     INVALID_CALL_ID = 47,                 // Received invalid call id in request
103     NO_SMS_TO_ACK = 48,                   // ACK received when there is no SMS to ack
104     NETWORK_ERR = 49,                     // Received error from network
105     REQUEST_RATE_LIMITED = 50,            // Operation denied due to overly-frequent requests
106     SIM_BUSY = 51,                        // SIM is busy
107     SIM_FULL = 52,                        // The target EF is full
108     NETWORK_REJECT = 53,                  // Request is rejected by network
109     OPERATION_NOT_ALLOWED = 54,           // Not allowed the request now
110     EMPTY_RECORD = 55,                    // The request record is empty
111     INVALID_SMS_FORMAT = 56,              // Invalid sms format
112     ENCODING_ERR = 57,                    // Message not encoded properly
113     INVALID_SMSC_ADDRESS = 58,            // SMSC address specified is invalid
114     NO_SUCH_ENTRY = 59,                   // No such entry present to perform the request
115     NETWORK_NOT_READY = 60,               // Network is not ready to perform the request
116     NOT_PROVISIONED = 61,                 // Device doesnot have this value provisioned
117     NO_SUBSCRIPTION = 62,                 // Device doesnot have subscription
118     NO_NETWORK_FOUND = 63,                // Network cannot be found
119     DEVICE_IN_USE = 64,                   // Operation cannot be performed because the device
120                                           // is currently in use
121     RIL_E_ABORTED = 65,                   // Operation aborted
122
123     // TODO(May be moved to vendor HAL extension)
124     // OEM specific error codes. To be used by OEM when they don't want to reveal
125     // specific error codes which would be replaced by Generic failure.
126     OEM_ERROR_1 = 501,
127     OEM_ERROR_2 = 502,
128     OEM_ERROR_3 = 503,
129     OEM_ERROR_4 = 504,
130     OEM_ERROR_5 = 505,
131     OEM_ERROR_6 = 506,
132     OEM_ERROR_7 = 507,
133     OEM_ERROR_8 = 508,
134     OEM_ERROR_9 = 509,
135     OEM_ERROR_10 = 510,
136     OEM_ERROR_11 = 511,
137     OEM_ERROR_12 = 512,
138     OEM_ERROR_13 = 513,
139     OEM_ERROR_14 = 514,
140     OEM_ERROR_15 = 515,
141     OEM_ERROR_16 = 516,
142     OEM_ERROR_17 = 517,
143     OEM_ERROR_18 = 518,
144     OEM_ERROR_19 = 519,
145     OEM_ERROR_20 = 520,
146     OEM_ERROR_21 = 521,
147     OEM_ERROR_22 = 522,
148     OEM_ERROR_23 = 523,
149     OEM_ERROR_24 = 524,
150     OEM_ERROR_25 = 525,
151 };
152
153 enum RadioResponseType : int32_t {
154     RESPONSE_SOLICITED,
155     RESPONSE_UNSOLICITED,
156     RESPONSE_SOLICITED_ACK,
157     RESPONSE_SOLICITED_ACK_EXP,
158     RESPONSE_UNSOLICITED_ACK_EXP,
159 };
160
161 enum RestrictedState : int32_t {
162     NONE = 0x00,
163     CS_EMERGENCY = 0x01,
164     CS_NORMAL = 0x02,
165     CS_ALL = 0x04,
166     PS_ALL = 0x10,
167 };
168
169 enum CardState : int32_t {
170     ABSENT,
171     PRESENT,
172     ERROR,
173     RESTRICTED,                           // card is present but not usable due to carrier
174                                           // restrictions
175 };
176
177 enum PinState : int32_t {
178     UNKNOWN,
179     ENABLED_NOT_VERIFIED,
180     ENABLED_VERIFIED,
181     DISABLED,
182     ENABLED_BLOCKED,
183     ENABLED_PERM_BLOCKED,
184 };
185
186 enum AppType : int32_t {
187     UNKNOWN,
188     SIM,
189     USIM,
190     RUIM,
191     CSIM,
192     ISIM,
193 };
194
195 enum AppState : int32_t {
196     UNKNOWN,
197     DETECTED,
198     PIN,                                  // If PIN1 or UPin is required
199     PUK,                                  // If PUK1 or Puk for UPin is required
200     SUBSCRIPTION_PERSO,                   // perso_substate must be look at when app_state is
201                                           // assigned to this value
202     READY,
203 };
204
205 enum PersoSubstate : int32_t {
206     UNKNOWN,                              // initial state
207     IN_PROGRESS,                          // in between each lock transition
208     READY,                                // when either SIM or RUIM Perso is finished since each
209                                           // app must only have 1 active perso involved
210     SIM_NETWORK,
211     SIM_NETWORK_SUBSET,
212     SIM_CORPORATE,
213     SIM_SERVICE_PROVIDER,
214     SIM_SIM,
215     SIM_NETWORK_PUK,                      // The corresponding perso lock is blocked
216     SIM_NETWORK_SUBSET_PUK,
217     SIM_CORPORATE_PUK,
218     SIM_SERVICE_PROVIDER_PUK,
219     SIM_SIM_PUK,
220     RUIM_NETWORK1,
221     RUIM_NETWORK2,
222     RUIM_HRPD,
223     RUIM_CORPORATE,
224     RUIM_SERVICE_PROVIDER,
225     RUIM_RUIM,
226     RUIM_NETWORK1_PUK,                   // The corresponding perso lock is blocked
227     RUIM_NETWORK2_PUK,
228     RUIM_HRPD_PUK,
229     RUIM_CORPORATE_PUK,
230     RUIM_SERVICE_PROVIDER_PUK,
231     RUIM_RUIM_PUK,
232 };
233
234 enum RadioState : int32_t {
235     OFF,                                  // Radio explictly powered off (eg CFUN=0)
236     UNAVAILABLE,                          // Radio unavailable (eg, resetting or not booted)
237 };
238
239 enum CallState : int32_t {
240     ACTIVE,
241     HOLDING,
242     DIALING,                             // MO call only
243     ALERTING,                            // MO call only
244     INCOMING,                            // MT call only
245     WAITING,                             // MT call only
246 };
247
248 /*
249  * User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0
250  */
251 enum UusType : int32_t {
252     TYPE1_IMPLICIT,
253     TYPE1_REQUIRED,
254     TYPE1_NOT_REQUIRED,
255     TYPE2_REQUIRED,
256     TYPE2_NOT_REQUIRED,
257     TYPE3_REQUIRED,
258     TYPE3_NOT_REQUIRED,
259 };
260
261 /*
262  * User-to-User Signaling Information data coding schemes. Possible values for
263  * Octet 3 (Protocol Discriminator field) in the UUIE. The values have been
264  * specified in section 10.5.4.25 of 3GPP TS 24.008
265  */
266 enum UusDcs : int32_t {
267     USP,                                  // User specified protocol
268     OSIHLP,                               // OSI higher layer protocol
269     X244,                                 // X.244
270     RMCF,                                 // Reserved for system mangement convergence function
271     IA5C,                                 // IA5 characters
272 };
273
274 enum CallPresentation : int32_t {
275     ALLOWED,
276     RESTRICTED,
277     UNKNOWN,
278     PAYPHONE,
279 };
280
281 enum Clir : int32_t {
282     DEFAULT,                               // "use subscription default value"
283     INVOCATION,                            // restrict CLI presentation
284     SUPPRESSION,                           // allow CLI presentation
285 };
286
287 enum LastCallFailCause : int32_t {
288     UNOBTAINABLE_NUMBER = 1,
289     NO_ROUTE_TO_DESTINATION = 3,
290     CHANNEL_UNACCEPTABLE = 6,
291     OPERATOR_DETERMINED_BARRING = 8,
292     NORMAL = 16,
293     BUSY = 17,
294     NO_USER_RESPONDING = 18,
295     NO_ANSWER_FROM_USER = 19,
296     CALL_REJECTED = 21,
297     NUMBER_CHANGED = 22,
298     PREEMPTION = 25,
299     DESTINATION_OUT_OF_ORDER = 27,
300     INVALID_NUMBER_FORMAT = 28,
301     FACILITY_REJECTED = 29,
302     RESP_TO_STATUS_ENQUIRY = 30,
303     NORMAL_UNSPECIFIED = 31,
304     CONGESTION = 34,
305     NETWORK_OUT_OF_ORDER = 38,
306     TEMPORARY_FAILURE = 41,
307     SWITCHING_EQUIPMENT_CONGESTION = 42,
308     ACCESS_INFORMATION_DISCARDED = 43,
309     REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
310     RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
311     QOS_UNAVAILABLE = 49,
312     REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
313     INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
314     BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
315     BEARER_CAPABILITY_UNAVAILABLE = 58,
316     SERVICE_OPTION_NOT_AVAILABLE = 63,
317     BEARER_SERVICE_NOT_IMPLEMENTED = 65,
318     ACM_LIMIT_EXCEEDED = 68,
319     REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
320     ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
321     SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
322     INVALID_TRANSACTION_IDENTIFIER = 81,
323     USER_NOT_MEMBER_OF_CUG = 87,
324     INCOMPATIBLE_DESTINATION = 88,
325     INVALID_TRANSIT_NW_SELECTION = 91,
326     SEMANTICALLY_INCORRECT_MESSAGE = 95,
327     INVALID_MANDATORY_INFORMATION = 96,
328     MESSAGE_TYPE_NON_IMPLEMENTED = 97,
329     MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
330     INFORMATION_ELEMENT_NON_EXISTENT = 99,
331     CONDITIONAL_IE_ERROR = 100,
332     MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
333     RECOVERY_ON_TIMER_EXPIRED = 102,
334     PROTOCOL_ERROR_UNSPECIFIED = 111,
335     INTERWORKING_UNSPECIFIED = 127,
336     CALL_BARRED = 240,
337     FDN_BLOCKED = 241,
338     IMSI_UNKNOWN_IN_VLR = 242,
339     IMEI_NOT_ACCEPTED = 243,
340     DIAL_MODIFIED_TO_USSD = 244,          // STK Call Control
341     DIAL_MODIFIED_TO_SS = 245,
342     DIAL_MODIFIED_TO_DIAL = 246,
343     CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
344     CDMA_DROP = 1001,
345     CDMA_INTERCEPT = 1002,
346     CDMA_REORDER = 1003,
347     CDMA_SO_REJECT = 1004,
348     CDMA_RETRY_ORDER = 1005,
349     CDMA_ACCESS_FAILURE = 1006,
350     CDMA_PREEMPTED = 1007,
351     CDMA_NOT_EMERGENCY = 1008,            // For non-emergency number dialed during emergency
352                                           // callback mode
353     CDMA_ACCESS_BLOCKED = 1009,           // This error will be deprecated soon,
354                                           // vendor code must make sure to map error
355                                           // code to specific error
356     ERROR_UNSPECIFIED = 0xffff,
357 };
358
359 enum DataCallFailCause : int32_t {
360     NONE = 0,                             // an integer cause code defined in TS 24.008
361                                           // section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
362                                           // If the implementation does not have access to the exact
363                                           // cause codes, then it must return one of the
364                                           // following values, as the UI layer needs to distinguish
365                                           // these cases for error notification and potential
366                                           // retries.
367     OPERATOR_BARRED = 0x08,               // no retry
368     NAS_SIGNALLING = 0x0E,                // PDP_FAIL_LLC_SNDCP = 0x19,
369     INSUFFICIENT_RESOURCES = 0x1A,
370     MISSING_UKNOWN_APN = 0x1B,            // no retry
371     UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,      // no retry
372     USER_AUTHENTICATION = 0x1D,           // no retry
373     ACTIVATION_REJECT_GGSN = 0x1E,        // no retry
374     ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
375     SERVICE_OPTION_NOT_SUPPORTED = 0x20,  // no retry
376     SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, // no retry
377     SERVICE_OPTION_OUT_OF_ORDER = 0x22,
378     NSAPI_IN_USE = 0x23,                  // no retry
379     REGULAR_DEACTIVATION = 0x24,          // possibly restart radio,
380                                           // based on framework config
381     QOS_NOT_ACCEPTED = 0x25,
382     NETWORK_FAILURE = 0x26,
383     UMTS_REACTIVATION_REQ = 0x27,
384     FEATURE_NOT_SUPP = 0x28,
385     TFT_SEMANTIC_ERROR = 0x29,
386     TFT_SYTAX_ERROR = 0x2A,
387     UNKNOWN_PDP_CONTEXT = 0x2B,
388     FILTER_SEMANTIC_ERROR = 0x2C,
389     FILTER_SYTAX_ERROR = 0x2D,
390     PDP_WITHOUT_ACTIVE_TFT = 0x2E,
391     ONLY_IPV4_ALLOWED = 0x32,             // no retry
392     ONLY_IPV6_ALLOWED = 0x33,             // no retry
393     ONLY_SINGLE_BEARER_ALLOWED = 0x34,
394     ESM_INFO_NOT_RECEIVED = 0x35,
395     PDN_CONN_DOES_NOT_EXIST = 0x36,
396     MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37,
397     MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41,
398     UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42,
399     INVALID_TRANSACTION_ID = 0x51,
400     MESSAGE_INCORRECT_SEMANTIC = 0x5F,
401     INVALID_MANDATORY_INFO = 0x60,
402     MESSAGE_TYPE_UNSUPPORTED = 0x61,
403     MSG_TYPE_NONCOMPATIBLE_STATE = 0x62,
404     UNKNOWN_INFO_ELEMENT = 0x63,
405     CONDITIONAL_IE_ERROR = 0x64,
406     MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65,
407     PROTOCOL_ERRORS = 0x6F,               // no retry
408     APN_TYPE_CONFLICT = 0x70,
409     INVALID_PCSCF_ADDR = 0x71,
410     INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72,
411     EMM_ACCESS_BARRED = 0x73,
412     EMERGENCY_IFACE_ONLY = 0x74,
413     IFACE_MISMATCH = 0x75,
414     COMPANION_IFACE_IN_USE = 0x76,
415     IP_ADDRESS_MISMATCH = 0x77,
416     IFACE_AND_POL_FAMILY_MISMATCH = 0x78,
417     EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79,
418     AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A,
419     OEM_DCFAILCAUSE_1 = 0x1001,
420
421     // OEM specific error codes. To be used by OEMs when they don't want to
422     // reveal error code which would be replaced by PDP_FAIL_ERROR_UNSPECIFIED
423     // TODO(May be moved to vendor HAL extension)
424     OEM_DCFAILCAUSE_2 = 0x1002,
425     OEM_DCFAILCAUSE_3 = 0x1003,
426     OEM_DCFAILCAUSE_4 = 0x1004,
427     OEM_DCFAILCAUSE_5 = 0x1005,
428     OEM_DCFAILCAUSE_6 = 0x1006,
429     OEM_DCFAILCAUSE_7 = 0x1007,
430     OEM_DCFAILCAUSE_8 = 0x1008,
431     OEM_DCFAILCAUSE_9 = 0x1009,
432     OEM_DCFAILCAUSE_10 = 0x100A,
433     OEM_DCFAILCAUSE_11 = 0x100B,
434     OEM_DCFAILCAUSE_12 = 0x100C,
435     OEM_DCFAILCAUSE_13 = 0x100D,
436     OEM_DCFAILCAUSE_14 = 0x100E,
437     OEM_DCFAILCAUSE_15 = 0x100F,
438
439     // Not mentioned in the specification
440     VOICE_REGISTRATION_FAIL = -1,
441     DATA_REGISTRATION_FAIL = -2,
442
443     // reasons for data call drop - network/modem disconnect
444     SIGNAL_LOST = -3,
445     PREF_RADIO_TECH_CHANGED = -4,         // preferred technology has changed, must retry
446                                           // with parameters appropriate for new technology
447     RADIO_POWER_OFF = -5,                 // data call was disconnected because radio was resetting,
448                                           // powered off - no retry
449     TETHERED_CALL_ACTIVE = -6,            // data call was disconnected by modem because tethered
450                                           // mode was up on same APN/data profile - no retry until
451                                           // tethered call is off
452     ERROR_UNSPECIFIED = 0xffff,
453 };
454
455 /*
456  * Please note that registration state UNKNOWN is
457  * treated as "out of service" in the Android telephony.
458  * Registration state REG_DENIED must be returned if Location Update
459  * Reject (with cause 17 - Network Failure) is received
460  * repeatedly from the network, to facilitate
461  * "managed roaming"
462  */
463 enum RegState : int32_t {
464     NOT_REG_MT_NOT_SEARCHING_OP,          // Not registered, MT is not currently searching
465                                           // a new operator to register
466     REG_HOME,                             // Registered, home network
467     NOT_REG_MT_SEARCHING_OP,              // Not registered, but MT is currently searching
468                                           // a new operator to register
469     REG_DENIED,                           // Registration denied
470     UNKNOWN,                              // Unknown
471     REG_ROAMING,                          // Registered, roaming
472     NOT_REG_MT_NOT_SEARCHING_OP_EM,       // Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that
473                                           // emergency calls are enabled.
474     NOT_REG_MT_SEARCHING_OP_EM,           // Same as NOT_REG_MT_SEARCHING_OP but indicates that
475                                           // emergency calls are enabled.
476     REG_DENIED_EM,                        // Same as REG_DENIED but indicates that
477                                           // emergency calls are enabled.
478     UNKNOWN_EM                            // Same as UNKNOWN but indicates that
479                                           // emergency calls are enabled.
480 };
481
482 enum RadioTechnology : int32_t {
483     UNKNOWN,
484     GPRS,
485     EDGE,
486     UMTS,
487     IS95A,
488     IS95B,
489     ONE_X_RTT,
490     EVDO_0,
491     EVDO_A,
492     HSDPA,
493     HSUPA,
494     HSPA,
495     EVDO_B,
496     EHRPD,
497     LTE,
498     HSPAP,                                // HSPA+
499     GSM,                                  // Only supports voice
500     TD_SCDMA,
501     IWLAN,
502     LTE_CA,
503 };
504
505 enum DataProfile : int32_t {
506     DEFAULT = 0,
507     TETHERED = 1,
508     IMS = 2,
509     FOTA = 3,
510     CBS = 4,
511     OEM_BASE = 1000,                      // Start of OEM-specific profiles
512     INVALID = 0xFFFFFFFF,
513 };
514
515 enum SmsAcknowledgeFailCause : int32_t {
516     MEMORY_CAPAPCITY_EXCEEDED = 0xD3,
517     UNSPECIFIED_ERROR = 0XFF,
518 };
519
520 enum CallForwardInfoStatus : int32_t {
521     ACTIVE,
522     INACTIVE,
523     DISABLE,
524     ENABLE,
525     INTERROGATE,
526     REGISTRATION,
527     ERASURE,
528 };
529
530 enum ClipStatus : int32_t {
531     CLIP_PROVISIONED,                     // CLIP provisioned
532     CLIP_UNPROVISIONED,                   // CLIP not provisioned
533     UNKOWN,                               // unknown, e.g. no network etc
534 };
535
536 enum SmsWriteArgsStatus : int32_t {
537     REC_UNREAD,
538     REC_READ,
539     STO_UNSENT,
540     STO_SENT,
541 };
542
543 enum RadioBandMode : int32_t  {
544     BAND_MODE_UNSPECIFIED,                // "unspecified" (selected by baseband automatically)
545     BAND_MODE_EURO,                       // "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
546     BAND_MODE_USA,                        // "US band"
547                                           // (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
548     BAND_MODE_JPN,                        // "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
549     BAND_MODE_AUS,                        // "AUS band"
550                                           // (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
551     BAND_MODE_AUS_2,                      // "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
552     BAND_MODE_CELL_800,                   // "Cellular" (800-MHz Band)
553     BAND_MODE_PCS,                        // "PCS" (1900-MHz Band)
554     BAND_MODE_JTACS,                      // "Band Class 3" (JTACS Band)
555     BAND_MODE_KOREA_PCS,                  // "Band Class 4" (Korean PCS Band)
556     BAND_MODE_5_450M,                     // "Band Class 5" (450-MHz Band)
557     BAND_MODE_IMT2000,                    // "Band Class 6" (2-GMHz IMT2000 Band)
558     BAND_MODE_7_700M_2,                   // "Band Class 7" (Upper 700-MHz Band)
559     BAND_MODE_8_1800M,                    // "Band Class 8" (1800-MHz Band)
560     BAND_MODE_9_900M,                     // "Band Class 9" (900-MHz Band)
561     BAND_MODE_10_800M_2,                  // "Band Class 10" (Secondary 800-MHz Band)
562     BAND_MODE_EURO_PAMR_400M,             // "Band Class 11" (400-MHz European PAMR Band)
563     BAND_MODE_AWS,                        // "Band Class 15" (AWS Band)
564     BAND_MODE_USA_2500M,                  // "Band Class 16" (US 2.5-GHz Band)
565 };
566
567 enum OperatorStatus : int32_t {
568     UNKNOWN,
569     AVAILABLE,
570     CURRENT,
571     FORBIDDEN,
572 };
573
574 struct RadioResponseInfo {
575     RadioResponseType type;               // Response type
576     int32_t serial;                       // Serial number of the request
577     RadioError error;                     // Response error
578 };
579
580 struct AppStatus {
581     AppType appType;
582     AppState appState;
583     PersoSubstate persoSubstate;          // applicable only if app_state == SUBSCRIPTION_PERSO
584     string aidPtr;                        // e.g., from 0xA0, 0x00 -> 0x41,
585                                           // 0x30, 0x30, 0x30
586     string appLabelPtr;
587     int32_t pin1Replaced;                 // applicable to USIM, CSIM & ISIM
588     PinState pin1;
589     PinState pin2;
590 };
591
592 struct CardStatus {
593     CardState cardState;
594     PinState universalPinState;           // applicable to USIM and CSIM
595     int32_t gsmUmtsSubscriptionAppIndex;  // value < RADIO_CARD_MAX_APPS, -1 if none
596     int32_t cdmaSubscriptionAppIndex;     // value < RADIO_CARD_MAX_APPS, -1 if none
597     int32_t imsSubscriptionAppIndex;      // value < RADIO_CARD_MAX_APPS, -1 if none
598     int32_t numApplications;              // value <= RADIO_CARD_MAX_APPS
599     AppStatus[RadioConst:RADIO_CARD_MAX_APPS] applications;
600 };
601
602 /*
603  * User-to-User Signaling Information defined in 3GPP 23.087 v8.0
604  * This data is passed in RADIO_ExtensionRecord and rec contains this
605  * structure when type is RADIO_UUS_INFO_EXT_REC
606  */
607 struct UusInfo {
608     UusType uusType;                      // UUS Type
609     UusDcs uusDcs;                        // UUS Data Coding Scheme
610     int32_t uusLength;                    // Length of UUS Data
611     string uusData;                       // UUS data
612 };
613
614 struct Call {
615     CallState state;
616     int32_t index;                        // Connection Index for use with, eg, AT+CHLD
617     int32_t toa;                          // type of address, eg 145 = intl
618     bool isMpty;                          // true if is mpty call
619     bool isMT;                            // true if call is mobile terminated
620     uint8_t als;                          // ALS line indicator if available (0 = line 1)
621     bool isVoice;                         // true if this is is a voice call
622     bool isVoicePrivacy;                  // true if CDMA voice privacy mode is active
623     string number;                        // Remote party number
624     CallPresentation numberPresentation;
625     string name;                          // Remote party name
626     CallPresentation namePresentation;
627     vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
628 };
629
630 struct Dial {
631     string address;
632     Clir clir;
633     vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
634 };
635
636 struct GwSignalStrength {
637     uint32_t signalStrength;              // Valid values are (0-31, 99) as defined in
638                                           // TS 27.007 8.5
639     uint32_t bitErrorRate;                // bit error rate (0-7, 99) as defined in TS 27.007 8.5
640 };
641
642 struct CdmaSignalStrength {
643     uint32_t dbm;                         // This value is the actual RSSI
644                                           // value multiplied by -1. Example: If the
645                                           // actual RSSI is -75, then this response value will
646                                           // be 75.
647     uint32_t ecio;                        // This value is the actual
648                                           // Ec/Io multiplied by -10. Example: If the
649                                           // actual Ec/Io is -12.5 dB, then this response value
650                                           // will be 125.
651 };
652
653 struct EvdoSignalStrength {
654     uint32_t dbm;                         // This value is the actual
655                                           // RSSI value multiplied by -1.
656                                           // Example: If the actual RSSI is -75,
657                                           // then this response value will be 75.
658     uint32_t ecio;                        // This value is the actual
659                                           // Ec/Io multiplied by -10. Example: If the
660                                           // actual Ec/Io is -12.5 dB, then this response value
661                                           // will be 125.
662     uint32_t signalNoiseRatio;            // Valid values are 0-8. 8 is the highest signal to
663                                           // noise ratio.
664 };
665
666 struct LteSignalStrength {
667     uint32_t signalStrength;              // Valid values are (0-31, 99) as defined in
668                                           // TS 27.007 8.5
669     uint32_t rsrp;                        // The current Reference Signal Receive Power in dBm
670                                           // multipled by -1.
671                                           // Range: 44 to 140 dBm
672                                           // INT_MAX: 0x7FFFFFFF denotes invalid value.
673                                           // Reference: 3GPP TS 36.133 9.1.4
674     uint32_t rsrq;                        // The current Reference Signal Receive Quality in dB
675                                           // multiplied by -1.
676                                           // Range: 20 to 3 dB.
677                                           // INT_MAX: 0x7FFFFFFF denotes invalid value.
678                                           // Reference: 3GPP TS 36.133 9.1.7
679     int32_t rssnr;                        // The current reference signal signal-to-noise ratio in
680                                           // 0.1 dB units.
681                                           // Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
682                                           // INT_MAX : 0x7FFFFFFF denotes invalid value.
683                                           // Reference: 3GPP TS 36.101 8.1.1
684     uint32_t cqi;                         // The current Channel Quality Indicator.
685                                           // Range: 0 to 15.
686                                           // INT_MAX : 0x7FFFFFFF denotes invalid value.
687                                           // Reference: 3GPP TS 36.101 9.2, 9.3, A.4
688     uint32_t timingAdvance;               // timing advance in micro seconds for a one way trip
689                                           // from cell to device.
690                                           // Approximate distance is calculated using
691                                           // 300m/us * timingAdvance.
692                                           // Range: 0 to 0x7FFFFFFE
693                                           // INT_MAX : 0x7FFFFFFF denotes invalid value.
694                                           // Reference: 3GPP 36.321 section 6.1.3.5
695                                           // also: http://www.cellular-planningoptimization.com/2010/02/timing-advance-with-calculation.html
696 };
697
698 struct TdScdmaSignalStrength {
699     uint32_t rscp;                        // The Received Signal Code Power in dBm multipled by -1.
700                                           // Range : 25 to 120
701                                           // INT_MAX: 0x7FFFFFFF denotes invalid value.
702                                           // Reference: 3GPP TS 25.123, section 9.1.1.1
703 };
704
705 struct SignalStrength {
706     GwSignalStrength gw;
707     CdmaSignalStrength cdma;
708     EvdoSignalStrength evdo;
709     LteSignalStrength lte;
710     TdScdmaSignalStrength tdScdma;
711 };
712
713 struct SendSmsResult {
714     int32_t messageRef;                   // TP-Message-Reference for GSM, and BearerData MessageId
715                                           // for CDMA (See 3GPP2 C.S0015-B, v2.0, table 4.5-1)
716     string ackPDU;                        // or empty string if n/a
717     int32_t errorCode;                    // See 3GPP 27.005, 3.2.5 for GSM/UMTS,
718                                           // 3GPP2 N.S0005 (IS-41C) Table 171 for CDMA,
719                                           // -1 if unknown or not applicable
720 };
721
722 struct SetupDataCallResult {
723     int32_t status;                       // A RadioDataCallFailCause, 0 which is
724                                           // RadioDataCallFailCause:NONE if no error
725     int32_t suggestedRetryTime;           // If status != 0, this fields indicates the suggested
726                                           // retry back-off timer value RIL wants to override the
727                                           // one pre-configured in FW.
728                                           // The unit is miliseconds.
729                                           // The value < 0 means no value is suggested.
730                                           // The value 0 means retry must be done ASAP.
731                                           // The value of INT_MAX(0x7fffffff) means no retry.
732     int32_t cid;                          // Context ID, uniquely identifies this call
733     int32_t active;                       // 0=inactive, 1=active/physical link down,
734                                           // 2=active/physical link up */
735     string type;                          // One of the PDP_type values in TS 27.007 section 10.1.1.
736                                           // For example, "IP", "IPV6", "IPV4V6", or "PPP". If
737                                           // status is
738                                           // RadioDataCallFailCause:ONLY_SINGLE_BEARER_ALLOWED this
739                                           // is the type supported such as "IP" or "IPV6"
740     string ifname;                        // The network interface name
741     string addresses;                     // A space-delimited list of addresses with optional "/"
742                                           // prefix length, e.g., "192.0.1.3" or
743                                           // "192.0.1.11/16 2001:db8::1/64".
744                                           // Typically 1 IPv4 or 1 IPv6 or
745                                           // one of each. If the prefix length is absent the
746                                           // addresses are assumed to be point to point with IPv4
747                                           // having a prefix length of 32 and IPv6 128.
748     string dnses;                         // A space-delimited list of DNS server addresses,
749                                           // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
750                                           // Empty if no dns server addresses returned.
751     string gateways;                      // A space-delimited list of default gateway addresses,
752                                           // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
753                                           // When empty, the addresses represent
754                                           // point to point connections.
755     string pcscf;                         // the Proxy Call State Control Function address
756                                           // via PCO(Protocol Configuration Option) for IMS client.
757     int32_t mtu;                          // MTU received from network
758                                           // Value <= 0 means network has either not sent a
759                                           // value or sent an invalid value
760 };
761
762 struct IccIo {
763     int32_t command;                      // one of the commands listed for TS 27.007 +CRSM
764     int32_t fileid;                       // EF id
765     string path;                          // "pathid" from TS 27.007 +CRSM command.
766                                           // Path is in hex asciii format eg "7f205f70"
767                                           // Path must always be provided.
768     int32_t p1;                           // Values of p1, p2 & p3 defined as per 3GPP TS 51.011
769     int32_t p2;
770     int32_t p3;
771     string data;                          // information to be written to the SIM
772     string pin2;
773     string aidPtr;                        // AID value, See ETSI 102.221 8.1 and 101.220 4, empty
774                                           // string if no value.
775 };
776
777 struct IccIoResult {
778     int32_t sw1;
779     int32_t sw2;
780     string simResponse;                   // In hex string format ([a-fA-F0-9]*), except for
781                                           // SIM_AUTHENTICATION response for which it is in
782                                           // Base64 format, see 3GPP TS 31.102 7.1.2
783 };
784
785 struct VoiceRegStateResult {
786     RegState regState;
787     int32_t lac;                          // LAC if registered on a GSM/WCDMA system or
788                                           // -1 if not.Valid LAC are 0x0000 - 0xffff
789     int32_t cid;                          // CID. if registered on a * GSM/WCDMA or -1 if not
790                                           // Valid CID are 0x00000000 - 0xffffffff
791                                           // In GSM, CID is Cell ID (see TS 27.007) in 16 bits
792                                           // In UMTS, CID is UMTS Cell Identity (see TS 25.331)
793                                           // in 28 bits
794     int32_t rat;                          // indicates the available voice radio technology,
795                                           // valid values as defined by RIL_RadioTechnology.
796     int32_t baseStationId;                // Base Station ID. if registered on a CDMA
797                                           // system or -1 if not. Base Station ID in decimal format
798     int32_t baseStationLatitude;          // Base Station latitude. if registered on a
799                                           // CDMA system or -1 if not. Base Station latitude is a
800                                           // decimal number as specified in 3GPP2 C.S0005-A v6.0.
801                                           // It is represented in units of 0.25 seconds and ranges
802                                           // from -1296000 to 1296000, both values inclusive
803                                           // (corresponding to a range of -90 to +90 degrees).
804     int32_t baseStationLongitude;         // Base Station longitude. if registered on a
805                                           // CDMA system or -1 if not. Base Station
806                                           // longitude is a decimal number as specified in
807                                           // 3GPP2 C.S0005-A v6.0. It is represented in
808                                           // units of 0.25 seconds and ranges from -2592000
809                                           // to 2592000, both values inclusive (corresponding
810                                           // to a range of -180 to +180 degrees).
811     bool cssSupported;                    // concurrent services support indicator. if
812                                           // registered on a CDMA system.
813                                           // false - Concurrent services not supported,
814                                           // true - Concurrent services supported
815     int32_t systemId;                     // System ID. if registered on a CDMA system or
816                                           // -1 if not. Valid System ID are 0 - 32767
817     int32_t networkId;                    // Network ID. if registered on a CDMA system or
818                                           // -1 if not. Valid System ID are 0 - 65535
819     int32_t roamingIndicator;             // TSB-58 Roaming Indicator if registered
820                                           // on a CDMA or EVDO system or -1 if not.
821                                           // Valid values are 0-255.
822     int32_t systemIsInPrl;                // indicates whether the current system is in the
823                                           // PRL if registered on a CDMA or EVDO system or -1 if
824                                           // not. 0=not in the PRL, 1=in the PRL
825     int32_t defaultRoamingIndicator;      // default Roaming Indicator from the PRL,
826                                           // if registered on a CDMA or EVDO system or -1 if not.
827                                           // Valid values are 0-255.
828     int32_t reasonForDenial;              // reasonForDenial if registration state is 3
829                                           // (Registration denied) this is an enumerated reason why
830                                           // registration was denied. See 3GPP TS 24.008,
831                                           // 10.5.3.6 and Annex G.
832                                           // 0 - General
833                                           // 1 - Authentication Failure
834                                           // 2 - IMSI unknown in HLR
835                                           // 3 - Illegal MS
836                                           // 4 - Illegal ME
837                                           // 5 - PLMN not allowed
838                                           // 6 - Location area not allowed
839                                           // 7 - Roaming not allowed
840                                           // 8 - No Suitable Cells in this Location Area
841                                           // 9 - Network failure
842                                           // 10 - Persistent location update reject
843                                           // 11 - PLMN not allowed
844                                           // 12 - Location area not allowed
845                                           // 13 - Roaming not allowed in this Location Area
846                                           // 15 - No Suitable Cells in this Location Area
847                                           // 17 - Network Failure
848                                           // 20 - MAC Failure
849                                           // 21 - Sync Failure
850                                           // 22 - Congestion
851                                           // 23 - GSM Authentication unacceptable
852                                           // 25 - Not Authorized for this CSG
853                                           // 32 - Service option not supported
854                                           // 33 - Requested service option not subscribed
855                                           // 34 - Service option temporarily out of order
856                                           // 38 - Call cannot be identified
857                                           // 48-63 - Retry upon entry into a new cell
858                                           // 95 - Semantically incorrect message
859                                           // 96 - Invalid mandatory information
860                                           // 97 - Message type non-existent or not implemented
861                                           // 98 - Message type not compatible with protocol state
862                                           // 99 - Information element non-existent or not implemented
863                                           // 100 - Conditional IE error
864                                           // 101 - Message not compatible with protocol state
865                                           // 111 - Protocol error, unspecified
866     int32_t psc;                          // Primary Scrambling Code of the current
867                                           // cell as described in TS 25.331, in hexadecimal
868                                           // format, or -1 if unknown or not registered
869                                           // to a UMTS network.
870 };
871
872 struct DataRegStateResult {
873     RegState regState;                    // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
874                                           // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
875                                           // UNKNOWN, REG_ROAMING defined in RegState
876     int32_t lac;                          // LAC if registered or -1 if not
877                                           // valid LAC are 0x0000 - 0xffff
878     int32_t cid;                          // CID if registered or -1 if not
879                                           // valid CID are 0x00000000 - 0x0fffffff
880     int32_t rat;                          // indicates the available data radio technology,
881                                           // valid values as defined by RIL_RadioTechnology.
882     int32_t reasonDataDenied;             // if registration state is 3 (Registration
883                                           // denied) this is an enumerated reason why
884                                           // registration was denied. See 3GPP TS 24.008,
885                                           // Annex G.6 "Additonal cause codes for GMM".
886                                           // 7 == GPRS services not allowed
887                                           // 8 == GPRS services and non-GPRS services not allowed
888                                           // 9 == MS identity cannot be derived by the network
889                                           // 10 == Implicitly detached
890                                           // 14 == GPRS services not allowed in this PLMN
891                                           // 16 == MSC temporarily not reachable
892                                           // 40 == No PDP context activated
893     int32_t maxDataCalls;                 // The maximum number of simultaneous Data Calls that
894                                           // must be established using requestSetupDataCall().
895     // The values below are optional LTE location information in decimal.
896     // If a value is unknown that value must be -1.
897     int32_t tac;                          // a 16-bit Tracking Area Code.
898     int32_t phyCid;                       // a 0-503 Physical Cell Identifier.
899     int32_t eci;                          // a 28-bit E-UTRAN Cell Identifier.
900     int32_t csgid;                        // a 27-bit Closed Subscriber Group Identity.
901     int32_t tadv;                         // a 6-bit timing advance value.
902 };
903
904 // See also com.android.internal.telephony.gsm.CallForwardInfo
905 struct CallForwardInfo {
906     CallForwardInfoStatus status;         // For queryCallForwardStatus()
907                                           // status must be ACTIVE, INACTIVE
908                                           // For setCallForward():
909                                           // status must be
910                                           // DISABLE, ENABLE, INTERROGATE, REGISTRATION, ERASURE
911     int32_t reason;                       // from TS 27.007 7.11 "reason"
912     int32_t serviceClass;                 // From 27.007 +CCFC/+CLCK "class"
913                                           // See table for Android mapping from
914                                           // MMI service code
915                                           // 0 means user doesnt input class
916     int32_t toa;                          // "type" from TS 27.007 7.11
917     string number;                        // "number" from TS 27.007 7.11.
918     int32_t timeSeconds;
919 };
920
921 // Response struct used in responseQueryAvailableNetworks
922 struct OperatorInfo {
923     string alphaLong;                     // long alpha ONS or EONS
924     string alphaShort;                    // short alpha ONS or EONS
925     string operatorNumeric;               // 5 or 6 digit numeric code (MCC + MNC)
926     OperatorStatus status;
927 };
928
929 struct SmsWriteArgs {
930     SmsWriteArgsStatus status;            // Status of message. See TS 27.005 3.1
931     string pdu;                           // PDU of message to write, as an ASCII hex string less
932                                           // the SMSC address, the TP-layer length is strlen(pdu)/2.
933     string smsc;                          // SMSC address in GSM BCD format prefixed by a length
934                                           // byte (as expected by TS 27.005) or NULL for default
935                                           // SMSC
936 };