1 /*
2  * Copyright (C) 2006 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 #ifndef ANDROID_RIL_H
18 #define ANDROID_RIL_H 1
19 
20 #include <stdlib.h>
21 #include <stdint.h>
22 #include <telephony/ril_cdma_sms.h>
23 #include <telephony/ril_nv_items.h>
24 #include <telephony/ril_msim.h>
25 
26 #ifndef FEATURE_UNIT_TEST
27 #include <sys/time.h>
28 #endif /* !FEATURE_UNIT_TEST */
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #ifndef SIM_COUNT
35 #if defined(ANDROID_SIM_COUNT_2)
36 #define SIM_COUNT 2
37 #elif defined(ANDROID_SIM_COUNT_3)
38 #define SIM_COUNT 3
39 #elif defined(ANDROID_SIM_COUNT_4)
40 #define SIM_COUNT 4
41 #else
42 #define SIM_COUNT 1
43 #endif
44 
45 #ifndef ANDROID_MULTI_SIM
46 #define SIM_COUNT 1
47 #endif
48 #endif
49 
50 /*
51  * RIL version.
52  * Value of RIL_VERSION should not be changed in future. Here onwards,
53  * when a new change is supposed to be introduced  which could involve new
54  * schemes added like Wakelocks, data structures added/updated, etc, we would
55  * just document RIL version associated with that change below. When OEM updates its
56  * RIL with those changes, they would return that new RIL version during RIL_REGISTER.
57  * We should make use of the returned version by vendor to identify appropriate scheme
58  * or data structure version to use.
59  *
60  * Documentation of RIL version and associated changes
61  * RIL_VERSION = 12 : This version corresponds to updated data structures namely
62  *                    RIL_Data_Call_Response_v11, RIL_SIM_IO_v6, RIL_CardStatus_v6,
63  *                    RIL_SimRefreshResponse_v7, RIL_CDMA_CallWaiting_v6,
64  *                    RIL_LTE_SignalStrength_v8, RIL_SignalStrength_v10, RIL_CellIdentityGsm_v12
65  *                    RIL_CellIdentityWcdma_v12, RIL_CellIdentityLte_v12,RIL_CellInfoGsm_v12,
66  *                    RIL_CellInfoWcdma_v12, RIL_CellInfoLte_v12, RIL_CellInfo_v12.
67  *
68  * RIL_VERSION = 13 : This version includes new wakelock semantics and as the first
69  *                    strongly versioned version it enforces structure use.
70  *
71  * RIL_VERSION = 14 : New data structures are added, namely RIL_CarrierMatchType,
72  *                    RIL_Carrier, RIL_CarrierRestrictions and RIL_PCO_Data.
73  *                    New commands added: RIL_REQUEST_SET_CARRIER_RESTRICTIONS,
74  *                    RIL_REQUEST_SET_CARRIER_RESTRICTIONS and RIL_UNSOL_PCO_DATA.
75  *
76  * RIL_VERSION = 15 : New commands added:
77  *                    RIL_UNSOL_MODEM_RESTART,
78  *                    RIL_REQUEST_SEND_DEVICE_STATE,
79  *                    RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER,
80  *                    RIL_REQUEST_SET_SIM_CARD_POWER,
81  *                    RIL_REQUEST_SET_CARRIER_INFO_IMSI_ENCRYPTION,
82  *                    RIL_UNSOL_CARRIER_INFO_IMSI_ENCRYPTION
83  *                    RIL_REQUEST_START_NETWORK_SCAN
84  *                    RIL_REQUEST_STOP_NETWORK_SCAN
85  *                    RIL_UNSOL_NETWORK_SCAN_RESULT
86  *                    RIL_REQUEST_GET_MODEM_STACK_STATUS
87  *                    RIL_REQUEST_ENABLE_MODEM
88  *                    RIL_REQUEST_EMERGENCY_DIAL
89  *                    RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS
90  *                    RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA
91  *                    RIL_REQUEST_SET_LINK_CAPACITY_REPORTING_CRITERIA
92  *                    RIL_REQUEST_ENABLE_UICC_APPLICATIONS
93  *                    RIL_REQUEST_ARE_UICC_APPLICATIONS_ENABLED
94  *                    RIL_REQUEST_ENTER_SIM_DEPERSONALIZATION
95  *                    RIL_REQUEST_CDMA_SEND_SMS_EXPECT_MORE
96  *                    The new parameters for RIL_REQUEST_SETUP_DATA_CALL,
97  *                    Updated data structures: RIL_DataProfileInfo_v15, RIL_InitialAttachApn_v15,
98  *                    RIL_Data_Call_Response_v12.
99  *                    New data structure RIL_DataRegistrationStateResponse, RIL_OpenChannelParams,
100  *                    RIL_VoiceRegistrationStateResponse same is
101  *                    used in RIL_REQUEST_DATA_REGISTRATION_STATE and
102  *                    RIL_REQUEST_VOICE_REGISTRATION_STATE respectively.
103  */
104 #define RIL_VERSION 12
105 #define LAST_IMPRECISE_RIL_VERSION 12 // Better self-documented name
106 #define RIL_VERSION_MIN 6 /* Minimum RIL_VERSION supported */
107 
108 #define CDMA_ALPHA_INFO_BUFFER_LENGTH 64
109 #define CDMA_NUMBER_INFO_BUFFER_LENGTH 81
110 
111 #define MAX_RILDS 3
112 #define MAX_SERVICE_NAME_LENGTH 6
113 #define MAX_CLIENT_ID_LENGTH 2
114 #define MAX_DEBUG_SOCKET_NAME_LENGTH 12
115 #define MAX_QEMU_PIPE_NAME_LENGTH  11
116 #define MAX_UUID_LENGTH 64
117 #define MAX_BANDS 8
118 #define MAX_CHANNELS 32
119 #define MAX_RADIO_ACCESS_NETWORKS 8
120 #define MAX_BROADCAST_SMS_CONFIG_INFO 25
121 
122 
123 typedef void * RIL_Token;
124 
125 typedef enum {
126     RIL_SOCKET_1,
127 #if (SIM_COUNT >= 2)
128     RIL_SOCKET_2,
129 #if (SIM_COUNT >= 3)
130     RIL_SOCKET_3,
131 #endif
132 #if (SIM_COUNT >= 4)
133     RIL_SOCKET_4,
134 #endif
135 #endif
136     RIL_SOCKET_NUM
137 } RIL_SOCKET_ID;
138 
139 
140 typedef enum {
141     RIL_E_SUCCESS = 0,
142     RIL_E_RADIO_NOT_AVAILABLE = 1,     /* If radio did not start or is resetting */
143     RIL_E_GENERIC_FAILURE = 2,
144     RIL_E_PASSWORD_INCORRECT = 3,      /* for PIN/PIN2 methods only! */
145     RIL_E_SIM_PIN2 = 4,                /* Operation requires SIM PIN2 to be entered */
146     RIL_E_SIM_PUK2 = 5,                /* Operation requires SIM PIN2 to be entered */
147     RIL_E_REQUEST_NOT_SUPPORTED = 6,
148     RIL_E_CANCELLED = 7,
149     RIL_E_OP_NOT_ALLOWED_DURING_VOICE_CALL = 8, /* data ops are not allowed during voice
150                                                    call on a Class C GPRS device */
151     RIL_E_OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,  /* data ops are not allowed before device
152                                                    registers in network */
153     RIL_E_SMS_SEND_FAIL_RETRY = 10,             /* fail to send sms and need retry */
154     RIL_E_SIM_ABSENT = 11,                      /* fail to set the location where CDMA subscription
155                                                    shall be retrieved because of SIM or RUIM
156                                                    card absent */
157     RIL_E_SUBSCRIPTION_NOT_AVAILABLE = 12,      /* fail to find CDMA subscription from specified
158                                                    location */
159     RIL_E_MODE_NOT_SUPPORTED = 13,              /* HW does not support preferred network type */
160     RIL_E_FDN_CHECK_FAILURE = 14,               /* command failed because recipient is not on FDN list */
161     RIL_E_ILLEGAL_SIM_OR_ME = 15,               /* network selection failed due to
162                                                    illegal SIM or ME */
163     RIL_E_MISSING_RESOURCE = 16,                /* no logical channel available */
164     RIL_E_NO_SUCH_ELEMENT = 17,                  /* application not found on SIM */
165     RIL_E_DIAL_MODIFIED_TO_USSD = 18,           /* DIAL request modified to USSD */
166     RIL_E_DIAL_MODIFIED_TO_SS = 19,             /* DIAL request modified to SS */
167     RIL_E_DIAL_MODIFIED_TO_DIAL = 20,           /* DIAL request modified to DIAL with different
168                                                    data */
169     RIL_E_USSD_MODIFIED_TO_DIAL = 21,           /* USSD request modified to DIAL */
170     RIL_E_USSD_MODIFIED_TO_SS = 22,             /* USSD request modified to SS */
171     RIL_E_USSD_MODIFIED_TO_USSD = 23,           /* USSD request modified to different USSD
172                                                    request */
173     RIL_E_SS_MODIFIED_TO_DIAL = 24,             /* SS request modified to DIAL */
174     RIL_E_SS_MODIFIED_TO_USSD = 25,             /* SS request modified to USSD */
175     RIL_E_SUBSCRIPTION_NOT_SUPPORTED = 26,      /* Subscription not supported by RIL */
176     RIL_E_SS_MODIFIED_TO_SS = 27,               /* SS request modified to different SS request */
177     RIL_E_LCE_NOT_SUPPORTED = 36,               /* LCE service not supported(36 in RILConstants.java) */
178     RIL_E_NO_MEMORY = 37,                       /* Not sufficient memory to process the request */
179     RIL_E_INTERNAL_ERR = 38,                    /* Modem hit unexpected error scenario while handling
180                                                    this request */
181     RIL_E_SYSTEM_ERR = 39,                      /* Hit platform or system error */
182     RIL_E_MODEM_ERR = 40,                       /* Vendor RIL got unexpected or incorrect response
183                                                    from modem for this request */
184     RIL_E_INVALID_STATE = 41,                   /* Unexpected request for the current state */
185     RIL_E_NO_RESOURCES = 42,                    /* Not sufficient resource to process the request */
186     RIL_E_SIM_ERR = 43,                         /* Received error from SIM card */
187     RIL_E_INVALID_ARGUMENTS = 44,               /* Received invalid arguments in request */
188     RIL_E_INVALID_SIM_STATE = 45,               /* Can not process the request in current SIM state */
189     RIL_E_INVALID_MODEM_STATE = 46,             /* Can not process the request in current Modem state */
190     RIL_E_INVALID_CALL_ID = 47,                 /* Received invalid call id in request */
191     RIL_E_NO_SMS_TO_ACK = 48,                   /* ACK received when there is no SMS to ack */
192     RIL_E_NETWORK_ERR = 49,                     /* Received error from network */
193     RIL_E_REQUEST_RATE_LIMITED = 50,            /* Operation denied due to overly-frequent requests */
194     RIL_E_SIM_BUSY = 51,                        /* SIM is busy */
195     RIL_E_SIM_FULL = 52,                        /* The target EF is full */
196     RIL_E_NETWORK_REJECT = 53,                  /* Request is rejected by network */
197     RIL_E_OPERATION_NOT_ALLOWED = 54,           /* Not allowed the request now */
198     RIL_E_EMPTY_RECORD = 55,                    /* The request record is empty */
199     RIL_E_INVALID_SMS_FORMAT = 56,              /* Invalid sms format */
200     RIL_E_ENCODING_ERR = 57,                    /* Message not encoded properly */
201     RIL_E_INVALID_SMSC_ADDRESS = 58,            /* SMSC address specified is invalid */
202     RIL_E_NO_SUCH_ENTRY = 59,                   /* No such entry present to perform the request */
203     RIL_E_NETWORK_NOT_READY = 60,               /* Network is not ready to perform the request */
204     RIL_E_NOT_PROVISIONED = 61,                 /* Device doesnot have this value provisioned */
205     RIL_E_NO_SUBSCRIPTION = 62,                 /* Device doesnot have subscription */
206     RIL_E_NO_NETWORK_FOUND = 63,                /* Network cannot be found */
207     RIL_E_DEVICE_IN_USE = 64,                   /* Operation cannot be performed because the device
208                                                    is currently in use */
209     RIL_E_ABORTED = 65,                         /* Operation aborted */
210     RIL_E_INVALID_RESPONSE = 66,                /* Invalid response sent by vendor code */
211     // OEM specific error codes. To be used by OEM when they don't want to reveal
212     // specific error codes which would be replaced by Generic failure.
213     RIL_E_OEM_ERROR_1 = 501,
214     RIL_E_OEM_ERROR_2 = 502,
215     RIL_E_OEM_ERROR_3 = 503,
216     RIL_E_OEM_ERROR_4 = 504,
217     RIL_E_OEM_ERROR_5 = 505,
218     RIL_E_OEM_ERROR_6 = 506,
219     RIL_E_OEM_ERROR_7 = 507,
220     RIL_E_OEM_ERROR_8 = 508,
221     RIL_E_OEM_ERROR_9 = 509,
222     RIL_E_OEM_ERROR_10 = 510,
223     RIL_E_OEM_ERROR_11 = 511,
224     RIL_E_OEM_ERROR_12 = 512,
225     RIL_E_OEM_ERROR_13 = 513,
226     RIL_E_OEM_ERROR_14 = 514,
227     RIL_E_OEM_ERROR_15 = 515,
228     RIL_E_OEM_ERROR_16 = 516,
229     RIL_E_OEM_ERROR_17 = 517,
230     RIL_E_OEM_ERROR_18 = 518,
231     RIL_E_OEM_ERROR_19 = 519,
232     RIL_E_OEM_ERROR_20 = 520,
233     RIL_E_OEM_ERROR_21 = 521,
234     RIL_E_OEM_ERROR_22 = 522,
235     RIL_E_OEM_ERROR_23 = 523,
236     RIL_E_OEM_ERROR_24 = 524,
237     RIL_E_OEM_ERROR_25 = 525
238 } RIL_Errno;
239 
240 typedef enum {
241     RIL_CALL_ACTIVE = 0,
242     RIL_CALL_HOLDING = 1,
243     RIL_CALL_DIALING = 2,    /* MO call only */
244     RIL_CALL_ALERTING = 3,   /* MO call only */
245     RIL_CALL_INCOMING = 4,   /* MT call only */
246     RIL_CALL_WAITING = 5     /* MT call only */
247 } RIL_CallState;
248 
249 typedef enum {
250     RADIO_STATE_OFF = 0,                   /* Radio explictly powered off (eg CFUN=0) */
251     RADIO_STATE_UNAVAILABLE = 1,           /* Radio unavailable (eg, resetting or not booted) */
252     RADIO_STATE_ON = 10                    /* Radio is on */
253 } RIL_RadioState;
254 
255 typedef enum {
256     RADIO_TECH_UNKNOWN = 0,
257     RADIO_TECH_GPRS = 1,
258     RADIO_TECH_EDGE = 2,
259     RADIO_TECH_UMTS = 3,
260     RADIO_TECH_IS95A = 4,
261     RADIO_TECH_IS95B = 5,
262     RADIO_TECH_1xRTT =  6,
263     RADIO_TECH_EVDO_0 = 7,
264     RADIO_TECH_EVDO_A = 8,
265     RADIO_TECH_HSDPA = 9,
266     RADIO_TECH_HSUPA = 10,
267     RADIO_TECH_HSPA = 11,
268     RADIO_TECH_EVDO_B = 12,
269     RADIO_TECH_EHRPD = 13,
270     RADIO_TECH_LTE = 14,
271     RADIO_TECH_HSPAP = 15, // HSPA+
272     RADIO_TECH_GSM = 16, // Only supports voice
273     RADIO_TECH_TD_SCDMA = 17,
274     RADIO_TECH_IWLAN = 18,
275     RADIO_TECH_LTE_CA = 19
276 } RIL_RadioTechnology;
277 
278 typedef enum {
279     RAF_UNKNOWN =  (1 <<  RADIO_TECH_UNKNOWN),
280     RAF_GPRS = (1 << RADIO_TECH_GPRS),
281     RAF_EDGE = (1 << RADIO_TECH_EDGE),
282     RAF_UMTS = (1 << RADIO_TECH_UMTS),
283     RAF_IS95A = (1 << RADIO_TECH_IS95A),
284     RAF_IS95B = (1 << RADIO_TECH_IS95B),
285     RAF_1xRTT = (1 << RADIO_TECH_1xRTT),
286     RAF_EVDO_0 = (1 << RADIO_TECH_EVDO_0),
287     RAF_EVDO_A = (1 << RADIO_TECH_EVDO_A),
288     RAF_HSDPA = (1 << RADIO_TECH_HSDPA),
289     RAF_HSUPA = (1 << RADIO_TECH_HSUPA),
290     RAF_HSPA = (1 << RADIO_TECH_HSPA),
291     RAF_EVDO_B = (1 << RADIO_TECH_EVDO_B),
292     RAF_EHRPD = (1 << RADIO_TECH_EHRPD),
293     RAF_LTE = (1 << RADIO_TECH_LTE),
294     RAF_HSPAP = (1 << RADIO_TECH_HSPAP),
295     RAF_GSM = (1 << RADIO_TECH_GSM),
296     RAF_TD_SCDMA = (1 << RADIO_TECH_TD_SCDMA),
297     RAF_LTE_CA = (1 << RADIO_TECH_LTE_CA)
298 } RIL_RadioAccessFamily;
299 
300 typedef enum {
301     BAND_MODE_UNSPECIFIED = 0,      //"unspecified" (selected by baseband automatically)
302     BAND_MODE_EURO = 1,             //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
303     BAND_MODE_USA = 2,              //"US band" (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
304     BAND_MODE_JPN = 3,              //"JPN band" (WCDMA-800 / WCDMA-IMT-2000)
305     BAND_MODE_AUS = 4,              //"AUS band" (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
306     BAND_MODE_AUS_2 = 5,            //"AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
307     BAND_MODE_CELL_800 = 6,         //"Cellular" (800-MHz Band)
308     BAND_MODE_PCS = 7,              //"PCS" (1900-MHz Band)
309     BAND_MODE_JTACS = 8,            //"Band Class 3" (JTACS Band)
310     BAND_MODE_KOREA_PCS = 9,        //"Band Class 4" (Korean PCS Band)
311     BAND_MODE_5_450M = 10,          //"Band Class 5" (450-MHz Band)
312     BAND_MODE_IMT2000 = 11,         //"Band Class 6" (2-GMHz IMT2000 Band)
313     BAND_MODE_7_700M_2 = 12,        //"Band Class 7" (Upper 700-MHz Band)
314     BAND_MODE_8_1800M = 13,         //"Band Class 8" (1800-MHz Band)
315     BAND_MODE_9_900M = 14,          //"Band Class 9" (900-MHz Band)
316     BAND_MODE_10_800M_2 = 15,       //"Band Class 10" (Secondary 800-MHz Band)
317     BAND_MODE_EURO_PAMR_400M = 16,  //"Band Class 11" (400-MHz European PAMR Band)
318     BAND_MODE_AWS = 17,             //"Band Class 15" (AWS Band)
319     BAND_MODE_USA_2500M = 18        //"Band Class 16" (US 2.5-GHz Band)
320 } RIL_RadioBandMode;
321 
322 typedef enum {
323     RC_PHASE_CONFIGURED = 0,  // LM is configured is initial value and value after FINISH completes
324     RC_PHASE_START      = 1,  // START is sent before Apply and indicates that an APPLY will be
325                               // forthcoming with these same parameters
326     RC_PHASE_APPLY      = 2,  // APPLY is sent after all LM's receive START and returned
327                               // RIL_RadioCapability.status = 0, if any START's fail no
328                               // APPLY will be sent
329     RC_PHASE_UNSOL_RSP  = 3,  // UNSOL_RSP is sent with RIL_UNSOL_RADIO_CAPABILITY
330     RC_PHASE_FINISH     = 4   // FINISH is sent after all commands have completed. If an error
331                               // occurs in any previous command the RIL_RadioAccessesFamily and
332                               // logicalModemUuid fields will be the prior configuration thus
333                               // restoring the configuration to the previous value. An error
334                               // returned by this command will generally be ignored or may
335                               // cause that logical modem to be removed from service.
336 } RadioCapabilityPhase;
337 
338 typedef enum {
339     RC_STATUS_NONE       = 0, // This parameter has no meaning with RC_PHASE_START,
340                               // RC_PHASE_APPLY
341     RC_STATUS_SUCCESS    = 1, // Tell modem the action transaction of set radio
342                               // capability was success with RC_PHASE_FINISH
343     RC_STATUS_FAIL       = 2, // Tell modem the action transaction of set radio
344                               // capability is fail with RC_PHASE_FINISH.
345 } RadioCapabilityStatus;
346 
347 #define RIL_RADIO_CAPABILITY_VERSION 1
348 typedef struct {
349     int version;            // Version of structure, RIL_RADIO_CAPABILITY_VERSION
350     int session;            // Unique session value defined by framework returned in all "responses/unsol"
351     int phase;              // CONFIGURED, START, APPLY, FINISH
352     int rat;                // RIL_RadioAccessFamily for the radio
353     char logicalModemUuid[MAX_UUID_LENGTH]; // A UUID typically "com.xxxx.lmX where X is the logical modem.
354     int status;             // Return status and an input parameter for RC_PHASE_FINISH
355 } RIL_RadioCapability;
356 
357 // Do we want to split Data from Voice and the use
358 // RIL_RadioTechnology for get/setPreferredVoice/Data ?
359 typedef enum {
360     PREF_NET_TYPE_GSM_WCDMA                = 0, /* GSM/WCDMA (WCDMA preferred) */
361     PREF_NET_TYPE_GSM_ONLY                 = 1, /* GSM only */
362     PREF_NET_TYPE_WCDMA                    = 2, /* WCDMA  */
363     PREF_NET_TYPE_GSM_WCDMA_AUTO           = 3, /* GSM/WCDMA (auto mode, according to PRL) */
364     PREF_NET_TYPE_CDMA_EVDO_AUTO           = 4, /* CDMA and EvDo (auto mode, according to PRL) */
365     PREF_NET_TYPE_CDMA_ONLY                = 5, /* CDMA only */
366     PREF_NET_TYPE_EVDO_ONLY                = 6, /* EvDo only */
367     PREF_NET_TYPE_GSM_WCDMA_CDMA_EVDO_AUTO = 7, /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL) */
368     PREF_NET_TYPE_LTE_CDMA_EVDO            = 8, /* LTE, CDMA and EvDo */
369     PREF_NET_TYPE_LTE_GSM_WCDMA            = 9, /* LTE, GSM/WCDMA */
370     PREF_NET_TYPE_LTE_CMDA_EVDO_GSM_WCDMA  = 10, /* LTE, CDMA, EvDo, GSM/WCDMA */
371     PREF_NET_TYPE_LTE_ONLY                 = 11, /* LTE only */
372     PREF_NET_TYPE_LTE_WCDMA                = 12,  /* LTE/WCDMA */
373     PREF_NET_TYPE_TD_SCDMA_ONLY            = 13, /* TD-SCDMA only */
374     PREF_NET_TYPE_TD_SCDMA_WCDMA           = 14, /* TD-SCDMA and WCDMA */
375     PREF_NET_TYPE_TD_SCDMA_LTE             = 15, /* TD-SCDMA and LTE */
376     PREF_NET_TYPE_TD_SCDMA_GSM             = 16, /* TD-SCDMA and GSM */
377     PREF_NET_TYPE_TD_SCDMA_GSM_LTE         = 17, /* TD-SCDMA,GSM and LTE */
378     PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA       = 18, /* TD-SCDMA, GSM/WCDMA */
379     PREF_NET_TYPE_TD_SCDMA_WCDMA_LTE       = 19, /* TD-SCDMA, WCDMA and LTE */
380     PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_LTE   = 20, /* TD-SCDMA, GSM/WCDMA and LTE */
381     PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO  = 21, /* TD-SCDMA, GSM/WCDMA, CDMA and EvDo */
382     PREF_NET_TYPE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA   = 22  /* TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA */
383 } RIL_PreferredNetworkType;
384 
385 /* Source for cdma subscription */
386 typedef enum {
387    CDMA_SUBSCRIPTION_SOURCE_RUIM_SIM = 0,
388    CDMA_SUBSCRIPTION_SOURCE_NV = 1
389 } RIL_CdmaSubscriptionSource;
390 
391 /* User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0 */
392 typedef enum {
393     RIL_UUS_TYPE1_IMPLICIT = 0,
394     RIL_UUS_TYPE1_REQUIRED = 1,
395     RIL_UUS_TYPE1_NOT_REQUIRED = 2,
396     RIL_UUS_TYPE2_REQUIRED = 3,
397     RIL_UUS_TYPE2_NOT_REQUIRED = 4,
398     RIL_UUS_TYPE3_REQUIRED = 5,
399     RIL_UUS_TYPE3_NOT_REQUIRED = 6
400 } RIL_UUS_Type;
401 
402 /* User-to-User Signaling Information data coding schemes. Possible values for
403  * Octet 3 (Protocol Discriminator field) in the UUIE. The values have been
404  * specified in section 10.5.4.25 of 3GPP TS 24.008 */
405 typedef enum {
406     RIL_UUS_DCS_USP = 0,          /* User specified protocol */
407     RIL_UUS_DCS_OSIHLP = 1,       /* OSI higher layer protocol */
408     RIL_UUS_DCS_X244 = 2,         /* X.244 */
409     RIL_UUS_DCS_RMCF = 3,         /* Reserved for system mangement
410                                      convergence function */
411     RIL_UUS_DCS_IA5c = 4          /* IA5 characters */
412 } RIL_UUS_DCS;
413 
414 /* User-to-User Signaling Information defined in 3GPP 23.087 v8.0
415  * This data is passed in RIL_ExtensionRecord and rec contains this
416  * structure when type is RIL_UUS_INFO_EXT_REC */
417 typedef struct {
418   RIL_UUS_Type    uusType;    /* UUS Type */
419   RIL_UUS_DCS     uusDcs;     /* UUS Data Coding Scheme */
420   int             uusLength;  /* Length of UUS Data */
421   char *          uusData;    /* UUS Data */
422 } RIL_UUS_Info;
423 
424 /* CDMA Signal Information Record as defined in C.S0005 section 3.7.5.5 */
425 typedef struct {
426   char isPresent;    /* non-zero if signal information record is present */
427   char signalType;   /* as defined 3.7.5.5-1 */
428   char alertPitch;   /* as defined 3.7.5.5-2 */
429   char signal;       /* as defined 3.7.5.5-3, 3.7.5.5-4 or 3.7.5.5-5 */
430 } RIL_CDMA_SignalInfoRecord;
431 
432 typedef struct {
433     RIL_CallState   state;
434     int             index;      /* Connection Index for use with, eg, AT+CHLD */
435     int             toa;        /* type of address, eg 145 = intl */
436     char            isMpty;     /* nonzero if is mpty call */
437     char            isMT;       /* nonzero if call is mobile terminated */
438     char            als;        /* ALS line indicator if available
439                                    (0 = line 1) */
440     char            isVoice;    /* nonzero if this is is a voice call */
441     char            isVoicePrivacy;     /* nonzero if CDMA voice privacy mode is active */
442     char *          number;     /* Remote party number */
443     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown 3=Payphone */
444     char *          name;       /* Remote party name */
445     int             namePresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown 3=Payphone */
446     RIL_UUS_Info *  uusInfo;    /* NULL or Pointer to User-User Signaling Information */
447 } RIL_Call;
448 
449 /* Deprecated, use RIL_Data_Call_Response_v6 */
450 typedef struct {
451     int             cid;        /* Context ID, uniquely identifies this call */
452     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
453     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
454                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". */
455     char *          apn;        /* ignored */
456     char *          address;    /* An address, e.g., "192.0.1.3" or "2001:db8::1". */
457 } RIL_Data_Call_Response_v4;
458 
459 /*
460  * Returned by RIL_REQUEST_SETUP_DATA_CALL, RIL_REQUEST_DATA_CALL_LIST
461  * and RIL_UNSOL_DATA_CALL_LIST_CHANGED, on error status != 0.
462  */
463 typedef struct {
464     int             status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
465     int             suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
466                                            back-off timer value RIL wants to override the one
467                                            pre-configured in FW.
468                                            The unit is miliseconds.
469                                            The value < 0 means no value is suggested.
470                                            The value 0 means retry should be done ASAP.
471                                            The value of INT_MAX(0x7fffffff) means no retry. */
472     int             cid;        /* Context ID, uniquely identifies this call */
473     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
474     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
475                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
476                                    PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
477                                    such as "IP" or "IPV6" */
478     char *          ifname;     /* The network interface name */
479     char *          addresses;  /* A space-delimited list of addresses with optional "/" prefix length,
480                                    e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
481                                    May not be empty, typically 1 IPv4 or 1 IPv6 or
482                                    one of each. If the prefix length is absent the addresses
483                                    are assumed to be point to point with IPv4 having a prefix
484                                    length of 32 and IPv6 128. */
485     char *          dnses;      /* A space-delimited list of DNS server addresses,
486                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
487                                    May be empty. */
488     char *          gateways;   /* A space-delimited list of default gateway addresses,
489                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
490                                    May be empty in which case the addresses represent point
491                                    to point connections. */
492 } RIL_Data_Call_Response_v6;
493 
494 typedef struct {
495     int             status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
496     int             suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
497                                            back-off timer value RIL wants to override the one
498                                            pre-configured in FW.
499                                            The unit is miliseconds.
500                                            The value < 0 means no value is suggested.
501                                            The value 0 means retry should be done ASAP.
502                                            The value of INT_MAX(0x7fffffff) means no retry. */
503     int             cid;        /* Context ID, uniquely identifies this call */
504     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
505     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
506                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
507                                    PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
508                                    such as "IP" or "IPV6" */
509     char *          ifname;     /* The network interface name */
510     char *          addresses;  /* A space-delimited list of addresses with optional "/" prefix length,
511                                    e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
512                                    May not be empty, typically 1 IPv4 or 1 IPv6 or
513                                    one of each. If the prefix length is absent the addresses
514                                    are assumed to be point to point with IPv4 having a prefix
515                                    length of 32 and IPv6 128. */
516     char *          dnses;      /* A space-delimited list of DNS server addresses,
517                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
518                                    May be empty. */
519     char *          gateways;   /* A space-delimited list of default gateway addresses,
520                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
521                                    May be empty in which case the addresses represent point
522                                    to point connections. */
523     char *          pcscf;    /* the Proxy Call State Control Function address
524                                  via PCO(Protocol Configuration Option) for IMS client. */
525 } RIL_Data_Call_Response_v9;
526 
527 typedef struct {
528     int             status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
529     int             suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
530                                            back-off timer value RIL wants to override the one
531                                            pre-configured in FW.
532                                            The unit is miliseconds.
533                                            The value < 0 means no value is suggested.
534                                            The value 0 means retry should be done ASAP.
535                                            The value of INT_MAX(0x7fffffff) means no retry. */
536     int             cid;        /* Context ID, uniquely identifies this call */
537     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
538     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
539                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
540                                    PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
541                                    such as "IP" or "IPV6" */
542     char *          ifname;     /* The network interface name */
543     char *          addresses;  /* A space-delimited list of addresses with optional "/" prefix length,
544                                    e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
545                                    May not be empty, typically 1 IPv4 or 1 IPv6 or
546                                    one of each. If the prefix length is absent the addresses
547                                    are assumed to be point to point with IPv4 having a prefix
548                                    length of 32 and IPv6 128. */
549     char *          dnses;      /* A space-delimited list of DNS server addresses,
550                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
551                                    May be empty. */
552     char *          gateways;   /* A space-delimited list of default gateway addresses,
553                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
554                                    May be empty in which case the addresses represent point
555                                    to point connections. */
556     char *          pcscf;    /* the Proxy Call State Control Function address
557                                  via PCO(Protocol Configuration Option) for IMS client. */
558     int             mtu;        /* MTU received from network
559                                    Value <= 0 means network has either not sent a value or
560                                    sent an invalid value */
561 } RIL_Data_Call_Response_v11;
562 
563 typedef struct {
564     int             status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
565     int             suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
566                                            back-off timer value RIL wants to override the one
567                                            pre-configured in FW.
568                                            The unit is milliseconds.
569                                            The value < 0 means no value is suggested.
570                                            The value 0 means retry should be done ASAP.
571                                            The value of INT_MAX(0x7fffffff) means no retry. */
572     int             cid;        /* Context ID, uniquely identifies this call */
573     int             active;     /* 0=inactive, 1=active/physical link down,
574                                    2=active/physical link up */
575     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
576                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
577                                    PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
578                                    such as "IP" or "IPV6" */
579     char *          ifname;     /* The network interface name */
580     char *          addresses;  /* A space-delimited list of addresses with optional "/" prefix
581                                    length, e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
582                                    May not be empty, typically 1 IPv4 or 1 IPv6 or
583                                    one of each. If the prefix length is absent the addresses
584                                    are assumed to be point to point with IPv4 having a prefix
585                                    length of 32 and IPv6 128. */
586     char *          dnses;      /* A space-delimited list of DNS server addresses,
587                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
588                                    May be empty. */
589     char *          gateways;   /* A space-delimited list of default gateway addresses,
590                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
591                                    May be empty in which case the addresses represent point
592                                    to point connections. */
593     char *          pcscf;      /* the Proxy Call State Control Function address
594                                    via PCO(Protocol Configuration Option) for IMS client. */
595     int             mtuV4;      /* MTU received from network for IPv4.
596                                    Value <= 0 means network has either not sent a value or
597                                    sent an invalid value. */
598     int             mtuV6;      /* MTU received from network for IPv6.
599                                    Value <= 0 means network has either not sent a value or
600                                    sent an invalid value. */
601 } RIL_Data_Call_Response_v12;
602 
603 typedef enum {
604     RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
605     RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
606 } RIL_RadioTechnologyFamily;
607 
608 typedef struct {
609     RIL_RadioTechnologyFamily tech;
610     unsigned char             retry;       /* 0 == not retry, nonzero == retry */
611     int                       messageRef;  /* Valid field if retry is set to nonzero.
612                                               Contains messageRef from RIL_SMS_Response
613                                               corresponding to failed MO SMS.
614                                             */
615 
616     union {
617         /* Valid field if tech is RADIO_TECH_3GPP2. See RIL_REQUEST_CDMA_SEND_SMS */
618         RIL_CDMA_SMS_Message* cdmaMessage;
619 
620         /* Valid field if tech is RADIO_TECH_3GPP. See RIL_REQUEST_SEND_SMS */
621         char**                gsmMessage;   /* This is an array of pointers where pointers
622                                                are contiguous but elements pointed by those pointers
623                                                are not contiguous
624                                             */
625     } message;
626 } RIL_IMS_SMS_Message;
627 
628 typedef struct {
629     int messageRef;   /* TP-Message-Reference for GSM,
630                          and BearerData MessageId for CDMA
631                          (See 3GPP2 C.S0015-B, v2.0, table 4.5-1). */
632     char *ackPDU;     /* or NULL if n/a */
633     int errorCode;    /* See 3GPP 27.005, 3.2.5 for GSM/UMTS,
634                          3GPP2 N.S0005 (IS-41C) Table 171 for CDMA,
635                          -1 if unknown or not applicable*/
636 } RIL_SMS_Response;
637 
638 /** Used by RIL_REQUEST_WRITE_SMS_TO_SIM */
639 typedef struct {
640     int status;     /* Status of message.  See TS 27.005 3.1, "<stat>": */
641                     /*      0 = "REC UNREAD"    */
642                     /*      1 = "REC READ"      */
643                     /*      2 = "STO UNSENT"    */
644                     /*      3 = "STO SENT"      */
645     char * pdu;     /* PDU of message to write, as an ASCII hex string less the SMSC address,
646                        the TP-layer length is "strlen(pdu)/2". */
647     char * smsc;    /* SMSC address in GSM BCD format prefixed by a length byte
648                        (as expected by TS 27.005) or NULL for default SMSC */
649 } RIL_SMS_WriteArgs;
650 
651 /** Used by RIL_REQUEST_DIAL */
652 typedef struct {
653     char * address;
654     int clir;
655             /* (same as 'n' paremeter in TS 27.007 7.7 "+CLIR"
656              * clir == 0 on "use subscription default value"
657              * clir == 1 on "CLIR invocation" (restrict CLI presentation)
658              * clir == 2 on "CLIR suppression" (allow CLI presentation)
659              */
660     RIL_UUS_Info *  uusInfo;    /* NULL or Pointer to User-User Signaling Information */
661 } RIL_Dial;
662 
663 typedef struct {
664     int command;    /* one of the commands listed for TS 27.007 +CRSM*/
665     int fileid;     /* EF id */
666     char *path;     /* "pathid" from TS 27.007 +CRSM command.
667                        Path is in hex asciii format eg "7f205f70"
668                        Path must always be provided.
669                      */
670     int p1;
671     int p2;
672     int p3;
673     char *data;     /* May be NULL*/
674     char *pin2;     /* May be NULL*/
675 } RIL_SIM_IO_v5;
676 
677 typedef struct {
678     int command;    /* one of the commands listed for TS 27.007 +CRSM*/
679     int fileid;     /* EF id */
680     char *path;     /* "pathid" from TS 27.007 +CRSM command.
681                        Path is in hex asciii format eg "7f205f70"
682                        Path must always be provided.
683                      */
684     int p1;
685     int p2;
686     int p3;
687     char *data;     /* May be NULL*/
688     char *pin2;     /* May be NULL*/
689     char *aidPtr;   /* AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value. */
690 } RIL_SIM_IO_v6;
691 
692 /* Used by RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL and
693  * RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC. */
694 typedef struct {
695     int sessionid;  /* "sessionid" from TS 27.007 +CGLA command. Should be
696                        ignored for +CSIM command. */
697 
698     /* Following fields are used to derive the APDU ("command" and "length"
699        values in TS 27.007 +CSIM and +CGLA commands). */
700     int cla;
701     int instruction;
702     int p1;
703     int p2;
704     int p3;         /* A negative P3 implies a 4 byte APDU. */
705     char *data;     /* May be NULL. In hex string format. */
706 } RIL_SIM_APDU;
707 
708 typedef struct {
709     int sw1;
710     int sw2;
711     char *simResponse;  /* In hex string format ([a-fA-F0-9]*), except for SIM_AUTHENTICATION
712                            response for which it is in Base64 format, see 3GPP TS 31.102 7.1.2 */
713 } RIL_SIM_IO_Response;
714 
715 /* See also com.android.internal.telephony.gsm.CallForwardInfo */
716 
717 typedef struct {
718     int             status;     /*
719                                  * For RIL_REQUEST_QUERY_CALL_FORWARD_STATUS
720                                  * status 1 = active, 0 = not active
721                                  *
722                                  * For RIL_REQUEST_SET_CALL_FORWARD:
723                                  * status is:
724                                  * 0 = disable
725                                  * 1 = enable
726                                  * 2 = interrogate
727                                  * 3 = registeration
728                                  * 4 = erasure
729                                  */
730 
731     int             reason;      /* from TS 27.007 7.11 "reason" */
732     int             serviceClass;/* From 27.007 +CCFC/+CLCK "class"
733                                     See table for Android mapping from
734                                     MMI service code
735                                     0 means user doesn't input class */
736     int             toa;         /* "type" from TS 27.007 7.11 */
737     char *          number;      /* "number" from TS 27.007 7.11. May be NULL */
738     int             timeSeconds; /* for CF no reply only */
739 }RIL_CallForwardInfo;
740 
741 typedef struct {
742    char * cid;         /* Combination of LAC and Cell Id in 32 bits in GSM.
743                         * Upper 16 bits is LAC and lower 16 bits
744                         * is CID (as described in TS 27.005)
745                         * Primary Scrambling Code (as described in TS 25.331)
746                         *         in 9 bits in UMTS
747                         * Valid values are hexadecimal 0x0000 - 0xffffffff.
748                         */
749    int    rssi;        /* Received RSSI in GSM,
750                         * Level index of CPICH Received Signal Code Power in UMTS
751                         */
752 } RIL_NeighboringCell;
753 
754 typedef struct {
755   char lce_status;                 /* LCE service status:
756                                     * -1 = not supported;
757                                     * 0 = stopped;
758                                     * 1 = active.
759                                     */
760   unsigned int actual_interval_ms; /* actual LCE reporting interval,
761                                     * meaningful only if LCEStatus = 1.
762                                     */
763 } RIL_LceStatusInfo;
764 
765 typedef struct {
766   unsigned int last_hop_capacity_kbps; /* last-hop cellular capacity: kilobits/second. */
767   unsigned char confidence_level;      /* capacity estimate confidence: 0-100 */
768   unsigned char lce_suspended;         /* LCE report going to be suspended? (e.g., radio
769                                         * moves to inactive state or network type change)
770                                         * 1 = suspended;
771                                         * 0 = not suspended.
772                                         */
773 } RIL_LceDataInfo;
774 
775 typedef enum {
776     RIL_MATCH_ALL = 0,          /* Apply to all carriers with the same mcc/mnc */
777     RIL_MATCH_SPN = 1,          /* Use SPN and mcc/mnc to identify the carrier */
778     RIL_MATCH_IMSI_PREFIX = 2,  /* Use IMSI prefix and mcc/mnc to identify the carrier */
779     RIL_MATCH_GID1 = 3,         /* Use GID1 and mcc/mnc to identify the carrier */
780     RIL_MATCH_GID2 = 4,         /* Use GID2 and mcc/mnc to identify the carrier */
781 } RIL_CarrierMatchType;
782 
783 typedef struct {
784     const char * mcc;
785     const char * mnc;
786     RIL_CarrierMatchType match_type;   /* Specify match type for the carrier.
787                                         * If it’s RIL_MATCH_ALL, match_data is null;
788                                         * otherwise, match_data is the value for the match type.
789                                         */
790     const char * match_data;
791 } RIL_Carrier;
792 
793 typedef struct {
794   int32_t len_allowed_carriers;         /* length of array allowed_carriers */
795   int32_t len_excluded_carriers;        /* length of array excluded_carriers */
796   RIL_Carrier * allowed_carriers;       /* whitelist for allowed carriers */
797   RIL_Carrier * excluded_carriers;      /* blacklist for explicitly excluded carriers
798                                          * which match allowed_carriers. Eg. allowed_carriers match
799                                          * mcc/mnc, excluded_carriers has same mcc/mnc and gid1
800                                          * is ABCD. It means except the carrier whose gid1 is ABCD,
801                                          * all carriers with the same mcc/mnc are allowed.
802                                          */
803 } RIL_CarrierRestrictions;
804 
805 typedef enum {
806     NO_MULTISIM_POLICY = 0,             /* configuration applies to each slot independently. */
807     ONE_VALID_SIM_MUST_BE_PRESENT = 1,  /* Any SIM card can be used as far as one valid card is
808                                          * present in the device.
809                                          */
810 } RIL_SimLockMultiSimPolicy;
811 
812 typedef struct {
813   int32_t len_allowed_carriers;         /* length of array allowed_carriers */
814   int32_t len_excluded_carriers;        /* length of array excluded_carriers */
815   RIL_Carrier * allowed_carriers;       /* whitelist for allowed carriers */
816   RIL_Carrier * excluded_carriers;      /* blacklist for explicitly excluded carriers
817                                          * which match allowed_carriers. Eg. allowed_carriers match
818                                          * mcc/mnc, excluded_carriers has same mcc/mnc and gid1
819                                          * is ABCD. It means except the carrier whose gid1 is ABCD,
820                                          * all carriers with the same mcc/mnc are allowed.
821                                          */
822   int allowedCarriersPrioritized;       /* allowed list prioritized */
823   RIL_SimLockMultiSimPolicy multiSimPolicy; /* multisim policy */
824 } RIL_CarrierRestrictionsWithPriority;
825 
826 typedef struct {
827   char * mcc;                         /* MCC of the Carrier. */
828   char * mnc ;                        /* MNC of the Carrier. */
829   uint8_t * carrierKey;               /* Public Key from the Carrier used to encrypt the
830                                        * IMSI/IMPI.
831                                        */
832   int32_t carrierKeyLength;            /* Length of the Public Key. */
833   char * keyIdentifier;               /* The keyIdentifier Attribute value pair that helps
834                                        * a server locate the private key to decrypt the
835                                        * permanent identity.
836                                        */
837   int64_t expirationTime;             /* Date-Time (in UTC) when the key will expire. */
838 
839 } RIL_CarrierInfoForImsiEncryption;
840 
841 /* See RIL_REQUEST_LAST_CALL_FAIL_CAUSE */
842 typedef enum {
843     CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
844     CALL_FAIL_NO_ROUTE_TO_DESTINATION = 3,
845     CALL_FAIL_CHANNEL_UNACCEPTABLE = 6,
846     CALL_FAIL_OPERATOR_DETERMINED_BARRING = 8,
847     CALL_FAIL_NORMAL = 16,
848     CALL_FAIL_BUSY = 17,
849     CALL_FAIL_NO_USER_RESPONDING = 18,
850     CALL_FAIL_NO_ANSWER_FROM_USER = 19,
851     CALL_FAIL_CALL_REJECTED = 21,
852     CALL_FAIL_NUMBER_CHANGED = 22,
853     CALL_FAIL_PREEMPTION = 25,
854     CALL_FAIL_DESTINATION_OUT_OF_ORDER = 27,
855     CALL_FAIL_INVALID_NUMBER_FORMAT = 28,
856     CALL_FAIL_FACILITY_REJECTED = 29,
857     CALL_FAIL_RESP_TO_STATUS_ENQUIRY = 30,
858     CALL_FAIL_NORMAL_UNSPECIFIED = 31,
859     CALL_FAIL_CONGESTION = 34,
860     CALL_FAIL_NETWORK_OUT_OF_ORDER = 38,
861     CALL_FAIL_TEMPORARY_FAILURE = 41,
862     CALL_FAIL_SWITCHING_EQUIPMENT_CONGESTION = 42,
863     CALL_FAIL_ACCESS_INFORMATION_DISCARDED = 43,
864     CALL_FAIL_REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
865     CALL_FAIL_RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
866     CALL_FAIL_QOS_UNAVAILABLE = 49,
867     CALL_FAIL_REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
868     CALL_FAIL_INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
869     CALL_FAIL_BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
870     CALL_FAIL_BEARER_CAPABILITY_UNAVAILABLE = 58,
871     CALL_FAIL_SERVICE_OPTION_NOT_AVAILABLE = 63,
872     CALL_FAIL_BEARER_SERVICE_NOT_IMPLEMENTED = 65,
873     CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
874     CALL_FAIL_REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
875     CALL_FAIL_ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
876     CALL_FAIL_SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
877     CALL_FAIL_INVALID_TRANSACTION_IDENTIFIER = 81,
878     CALL_FAIL_USER_NOT_MEMBER_OF_CUG = 87,
879     CALL_FAIL_INCOMPATIBLE_DESTINATION = 88,
880     CALL_FAIL_INVALID_TRANSIT_NW_SELECTION = 91,
881     CALL_FAIL_SEMANTICALLY_INCORRECT_MESSAGE = 95,
882     CALL_FAIL_INVALID_MANDATORY_INFORMATION = 96,
883     CALL_FAIL_MESSAGE_TYPE_NON_IMPLEMENTED = 97,
884     CALL_FAIL_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
885     CALL_FAIL_INFORMATION_ELEMENT_NON_EXISTENT = 99,
886     CALL_FAIL_CONDITIONAL_IE_ERROR = 100,
887     CALL_FAIL_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
888     CALL_FAIL_RECOVERY_ON_TIMER_EXPIRED = 102,
889     CALL_FAIL_PROTOCOL_ERROR_UNSPECIFIED = 111,
890     CALL_FAIL_INTERWORKING_UNSPECIFIED = 127,
891     CALL_FAIL_CALL_BARRED = 240,
892     CALL_FAIL_FDN_BLOCKED = 241,
893     CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
894     CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
895     CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */
896     CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
897     CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
898     CALL_FAIL_RADIO_OFF = 247, /* Radio is OFF */
899     CALL_FAIL_OUT_OF_SERVICE = 248, /* No cellular coverage */
900     CALL_FAIL_NO_VALID_SIM = 249, /* No valid SIM is present */
901     CALL_FAIL_RADIO_INTERNAL_ERROR = 250, /* Internal error at Modem */
902     CALL_FAIL_NETWORK_RESP_TIMEOUT = 251, /* No response from network */
903     CALL_FAIL_NETWORK_REJECT = 252, /* Explicit network reject */
904     CALL_FAIL_RADIO_ACCESS_FAILURE = 253, /* RRC connection failure. Eg.RACH */
905     CALL_FAIL_RADIO_LINK_FAILURE = 254, /* Radio Link Failure */
906     CALL_FAIL_RADIO_LINK_LOST = 255, /* Radio link lost due to poor coverage */
907     CALL_FAIL_RADIO_UPLINK_FAILURE = 256, /* Radio uplink failure */
908     CALL_FAIL_RADIO_SETUP_FAILURE = 257, /* RRC connection setup failure */
909     CALL_FAIL_RADIO_RELEASE_NORMAL = 258, /* RRC connection release, normal */
910     CALL_FAIL_RADIO_RELEASE_ABNORMAL = 259, /* RRC connection release, abnormal */
911     CALL_FAIL_ACCESS_CLASS_BLOCKED = 260, /* Access class barring */
912     CALL_FAIL_NETWORK_DETACH = 261, /* Explicit network detach */
913     CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
914     CALL_FAIL_CDMA_DROP = 1001,
915     CALL_FAIL_CDMA_INTERCEPT = 1002,
916     CALL_FAIL_CDMA_REORDER = 1003,
917     CALL_FAIL_CDMA_SO_REJECT = 1004,
918     CALL_FAIL_CDMA_RETRY_ORDER = 1005,
919     CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
920     CALL_FAIL_CDMA_PREEMPTED = 1007,
921     CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
922                                             during emergency callback mode */
923     CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
924 
925     /* OEM specific error codes. Used to distinguish error from
926      * CALL_FAIL_ERROR_UNSPECIFIED and help assist debugging */
927     CALL_FAIL_OEM_CAUSE_1 = 0xf001,
928     CALL_FAIL_OEM_CAUSE_2 = 0xf002,
929     CALL_FAIL_OEM_CAUSE_3 = 0xf003,
930     CALL_FAIL_OEM_CAUSE_4 = 0xf004,
931     CALL_FAIL_OEM_CAUSE_5 = 0xf005,
932     CALL_FAIL_OEM_CAUSE_6 = 0xf006,
933     CALL_FAIL_OEM_CAUSE_7 = 0xf007,
934     CALL_FAIL_OEM_CAUSE_8 = 0xf008,
935     CALL_FAIL_OEM_CAUSE_9 = 0xf009,
936     CALL_FAIL_OEM_CAUSE_10 = 0xf00a,
937     CALL_FAIL_OEM_CAUSE_11 = 0xf00b,
938     CALL_FAIL_OEM_CAUSE_12 = 0xf00c,
939     CALL_FAIL_OEM_CAUSE_13 = 0xf00d,
940     CALL_FAIL_OEM_CAUSE_14 = 0xf00e,
941     CALL_FAIL_OEM_CAUSE_15 = 0xf00f,
942 
943     CALL_FAIL_ERROR_UNSPECIFIED = 0xffff /* This error will be deprecated soon,
944                                             vendor code should make sure to map error
945                                             code to specific error */
946 } RIL_LastCallFailCause;
947 
948 typedef struct {
949   RIL_LastCallFailCause cause_code;
950   char *                vendor_cause;
951 } RIL_LastCallFailCauseInfo;
952 
953 /* See RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE */
954 typedef enum {
955     PDP_FAIL_NONE = 0, /* No error, connection ok */
956 
957     /* an integer cause code defined in TS 24.008
958        section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
959        If the implementation does not have access to the exact cause codes,
960        then it should return one of the following values,
961        as the UI layer needs to distinguish these
962        cases for error notification and potential retries. */
963     PDP_FAIL_OPERATOR_BARRED = 0x08,               /* no retry */
964     PDP_FAIL_NAS_SIGNALLING = 0x0E,
965     PDP_FAIL_LLC_SNDCP = 0x19,
966     PDP_FAIL_INSUFFICIENT_RESOURCES = 0x1A,
967     PDP_FAIL_MISSING_UKNOWN_APN = 0x1B,            /* no retry */
968     PDP_FAIL_UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,      /* no retry */
969     PDP_FAIL_USER_AUTHENTICATION = 0x1D,           /* no retry */
970     PDP_FAIL_ACTIVATION_REJECT_GGSN = 0x1E,        /* no retry */
971     PDP_FAIL_ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
972     PDP_FAIL_SERVICE_OPTION_NOT_SUPPORTED = 0x20,  /* no retry */
973     PDP_FAIL_SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, /* no retry */
974     PDP_FAIL_SERVICE_OPTION_OUT_OF_ORDER = 0x22,
975     PDP_FAIL_NSAPI_IN_USE = 0x23,                  /* no retry */
976     PDP_FAIL_REGULAR_DEACTIVATION = 0x24,          /* possibly restart radio,
977                                                       based on framework config */
978     PDP_FAIL_QOS_NOT_ACCEPTED = 0x25,
979     PDP_FAIL_NETWORK_FAILURE = 0x26,
980     PDP_FAIL_UMTS_REACTIVATION_REQ = 0x27,
981     PDP_FAIL_FEATURE_NOT_SUPP = 0x28,
982     PDP_FAIL_TFT_SEMANTIC_ERROR = 0x29,
983     PDP_FAIL_TFT_SYTAX_ERROR = 0x2A,
984     PDP_FAIL_UNKNOWN_PDP_CONTEXT = 0x2B,
985     PDP_FAIL_FILTER_SEMANTIC_ERROR = 0x2C,
986     PDP_FAIL_FILTER_SYTAX_ERROR = 0x2D,
987     PDP_FAIL_PDP_WITHOUT_ACTIVE_TFT = 0x2E,
988     PDP_FAIL_ONLY_IPV4_ALLOWED = 0x32,             /* no retry */
989     PDP_FAIL_ONLY_IPV6_ALLOWED = 0x33,             /* no retry */
990     PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED = 0x34,
991     PDP_FAIL_ESM_INFO_NOT_RECEIVED = 0x35,
992     PDP_FAIL_PDN_CONN_DOES_NOT_EXIST = 0x36,
993     PDP_FAIL_MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37,
994     PDP_FAIL_MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41,
995     PDP_FAIL_UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42,
996     PDP_FAIL_INVALID_TRANSACTION_ID = 0x51,
997     PDP_FAIL_MESSAGE_INCORRECT_SEMANTIC = 0x5F,
998     PDP_FAIL_INVALID_MANDATORY_INFO = 0x60,
999     PDP_FAIL_MESSAGE_TYPE_UNSUPPORTED = 0x61,
1000     PDP_FAIL_MSG_TYPE_NONCOMPATIBLE_STATE = 0x62,
1001     PDP_FAIL_UNKNOWN_INFO_ELEMENT = 0x63,
1002     PDP_FAIL_CONDITIONAL_IE_ERROR = 0x64,
1003     PDP_FAIL_MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65,
1004     PDP_FAIL_PROTOCOL_ERRORS = 0x6F,             /* no retry */
1005     PDP_FAIL_APN_TYPE_CONFLICT = 0x70,
1006     PDP_FAIL_INVALID_PCSCF_ADDR = 0x71,
1007     PDP_FAIL_INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72,
1008     PDP_FAIL_EMM_ACCESS_BARRED = 0x73,
1009     PDP_FAIL_EMERGENCY_IFACE_ONLY = 0x74,
1010     PDP_FAIL_IFACE_MISMATCH = 0x75,
1011     PDP_FAIL_COMPANION_IFACE_IN_USE = 0x76,
1012     PDP_FAIL_IP_ADDRESS_MISMATCH = 0x77,
1013     PDP_FAIL_IFACE_AND_POL_FAMILY_MISMATCH = 0x78,
1014     PDP_FAIL_EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79,
1015     PDP_FAIL_AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A,
1016 
1017     // OEM specific error codes. To be used by OEMs when they don't want to
1018     // reveal error code which would be replaced by PDP_FAIL_ERROR_UNSPECIFIED
1019     PDP_FAIL_OEM_DCFAILCAUSE_1 = 0x1001,
1020     PDP_FAIL_OEM_DCFAILCAUSE_2 = 0x1002,
1021     PDP_FAIL_OEM_DCFAILCAUSE_3 = 0x1003,
1022     PDP_FAIL_OEM_DCFAILCAUSE_4 = 0x1004,
1023     PDP_FAIL_OEM_DCFAILCAUSE_5 = 0x1005,
1024     PDP_FAIL_OEM_DCFAILCAUSE_6 = 0x1006,
1025     PDP_FAIL_OEM_DCFAILCAUSE_7 = 0x1007,
1026     PDP_FAIL_OEM_DCFAILCAUSE_8 = 0x1008,
1027     PDP_FAIL_OEM_DCFAILCAUSE_9 = 0x1009,
1028     PDP_FAIL_OEM_DCFAILCAUSE_10 = 0x100A,
1029     PDP_FAIL_OEM_DCFAILCAUSE_11 = 0x100B,
1030     PDP_FAIL_OEM_DCFAILCAUSE_12 = 0x100C,
1031     PDP_FAIL_OEM_DCFAILCAUSE_13 = 0x100D,
1032     PDP_FAIL_OEM_DCFAILCAUSE_14 = 0x100E,
1033     PDP_FAIL_OEM_DCFAILCAUSE_15 = 0x100F,
1034 
1035     /* Not mentioned in the specification */
1036     PDP_FAIL_VOICE_REGISTRATION_FAIL = -1,
1037     PDP_FAIL_DATA_REGISTRATION_FAIL = -2,
1038 
1039    /* reasons for data call drop - network/modem disconnect */
1040     PDP_FAIL_SIGNAL_LOST = -3,
1041     PDP_FAIL_PREF_RADIO_TECH_CHANGED = -4,/* preferred technology has changed, should retry
1042                                              with parameters appropriate for new technology */
1043     PDP_FAIL_RADIO_POWER_OFF = -5,        /* data call was disconnected because radio was resetting,
1044                                              powered off - no retry */
1045     PDP_FAIL_TETHERED_CALL_ACTIVE = -6,   /* data call was disconnected by modem because tethered
1046                                              mode was up on same APN/data profile - no retry until
1047                                              tethered call is off */
1048 
1049     PDP_FAIL_ERROR_UNSPECIFIED = 0xffff,  /* retry silently. Will be deprecated soon as
1050                                              new error codes are added making this unnecessary */
1051 } RIL_DataCallFailCause;
1052 
1053 /* See RIL_REQUEST_SETUP_DATA_CALL */
1054 typedef enum {
1055     RIL_DATA_PROFILE_DEFAULT    = 0,
1056     RIL_DATA_PROFILE_TETHERED   = 1,
1057     RIL_DATA_PROFILE_IMS        = 2,
1058     RIL_DATA_PROFILE_FOTA       = 3,
1059     RIL_DATA_PROFILE_CBS        = 4,
1060     RIL_DATA_PROFILE_OEM_BASE   = 1000,    /* Start of OEM-specific profiles */
1061     RIL_DATA_PROFILE_INVALID    = 0xFFFFFFFF
1062 } RIL_DataProfile;
1063 
1064 /* Used by RIL_UNSOL_SUPP_SVC_NOTIFICATION */
1065 typedef struct {
1066     int     notificationType;   /*
1067                                  * 0 = MO intermediate result code
1068                                  * 1 = MT unsolicited result code
1069                                  */
1070     int     code;               /* See 27.007 7.17
1071                                    "code1" for MO
1072                                    "code2" for MT. */
1073     int     index;              /* CUG index. See 27.007 7.17. */
1074     int     type;               /* "type" from 27.007 7.17 (MT only). */
1075     char *  number;             /* "number" from 27.007 7.17
1076                                    (MT only, may be NULL). */
1077 } RIL_SuppSvcNotification;
1078 
1079 #define RIL_CARD_MAX_APPS     8
1080 
1081 typedef enum {
1082     RIL_CARDSTATE_ABSENT     = 0,
1083     RIL_CARDSTATE_PRESENT    = 1,
1084     RIL_CARDSTATE_ERROR      = 2,
1085     RIL_CARDSTATE_RESTRICTED = 3  /* card is present but not usable due to carrier restrictions.*/
1086 } RIL_CardState;
1087 
1088 typedef enum {
1089     RIL_PERSOSUBSTATE_UNKNOWN                   = 0, /* initial state */
1090     RIL_PERSOSUBSTATE_IN_PROGRESS               = 1, /* in between each lock transition */
1091     RIL_PERSOSUBSTATE_READY                     = 2, /* when either SIM or RUIM Perso is finished
1092                                                         since each app can only have 1 active perso
1093                                                         involved */
1094     RIL_PERSOSUBSTATE_SIM_NETWORK               = 3,
1095     RIL_PERSOSUBSTATE_SIM_NETWORK_SUBSET        = 4,
1096     RIL_PERSOSUBSTATE_SIM_CORPORATE             = 5,
1097     RIL_PERSOSUBSTATE_SIM_SERVICE_PROVIDER      = 6,
1098     RIL_PERSOSUBSTATE_SIM_SIM                   = 7,
1099     RIL_PERSOSUBSTATE_SIM_NETWORK_PUK           = 8, /* The corresponding perso lock is blocked */
1100     RIL_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK    = 9,
1101     RIL_PERSOSUBSTATE_SIM_CORPORATE_PUK         = 10,
1102     RIL_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK  = 11,
1103     RIL_PERSOSUBSTATE_SIM_SIM_PUK               = 12,
1104     RIL_PERSOSUBSTATE_RUIM_NETWORK1             = 13,
1105     RIL_PERSOSUBSTATE_RUIM_NETWORK2             = 14,
1106     RIL_PERSOSUBSTATE_RUIM_HRPD                 = 15,
1107     RIL_PERSOSUBSTATE_RUIM_CORPORATE            = 16,
1108     RIL_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER     = 17,
1109     RIL_PERSOSUBSTATE_RUIM_RUIM                 = 18,
1110     RIL_PERSOSUBSTATE_RUIM_NETWORK1_PUK         = 19, /* The corresponding perso lock is blocked */
1111     RIL_PERSOSUBSTATE_RUIM_NETWORK2_PUK         = 20,
1112     RIL_PERSOSUBSTATE_RUIM_HRPD_PUK             = 21,
1113     RIL_PERSOSUBSTATE_RUIM_CORPORATE_PUK        = 22,
1114     RIL_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK = 23,
1115     RIL_PERSOSUBSTATE_RUIM_RUIM_PUK             = 24
1116 } RIL_PersoSubstate;
1117 
1118 typedef enum {
1119     RIL_APPSTATE_UNKNOWN               = 0,
1120     RIL_APPSTATE_DETECTED              = 1,
1121     RIL_APPSTATE_PIN                   = 2, /* If PIN1 or UPin is required */
1122     RIL_APPSTATE_PUK                   = 3, /* If PUK1 or Puk for UPin is required */
1123     RIL_APPSTATE_SUBSCRIPTION_PERSO    = 4, /* perso_substate should be look at
1124                                                when app_state is assigned to this value */
1125     RIL_APPSTATE_READY                 = 5
1126 } RIL_AppState;
1127 
1128 typedef enum {
1129     RIL_PINSTATE_UNKNOWN              = 0,
1130     RIL_PINSTATE_ENABLED_NOT_VERIFIED = 1,
1131     RIL_PINSTATE_ENABLED_VERIFIED     = 2,
1132     RIL_PINSTATE_DISABLED             = 3,
1133     RIL_PINSTATE_ENABLED_BLOCKED      = 4,
1134     RIL_PINSTATE_ENABLED_PERM_BLOCKED = 5
1135 } RIL_PinState;
1136 
1137 typedef enum {
1138   RIL_APPTYPE_UNKNOWN = 0,
1139   RIL_APPTYPE_SIM     = 1,
1140   RIL_APPTYPE_USIM    = 2,
1141   RIL_APPTYPE_RUIM    = 3,
1142   RIL_APPTYPE_CSIM    = 4,
1143   RIL_APPTYPE_ISIM    = 5
1144 } RIL_AppType;
1145 
1146 /*
1147  * Please note that registration state UNKNOWN is
1148  * treated as "out of service" in the Android telephony.
1149  * Registration state REG_DENIED must be returned if Location Update
1150  * Reject (with cause 17 - Network Failure) is received
1151  * repeatedly from the network, to facilitate
1152  * "managed roaming"
1153  */
1154 typedef enum {
1155     RIL_NOT_REG_AND_NOT_SEARCHING = 0,           // Not registered, MT is not currently searching
1156                                                  // a new operator to register
1157     RIL_REG_HOME = 1,                            // Registered, home network
1158     RIL_NOT_REG_AND_SEARCHING = 2,               // Not registered, but MT is currently searching
1159                                                  // a new operator to register
1160     RIL_REG_DENIED = 3,                          // Registration denied
1161     RIL_UNKNOWN = 4,                             // Unknown
1162     RIL_REG_ROAMING = 5,                         // Registered, roaming
1163     RIL_NOT_REG_AND_EMERGENCY_AVAILABLE_AND_NOT_SEARCHING = 10,   // Same as
1164                                                  // RIL_NOT_REG_AND_NOT_SEARCHING but indicates that
1165                                                  // emergency calls are enabled.
1166     RIL_NOT_REG_AND_EMERGENCY_AVAILABLE_AND_SEARCHING = 12,  // Same as RIL_NOT_REG_AND_SEARCHING
1167                                                  // but indicates that
1168                                                  // emergency calls are enabled.
1169     RIL_REG_DENIED_AND_EMERGENCY_AVAILABLE = 13, // Same as REG_DENIED but indicates that
1170                                                  // emergency calls are enabled.
1171     RIL_UNKNOWN_AND_EMERGENCY_AVAILABLE = 14,    // Same as UNKNOWN but indicates that
1172                                                  // emergency calls are enabled.
1173 } RIL_RegState;
1174 
1175 typedef struct
1176 {
1177   RIL_AppType      app_type;
1178   RIL_AppState     app_state;
1179   RIL_PersoSubstate perso_substate; /* applicable only if app_state ==
1180                                        RIL_APPSTATE_SUBSCRIPTION_PERSO */
1181   char             *aid_ptr;        /* null terminated string, e.g., from 0xA0, 0x00 -> 0x41,
1182                                        0x30, 0x30, 0x30 */
1183   char             *app_label_ptr;  /* null terminated string */
1184   int              pin1_replaced;   /* applicable to USIM, CSIM & ISIM */
1185   RIL_PinState     pin1;
1186   RIL_PinState     pin2;
1187 } RIL_AppStatus;
1188 
1189 /* Deprecated, use RIL_CardStatus_v6 */
1190 typedef struct
1191 {
1192   RIL_CardState card_state;
1193   RIL_PinState  universal_pin_state;             /* applicable to USIM and CSIM: RIL_PINSTATE_xxx */
1194   int           gsm_umts_subscription_app_index; /* value < RIL_CARD_MAX_APPS, -1 if none */
1195   int           cdma_subscription_app_index;     /* value < RIL_CARD_MAX_APPS, -1 if none */
1196   int           num_applications;                /* value <= RIL_CARD_MAX_APPS */
1197   RIL_AppStatus applications[RIL_CARD_MAX_APPS];
1198 } RIL_CardStatus_v5;
1199 
1200 typedef struct
1201 {
1202   RIL_CardState card_state;
1203   RIL_PinState  universal_pin_state;             /* applicable to USIM and CSIM: RIL_PINSTATE_xxx */
1204   int           gsm_umts_subscription_app_index; /* value < RIL_CARD_MAX_APPS, -1 if none */
1205   int           cdma_subscription_app_index;     /* value < RIL_CARD_MAX_APPS, -1 if none */
1206   int           ims_subscription_app_index;      /* value < RIL_CARD_MAX_APPS, -1 if none */
1207   int           num_applications;                /* value <= RIL_CARD_MAX_APPS */
1208   RIL_AppStatus applications[RIL_CARD_MAX_APPS];
1209 } RIL_CardStatus_v6;
1210 
1211 /** The result of a SIM refresh, returned in data[0] of RIL_UNSOL_SIM_REFRESH
1212  *      or as part of RIL_SimRefreshResponse_v7
1213  */
1214 typedef enum {
1215     /* A file on SIM has been updated.  data[1] contains the EFID. */
1216     SIM_FILE_UPDATE = 0,
1217     /* SIM initialized.  All files should be re-read. */
1218     SIM_INIT = 1,
1219     /* SIM reset.  SIM power required, SIM may be locked and all files should be re-read. */
1220     SIM_RESET = 2
1221 } RIL_SimRefreshResult;
1222 
1223 typedef struct {
1224     RIL_SimRefreshResult result;
1225     int                  ef_id; /* is the EFID of the updated file if the result is */
1226                                 /* SIM_FILE_UPDATE or 0 for any other result. */
1227     char *               aid;   /* is AID(application ID) of the card application */
1228                                 /* See ETSI 102.221 8.1 and 101.220 4 */
1229                                 /*     For SIM_FILE_UPDATE result it can be set to AID of */
1230                                 /*         application in which updated EF resides or it can be */
1231                                 /*         NULL if EF is outside of an application. */
1232                                 /*     For SIM_INIT result this field is set to AID of */
1233                                 /*         application that caused REFRESH */
1234                                 /*     For SIM_RESET result it is NULL. */
1235 } RIL_SimRefreshResponse_v7;
1236 
1237 /* Deprecated, use RIL_CDMA_CallWaiting_v6 */
1238 typedef struct {
1239     char *          number;             /* Remote party number */
1240     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown */
1241     char *          name;               /* Remote party name */
1242     RIL_CDMA_SignalInfoRecord signalInfoRecord;
1243 } RIL_CDMA_CallWaiting_v5;
1244 
1245 typedef struct {
1246     char *          number;             /* Remote party number */
1247     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown */
1248     char *          name;               /* Remote party name */
1249     RIL_CDMA_SignalInfoRecord signalInfoRecord;
1250     /* Number type/Number plan required to support International Call Waiting */
1251     int             number_type;        /* 0=Unknown, 1=International, 2=National,
1252                                            3=Network specific, 4=subscriber */
1253     int             number_plan;        /* 0=Unknown, 1=ISDN, 3=Data, 4=Telex, 8=Nat'l, 9=Private */
1254 } RIL_CDMA_CallWaiting_v6;
1255 
1256 /**
1257  * Which types of Cell Broadcast Message (CBM) are to be received by the ME
1258  *
1259  * uFromServiceID - uToServiceID defines a range of CBM message identifiers
1260  * whose value is 0x0000 - 0xFFFF as defined in TS 23.041 9.4.1.2.2 for GMS
1261  * and 9.4.4.2.2 for UMTS. All other values can be treated as empty
1262  * CBM message ID.
1263  *
1264  * uFromCodeScheme - uToCodeScheme defines a range of CBM data coding schemes
1265  * whose value is 0x00 - 0xFF as defined in TS 23.041 9.4.1.2.3 for GMS
1266  * and 9.4.4.2.3 for UMTS.
1267  * All other values can be treated as empty CBM data coding scheme.
1268  *
1269  * selected 0 means message types specified in <fromServiceId, toServiceId>
1270  * and <fromCodeScheme, toCodeScheme>are not accepted, while 1 means accepted.
1271  *
1272  * Used by RIL_REQUEST_GSM_GET_BROADCAST_CONFIG and
1273  * RIL_REQUEST_GSM_SET_BROADCAST_CONFIG.
1274  */
1275 typedef struct {
1276     int fromServiceId;
1277     int toServiceId;
1278     int fromCodeScheme;
1279     int toCodeScheme;
1280     unsigned char selected;
1281 } RIL_GSM_BroadcastSmsConfigInfo;
1282 
1283 /* No restriction at all including voice/SMS/USSD/SS/AV64 and packet data. */
1284 #define RIL_RESTRICTED_STATE_NONE           0x00
1285 /* Block emergency call due to restriction. But allow all normal voice/SMS/USSD/SS/AV64. */
1286 #define RIL_RESTRICTED_STATE_CS_EMERGENCY   0x01
1287 /* Block all normal voice/SMS/USSD/SS/AV64 due to restriction. Only Emergency call allowed. */
1288 #define RIL_RESTRICTED_STATE_CS_NORMAL      0x02
1289 /* Block all voice/SMS/USSD/SS/AV64 including emergency call due to restriction.*/
1290 #define RIL_RESTRICTED_STATE_CS_ALL         0x04
1291 /* Block packet data access due to restriction. */
1292 #define RIL_RESTRICTED_STATE_PS_ALL         0x10
1293 
1294 /* The status for an OTASP/OTAPA session */
1295 typedef enum {
1296     CDMA_OTA_PROVISION_STATUS_SPL_UNLOCKED,
1297     CDMA_OTA_PROVISION_STATUS_SPC_RETRIES_EXCEEDED,
1298     CDMA_OTA_PROVISION_STATUS_A_KEY_EXCHANGED,
1299     CDMA_OTA_PROVISION_STATUS_SSD_UPDATED,
1300     CDMA_OTA_PROVISION_STATUS_NAM_DOWNLOADED,
1301     CDMA_OTA_PROVISION_STATUS_MDN_DOWNLOADED,
1302     CDMA_OTA_PROVISION_STATUS_IMSI_DOWNLOADED,
1303     CDMA_OTA_PROVISION_STATUS_PRL_DOWNLOADED,
1304     CDMA_OTA_PROVISION_STATUS_COMMITTED,
1305     CDMA_OTA_PROVISION_STATUS_OTAPA_STARTED,
1306     CDMA_OTA_PROVISION_STATUS_OTAPA_STOPPED,
1307     CDMA_OTA_PROVISION_STATUS_OTAPA_ABORTED
1308 } RIL_CDMA_OTA_ProvisionStatus;
1309 
1310 typedef struct {
1311     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
1312     int bitErrorRate;    /* bit error rate (0-7, 99) as defined in TS 27.007 8.5 */
1313 } RIL_GW_SignalStrength;
1314 
1315 typedef struct {
1316     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
1317     int bitErrorRate;    /* bit error rate (0-7, 99) as defined in TS 27.007 8.5 */
1318     int timingAdvance;   /* Timing Advance in bit periods. 1 bit period = 48/13 us.
1319                           * INT_MAX denotes invalid value */
1320 } RIL_GSM_SignalStrength_v12;
1321 
1322 typedef struct {
1323     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
1324     int bitErrorRate;    /* bit error rate (0-7, 99) as defined in TS 27.007 8.5 */
1325 } RIL_SignalStrengthWcdma;
1326 
1327 typedef struct {
1328     int dbm;  /* Valid values are positive integers.  This value is the actual RSSI value
1329                * multiplied by -1.  Example: If the actual RSSI is -75, then this response
1330                * value will be 75.
1331                */
1332     int ecio; /* Valid values are positive integers.  This value is the actual Ec/Io multiplied
1333                * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value
1334                * will be 125.
1335                */
1336 } RIL_CDMA_SignalStrength;
1337 
1338 
1339 typedef struct {
1340     int dbm;  /* Valid values are positive integers.  This value is the actual RSSI value
1341                * multiplied by -1.  Example: If the actual RSSI is -75, then this response
1342                * value will be 75.
1343                */
1344     int ecio; /* Valid values are positive integers.  This value is the actual Ec/Io multiplied
1345                * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value
1346                * will be 125.
1347                */
1348     int signalNoiseRatio; /* Valid values are 0-8.  8 is the highest signal to noise ratio. */
1349 } RIL_EVDO_SignalStrength;
1350 
1351 typedef struct {
1352     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
1353     int rsrp;            /* The current Reference Signal Receive Power in dBm multipled by -1.
1354                           * Range: 44 to 140 dBm
1355                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
1356                           * Reference: 3GPP TS 36.133 9.1.4 */
1357     int rsrq;            /* The current Reference Signal Receive Quality in dB multiplied by -1.
1358                           * Range: 20 to 3 dB.
1359                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
1360                           * Reference: 3GPP TS 36.133 9.1.7 */
1361     int rssnr;           /* The current reference signal signal-to-noise ratio in 0.1 dB units.
1362                           * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
1363                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
1364                           * Reference: 3GPP TS 36.101 8.1.1 */
1365     int cqi;             /* The current Channel Quality Indicator.
1366                           * Range: 0 to 15.
1367                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
1368                           * Reference: 3GPP TS 36.101 9.2, 9.3, A.4 */
1369 } RIL_LTE_SignalStrength;
1370 
1371 typedef struct {
1372     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
1373     int rsrp;            /* The current Reference Signal Receive Power in dBm multipled by -1.
1374                           * Range: 44 to 140 dBm
1375                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
1376                           * Reference: 3GPP TS 36.133 9.1.4 */
1377     int rsrq;            /* The current Reference Signal Receive Quality in dB multiplied by -1.
1378                           * Range: 20 to 3 dB.
1379                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
1380                           * Reference: 3GPP TS 36.133 9.1.7 */
1381     int rssnr;           /* The current reference signal signal-to-noise ratio in 0.1 dB units.
1382                           * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
1383                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
1384                           * Reference: 3GPP TS 36.101 8.1.1 */
1385     int cqi;             /* The current Channel Quality Indicator.
1386                           * Range: 0 to 15.
1387                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
1388                           * Reference: 3GPP TS 36.101 9.2, 9.3, A.4 */
1389     int timingAdvance;   /* timing advance in micro seconds for a one way trip from cell to device.
1390                           * Approximate distance can be calculated using 300m/us * timingAdvance.
1391                           * Range: 0 to 0x7FFFFFFE
1392                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
1393                           * Reference: 3GPP 36.321 section 6.1.3.5
1394                           * also: http://www.cellular-planningoptimization.com/2010/02/timing-advance-with-calculation.html */
1395 } RIL_LTE_SignalStrength_v8;
1396 
1397 typedef struct {
1398     int rscp;    /* The Received Signal Code Power in dBm multipled by -1.
1399                   * Range : 25 to 120
1400                   * INT_MAX: 0x7FFFFFFF denotes invalid value.
1401                   * Reference: 3GPP TS 25.123, section 9.1.1.1 */
1402 } RIL_TD_SCDMA_SignalStrength;
1403 
1404 /* Deprecated, use RIL_SignalStrength_v6 */
1405 typedef struct {
1406     RIL_GW_SignalStrength   GW_SignalStrength;
1407     RIL_CDMA_SignalStrength CDMA_SignalStrength;
1408     RIL_EVDO_SignalStrength EVDO_SignalStrength;
1409 } RIL_SignalStrength_v5;
1410 
1411 typedef struct {
1412     RIL_GW_SignalStrength   GW_SignalStrength;
1413     RIL_CDMA_SignalStrength CDMA_SignalStrength;
1414     RIL_EVDO_SignalStrength EVDO_SignalStrength;
1415     RIL_LTE_SignalStrength  LTE_SignalStrength;
1416 } RIL_SignalStrength_v6;
1417 
1418 typedef struct {
1419     RIL_GW_SignalStrength       GW_SignalStrength;
1420     RIL_CDMA_SignalStrength     CDMA_SignalStrength;
1421     RIL_EVDO_SignalStrength     EVDO_SignalStrength;
1422     RIL_LTE_SignalStrength_v8   LTE_SignalStrength;
1423 } RIL_SignalStrength_v8;
1424 
1425 typedef struct {
1426     RIL_GW_SignalStrength       GW_SignalStrength;
1427     RIL_CDMA_SignalStrength     CDMA_SignalStrength;
1428     RIL_EVDO_SignalStrength     EVDO_SignalStrength;
1429     RIL_LTE_SignalStrength_v8   LTE_SignalStrength;
1430     RIL_TD_SCDMA_SignalStrength TD_SCDMA_SignalStrength;
1431 } RIL_SignalStrength_v10;
1432 
1433 typedef struct {
1434     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown */
1435     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1436                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1437                    INT_MAX if unknown */
1438     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
1439     int cid;    /* 16-bit GSM Cell Identity described in TS 27.007, 0..65535, INT_MAX if unknown  */
1440 } RIL_CellIdentityGsm;
1441 
1442 typedef struct {
1443     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown */
1444     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1445                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1446                    INT_MAX if unknown */
1447     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
1448     int cid;    /* 16-bit GSM Cell Identity described in TS 27.007, 0..65535, INT_MAX if unknown  */
1449     int arfcn;  /* 16-bit GSM Absolute RF channel number; this value must be reported */
1450     uint8_t bsic; /* 6-bit Base Station Identity Code; 0xFF if unknown */
1451 } RIL_CellIdentityGsm_v12;
1452 
1453 typedef struct {
1454     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
1455     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1456                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1457                    INT_MAX if unknown */
1458     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
1459     int cid;    /* 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown  */
1460     int psc;    /* 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511, INT_MAX if unknown */
1461 } RIL_CellIdentityWcdma;
1462 
1463 typedef struct {
1464     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
1465     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1466                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1467                    INT_MAX if unknown */
1468     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
1469     int cid;    /* 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown  */
1470     int psc;    /* 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511; this value must be reported */
1471     int uarfcn; /* 16-bit UMTS Absolute RF Channel Number; this value must be reported */
1472 } RIL_CellIdentityWcdma_v12;
1473 
1474 typedef struct {
1475     int networkId;      /* Network Id 0..65535, INT_MAX if unknown */
1476     int systemId;       /* CDMA System Id 0..32767, INT_MAX if unknown  */
1477     int basestationId;  /* Base Station Id 0..65535, INT_MAX if unknown  */
1478     int longitude;      /* Longitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
1479                          * It is represented in units of 0.25 seconds and ranges from -2592000
1480                          * to 2592000, both values inclusive (corresponding to a range of -180
1481                          * to +180 degrees). INT_MAX if unknown */
1482 
1483     int latitude;       /* Latitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
1484                          * It is represented in units of 0.25 seconds and ranges from -1296000
1485                          * to 1296000, both values inclusive (corresponding to a range of -90
1486                          * to +90 degrees). INT_MAX if unknown */
1487 } RIL_CellIdentityCdma;
1488 
1489 typedef struct {
1490     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
1491     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1492                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1493                    INT_MAX if unknown */
1494     int ci;     /* 28-bit Cell Identity described in TS ???, INT_MAX if unknown */
1495     int pci;    /* physical cell id 0..503, INT_MAX if unknown  */
1496     int tac;    /* 16-bit tracking area code, INT_MAX if unknown  */
1497 } RIL_CellIdentityLte;
1498 
1499 typedef struct {
1500     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
1501     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1502                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1503                    INT_MAX if unknown */
1504     int ci;     /* 28-bit Cell Identity described in TS ???, INT_MAX if unknown */
1505     int pci;    /* physical cell id 0..503; this value must be reported */
1506     int tac;    /* 16-bit tracking area code, INT_MAX if unknown  */
1507     int earfcn; /* 18-bit LTE Absolute RF Channel Number; this value must be reported */
1508 } RIL_CellIdentityLte_v12;
1509 
1510 typedef struct {
1511     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
1512     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999;
1513                    the most significant nibble encodes the number of digits - {2, 3, 0 (unset)};
1514                    INT_MAX if unknown */
1515     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
1516     int cid;    /* 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown  */
1517     int cpid;    /* 8-bit Cell Parameters ID described in TS 25.331, 0..127, INT_MAX if unknown */
1518 } RIL_CellIdentityTdscdma;
1519 
1520 typedef struct {
1521   RIL_CellIdentityGsm   cellIdentityGsm;
1522   RIL_GW_SignalStrength signalStrengthGsm;
1523 } RIL_CellInfoGsm;
1524 
1525 typedef struct {
1526   RIL_CellIdentityGsm_v12   cellIdentityGsm;
1527   RIL_GSM_SignalStrength_v12 signalStrengthGsm;
1528 } RIL_CellInfoGsm_v12;
1529 
1530 typedef struct {
1531   RIL_CellIdentityWcdma cellIdentityWcdma;
1532   RIL_SignalStrengthWcdma signalStrengthWcdma;
1533 } RIL_CellInfoWcdma;
1534 
1535 typedef struct {
1536   RIL_CellIdentityWcdma_v12 cellIdentityWcdma;
1537   RIL_SignalStrengthWcdma signalStrengthWcdma;
1538 } RIL_CellInfoWcdma_v12;
1539 
1540 typedef struct {
1541   RIL_CellIdentityCdma      cellIdentityCdma;
1542   RIL_CDMA_SignalStrength   signalStrengthCdma;
1543   RIL_EVDO_SignalStrength   signalStrengthEvdo;
1544 } RIL_CellInfoCdma;
1545 
1546 typedef struct {
1547   RIL_CellIdentityLte        cellIdentityLte;
1548   RIL_LTE_SignalStrength_v8  signalStrengthLte;
1549 } RIL_CellInfoLte;
1550 
1551 typedef struct {
1552   RIL_CellIdentityLte_v12    cellIdentityLte;
1553   RIL_LTE_SignalStrength_v8  signalStrengthLte;
1554 } RIL_CellInfoLte_v12;
1555 
1556 typedef struct {
1557   RIL_CellIdentityTdscdma cellIdentityTdscdma;
1558   RIL_TD_SCDMA_SignalStrength signalStrengthTdscdma;
1559 } RIL_CellInfoTdscdma;
1560 
1561 // Must be the same as CellInfo.TYPE_XXX
1562 typedef enum {
1563   RIL_CELL_INFO_TYPE_NONE   = 0, /* indicates no cell information */
1564   RIL_CELL_INFO_TYPE_GSM    = 1,
1565   RIL_CELL_INFO_TYPE_CDMA   = 2,
1566   RIL_CELL_INFO_TYPE_LTE    = 3,
1567   RIL_CELL_INFO_TYPE_WCDMA  = 4,
1568   RIL_CELL_INFO_TYPE_TD_SCDMA  = 5
1569 } RIL_CellInfoType;
1570 
1571 // Must be the same as CellInfo.TIMESTAMP_TYPE_XXX
1572 typedef enum {
1573     RIL_TIMESTAMP_TYPE_UNKNOWN = 0,
1574     RIL_TIMESTAMP_TYPE_ANTENNA = 1,
1575     RIL_TIMESTAMP_TYPE_MODEM = 2,
1576     RIL_TIMESTAMP_TYPE_OEM_RIL = 3,
1577     RIL_TIMESTAMP_TYPE_JAVA_RIL = 4,
1578 } RIL_TimeStampType;
1579 
1580 typedef struct {
1581   RIL_CellInfoType  cellInfoType;   /* cell type for selecting from union CellInfo */
1582   int               registered;     /* !0 if this cell is registered 0 if not registered */
1583   RIL_TimeStampType timeStampType;  /* type of time stamp represented by timeStamp */
1584   uint64_t          timeStamp;      /* Time in nanos as returned by ril_nano_time */
1585   union {
1586     RIL_CellInfoGsm     gsm;
1587     RIL_CellInfoCdma    cdma;
1588     RIL_CellInfoLte     lte;
1589     RIL_CellInfoWcdma   wcdma;
1590     RIL_CellInfoTdscdma tdscdma;
1591   } CellInfo;
1592 } RIL_CellInfo;
1593 
1594 typedef struct {
1595   RIL_CellInfoType  cellInfoType;   /* cell type for selecting from union CellInfo */
1596   int               registered;     /* !0 if this cell is registered 0 if not registered */
1597   RIL_TimeStampType timeStampType;  /* type of time stamp represented by timeStamp */
1598   uint64_t          timeStamp;      /* Time in nanos as returned by ril_nano_time */
1599   union {
1600     RIL_CellInfoGsm_v12     gsm;
1601     RIL_CellInfoCdma        cdma;
1602     RIL_CellInfoLte_v12     lte;
1603     RIL_CellInfoWcdma_v12   wcdma;
1604     RIL_CellInfoTdscdma     tdscdma;
1605   } CellInfo;
1606 } RIL_CellInfo_v12;
1607 
1608 typedef struct {
1609   RIL_CellInfoType  cellInfoType;   /* cell type for selecting from union CellInfo */
1610   union {
1611     RIL_CellIdentityGsm_v12 cellIdentityGsm;
1612     RIL_CellIdentityWcdma_v12 cellIdentityWcdma;
1613     RIL_CellIdentityLte_v12 cellIdentityLte;
1614     RIL_CellIdentityTdscdma cellIdentityTdscdma;
1615     RIL_CellIdentityCdma cellIdentityCdma;
1616   };
1617 }RIL_CellIdentity_v16;
1618 
1619 typedef struct {
1620     RIL_RegState regState;                // Valid reg states are RIL_NOT_REG_AND_NOT_SEARCHING,
1621                                           // REG_HOME, RIL_NOT_REG_AND_SEARCHING, REG_DENIED,
1622                                           // UNKNOWN, REG_ROAMING defined in RegState
1623     RIL_RadioTechnology rat;              // indicates the available voice radio technology,
1624                                           // valid values as defined by RadioTechnology.
1625     int32_t cssSupported;                 // concurrent services support indicator. if
1626                                           // registered on a CDMA system.
1627                                           // 0 - Concurrent services not supported,
1628                                           // 1 - Concurrent services supported
1629     int32_t roamingIndicator;             // TSB-58 Roaming Indicator if registered
1630                                           // on a CDMA or EVDO system or -1 if not.
1631                                           // Valid values are 0-255.
1632     int32_t systemIsInPrl;                // indicates whether the current system is in the
1633                                           // PRL if registered on a CDMA or EVDO system or -1 if
1634                                           // not. 0=not in the PRL, 1=in the PRL
1635     int32_t defaultRoamingIndicator;      // default Roaming Indicator from the PRL,
1636                                           // if registered on a CDMA or EVDO system or -1 if not.
1637                                           // Valid values are 0-255.
1638     int32_t reasonForDenial;              // reasonForDenial if registration state is 3
1639                                           // (Registration denied) this is an enumerated reason why
1640                                           // registration was denied. See 3GPP TS 24.008,
1641                                           // 10.5.3.6 and Annex G.
1642                                           // 0 - General
1643                                           // 1 - Authentication Failure
1644                                           // 2 - IMSI unknown in HLR
1645                                           // 3 - Illegal MS
1646                                           // 4 - Illegal ME
1647                                           // 5 - PLMN not allowed
1648                                           // 6 - Location area not allowed
1649                                           // 7 - Roaming not allowed
1650                                           // 8 - No Suitable Cells in this Location Area
1651                                           // 9 - Network failure
1652                                           // 10 - Persistent location update reject
1653                                           // 11 - PLMN not allowed
1654                                           // 12 - Location area not allowed
1655                                           // 13 - Roaming not allowed in this Location Area
1656                                           // 15 - No Suitable Cells in this Location Area
1657                                           // 17 - Network Failure
1658                                           // 20 - MAC Failure
1659                                           // 21 - Sync Failure
1660                                           // 22 - Congestion
1661                                           // 23 - GSM Authentication unacceptable
1662                                           // 25 - Not Authorized for this CSG
1663                                           // 32 - Service option not supported
1664                                           // 33 - Requested service option not subscribed
1665                                           // 34 - Service option temporarily out of order
1666                                           // 38 - Call cannot be identified
1667                                           // 48-63 - Retry upon entry into a new cell
1668                                           // 95 - Semantically incorrect message
1669                                           // 96 - Invalid mandatory information
1670                                           // 97 - Message type non-existent or not implemented
1671                                           // 98 - Message type not compatible with protocol state
1672                                           // 99 - Information element non-existent or
1673                                           //      not implemented
1674                                           // 100 - Conditional IE error
1675                                           // 101 - Message not compatible with protocol state;
1676     RIL_CellIdentity_v16 cellIdentity;    // current cell information
1677 }RIL_VoiceRegistrationStateResponse;
1678 
1679 
1680 typedef struct {
1681     RIL_RegState regState;                // Valid reg states are RIL_NOT_REG_AND_NOT_SEARCHING,
1682                                           // REG_HOME, RIL_NOT_REG_AND_SEARCHING, REG_DENIED,
1683                                           // UNKNOWN, REG_ROAMING defined in RegState
1684     RIL_RadioTechnology rat;              // indicates the available data radio technology,
1685                                           // valid values as defined by RadioTechnology.
1686     int32_t reasonDataDenied;             // if registration state is 3 (Registration
1687                                           // denied) this is an enumerated reason why
1688                                           // registration was denied. See 3GPP TS 24.008,
1689                                           // Annex G.6 "Additional cause codes for GMM".
1690                                           // 7 == GPRS services not allowed
1691                                           // 8 == GPRS services and non-GPRS services not allowed
1692                                           // 9 == MS identity cannot be derived by the network
1693                                           // 10 == Implicitly detached
1694                                           // 14 == GPRS services not allowed in this PLMN
1695                                           // 16 == MSC temporarily not reachable
1696                                           // 40 == No PDP context activated
1697     int32_t maxDataCalls;                 // The maximum number of simultaneous Data Calls that
1698                                           // must be established using setupDataCall().
1699     RIL_CellIdentity_v16 cellIdentity;    // Current cell information
1700 }RIL_DataRegistrationStateResponse;
1701 
1702 /* Names of the CDMA info records (C.S0005 section 3.7.5) */
1703 typedef enum {
1704   RIL_CDMA_DISPLAY_INFO_REC,
1705   RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC,
1706   RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC,
1707   RIL_CDMA_CONNECTED_NUMBER_INFO_REC,
1708   RIL_CDMA_SIGNAL_INFO_REC,
1709   RIL_CDMA_REDIRECTING_NUMBER_INFO_REC,
1710   RIL_CDMA_LINE_CONTROL_INFO_REC,
1711   RIL_CDMA_EXTENDED_DISPLAY_INFO_REC,
1712   RIL_CDMA_T53_CLIR_INFO_REC,
1713   RIL_CDMA_T53_RELEASE_INFO_REC,
1714   RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC
1715 } RIL_CDMA_InfoRecName;
1716 
1717 /* Display Info Rec as defined in C.S0005 section 3.7.5.1
1718    Extended Display Info Rec as defined in C.S0005 section 3.7.5.16
1719    Note: the Extended Display info rec contains multiple records of the
1720    form: display_tag, display_len, and display_len occurrences of the
1721    chari field if the display_tag is not 10000000 or 10000001.
1722    To save space, the records are stored consecutively in a byte buffer.
1723    The display_tag, display_len and chari fields are all 1 byte.
1724 */
1725 
1726 typedef struct {
1727   char alpha_len;
1728   char alpha_buf[CDMA_ALPHA_INFO_BUFFER_LENGTH];
1729 } RIL_CDMA_DisplayInfoRecord;
1730 
1731 /* Called Party Number Info Rec as defined in C.S0005 section 3.7.5.2
1732    Calling Party Number Info Rec as defined in C.S0005 section 3.7.5.3
1733    Connected Number Info Rec as defined in C.S0005 section 3.7.5.4
1734 */
1735 
1736 typedef struct {
1737   char len;
1738   char buf[CDMA_NUMBER_INFO_BUFFER_LENGTH];
1739   char number_type;
1740   char number_plan;
1741   char pi;
1742   char si;
1743 } RIL_CDMA_NumberInfoRecord;
1744 
1745 /* Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11 */
1746 typedef enum {
1747   RIL_REDIRECTING_REASON_UNKNOWN = 0,
1748   RIL_REDIRECTING_REASON_CALL_FORWARDING_BUSY = 1,
1749   RIL_REDIRECTING_REASON_CALL_FORWARDING_NO_REPLY = 2,
1750   RIL_REDIRECTING_REASON_CALLED_DTE_OUT_OF_ORDER = 9,
1751   RIL_REDIRECTING_REASON_CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
1752   RIL_REDIRECTING_REASON_CALL_FORWARDING_UNCONDITIONAL = 15,
1753   RIL_REDIRECTING_REASON_RESERVED
1754 } RIL_CDMA_RedirectingReason;
1755 
1756 typedef struct {
1757   RIL_CDMA_NumberInfoRecord redirectingNumber;
1758   /* redirectingReason is set to RIL_REDIRECTING_REASON_UNKNOWN if not included */
1759   RIL_CDMA_RedirectingReason redirectingReason;
1760 } RIL_CDMA_RedirectingNumberInfoRecord;
1761 
1762 /* Line Control Information Record as defined in C.S0005 section 3.7.5.15 */
1763 typedef struct {
1764   char lineCtrlPolarityIncluded;
1765   char lineCtrlToggle;
1766   char lineCtrlReverse;
1767   char lineCtrlPowerDenial;
1768 } RIL_CDMA_LineControlInfoRecord;
1769 
1770 /* T53 CLIR Information Record */
1771 typedef struct {
1772   char cause;
1773 } RIL_CDMA_T53_CLIRInfoRecord;
1774 
1775 /* T53 Audio Control Information Record */
1776 typedef struct {
1777   char upLink;
1778   char downLink;
1779 } RIL_CDMA_T53_AudioControlInfoRecord;
1780 
1781 typedef struct {
1782 
1783   RIL_CDMA_InfoRecName name;
1784 
1785   union {
1786     /* Display and Extended Display Info Rec */
1787     RIL_CDMA_DisplayInfoRecord           display;
1788 
1789     /* Called Party Number, Calling Party Number, Connected Number Info Rec */
1790     RIL_CDMA_NumberInfoRecord            number;
1791 
1792     /* Signal Info Rec */
1793     RIL_CDMA_SignalInfoRecord            signal;
1794 
1795     /* Redirecting Number Info Rec */
1796     RIL_CDMA_RedirectingNumberInfoRecord redir;
1797 
1798     /* Line Control Info Rec */
1799     RIL_CDMA_LineControlInfoRecord       lineCtrl;
1800 
1801     /* T53 CLIR Info Rec */
1802     RIL_CDMA_T53_CLIRInfoRecord          clir;
1803 
1804     /* T53 Audio Control Info Rec */
1805     RIL_CDMA_T53_AudioControlInfoRecord  audioCtrl;
1806   } rec;
1807 } RIL_CDMA_InformationRecord;
1808 
1809 #define RIL_CDMA_MAX_NUMBER_OF_INFO_RECS 10
1810 
1811 typedef struct {
1812   char numberOfInfoRecs;
1813   RIL_CDMA_InformationRecord infoRec[RIL_CDMA_MAX_NUMBER_OF_INFO_RECS];
1814 } RIL_CDMA_InformationRecords;
1815 
1816 /* See RIL_REQUEST_NV_READ_ITEM */
1817 typedef struct {
1818   RIL_NV_Item itemID;
1819 } RIL_NV_ReadItem;
1820 
1821 /* See RIL_REQUEST_NV_WRITE_ITEM */
1822 typedef struct {
1823   RIL_NV_Item   itemID;
1824   char *        value;
1825 } RIL_NV_WriteItem;
1826 
1827 typedef enum {
1828     HANDOVER_STARTED = 0,
1829     HANDOVER_COMPLETED = 1,
1830     HANDOVER_FAILED = 2,
1831     HANDOVER_CANCELED = 3
1832 } RIL_SrvccState;
1833 
1834 /* hardware configuration reported to RILJ. */
1835 typedef enum {
1836    RIL_HARDWARE_CONFIG_MODEM = 0,
1837    RIL_HARDWARE_CONFIG_SIM = 1,
1838 } RIL_HardwareConfig_Type;
1839 
1840 typedef enum {
1841    RIL_HARDWARE_CONFIG_STATE_ENABLED = 0,
1842    RIL_HARDWARE_CONFIG_STATE_STANDBY = 1,
1843    RIL_HARDWARE_CONFIG_STATE_DISABLED = 2,
1844 } RIL_HardwareConfig_State;
1845 
1846 typedef struct {
1847    int rilModel;
1848    uint32_t rat; /* bitset - ref. RIL_RadioTechnology. */
1849    int maxVoice;
1850    int maxData;
1851    int maxStandby;
1852 } RIL_HardwareConfig_Modem;
1853 
1854 typedef struct {
1855    char modemUuid[MAX_UUID_LENGTH];
1856 } RIL_HardwareConfig_Sim;
1857 
1858 typedef struct {
1859   RIL_HardwareConfig_Type type;
1860   char uuid[MAX_UUID_LENGTH];
1861   RIL_HardwareConfig_State state;
1862   union {
1863      RIL_HardwareConfig_Modem modem;
1864      RIL_HardwareConfig_Sim sim;
1865   } cfg;
1866 } RIL_HardwareConfig;
1867 
1868 typedef enum {
1869   SS_CFU,
1870   SS_CF_BUSY,
1871   SS_CF_NO_REPLY,
1872   SS_CF_NOT_REACHABLE,
1873   SS_CF_ALL,
1874   SS_CF_ALL_CONDITIONAL,
1875   SS_CLIP,
1876   SS_CLIR,
1877   SS_COLP,
1878   SS_COLR,
1879   SS_WAIT,
1880   SS_BAOC,
1881   SS_BAOIC,
1882   SS_BAOIC_EXC_HOME,
1883   SS_BAIC,
1884   SS_BAIC_ROAMING,
1885   SS_ALL_BARRING,
1886   SS_OUTGOING_BARRING,
1887   SS_INCOMING_BARRING
1888 } RIL_SsServiceType;
1889 
1890 typedef enum {
1891   SS_ACTIVATION,
1892   SS_DEACTIVATION,
1893   SS_INTERROGATION,
1894   SS_REGISTRATION,
1895   SS_ERASURE
1896 } RIL_SsRequestType;
1897 
1898 typedef enum {
1899   SS_ALL_TELE_AND_BEARER_SERVICES,
1900   SS_ALL_TELESEVICES,
1901   SS_TELEPHONY,
1902   SS_ALL_DATA_TELESERVICES,
1903   SS_SMS_SERVICES,
1904   SS_ALL_TELESERVICES_EXCEPT_SMS
1905 } RIL_SsTeleserviceType;
1906 
1907 #define SS_INFO_MAX 4
1908 #define NUM_SERVICE_CLASSES 7
1909 
1910 typedef struct {
1911   int numValidIndexes; /* This gives the number of valid values in cfInfo.
1912                        For example if voice is forwarded to one number and data
1913                        is forwarded to a different one then numValidIndexes will be
1914                        2 indicating total number of valid values in cfInfo.
1915                        Similarly if all the services are forwarded to the same
1916                        number then the value of numValidIndexes will be 1. */
1917 
1918   RIL_CallForwardInfo cfInfo[NUM_SERVICE_CLASSES]; /* This is the response data
1919                                                       for SS request to query call
1920                                                       forward status. see
1921                                                       RIL_REQUEST_QUERY_CALL_FORWARD_STATUS */
1922 } RIL_CfData;
1923 
1924 typedef struct {
1925   RIL_SsServiceType serviceType;
1926   RIL_SsRequestType requestType;
1927   RIL_SsTeleserviceType teleserviceType;
1928   int serviceClass;
1929   RIL_Errno result;
1930 
1931   union {
1932     int ssInfo[SS_INFO_MAX]; /* This is the response data for most of the SS GET/SET
1933                                 RIL requests. E.g. RIL_REQUSET_GET_CLIR returns
1934                                 two ints, so first two values of ssInfo[] will be
1935                                 used for response if serviceType is SS_CLIR and
1936                                 requestType is SS_INTERROGATION */
1937 
1938     RIL_CfData cfData;
1939   };
1940 } RIL_StkCcUnsolSsResponse;
1941 
1942 /**
1943  * Data connection power state
1944  */
1945 typedef enum {
1946     RIL_DC_POWER_STATE_LOW      = 1,        // Low power state
1947     RIL_DC_POWER_STATE_MEDIUM   = 2,        // Medium power state
1948     RIL_DC_POWER_STATE_HIGH     = 3,        // High power state
1949     RIL_DC_POWER_STATE_UNKNOWN  = INT32_MAX // Unknown state
1950 } RIL_DcPowerStates;
1951 
1952 /**
1953  * Data connection real time info
1954  */
1955 typedef struct {
1956     uint64_t                    time;       // Time in nanos as returned by ril_nano_time
1957     RIL_DcPowerStates           powerState; // Current power state
1958 } RIL_DcRtInfo;
1959 
1960 /**
1961  * Data profile to modem
1962  */
1963 typedef struct {
1964     /* id of the data profile */
1965     int profileId;
1966     /* the APN to connect to */
1967     char* apn;
1968     /** one of the PDP_type values in TS 27.007 section 10.1.1.
1969      * For example, "IP", "IPV6", "IPV4V6", or "PPP".
1970      */
1971     char* protocol;
1972     /** authentication protocol used for this PDP context
1973      * (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3)
1974      */
1975     int authType;
1976     /* the username for APN, or NULL */
1977     char* user;
1978     /* the password for APN, or NULL */
1979     char* password;
1980     /* the profile type, TYPE_COMMON-0, TYPE_3GPP-1, TYPE_3GPP2-2 */
1981     int type;
1982     /* the period in seconds to limit the maximum connections */
1983     int maxConnsTime;
1984     /* the maximum connections during maxConnsTime */
1985     int maxConns;
1986     /** the required wait time in seconds after a successful UE initiated
1987      * disconnect of a given PDN connection before the device can send
1988      * a new PDN connection request for that given PDN
1989      */
1990     int waitTime;
1991     /* true to enable the profile, 0 to disable, 1 to enable */
1992     int enabled;
1993 } RIL_DataProfileInfo;
1994 
1995 typedef struct {
1996     /* id of the data profile */
1997     int profileId;
1998     /* the APN to connect to */
1999     char* apn;
2000     /** one of the PDP_type values in TS 27.007 section 10.1.1.
2001      * For example, "IP", "IPV6", "IPV4V6", or "PPP".
2002      */
2003     char* protocol;
2004     /** one of the PDP_type values in TS 27.007 section 10.1.1 used on roaming network.
2005      * For example, "IP", "IPV6", "IPV4V6", or "PPP".
2006      */
2007     char *roamingProtocol;
2008     /** authentication protocol used for this PDP context
2009      * (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3)
2010      */
2011     int authType;
2012     /* the username for APN, or NULL */
2013     char* user;
2014     /* the password for APN, or NULL */
2015     char* password;
2016     /* the profile type, TYPE_COMMON-0, TYPE_3GPP-1, TYPE_3GPP2-2 */
2017     int type;
2018     /* the period in seconds to limit the maximum connections */
2019     int maxConnsTime;
2020     /* the maximum connections during maxConnsTime */
2021     int maxConns;
2022     /** the required wait time in seconds after a successful UE initiated
2023      * disconnect of a given PDN connection before the device can send
2024      * a new PDN connection request for that given PDN
2025      */
2026     int waitTime;
2027     /* true to enable the profile, 0 to disable, 1 to enable */
2028     int enabled;
2029     /* supported APN types bitmask. See RIL_ApnTypes for the value of each bit. */
2030     int supportedTypesBitmask;
2031     /** the bearer bitmask. See RIL_RadioAccessFamily for the value of each bit. */
2032     int bearerBitmask;
2033     /** maximum transmission unit (MTU) size in bytes */
2034     int mtu;
2035     /** the MVNO type: possible values are "imsi", "gid", "spn" */
2036     char *mvnoType;
2037     /** MVNO match data. Can be anything defined by the carrier. For example,
2038      *        SPN like: "A MOBILE", "BEN NL", etc...
2039      *        IMSI like: "302720x94", "2060188", etc...
2040      *        GID like: "4E", "33", etc...
2041      */
2042     char *mvnoMatchData;
2043 } RIL_DataProfileInfo_v15;
2044 
2045 /* Tx Power Levels */
2046 #define RIL_NUM_TX_POWER_LEVELS     5
2047 
2048 /**
2049  * Aggregate modem activity information
2050  */
2051 typedef struct {
2052 
2053   /* total time (in ms) when modem is in a low power or
2054    * sleep state
2055    */
2056   uint32_t sleep_mode_time_ms;
2057 
2058   /* total time (in ms) when modem is awake but neither
2059    * the transmitter nor receiver are active/awake */
2060   uint32_t idle_mode_time_ms;
2061 
2062   /* total time (in ms) during which the transmitter is active/awake,
2063    * subdivided by manufacturer-defined device-specific
2064    * contiguous increasing ranges of transmit power between
2065    * 0 and the transmitter's maximum transmit power.
2066    */
2067   uint32_t tx_mode_time_ms[RIL_NUM_TX_POWER_LEVELS];
2068 
2069   /* total time (in ms) for which receiver is active/awake and
2070    * the transmitter is inactive */
2071   uint32_t rx_mode_time_ms;
2072 } RIL_ActivityStatsInfo;
2073 
2074 typedef enum {
2075     RIL_APN_TYPE_UNKNOWN      = 0x0,          // Unknown
2076     RIL_APN_TYPE_DEFAULT      = 0x1,          // APN type for default data traffic
2077     RIL_APN_TYPE_MMS          = 0x2,          // APN type for MMS traffic
2078     RIL_APN_TYPE_SUPL         = 0x4,          // APN type for SUPL assisted GPS
2079     RIL_APN_TYPE_DUN          = 0x8,          // APN type for DUN traffic
2080     RIL_APN_TYPE_HIPRI        = 0x10,         // APN type for HiPri traffic
2081     RIL_APN_TYPE_FOTA         = 0x20,         // APN type for FOTA
2082     RIL_APN_TYPE_IMS          = 0x40,         // APN type for IMS
2083     RIL_APN_TYPE_CBS          = 0x80,         // APN type for CBS
2084     RIL_APN_TYPE_IA           = 0x100,        // APN type for IA Initial Attach APN
2085     RIL_APN_TYPE_EMERGENCY    = 0x200,        // APN type for Emergency PDN. This is not an IA apn,
2086                                               // but is used for access to carrier services in an
2087                                               // emergency call situation.
2088     RIL_APN_TYPE_MCX          = 0x400,        // APN type for Mission Critical Service
2089     RIL_APN_TYPE_XCAP         = 0x800,        // APN type for XCAP
2090     RIL_APN_TYPE_ALL          = 0xFFFFFFFF    // All APN types
2091 } RIL_ApnTypes;
2092 
2093 typedef enum {
2094     RIL_DST_POWER_SAVE_MODE,        // Device power save mode (provided by PowerManager)
2095                                     // True indicates the device is in power save mode.
2096     RIL_DST_CHARGING_STATE,         // Device charging state (provided by BatteryManager)
2097                                     // True indicates the device is charging.
2098     RIL_DST_LOW_DATA_EXPECTED       // Low data expected mode. True indicates low data traffic
2099                                     // is expected, for example, when the device is idle
2100                                     // (e.g. not doing tethering in the background). Note
2101                                     // this doesn't mean no data is expected.
2102 } RIL_DeviceStateType;
2103 
2104 typedef enum {
2105     RIL_UR_SIGNAL_STRENGTH            = 0x01, // When this bit is set, modem should always send the
2106                                               // signal strength update through
2107                                               // RIL_UNSOL_SIGNAL_STRENGTH, otherwise suppress it.
2108     RIL_UR_FULL_NETWORK_STATE         = 0x02, // When this bit is set, modem should always send
2109                                               // RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED
2110                                               // when any field in
2111                                               // RIL_REQUEST_VOICE_REGISTRATION_STATE or
2112                                               // RIL_REQUEST_DATA_REGISTRATION_STATE changes. When
2113                                               // this bit is not set, modem should suppress
2114                                               // RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED
2115                                               // only when insignificant fields change
2116                                               // (e.g. cell info).
2117                                               // Modem should continue sending
2118                                               // RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED
2119                                               // when significant fields are updated even when this
2120                                               // bit is not set. The following fields are
2121                                               // considered significant, registration state and
2122                                               // radio technology.
2123     RIL_UR_DATA_CALL_DORMANCY_CHANGED = 0x04  // When this bit is set, modem should send the data
2124                                               // call list changed unsolicited response
2125                                               // RIL_UNSOL_DATA_CALL_LIST_CHANGED whenever any
2126                                               // field in RIL_Data_Call_Response changes.
2127                                               // Otherwise modem should suppress the unsolicited
2128                                               // response when the only changed field is 'active'
2129                                               // (for data dormancy). For all other fields change,
2130                                               // modem should continue sending
2131                                               // RIL_UNSOL_DATA_CALL_LIST_CHANGED regardless this
2132                                               // bit is set or not.
2133 } RIL_UnsolicitedResponseFilter;
2134 
2135 typedef struct {
2136     char * aidPtr; /* AID value, See ETSI 102.221 and 101.220*/
2137     int p2;        /* P2 parameter (described in ISO 7816-4)
2138                       P2Constants:NO_P2 if to be ignored */
2139 } RIL_OpenChannelParams;
2140 
2141 typedef enum {
2142     RIL_ONE_SHOT = 0x01, // Performs the scan only once
2143     RIL_PERIODIC = 0x02  // Performs the scan periodically until cancelled
2144 } RIL_ScanType;
2145 
2146 typedef enum {
2147     UNKNOWN = 0x00,     // Unknown Radio Access Network
2148     GERAN = 0x01,       // GSM EDGE Radio Access Network
2149     UTRAN = 0x02,       // Universal Terrestrial Radio Access Network
2150     EUTRAN = 0x03,      // Evolved Universal Terrestrial Radio Access Network
2151     NGRAN = 0x04,       // Next-Generation Radio Access Network
2152     CDMA2000 = 0x05,    // CDMA 2000 Radio AccessNetwork
2153 } RIL_RadioAccessNetworks;
2154 
2155 typedef enum {
2156     GERAN_BAND_T380 = 1,
2157     GERAN_BAND_T410 = 2,
2158     GERAN_BAND_450 = 3,
2159     GERAN_BAND_480 = 4,
2160     GERAN_BAND_710 = 5,
2161     GERAN_BAND_750 = 6,
2162     GERAN_BAND_T810 = 7,
2163     GERAN_BAND_850 = 8,
2164     GERAN_BAND_P900 = 9,
2165     GERAN_BAND_E900 = 10,
2166     GERAN_BAND_R900 = 11,
2167     GERAN_BAND_DCS1800 = 12,
2168     GERAN_BAND_PCS1900 = 13,
2169     GERAN_BAND_ER900 = 14,
2170 } RIL_GeranBands;
2171 
2172 typedef enum {
2173     UTRAN_BAND_1 = 1,
2174     UTRAN_BAND_2 = 2,
2175     UTRAN_BAND_3 = 3,
2176     UTRAN_BAND_4 = 4,
2177     UTRAN_BAND_5 = 5,
2178     UTRAN_BAND_6 = 6,
2179     UTRAN_BAND_7 = 7,
2180     UTRAN_BAND_8 = 8,
2181     UTRAN_BAND_9 = 9,
2182     UTRAN_BAND_10 = 10,
2183     UTRAN_BAND_11 = 11,
2184     UTRAN_BAND_12 = 12,
2185     UTRAN_BAND_13 = 13,
2186     UTRAN_BAND_14 = 14,
2187     UTRAN_BAND_19 = 19,
2188     UTRAN_BAND_20 = 20,
2189     UTRAN_BAND_21 = 21,
2190     UTRAN_BAND_22 = 22,
2191     UTRAN_BAND_25 = 25,
2192     UTRAN_BAND_26 = 26,
2193 } RIL_UtranBands;
2194 
2195 typedef enum {
2196     EUTRAN_BAND_1 = 1,
2197     EUTRAN_BAND_2 = 2,
2198     EUTRAN_BAND_3 = 3,
2199     EUTRAN_BAND_4 = 4,
2200     EUTRAN_BAND_5 = 5,
2201     EUTRAN_BAND_6 = 6,
2202     EUTRAN_BAND_7 = 7,
2203     EUTRAN_BAND_8 = 8,
2204     EUTRAN_BAND_9 = 9,
2205     EUTRAN_BAND_10 = 10,
2206     EUTRAN_BAND_11 = 11,
2207     EUTRAN_BAND_12 = 12,
2208     EUTRAN_BAND_13 = 13,
2209     EUTRAN_BAND_14 = 14,
2210     EUTRAN_BAND_17 = 17,
2211     EUTRAN_BAND_18 = 18,
2212     EUTRAN_BAND_19 = 19,
2213     EUTRAN_BAND_20 = 20,
2214     EUTRAN_BAND_21 = 21,
2215     EUTRAN_BAND_22 = 22,
2216     EUTRAN_BAND_23 = 23,
2217     EUTRAN_BAND_24 = 24,
2218     EUTRAN_BAND_25 = 25,
2219     EUTRAN_BAND_26 = 26,
2220     EUTRAN_BAND_27 = 27,
2221     EUTRAN_BAND_28 = 28,
2222     EUTRAN_BAND_30 = 30,
2223     EUTRAN_BAND_31 = 31,
2224     EUTRAN_BAND_33 = 33,
2225     EUTRAN_BAND_34 = 34,
2226     EUTRAN_BAND_35 = 35,
2227     EUTRAN_BAND_36 = 36,
2228     EUTRAN_BAND_37 = 37,
2229     EUTRAN_BAND_38 = 38,
2230     EUTRAN_BAND_39 = 39,
2231     EUTRAN_BAND_40 = 40,
2232     EUTRAN_BAND_41 = 41,
2233     EUTRAN_BAND_42 = 42,
2234     EUTRAN_BAND_43 = 43,
2235     EUTRAN_BAND_44 = 44,
2236     EUTRAN_BAND_45 = 45,
2237     EUTRAN_BAND_46 = 46,
2238     EUTRAN_BAND_47 = 47,
2239     EUTRAN_BAND_48 = 48,
2240     EUTRAN_BAND_65 = 65,
2241     EUTRAN_BAND_66 = 66,
2242     EUTRAN_BAND_68 = 68,
2243     EUTRAN_BAND_70 = 70,
2244 } RIL_EutranBands;
2245 
2246 typedef enum {
2247     NGRAN_BAND_1 = 1,
2248     NGRAN_BAND_2 = 2,
2249     NGRAN_BAND_3 = 3,
2250     NGRAN_BAND_5 = 5,
2251     NGRAN_BAND_7 = 7,
2252     NGRAN_BAND_8 = 8,
2253     NGRAN_BAND_12 = 12,
2254     NGRAN_BAND_20 = 20,
2255     NGRAN_BAND_25 = 25,
2256     NGRAN_BAND_28 = 28,
2257     NGRAN_BAND_34 = 34,
2258     NGRAN_BAND_38 = 38,
2259     NGRAN_BAND_39 = 39,
2260     NGRAN_BAND_40 = 40,
2261     NGRAN_BAND_41 = 41,
2262     NGRAN_BAND_50 = 50,
2263     NGRAN_BAND_51 = 51,
2264     NGRAN_BAND_66 = 66,
2265     NGRAN_BAND_70 = 70,
2266     NGRAN_BAND_71 = 71,
2267     NGRAN_BAND_74 = 74,
2268     NGRAN_BAND_75 = 75,
2269     NGRAN_BAND_76 = 76,
2270     NGRAN_BAND_77 = 77,
2271     NGRAN_BAND_78 = 78,
2272     NGRAN_BAND_79 = 79,
2273     NGRAN_BAND_80 = 80,
2274     NGRAN_BAND_81 = 81,
2275     NGRAN_BAND_82 = 82,
2276     NGRAN_BAND_83 = 83,
2277     NGRAN_BAND_84 = 84,
2278     NGRAN_BAND_86 = 86,
2279     NGRAN_BAND_257 = 257,
2280     NGRAN_BAND_258 = 258,
2281     NGRAN_BAND_260 = 260,
2282     NGRAN_BAND_261 = 261,
2283 } RIL_NgranBands;
2284 
2285 typedef struct {
2286     RIL_RadioAccessNetworks radio_access_network; // The type of network to scan.
2287     uint32_t bands_length;                        // Length of bands
2288     union {
2289         RIL_GeranBands geran_bands[MAX_BANDS];
2290         RIL_UtranBands utran_bands[MAX_BANDS];
2291         RIL_EutranBands eutran_bands[MAX_BANDS];
2292         RIL_NgranBands ngran_bands[MAX_BANDS];
2293     } bands;
2294     uint32_t channels_length;                     // Length of channels
2295     uint32_t channels[MAX_CHANNELS];              // Frequency channels to scan
2296 } RIL_RadioAccessSpecifier;
2297 
2298 typedef struct {
2299     RIL_ScanType type;                                              // Type of the scan
2300     int32_t interval;                                               // Time interval in seconds
2301                                                                     // between periodic scans, only
2302                                                                     // valid when type=RIL_PERIODIC
2303     uint32_t specifiers_length;                                     // Length of specifiers
2304     RIL_RadioAccessSpecifier specifiers[MAX_RADIO_ACCESS_NETWORKS]; // Radio access networks
2305                                                                     // with bands/channels.
2306 } RIL_NetworkScanRequest;
2307 
2308 typedef enum {
2309     PARTIAL = 0x01,   // The result contains a part of the scan results
2310     COMPLETE = 0x02,  // The result contains the last part of the scan results
2311 } RIL_ScanStatus;
2312 
2313 typedef struct {
2314     RIL_ScanStatus status;              // The status of the scan
2315     uint32_t network_infos_length;      // Total length of RIL_CellInfo
2316     RIL_CellInfo_v12* network_infos;    // List of network information
2317     RIL_Errno error;
2318 } RIL_NetworkScanResult;
2319 
2320 /**
2321  * RIL_REQUEST_GET_SIM_STATUS
2322  *
2323  * Requests status of the SIM interface and the SIM card
2324  *
2325  * "data" is NULL
2326  *
2327  * "response" is const RIL_CardStatus_v6 *
2328  *
2329  * Valid errors:
2330  *
2331  *  SUCCESS
2332  *  RADIO_NOT_AVAILABLE
2333  *  INTERNAL_ERR
2334  *  NO_MEMORY
2335  *  NO_RESOURCES
2336  *  CANCELLED
2337  *  REQUEST_NOT_SUPPORTED
2338  */
2339 #define RIL_REQUEST_GET_SIM_STATUS 1
2340 
2341 /**
2342  * RIL_REQUEST_ENTER_SIM_PIN
2343  *
2344  * Supplies SIM PIN. Only called if RIL_CardStatus has RIL_APPSTATE_PIN state
2345  *
2346  * "data" is const char **
2347  * ((const char **)data)[0] is PIN value
2348  * ((const char **)data)[1] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2349  *
2350  * "response" is int *
2351  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2352  *
2353  * Valid errors:
2354  *
2355  * SUCCESS
2356  * RADIO_NOT_AVAILABLE (radio resetting)
2357  * PASSWORD_INCORRECT
2358  * INTERNAL_ERR
2359  * NO_MEMORY
2360  * NO_RESOURCES
2361  * CANCELLED
2362  * INVALID_ARGUMENTS
2363  * INVALID_SIM_STATE
2364  *  REQUEST_NOT_SUPPORTED
2365  */
2366 
2367 #define RIL_REQUEST_ENTER_SIM_PIN 2
2368 
2369 /**
2370  * RIL_REQUEST_ENTER_SIM_PUK
2371  *
2372  * Supplies SIM PUK and new PIN.
2373  *
2374  * "data" is const char **
2375  * ((const char **)data)[0] is PUK value
2376  * ((const char **)data)[1] is new PIN value
2377  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2378  *
2379  * "response" is int *
2380  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2381  *
2382  * Valid errors:
2383  *
2384  *  SUCCESS
2385  *  RADIO_NOT_AVAILABLE (radio resetting)
2386  *  PASSWORD_INCORRECT
2387  *     (PUK is invalid)
2388  *  INTERNAL_ERR
2389  *  NO_MEMORY
2390  *  NO_RESOURCES
2391  *  CANCELLED
2392  *  INVALID_ARGUMENTS
2393  *  INVALID_SIM_STATE
2394  *  REQUEST_NOT_SUPPORTED
2395  */
2396 
2397 #define RIL_REQUEST_ENTER_SIM_PUK 3
2398 
2399 /**
2400  * RIL_REQUEST_ENTER_SIM_PIN2
2401  *
2402  * Supplies SIM PIN2. Only called following operation where SIM_PIN2 was
2403  * returned as a a failure from a previous operation.
2404  *
2405  * "data" is const char **
2406  * ((const char **)data)[0] is PIN2 value
2407  * ((const char **)data)[1] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2408  *
2409  * "response" is int *
2410  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2411  *
2412  * Valid errors:
2413  *
2414  *  SUCCESS
2415  *  RADIO_NOT_AVAILABLE (radio resetting)
2416  *  PASSWORD_INCORRECT
2417  *  INTERNAL_ERR
2418  *  NO_MEMORY
2419  *  NO_RESOURCES
2420  *  CANCELLED
2421  *  INVALID_ARGUMENTS
2422  *  INVALID_SIM_STATE
2423  *  REQUEST_NOT_SUPPORTED
2424  */
2425 
2426 #define RIL_REQUEST_ENTER_SIM_PIN2 4
2427 
2428 /**
2429  * RIL_REQUEST_ENTER_SIM_PUK2
2430  *
2431  * Supplies SIM PUK2 and new PIN2.
2432  *
2433  * "data" is const char **
2434  * ((const char **)data)[0] is PUK2 value
2435  * ((const char **)data)[1] is new PIN2 value
2436  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2437  *
2438  * "response" is int *
2439  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2440  *
2441  * Valid errors:
2442  *
2443  *  SUCCESS
2444  *  RADIO_NOT_AVAILABLE (radio resetting)
2445  *  PASSWORD_INCORRECT
2446  *     (PUK2 is invalid)
2447  *  INTERNAL_ERR
2448  *  NO_MEMORY
2449  *  NO_RESOURCES
2450  *  CANCELLED
2451  *  INVALID_ARGUMENTS
2452  *  INVALID_SIM_STATE
2453  *  REQUEST_NOT_SUPPORTED
2454  */
2455 
2456 #define RIL_REQUEST_ENTER_SIM_PUK2 5
2457 
2458 /**
2459  * RIL_REQUEST_CHANGE_SIM_PIN
2460  *
2461  * Supplies old SIM PIN and new PIN.
2462  *
2463  * "data" is const char **
2464  * ((const char **)data)[0] is old PIN value
2465  * ((const char **)data)[1] is new PIN value
2466  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2467  *
2468  * "response" is int *
2469  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2470  *
2471  * Valid errors:
2472  *
2473  *  SUCCESS
2474  *  RADIO_NOT_AVAILABLE (radio resetting)
2475  *  PASSWORD_INCORRECT
2476  *     (old PIN is invalid)
2477  *  INTERNAL_ERR
2478  *  NO_MEMORY
2479  *  NO_RESOURCES
2480  *  CANCELLED
2481  *  INVALID_ARGUMENTS
2482  *  INVALID_SIM_STATE
2483  *  REQUEST_NOT_SUPPORTED
2484  */
2485 
2486 #define RIL_REQUEST_CHANGE_SIM_PIN 6
2487 
2488 
2489 /**
2490  * RIL_REQUEST_CHANGE_SIM_PIN2
2491  *
2492  * Supplies old SIM PIN2 and new PIN2.
2493  *
2494  * "data" is const char **
2495  * ((const char **)data)[0] is old PIN2 value
2496  * ((const char **)data)[1] is new PIN2 value
2497  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2498  *
2499  * "response" is int *
2500  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2501  *
2502  * Valid errors:
2503  *
2504  *  SUCCESS
2505  *  RADIO_NOT_AVAILABLE (radio resetting)
2506  *  PASSWORD_INCORRECT
2507  *     (old PIN2 is invalid)
2508  *  INTERNAL_ERR
2509  *  NO_MEMORY
2510  *  NO_RESOURCES
2511  *  CANCELLED
2512  *  INVALID_ARGUMENTS
2513  *  INVALID_SIM_STATE
2514  *  REQUEST_NOT_SUPPORTED
2515  *
2516  */
2517 
2518 #define RIL_REQUEST_CHANGE_SIM_PIN2 7
2519 
2520 /**
2521  * RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION
2522  *
2523  * Requests that network personlization be deactivated
2524  *
2525  * "data" is const char **
2526  * ((const char **)(data))[0]] is network depersonlization code
2527  *
2528  * "response" is int *
2529  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
2530  *
2531  * Valid errors:
2532  *
2533  *  SUCCESS
2534  *  RADIO_NOT_AVAILABLE (radio resetting)
2535  *  PASSWORD_INCORRECT
2536  *  SIM_ABSENT
2537  *     (code is invalid)
2538  *  INTERNAL_ERR
2539  *  NO_MEMORY
2540  *  NO_RESOURCES
2541  *  CANCELLED
2542  *  REQUEST_NOT_SUPPORTED
2543  */
2544 
2545 #define RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION 8
2546 
2547 /**
2548  * RIL_REQUEST_GET_CURRENT_CALLS
2549  *
2550  * Requests current call list
2551  *
2552  * "data" is NULL
2553  *
2554  * "response" must be a "const RIL_Call **"
2555  *
2556  * Valid errors:
2557  *
2558  *  SUCCESS
2559  *  RADIO_NOT_AVAILABLE (radio resetting)
2560  *  NO_MEMORY
2561  *      (request will be made again in a few hundred msec)
2562  *  INTERNAL_ERR
2563  *  NO_RESOURCES
2564  *  CANCELLED
2565  *  REQUEST_NOT_SUPPORTED
2566  */
2567 
2568 #define RIL_REQUEST_GET_CURRENT_CALLS 9
2569 
2570 
2571 /**
2572  * RIL_REQUEST_DIAL
2573  *
2574  * Initiate voice call
2575  *
2576  * "data" is const RIL_Dial *
2577  * "response" is NULL
2578  *
2579  * This method is never used for supplementary service codes
2580  *
2581  * Valid errors:
2582  *  SUCCESS
2583  *  RADIO_NOT_AVAILABLE (radio resetting)
2584  *  DIAL_MODIFIED_TO_USSD
2585  *  DIAL_MODIFIED_TO_SS
2586  *  DIAL_MODIFIED_TO_DIAL
2587  *  INVALID_ARGUMENTS
2588  *  NO_MEMORY
2589  *  INVALID_STATE
2590  *  NO_RESOURCES
2591  *  INTERNAL_ERR
2592  *  FDN_CHECK_FAILURE
2593  *  MODEM_ERR
2594  *  NO_SUBSCRIPTION
2595  *  NO_NETWORK_FOUND
2596  *  INVALID_CALL_ID
2597  *  DEVICE_IN_USE
2598  *  OPERATION_NOT_ALLOWED
2599  *  ABORTED
2600  *  CANCELLED
2601  *  REQUEST_NOT_SUPPORTED
2602  */
2603 #define RIL_REQUEST_DIAL 10
2604 
2605 /**
2606  * RIL_REQUEST_GET_IMSI
2607  *
2608  * Get the SIM IMSI
2609  *
2610  * Only valid when radio state is "RADIO_STATE_ON"
2611  *
2612  * "data" is const char **
2613  * ((const char **)data)[0] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
2614  * "response" is a const char * containing the IMSI
2615  *
2616  * Valid errors:
2617  *  SUCCESS
2618  *  RADIO_NOT_AVAILABLE (radio resetting)
2619  *  INTERNAL_ERR
2620  *  NO_MEMORY
2621  *  NO_RESOURCES
2622  *  CANCELLED
2623  *  INVALID_SIM_STATE
2624  *  REQUEST_NOT_SUPPORTED
2625  */
2626 
2627 #define RIL_REQUEST_GET_IMSI 11
2628 
2629 /**
2630  * RIL_REQUEST_HANGUP
2631  *
2632  * Hang up a specific line (like AT+CHLD=1x)
2633  *
2634  * After this HANGUP request returns, RIL should show the connection is NOT
2635  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
2636  *
2637  * "data" is an int *
2638  * (int *)data)[0] contains Connection index (value of 'x' in CHLD above)
2639  *
2640  * "response" is NULL
2641  *
2642  * Valid errors:
2643  *  SUCCESS
2644  *  RADIO_NOT_AVAILABLE (radio resetting)
2645  *  INVALID_ARGUMENTS
2646  *  NO_MEMORY
2647  *  INVALID_STATE
2648  *  MODEM_ERR
2649  *  INTERNAL_ERR
2650  *  NO_MEMORY
2651  *  INVALID_CALL_ID
2652  *  INVALID_ARGUMENTS
2653  *  NO_RESOURCES
2654  *  CANCELLED
2655  *  REQUEST_NOT_SUPPORTED
2656  */
2657 
2658 #define RIL_REQUEST_HANGUP 12
2659 
2660 /**
2661  * RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND
2662  *
2663  * Hang up waiting or held (like AT+CHLD=0)
2664  *
2665  * After this HANGUP request returns, RIL should show the connection is NOT
2666  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
2667  *
2668  * "data" is NULL
2669  * "response" is NULL
2670  *
2671  * Valid errors:
2672  *  SUCCESS
2673  *  RADIO_NOT_AVAILABLE (radio resetting)
2674  *  INVALID_STATE
2675  *  NO_MEMORY
2676  *  MODEM_ERR
2677  *  INTERNAL_ERR
2678  *  NO_MEMORY
2679  *  INVALID_CALL_ID
2680  *  NO_RESOURCES
2681  *  OPERATION_NOT_ALLOWED
2682  *  INVALID_ARGUMENTS
2683  *  NO_RESOURCES
2684  *  CANCELLED
2685  *  REQUEST_NOT_SUPPORTED
2686  */
2687 
2688 #define RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND 13
2689 
2690 /**
2691  * RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND
2692  *
2693  * Hang up waiting or held (like AT+CHLD=1)
2694  *
2695  * After this HANGUP request returns, RIL should show the connection is NOT
2696  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
2697  *
2698  * "data" is NULL
2699  * "response" is NULL
2700  *
2701  * Valid errors:
2702  *  SUCCESS
2703  *  RADIO_NOT_AVAILABLE (radio resetting)
2704  *  INVALID_STATE
2705  *  NO_MEMORY
2706  *  MODEM_ERR
2707  *  INTERNAL_ERR
2708  *  INVALID_CALL_ID
2709  *  OPERATION_NOT_ALLOWED
2710  *  INVALID_ARGUMENTS
2711  *  NO_RESOURCES
2712  *  CANCELLED
2713  *  REQUEST_NOT_SUPPORTED
2714  */
2715 
2716 #define RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND 14
2717 
2718 /**
2719  * RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE
2720  *
2721  * Switch waiting or holding call and active call (like AT+CHLD=2)
2722  *
2723  * State transitions should be is follows:
2724  *
2725  * If call 1 is waiting and call 2 is active, then if this re
2726  *
2727  *   BEFORE                               AFTER
2728  * Call 1   Call 2                 Call 1       Call 2
2729  * ACTIVE   HOLDING                HOLDING     ACTIVE
2730  * ACTIVE   WAITING                HOLDING     ACTIVE
2731  * HOLDING  WAITING                HOLDING     ACTIVE
2732  * ACTIVE   IDLE                   HOLDING     IDLE
2733  * IDLE     IDLE                   IDLE        IDLE
2734  *
2735  * "data" is NULL
2736  * "response" is NULL
2737  *
2738  * Valid errors:
2739  *  SUCCESS
2740  *  RADIO_NOT_AVAILABLE (radio resetting)
2741  *  INVALID_STATE
2742  *  NO_MEMORY
2743  *  MODEM_ERR
2744  *  INTERNAL_ERR
2745  *  INVALID_STATE
2746  *  INVALID_ARGUMENTS
2747  *  INVALID_CALL_ID
2748  *  OPERATION_NOT_ALLOWED
2749  *  NO_RESOURCES
2750  *  CANCELLED
2751  *  REQUEST_NOT_SUPPORTED
2752  */
2753 
2754 #define RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE 15
2755 #define RIL_REQUEST_SWITCH_HOLDING_AND_ACTIVE 15
2756 
2757 /**
2758  * RIL_REQUEST_CONFERENCE
2759  *
2760  * Conference holding and active (like AT+CHLD=3)
2761 
2762  * "data" is NULL
2763  * "response" is NULL
2764  *
2765  * Valid errors:
2766  *  SUCCESS
2767  *  RADIO_NOT_AVAILABLE (radio resetting)
2768  *  NO_MEMORY
2769  *  MODEM_ERR
2770  *  INTERNAL_ERR
2771  *  INVALID_STATE
2772  *  INVALID_CALL_ID
2773  *  INVALID_ARGUMENTS
2774  *  OPERATION_NOT_ALLOWED
2775  *  NO_RESOURCES
2776  *  CANCELLED
2777  *  REQUEST_NOT_SUPPORTED
2778  */
2779 #define RIL_REQUEST_CONFERENCE 16
2780 
2781 /**
2782  * RIL_REQUEST_UDUB
2783  *
2784  * Send UDUB (user determined used busy) to ringing or
2785  * waiting call answer)(RIL_BasicRequest r);
2786  *
2787  * "data" is NULL
2788  * "response" is NULL
2789  *
2790  * Valid errors:
2791  *  SUCCESS
2792  *  RADIO_NOT_AVAILABLE (radio resetting)
2793  *  INVALID_STATE
2794  *  NO_RESOURCES
2795  *  NO_MEMORY
2796  *  MODEM_ERR
2797  *  INTERNAL_ERR
2798  *  INVALID_CALL_ID
2799  *  OPERATION_NOT_ALLOWED
2800  *  INVALID_ARGUMENTS
2801  *  CANCELLED
2802  *  REQUEST_NOT_SUPPORTED
2803  */
2804 #define RIL_REQUEST_UDUB 17
2805 
2806 /**
2807  * RIL_REQUEST_LAST_CALL_FAIL_CAUSE
2808  *
2809  * Requests the failure cause code for the most recently terminated call
2810  *
2811  * "data" is NULL
2812  * "response" is a const RIL_LastCallFailCauseInfo *
2813  * RIL_LastCallFailCauseInfo contains LastCallFailCause and vendor cause.
2814  * The vendor cause code must be used for debugging purpose only.
2815  * The implementation must return one of the values of LastCallFailCause
2816  * as mentioned below.
2817  *
2818  * GSM failure reasons codes for the cause codes defined in TS 24.008 Annex H
2819  * where possible.
2820  * CDMA failure reasons codes for the possible call failure scenarios
2821  * described in the "CDMA IS-2000 Release A (C.S0005-A v6.0)" standard.
2822  * Any of the following reason codes if the call is failed or dropped due to reason
2823  * mentioned with in the braces.
2824  *
2825  *      CALL_FAIL_RADIO_OFF (Radio is OFF)
2826  *      CALL_FAIL_OUT_OF_SERVICE (No cell coverage)
2827  *      CALL_FAIL_NO_VALID_SIM (No valid SIM)
2828  *      CALL_FAIL_RADIO_INTERNAL_ERROR (Modem hit unexpected error scenario)
2829  *      CALL_FAIL_NETWORK_RESP_TIMEOUT (No response from network)
2830  *      CALL_FAIL_NETWORK_REJECT (Explicit network reject)
2831  *      CALL_FAIL_RADIO_ACCESS_FAILURE (RRC connection failure. Eg.RACH)
2832  *      CALL_FAIL_RADIO_LINK_FAILURE (Radio Link Failure)
2833  *      CALL_FAIL_RADIO_LINK_LOST (Radio link lost due to poor coverage)
2834  *      CALL_FAIL_RADIO_UPLINK_FAILURE (Radio uplink failure)
2835  *      CALL_FAIL_RADIO_SETUP_FAILURE (RRC connection setup failure)
2836  *      CALL_FAIL_RADIO_RELEASE_NORMAL (RRC connection release, normal)
2837  *      CALL_FAIL_RADIO_RELEASE_ABNORMAL (RRC connection release, abnormal)
2838  *      CALL_FAIL_ACCESS_CLASS_BLOCKED (Access class barring)
2839  *      CALL_FAIL_NETWORK_DETACH (Explicit network detach)
2840  *
2841  * OEM causes (CALL_FAIL_OEM_CAUSE_XX) must be used for debug purpose only
2842  *
2843  * If the implementation does not have access to the exact cause codes,
2844  * then it should return one of the values listed in RIL_LastCallFailCause,
2845  * as the UI layer needs to distinguish these cases for tone generation or
2846  * error notification.
2847  *
2848  * Valid errors:
2849  *  SUCCESS
2850  *  RADIO_NOT_AVAILABLE
2851  *  NO_MEMORY
2852  *  INTERNAL_ERR
2853  *  NO_RESOURCES
2854  *  CANCELLED
2855  *  REQUEST_NOT_SUPPORTED
2856  *
2857  * See also: RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE
2858  */
2859 #define RIL_REQUEST_LAST_CALL_FAIL_CAUSE 18
2860 
2861 /**
2862  * RIL_REQUEST_SIGNAL_STRENGTH
2863  *
2864  * Requests current signal strength and associated information
2865  *
2866  * Must succeed if radio is on.
2867  *
2868  * "data" is NULL
2869  *
2870  * "response" is a const RIL_SignalStrength *
2871  *
2872  * Valid errors:
2873  *  SUCCESS
2874  *  RADIO_NOT_AVAILABLE
2875  *  NO_MEMORY
2876  *  INTERNAL_ERR
2877  *  SYSTEM_ERR
2878  *  MODEM_ERR
2879  *  NOT_PROVISIONED
2880  *  REQUEST_NOT_SUPPORTED
2881  *  NO_RESOURCES
2882  *  CANCELLED
2883  */
2884 #define RIL_REQUEST_SIGNAL_STRENGTH 19
2885 
2886 /**
2887  * RIL_REQUEST_VOICE_REGISTRATION_STATE
2888  *
2889  * Request current registration state
2890  *
2891  * "data" is NULL
2892  * "response" is a const RIL_VoiceRegistrationStateResponse *
2893  *
2894  * Valid errors:
2895  *  SUCCESS
2896  *  RADIO_NOT_AVAILABLE
2897  *  INTERNAL_ERR
2898  *  NO_MEMORY
2899  *  NO_RESOURCES
2900  *  CANCELLED
2901  *  REQUEST_NOT_SUPPORTED
2902  */
2903 #define RIL_REQUEST_VOICE_REGISTRATION_STATE 20
2904 
2905 /**
2906  * RIL_REQUEST_DATA_REGISTRATION_STATE
2907  *
2908  * Request current DATA registration state
2909  *
2910  * "data" is NULL
2911  * "response" is a const RIL_DataRegistrationStateResponse *
2912  *
2913  * Valid errors:
2914  *  SUCCESS
2915  *  RADIO_NOT_AVAILABLE
2916  *  NO_MEMORY
2917  *  INTERNAL_ERR
2918  *  SYSTEM_ERR
2919  *  MODEM_ERR
2920  *  NOT_PROVISIONED
2921  *  REQUEST_NOT_SUPPORTED
2922  *  NO_RESOURCES
2923  *  CANCELLED
2924  */
2925 #define RIL_REQUEST_DATA_REGISTRATION_STATE 21
2926 
2927 /**
2928  * RIL_REQUEST_OPERATOR
2929  *
2930  * Request current operator ONS or EONS
2931  *
2932  * "data" is NULL
2933  * "response" is a "const char **"
2934  * ((const char **)response)[0] is long alpha ONS or EONS
2935  *                                  or NULL if unregistered
2936  *
2937  * ((const char **)response)[1] is short alpha ONS or EONS
2938  *                                  or NULL if unregistered
2939  * ((const char **)response)[2] is 5 or 6 digit numeric code (MCC + MNC)
2940  *                                  or NULL if unregistered
2941  *
2942  * Valid errors:
2943  *  SUCCESS
2944  *  RADIO_NOT_AVAILABLE
2945  *  NO_MEMORY
2946  *  INTERNAL_ERR
2947  *  SYSTEM_ERR
2948  *  REQUEST_NOT_SUPPORTED
2949  *  NO_RESOURCES
2950  *  CANCELLED
2951  */
2952 #define RIL_REQUEST_OPERATOR 22
2953 
2954 /**
2955  * RIL_REQUEST_RADIO_POWER
2956  *
2957  * Toggle radio on and off (for "airplane" mode)
2958  * If the radio is is turned off/on the radio modem subsystem
2959  * is expected return to an initialized state. For instance,
2960  * any voice and data calls will be terminated and all associated
2961  * lists emptied.
2962  *
2963  * "data" is int *
2964  * ((int *)data)[0] is > 0 for "Radio On"
2965  * ((int *)data)[0] is == 0 for "Radio Off"
2966  *
2967  * "response" is NULL
2968  *
2969  * Turn radio on if "on" > 0
2970  * Turn radio off if "on" == 0
2971  *
2972  * Valid errors:
2973  *  SUCCESS
2974  *  RADIO_NOT_AVAILABLE
2975  *  OPERATION_NOT_ALLOWED
2976  *  INVALID_STATE
2977  *  NO_MEMORY
2978  *  INTERNAL_ERR
2979  *  SYSTEM_ERR
2980  *  INVALID_ARGUMENTS
2981  *  MODEM_ERR
2982  *  DEVICE_IN_USE
2983  *  OPERATION_NOT_ALLOWED
2984  *  INVALID_MODEM_STATE
2985  *  REQUEST_NOT_SUPPORTED
2986  *  NO_RESOURCES
2987  *  CANCELLED
2988  */
2989 #define RIL_REQUEST_RADIO_POWER 23
2990 
2991 /**
2992  * RIL_REQUEST_DTMF
2993  *
2994  * Send a DTMF tone
2995  *
2996  * If the implementation is currently playing a tone requested via
2997  * RIL_REQUEST_DTMF_START, that tone should be cancelled and the new tone
2998  * should be played instead
2999  *
3000  * "data" is a char * containing a single character with one of 12 values: 0-9,*,#
3001  * "response" is NULL
3002  *
3003  * FIXME should this block/mute microphone?
3004  * How does this interact with local DTMF feedback?
3005  *
3006  * Valid errors:
3007  *  SUCCESS
3008  *  RADIO_NOT_AVAILABLE
3009  *  INVALID_ARGUMENTS
3010  *  NO_RESOURCES
3011  *  NO_MEMORY
3012  *  MODEM_ERR
3013  *  INTERNAL_ERR
3014  *  INVALID_CALL_ID
3015  *  NO_RESOURCES
3016  *  CANCELLED
3017  *  INVALID_MODEM_STATE
3018  *  REQUEST_NOT_SUPPORTED
3019  *
3020  * See also: RIL_REQUEST_DTMF_STOP, RIL_REQUEST_DTMF_START
3021  *
3022  */
3023 #define RIL_REQUEST_DTMF 24
3024 
3025 /**
3026  * RIL_REQUEST_SEND_SMS
3027  *
3028  * Send an SMS message
3029  *
3030  * "data" is const char **
3031  * ((const char **)data)[0] is SMSC address in GSM BCD format prefixed
3032  *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
3033  * ((const char **)data)[1] is SMS in PDU format as an ASCII hex string
3034  *      less the SMSC address
3035  *      TP-Layer-Length is be "strlen(((const char **)data)[1])/2"
3036  *
3037  * "response" is a const RIL_SMS_Response *
3038  *
3039  * Based on the return error, caller decides to resend if sending sms
3040  * fails. SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
3041  *
3042  * Valid errors:
3043  *  SUCCESS
3044  *  RADIO_NOT_AVAILABLE
3045  *  SMS_SEND_FAIL_RETRY
3046  *  FDN_CHECK_FAILURE
3047  *  NETWORK_REJECT
3048  *  INVALID_STATE
3049  *  INVALID_ARGUMENTS
3050  *  NO_MEMORY
3051  *  REQUEST_RATE_LIMITED
3052  *  INVALID_SMS_FORMAT
3053  *  SYSTEM_ERR
3054  *  ENCODING_ERR
3055  *  INVALID_SMSC_ADDRESS
3056  *  MODEM_ERR
3057  *  NETWORK_ERR
3058  *  OPERATION_NOT_ALLOWED
3059  *  NO_MEMORY
3060  *  NO_RESOURCES
3061  *  CANCELLED
3062  *  REQUEST_NOT_SUPPORTED
3063  *  MODE_NOT_SUPPORTED
3064  *  SIM_ABSENT
3065  *
3066  * FIXME how do we specify TP-Message-Reference if we need to resend?
3067  */
3068 #define RIL_REQUEST_SEND_SMS 25
3069 
3070 
3071 /**
3072  * RIL_REQUEST_SEND_SMS_EXPECT_MORE
3073  *
3074  * Send an SMS message. Identical to RIL_REQUEST_SEND_SMS,
3075  * except that more messages are expected to be sent soon. If possible,
3076  * keep SMS relay protocol link open (eg TS 27.005 AT+CMMS command)
3077  *
3078  * "data" is const char **
3079  * ((const char **)data)[0] is SMSC address in GSM BCD format prefixed
3080  *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
3081  * ((const char **)data)[1] is SMS in PDU format as an ASCII hex string
3082  *      less the SMSC address
3083  *      TP-Layer-Length is be "strlen(((const char **)data)[1])/2"
3084  *
3085  * "response" is a const RIL_SMS_Response *
3086  *
3087  * Based on the return error, caller decides to resend if sending sms
3088  * fails. SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
3089  *
3090  * Valid errors:
3091  *  SUCCESS
3092  *  RADIO_NOT_AVAILABLE
3093  *  SMS_SEND_FAIL_RETRY
3094  *  NETWORK_REJECT
3095  *  INVALID_STATE
3096  *  INVALID_ARGUMENTS
3097  *  NO_MEMORY
3098  *  INVALID_SMS_FORMAT
3099  *  SYSTEM_ERR
3100  *  REQUEST_RATE_LIMITED
3101  *  FDN_CHECK_FAILURE
3102  *  MODEM_ERR
3103  *  NETWORK_ERR
3104  *  ENCODING_ERR
3105  *  INVALID_SMSC_ADDRESS
3106  *  OPERATION_NOT_ALLOWED
3107  *  INTERNAL_ERR
3108  *  NO_RESOURCES
3109  *  CANCELLED
3110  *  REQUEST_NOT_SUPPORTED
3111  *  MODE_NOT_SUPPORTED
3112  *  SIM_ABSENT
3113  *
3114  */
3115 #define RIL_REQUEST_SEND_SMS_EXPECT_MORE 26
3116 
3117 
3118 /**
3119  * RIL_REQUEST_SETUP_DATA_CALL
3120  *
3121  * Setup a packet data connection. If RIL_Data_Call_Response_v6.status
3122  * return success it is added to the list of data calls and a
3123  * RIL_UNSOL_DATA_CALL_LIST_CHANGED is sent. The call remains in the
3124  * list until RIL_REQUEST_DEACTIVATE_DATA_CALL is issued or the
3125  * radio is powered off/on. This list is returned by RIL_REQUEST_DATA_CALL_LIST
3126  * and RIL_UNSOL_DATA_CALL_LIST_CHANGED.
3127  *
3128  * The RIL is expected to:
3129  *  - Create one data call context.
3130  *  - Create and configure a dedicated interface for the context
3131  *  - The interface must be point to point.
3132  *  - The interface is configured with one or more addresses and
3133  *    is capable of sending and receiving packets. The prefix length
3134  *    of the addresses must be /32 for IPv4 and /128 for IPv6.
3135  *  - Must NOT change the linux routing table.
3136  *  - Support up to RIL_REQUEST_DATA_REGISTRATION_STATE response[5]
3137  *    number of simultaneous data call contexts.
3138  *
3139  * "data" is a const char **
3140  * ((const char **)data)[0] Radio technology to use: 0-CDMA, 1-GSM/UMTS, 2...
3141  *                          for values above 2 this is RIL_RadioTechnology + 2.
3142  * ((const char **)data)[1] is a RIL_DataProfile (support is optional)
3143  * ((const char **)data)[2] is the APN to connect to if radio technology is GSM/UMTS. This APN will
3144  *                          override the one in the profile. NULL indicates no APN overrride.
3145  * ((const char **)data)[3] is the username for APN, or NULL
3146  * ((const char **)data)[4] is the password for APN, or NULL
3147  * ((const char **)data)[5] is the PAP / CHAP auth type. Values:
3148  *                          0 => PAP and CHAP is never performed.
3149  *                          1 => PAP may be performed; CHAP is never performed.
3150  *                          2 => CHAP may be performed; PAP is never performed.
3151  *                          3 => PAP / CHAP may be performed - baseband dependent.
3152  * ((const char **)data)[6] is the non-roaming/home connection type to request. Must be one of the
3153  *                          PDP_type values in TS 27.007 section 10.1.1.
3154  *                          For example, "IP", "IPV6", "IPV4V6", or "PPP".
3155  * ((const char **)data)[7] is the roaming connection type to request. Must be one of the
3156  *                          PDP_type values in TS 27.007 section 10.1.1.
3157  *                          For example, "IP", "IPV6", "IPV4V6", or "PPP".
3158  * ((const char **)data)[8] is the bitmask of APN type in decimal string format. The
3159  *                          bitmask will encapsulate the following values:
3160  *                          ia,mms,agps,supl,hipri,fota,dun,ims,default.
3161  * ((const char **)data)[9] is the bearer bitmask in decimal string format. Each bit is a
3162  *                          RIL_RadioAccessFamily. "0" or NULL indicates all RATs.
3163  * ((const char **)data)[10] is the boolean in string format indicating the APN setting was
3164  *                           sent to the modem through RIL_REQUEST_SET_DATA_PROFILE earlier.
3165  * ((const char **)data)[11] is the mtu size in bytes of the mobile interface to which
3166  *                           the apn is connected.
3167  * ((const char **)data)[12] is the MVNO type:
3168  *                           possible values are "imsi", "gid", "spn".
3169  * ((const char **)data)[13] is MVNO match data in string. Can be anything defined by the carrier.
3170  *                           For example,
3171  *                           SPN like: "A MOBILE", "BEN NL", etc...
3172  *                           IMSI like: "302720x94", "2060188", etc...
3173  *                           GID like: "4E", "33", etc...
3174  * ((const char **)data)[14] is the boolean string indicating data roaming is allowed or not. "1"
3175  *                           indicates data roaming is enabled by the user, "0" indicates disabled.
3176  *
3177  * "response" is a RIL_Data_Call_Response_v11
3178  *
3179  * FIXME may need way to configure QoS settings
3180  *
3181  * Valid errors:
3182  *  SUCCESS should be returned on both success and failure of setup with
3183  *  the RIL_Data_Call_Response_v6.status containing the actual status.
3184  *  For all other errors the RIL_Data_Call_Resonse_v6 is ignored.
3185  *
3186  *  Other errors could include:
3187  *    RADIO_NOT_AVAILABLE, OP_NOT_ALLOWED_BEFORE_REG_TO_NW,
3188  *    OP_NOT_ALLOWED_DURING_VOICE_CALL, REQUEST_NOT_SUPPORTED,
3189  *    INVALID_ARGUMENTS, INTERNAL_ERR, NO_MEMORY, NO_RESOURCES,
3190  *    CANCELLED and SIM_ABSENT
3191  *
3192  * See also: RIL_REQUEST_DEACTIVATE_DATA_CALL
3193  */
3194 #define RIL_REQUEST_SETUP_DATA_CALL 27
3195 
3196 
3197 /**
3198  * RIL_REQUEST_SIM_IO
3199  *
3200  * Request SIM I/O operation.
3201  * This is similar to the TS 27.007 "restricted SIM" operation
3202  * where it assumes all of the EF selection will be done by the
3203  * callee.
3204  *
3205  * "data" is a const RIL_SIM_IO_v6 *
3206  * Please note that RIL_SIM_IO has a "PIN2" field which may be NULL,
3207  * or may specify a PIN2 for operations that require a PIN2 (eg
3208  * updating FDN records)
3209  *
3210  * "response" is a const RIL_SIM_IO_Response *
3211  *
3212  * Arguments and responses that are unused for certain
3213  * values of "command" should be ignored or set to NULL
3214  *
3215  * Valid errors:
3216  *  SUCCESS
3217  *  RADIO_NOT_AVAILABLE
3218  *  SIM_PIN2
3219  *  SIM_PUK2
3220  *  INVALID_SIM_STATE
3221  *  SIM_ERR
3222  *  REQUEST_NOT_SUPPORTED
3223  */
3224 #define RIL_REQUEST_SIM_IO 28
3225 
3226 /**
3227  * RIL_REQUEST_SEND_USSD
3228  *
3229  * Send a USSD message
3230  *
3231  * If a USSD session already exists, the message should be sent in the
3232  * context of that session. Otherwise, a new session should be created.
3233  *
3234  * The network reply should be reported via RIL_UNSOL_ON_USSD
3235  *
3236  * Only one USSD session may exist at a time, and the session is assumed
3237  * to exist until:
3238  *   a) The android system invokes RIL_REQUEST_CANCEL_USSD
3239  *   b) The implementation sends a RIL_UNSOL_ON_USSD with a type code
3240  *      of "0" (USSD-Notify/no further action) or "2" (session terminated)
3241  *
3242  * "data" is a const char * containing the USSD request in UTF-8 format
3243  * "response" is NULL
3244  *
3245  * Valid errors:
3246  *  SUCCESS
3247  *  RADIO_NOT_AVAILABLE
3248  *  FDN_CHECK_FAILURE
3249  *  USSD_MODIFIED_TO_DIAL
3250  *  USSD_MODIFIED_TO_SS
3251  *  USSD_MODIFIED_TO_USSD
3252  *  SIM_BUSY
3253  *  OPERATION_NOT_ALLOWED
3254  *  INVALID_ARGUMENTS
3255  *  NO_MEMORY
3256  *  MODEM_ERR
3257  *  INTERNAL_ERR
3258  *  ABORTED
3259  *  SYSTEM_ERR
3260  *  INVALID_STATE
3261  *  NO_RESOURCES
3262  *  CANCELLED
3263  *  REQUEST_NOT_SUPPORTED
3264  *
3265  * See also: RIL_REQUEST_CANCEL_USSD, RIL_UNSOL_ON_USSD
3266  */
3267 
3268 #define RIL_REQUEST_SEND_USSD 29
3269 
3270 /**
3271  * RIL_REQUEST_CANCEL_USSD
3272  *
3273  * Cancel the current USSD session if one exists
3274  *
3275  * "data" is null
3276  * "response" is NULL
3277  *
3278  * Valid errors:
3279  *  SUCCESS
3280  *  RADIO_NOT_AVAILABLE
3281  *  SIM_BUSY
3282  *  OPERATION_NOT_ALLOWED
3283  *  MODEM_ERR
3284  *  INTERNAL_ERR
3285  *  NO_MEMORY
3286  *  INVALID_STATE
3287  *  NO_RESOURCES
3288  *  CANCELLED
3289  *  REQUEST_NOT_SUPPORTED
3290  */
3291 
3292 #define RIL_REQUEST_CANCEL_USSD 30
3293 
3294 /**
3295  * RIL_REQUEST_GET_CLIR
3296  *
3297  * Gets current CLIR status
3298  * "data" is NULL
3299  * "response" is int *
3300  * ((int *)data)[0] is "n" parameter from TS 27.007 7.7
3301  * ((int *)data)[1] is "m" parameter from TS 27.007 7.7
3302  *
3303  * Valid errors:
3304  *  SUCCESS
3305  *  RADIO_NOT_AVAILABLE
3306  *  SS_MODIFIED_TO_DIAL
3307  *  SS_MODIFIED_TO_USSD
3308  *  SS_MODIFIED_TO_SS
3309  *  NO_MEMORY
3310  *  MODEM_ERR
3311  *  INTERNAL_ERR
3312  *  FDN_CHECK_FAILURE
3313  *  SYSTEM_ERR
3314  *  NO_RESOURCES
3315  *  CANCELLED
3316  *  REQUEST_NOT_SUPPORTED
3317  */
3318 #define RIL_REQUEST_GET_CLIR 31
3319 
3320 /**
3321  * RIL_REQUEST_SET_CLIR
3322  *
3323  * "data" is int *
3324  * ((int *)data)[0] is "n" parameter from TS 27.007 7.7
3325  *
3326  * "response" is NULL
3327  *
3328  * Valid errors:
3329  *  SUCCESS
3330  *  RADIO_NOT_AVAILABLE
3331  *  SS_MODIFIED_TO_DIAL
3332  *  SS_MODIFIED_TO_USSD
3333  *  SS_MODIFIED_TO_SS
3334  *  INVALID_ARGUMENTS
3335  *  SYSTEM_ERR
3336  *  INTERNAL_ERR
3337  *  NO_MEMORY
3338  *  NO_RESOURCES
3339  *  CANCELLED
3340  *  REQUEST_NOT_SUPPORTED
3341  */
3342 #define RIL_REQUEST_SET_CLIR 32
3343 
3344 /**
3345  * RIL_REQUEST_QUERY_CALL_FORWARD_STATUS
3346  *
3347  * "data" is const RIL_CallForwardInfo *
3348  *
3349  * "response" is const RIL_CallForwardInfo **
3350  * "response" points to an array of RIL_CallForwardInfo *'s, one for
3351  * each distinct registered phone number.
3352  *
3353  * For example, if data is forwarded to +18005551212 and voice is forwarded
3354  * to +18005559999, then two separate RIL_CallForwardInfo's should be returned
3355  *
3356  * If, however, both data and voice are forwarded to +18005551212, then
3357  * a single RIL_CallForwardInfo can be returned with the service class
3358  * set to "data + voice = 3")
3359  *
3360  * Valid errors:
3361  *  SUCCESS
3362  *  RADIO_NOT_AVAILABLE
3363  *  SS_MODIFIED_TO_DIAL
3364  *  SS_MODIFIED_TO_USSD
3365  *  SS_MODIFIED_TO_SS
3366  *  INVALID_ARGUMENTS
3367  *  NO_MEMORY
3368  *  SYSTEM_ERR
3369  *  MODEM_ERR
3370  *  INTERNAL_ERR
3371  *  NO_MEMORY
3372  *  FDN_CHECK_FAILURE
3373  *  NO_RESOURCES
3374  *  CANCELLED
3375  *  REQUEST_NOT_SUPPORTED
3376  */
3377 #define RIL_REQUEST_QUERY_CALL_FORWARD_STATUS 33
3378 
3379 
3380 /**
3381  * RIL_REQUEST_SET_CALL_FORWARD
3382  *
3383  * Configure call forward rule
3384  *
3385  * "data" is const RIL_CallForwardInfo *
3386  * "response" is NULL
3387  *
3388  * Valid errors:
3389  *  SUCCESS
3390  *  RADIO_NOT_AVAILABLE
3391  *  SS_MODIFIED_TO_DIAL
3392  *  SS_MODIFIED_TO_USSD
3393  *  SS_MODIFIED_TO_SS
3394  *  INVALID_ARGUMENTS
3395  *  NO_MEMORY
3396  *  SYSTEM_ERR
3397  *  MODEM_ERR
3398  *  INTERNAL_ERR
3399  *  INVALID_STATE
3400  *  FDN_CHECK_FAILURE
3401  *  NO_RESOURCES
3402  *  CANCELLED
3403  *  REQUEST_NOT_SUPPORTED
3404  */
3405 #define RIL_REQUEST_SET_CALL_FORWARD 34
3406 
3407 
3408 /**
3409  * RIL_REQUEST_QUERY_CALL_WAITING
3410  *
3411  * Query current call waiting state
3412  *
3413  * "data" is const int *
3414  * ((const int *)data)[0] is the TS 27.007 service class to query.
3415  * "response" is a const int *
3416  * ((const int *)response)[0] is 0 for "disabled" and 1 for "enabled"
3417  *
3418  * If ((const int *)response)[0] is = 1, then ((const int *)response)[1]
3419  * must follow, with the TS 27.007 service class bit vector of services
3420  * for which call waiting is enabled.
3421  *
3422  * For example, if ((const int *)response)[0]  is 1 and
3423  * ((const int *)response)[1] is 3, then call waiting is enabled for data
3424  * and voice and disabled for everything else
3425  *
3426  * Valid errors:
3427  *  SUCCESS
3428  *  RADIO_NOT_AVAILABLE
3429  *  SS_MODIFIED_TO_DIAL
3430  *  SS_MODIFIED_TO_USSD
3431  *  SS_MODIFIED_TO_SS
3432  *  NO_MEMORY
3433  *  MODEM_ERR
3434  *  INTERNAL_ERR
3435  *  NO_MEMORY
3436  *  FDN_CHECK_FAILURE
3437  *  INVALID_ARGUMENTS
3438  *  NO_RESOURCES
3439  *  CANCELLED
3440  *  REQUEST_NOT_SUPPORTED
3441  */
3442 #define RIL_REQUEST_QUERY_CALL_WAITING 35
3443 
3444 
3445 /**
3446  * RIL_REQUEST_SET_CALL_WAITING
3447  *
3448  * Configure current call waiting state
3449  *
3450  * "data" is const int *
3451  * ((const int *)data)[0] is 0 for "disabled" and 1 for "enabled"
3452  * ((const int *)data)[1] is the TS 27.007 service class bit vector of
3453  *                           services to modify
3454  * "response" is NULL
3455  *
3456  * Valid errors:
3457  *  SUCCESS
3458  *  RADIO_NOT_AVAILABLE
3459  *  SS_MODIFIED_TO_DIAL
3460  *  SS_MODIFIED_TO_USSD
3461  *  SS_MODIFIED_TO_SS
3462  *  INVALID_ARGUMENTS
3463  *  NO_MEMORY
3464  *  MODEM_ERR
3465  *  INTERNAL_ERR
3466  *  INVALID_STATE
3467  *  FDN_CHECK_FAILURE
3468  *  NO_RESOURCES
3469  *  CANCELLED
3470  *  REQUEST_NOT_SUPPORTED
3471  */
3472 #define RIL_REQUEST_SET_CALL_WAITING 36
3473 
3474 /**
3475  * RIL_REQUEST_SMS_ACKNOWLEDGE
3476  *
3477  * Acknowledge successful or failed receipt of SMS previously indicated
3478  * via RIL_UNSOL_RESPONSE_NEW_SMS
3479  *
3480  * "data" is int *
3481  * ((int *)data)[0] is 1 on successful receipt
3482  *                  (basically, AT+CNMA=1 from TS 27.005
3483  *                  is 0 on failed receipt
3484  *                  (basically, AT+CNMA=2 from TS 27.005)
3485  * ((int *)data)[1] if data[0] is 0, this contains the failure cause as defined
3486  *                  in TS 23.040, 9.2.3.22. Currently only 0xD3 (memory
3487  *                  capacity exceeded) and 0xFF (unspecified error) are
3488  *                  reported.
3489  *
3490  * "response" is NULL
3491  *
3492  * FIXME would like request that specified RP-ACK/RP-ERROR PDU
3493  *
3494  * Valid errors:
3495  *  SUCCESS
3496  *  RADIO_NOT_AVAILABLE
3497  *  INTERNAL_ERR
3498  *  NO_MEMORY
3499  *  NO_RESOURCES
3500  *  CANCELLED
3501  *  REQUEST_NOT_SUPPORTED
3502  */
3503 #define RIL_REQUEST_SMS_ACKNOWLEDGE  37
3504 
3505 /**
3506  * RIL_REQUEST_GET_IMEI - DEPRECATED
3507  *
3508  * Get the device IMEI, including check digit
3509  *
3510  * The request is DEPRECATED, use RIL_REQUEST_DEVICE_IDENTITY
3511  * Valid when RadioState is not RADIO_STATE_UNAVAILABLE
3512  *
3513  * "data" is NULL
3514  * "response" is a const char * containing the IMEI
3515  *
3516  * Valid errors:
3517  *  SUCCESS
3518  *  RADIO_NOT_AVAILABLE (radio resetting)
3519  *  NO_MEMORY
3520  *  INTERNAL_ERR
3521  *  SYSTEM_ERR
3522  *  MODEM_ERR
3523  *  NOT_PROVISIONED
3524  *  REQUEST_NOT_SUPPORTED
3525  *  NO_RESOURCES
3526  *  CANCELLED
3527  */
3528 
3529 #define RIL_REQUEST_GET_IMEI 38
3530 
3531 /**
3532  * RIL_REQUEST_GET_IMEISV - DEPRECATED
3533  *
3534  * Get the device IMEISV, which should be two decimal digits
3535  *
3536  * The request is DEPRECATED, use RIL_REQUEST_DEVICE_IDENTITY
3537  * Valid when RadioState is not RADIO_STATE_UNAVAILABLE
3538  *
3539  * "data" is NULL
3540  * "response" is a const char * containing the IMEISV
3541  *
3542  * Valid errors:
3543  *  SUCCESS
3544  *  RADIO_NOT_AVAILABLE (radio resetting)
3545  *  NO_MEMORY
3546  *  INTERNAL_ERR
3547  *  SYSTEM_ERR
3548  *  MODEM_ERR
3549  *  NOT_PROVISIONED
3550  *  REQUEST_NOT_SUPPORTED
3551  *  NO_RESOURCES
3552  *  CANCELLED
3553  */
3554 
3555 #define RIL_REQUEST_GET_IMEISV 39
3556 
3557 
3558 /**
3559  * RIL_REQUEST_ANSWER
3560  *
3561  * Answer incoming call
3562  *
3563  * Will not be called for WAITING calls.
3564  * RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE will be used in this case
3565  * instead
3566  *
3567  * "data" is NULL
3568  * "response" is NULL
3569  *
3570  * Valid errors:
3571  *  SUCCESS
3572  *  RADIO_NOT_AVAILABLE (radio resetting)
3573  *  INVALID_STATE
3574  *  NO_MEMORY
3575  *  SYSTEM_ERR
3576  *  MODEM_ERR
3577  *  INTERNAL_ERR
3578  *  INVALID_CALL_ID
3579  *  NO_RESOURCES
3580  *  CANCELLED
3581  *  REQUEST_NOT_SUPPORTED
3582  */
3583 
3584 #define RIL_REQUEST_ANSWER 40
3585 
3586 /**
3587  * RIL_REQUEST_DEACTIVATE_DATA_CALL
3588  *
3589  * Deactivate packet data connection and remove from the
3590  * data call list if SUCCESS is returned. Any other return
3591  * values should also try to remove the call from the list,
3592  * but that may not be possible. In any event a
3593  * RIL_REQUEST_RADIO_POWER off/on must clear the list. An
3594  * RIL_UNSOL_DATA_CALL_LIST_CHANGED is not expected to be
3595  * issued because of an RIL_REQUEST_DEACTIVATE_DATA_CALL.
3596  *
3597  * "data" is const char **
3598  * ((char**)data)[0] indicating CID
3599  * ((char**)data)[1] indicating Disconnect Reason
3600  *                   0 => No specific reason specified
3601  *                   1 => Radio shutdown requested
3602  *
3603  * "response" is NULL
3604  *
3605  * Valid errors:
3606  *  SUCCESS
3607  *  RADIO_NOT_AVAILABLE
3608  *  INVALID_CALL_ID
3609  *  INVALID_STATE
3610  *  INVALID_ARGUMENTS
3611  *  REQUEST_NOT_SUPPORTED
3612  *  INTERNAL_ERR
3613  *  NO_MEMORY
3614  *  NO_RESOURCES
3615  *  CANCELLED
3616  *  SIM_ABSENT
3617  *
3618  * See also: RIL_REQUEST_SETUP_DATA_CALL
3619  */
3620 #define RIL_REQUEST_DEACTIVATE_DATA_CALL 41
3621 
3622 /**
3623  * RIL_REQUEST_QUERY_FACILITY_LOCK
3624  *
3625  * Query the status of a facility lock state
3626  *
3627  * "data" is const char **
3628  * ((const char **)data)[0] is the facility string code from TS 27.007 7.4
3629  *                      (eg "AO" for BAOC, "SC" for SIM lock)
3630  * ((const char **)data)[1] is the password, or "" if not required
3631  * ((const char **)data)[2] is the TS 27.007 service class bit vector of
3632  *                           services to query
3633  * ((const char **)data)[3] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
3634  *                            This is only applicable in the case of Fixed Dialing Numbers
3635  *                            (FDN) requests.
3636  *
3637  * "response" is an int *
3638  * ((const int *)response) 0 is the TS 27.007 service class bit vector of
3639  *                           services for which the specified barring facility
3640  *                           is active. "0" means "disabled for all"
3641  *
3642  *
3643  * Valid errors:
3644  *  SUCCESS
3645  *  RADIO_NOT_AVAILABLE
3646  *  SS_MODIFIED_TO_DIAL
3647  *  SS_MODIFIED_TO_USSD
3648  *  SS_MODIFIED_TO_SS
3649  *  INVALID_ARGUMENTS
3650  *  NO_MEMORY
3651  *  INTERNAL_ERR
3652  *  SYSTEM_ERR
3653  *  MODEM_ERR
3654  *  FDN_CHECK_FAILURE
3655  *  NO_RESOURCES
3656  *  CANCELLED
3657  *  REQUEST_NOT_SUPPORTED
3658  *
3659  */
3660 #define RIL_REQUEST_QUERY_FACILITY_LOCK 42
3661 
3662 /**
3663  * RIL_REQUEST_SET_FACILITY_LOCK
3664  *
3665  * Enable/disable one facility lock
3666  *
3667  * "data" is const char **
3668  *
3669  * ((const char **)data)[0] = facility string code from TS 27.007 7.4
3670  * (eg "AO" for BAOC)
3671  * ((const char **)data)[1] = "0" for "unlock" and "1" for "lock"
3672  * ((const char **)data)[2] = password
3673  * ((const char **)data)[3] = string representation of decimal TS 27.007
3674  *                            service class bit vector. Eg, the string
3675  *                            "1" means "set this facility for voice services"
3676  * ((const char **)data)[4] = AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
3677  *                            This is only applicable in the case of Fixed Dialing Numbers
3678  *                            (FDN) requests.
3679  *
3680  * "response" is int *
3681  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
3682  *
3683  * Valid errors:
3684  *  SUCCESS
3685  *  RADIO_NOT_AVAILABLE
3686  *  SS_MODIFIED_TO_DIAL
3687  *  SS_MODIFIED_TO_USSD
3688  *  SS_MODIFIED_TO_SS
3689  *  INVALID_ARGUMENTS
3690  *  INTERNAL_ERR
3691  *  NO_MEMORY
3692  *  MODEM_ERR
3693  *  INVALID_STATE
3694  *  FDN_CHECK_FAILURE
3695  *  NO_RESOURCES
3696  *  CANCELLED
3697  *  REQUEST_NOT_SUPPORTED
3698  *
3699  */
3700 #define RIL_REQUEST_SET_FACILITY_LOCK 43
3701 
3702 /**
3703  * RIL_REQUEST_CHANGE_BARRING_PASSWORD
3704  *
3705  * Change call barring facility password
3706  *
3707  * "data" is const char **
3708  *
3709  * ((const char **)data)[0] = facility string code from TS 27.007 7.4
3710  * (eg "AO" for BAOC)
3711  * ((const char **)data)[1] = old password
3712  * ((const char **)data)[2] = new password
3713  *
3714  * "response" is NULL
3715  *
3716  * Valid errors:
3717  *  SUCCESS
3718  *  RADIO_NOT_AVAILABLE
3719  *  SS_MODIFIED_TO_DIAL
3720  *  SS_MODIFIED_TO_USSD
3721  *  SS_MODIFIED_TO_SS
3722  *  INVALID_ARGUMENTS
3723  *  NO_MEMORY
3724  *  MODEM_ERR
3725  *  INTERNAL_ERR
3726  *  SYSTEM_ERR
3727  *  FDN_CHECK_FAILURE
3728  *  NO_RESOURCES
3729  *  CANCELLED
3730  *  REQUEST_NOT_SUPPORTED
3731  *
3732  */
3733 #define RIL_REQUEST_CHANGE_BARRING_PASSWORD 44
3734 
3735 /**
3736  * RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE
3737  *
3738  * Query current network selectin mode
3739  *
3740  * "data" is NULL
3741  *
3742  * "response" is int *
3743  * ((const int *)response)[0] is
3744  *     0 for automatic selection
3745  *     1 for manual selection
3746  *
3747  * Valid errors:
3748  *  SUCCESS
3749  *  RADIO_NOT_AVAILABLE
3750  *  NO_MEMORY
3751  *  INTERNAL_ERR
3752  *  SYSTEM_ERR
3753  *  INVALID_ARGUMENTS
3754  *  MODEM_ERR
3755  *  REQUEST_NOT_SUPPORTED
3756  *  NO_RESOURCES
3757  *  CANCELLED
3758  *
3759  */
3760 #define RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE 45
3761 
3762 /**
3763  * RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC
3764  *
3765  * Specify that the network should be selected automatically
3766  *
3767  * "data" is NULL
3768  * "response" is NULL
3769  *
3770  * This request must not respond until the new operator is selected
3771  * and registered
3772  *
3773  * Valid errors:
3774  *  SUCCESS
3775  *  RADIO_NOT_AVAILABLE
3776  *  ILLEGAL_SIM_OR_ME
3777  *  OPERATION_NOT_ALLOWED
3778  *  NO_MEMORY
3779  *  INTERNAL_ERR
3780  *  SYSTEM_ERR
3781  *  INVALID_ARGUMENTS
3782  *  MODEM_ERR
3783  *  REQUEST_NOT_SUPPORTED
3784  *  NO_RESOURCES
3785  *  CANCELLED
3786  *
3787  * Note: Returns ILLEGAL_SIM_OR_ME when the failure is permanent and
3788  *       no retries needed, such as illegal SIM or ME.
3789  *
3790  */
3791 #define RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC 46
3792 
3793 /**
3794  * RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL
3795  *
3796  * Manually select a specified network.
3797  *
3798  * "data" is const char * specifying MCCMNC of network to select (eg "310170")
3799  * "response" is NULL
3800  *
3801  * This request must not respond until the new operator is selected
3802  * and registered
3803  *
3804  * Valid errors:
3805  *  SUCCESS
3806  *  RADIO_NOT_AVAILABLE
3807  *  ILLEGAL_SIM_OR_ME
3808  *  OPERATION_NOT_ALLOWED
3809  *  INVALID_STATE
3810  *  NO_MEMORY
3811  *  INTERNAL_ERR
3812  *  SYSTEM_ERR
3813  *  INVALID_ARGUMENTS
3814  *  MODEM_ERR
3815  *  REQUEST_NOT_SUPPORTED
3816  *  NO_RESOURCES
3817  *  CANCELLED
3818  *
3819  * Note: Returns ILLEGAL_SIM_OR_ME when the failure is permanent and
3820  *       no retries needed, such as illegal SIM or ME.
3821  *
3822  */
3823 #define RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL 47
3824 
3825 /**
3826  * RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
3827  *
3828  * Scans for available networks
3829  *
3830  * "data" is NULL
3831  * "response" is const char ** that should be an array of n*4 strings, where
3832  *    n is the number of available networks
3833  * For each available network:
3834  *
3835  * ((const char **)response)[n+0] is long alpha ONS or EONS
3836  * ((const char **)response)[n+1] is short alpha ONS or EONS
3837  * ((const char **)response)[n+2] is 5 or 6 digit numeric code (MCC + MNC)
3838  * ((const char **)response)[n+3] is a string value of the status:
3839  *           "unknown"
3840  *           "available"
3841  *           "current"
3842  *           "forbidden"
3843  *
3844  * Valid errors:
3845  *  SUCCESS
3846  *  RADIO_NOT_AVAILABLE
3847  *  OPERATION_NOT_ALLOWED
3848  *  ABORTED
3849  *  DEVICE_IN_USE
3850  *  INTERNAL_ERR
3851  *  NO_MEMORY
3852  *  MODEM_ERR
3853  *  REQUEST_NOT_SUPPORTED
3854  *  CANCELLED
3855  *  OPERATION_NOT_ALLOWED
3856  *  NO_RESOURCES
3857  *  CANCELLED
3858  *
3859  */
3860 #define RIL_REQUEST_QUERY_AVAILABLE_NETWORKS 48
3861 
3862 /**
3863  * RIL_REQUEST_DTMF_START
3864  *
3865  * Start playing a DTMF tone. Continue playing DTMF tone until
3866  * RIL_REQUEST_DTMF_STOP is received
3867  *
3868  * If a RIL_REQUEST_DTMF_START is received while a tone is currently playing,
3869  * it should cancel the previous tone and play the new one.
3870  *
3871  * "data" is a char *
3872  * ((char *)data)[0] is a single character with one of 12 values: 0-9,*,#
3873  * "response" is NULL
3874  *
3875  * Valid errors:
3876  *  SUCCESS
3877  *  RADIO_NOT_AVAILABLE
3878  *  INVALID_ARGUMENTS
3879  *  NO_RESOURCES
3880  *  NO_MEMORY
3881  *  SYSTEM_ERR
3882  *  MODEM_ERR
3883  *  INTERNAL_ERR
3884  *  INVALID_CALL_ID
3885  *  CANCELLED
3886  *  INVALID_MODEM_STATE
3887  *  REQUEST_NOT_SUPPORTED
3888  *
3889  * See also: RIL_REQUEST_DTMF, RIL_REQUEST_DTMF_STOP
3890  */
3891 #define RIL_REQUEST_DTMF_START 49
3892 
3893 /**
3894  * RIL_REQUEST_DTMF_STOP
3895  *
3896  * Stop playing a currently playing DTMF tone.
3897  *
3898  * "data" is NULL
3899  * "response" is NULL
3900  *
3901  * Valid errors:
3902  *  SUCCESS
3903  *  RADIO_NOT_AVAILABLE
3904  *  OPERATION_NOT_ALLOWED
3905  *  NO_RESOURCES
3906  *  NO_MEMORY
3907  *  INVALID_ARGUMENTS
3908  *  SYSTEM_ERR
3909  *  MODEM_ERR
3910  *  INTERNAL_ERR
3911  *  INVALID_CALL_ID
3912  *  CANCELLED
3913  *  INVALID_MODEM_STATE
3914  *  REQUEST_NOT_SUPPORTED
3915  *
3916  * See also: RIL_REQUEST_DTMF, RIL_REQUEST_DTMF_START
3917  */
3918 #define RIL_REQUEST_DTMF_STOP 50
3919 
3920 /**
3921  * RIL_REQUEST_BASEBAND_VERSION
3922  *
3923  * Return string value indicating baseband version, eg
3924  * response from AT+CGMR
3925  *
3926  * "data" is NULL
3927  * "response" is const char * containing version string for log reporting
3928  *
3929  * Valid errors:
3930  *  SUCCESS
3931  *  RADIO_NOT_AVAILABLE
3932  *  EMPTY_RECORD
3933  *  NO_MEMORY
3934  *  INTERNAL_ERR
3935  *  SYSTEM_ERR
3936  *  MODEM_ERR
3937  *  NOT_PROVISIONED
3938  *  REQUEST_NOT_SUPPORTED
3939  *  NO_RESOURCES
3940  *  CANCELLED
3941  *
3942  */
3943 #define RIL_REQUEST_BASEBAND_VERSION 51
3944 
3945 /**
3946  * RIL_REQUEST_SEPARATE_CONNECTION
3947  *
3948  * Separate a party from a multiparty call placing the multiparty call
3949  * (less the specified party) on hold and leaving the specified party
3950  * as the only other member of the current (active) call
3951  *
3952  * Like AT+CHLD=2x
3953  *
3954  * See TS 22.084 1.3.8.2 (iii)
3955  * TS 22.030 6.5.5 "Entering "2X followed by send"
3956  * TS 27.007 "AT+CHLD=2x"
3957  *
3958  * "data" is an int *
3959  * (int *)data)[0] contains Connection index (value of 'x' in CHLD above) "response" is NULL
3960  *
3961  * "response" is NULL
3962  *
3963  * Valid errors:
3964  *  SUCCESS
3965  *  RADIO_NOT_AVAILABLE (radio resetting)
3966  *  INVALID_ARGUMENTS
3967  *  INVALID_STATE
3968  *  NO_RESOURCES
3969  *  NO_MEMORY
3970  *  SYSTEM_ERR
3971  *  MODEM_ERR
3972  *  INTERNAL_ERR
3973  *  INVALID_CALL_ID
3974  *  INVALID_STATE
3975  *  OPERATION_NOT_ALLOWED
3976  *  CANCELLED
3977  *  REQUEST_NOT_SUPPORTED
3978  */
3979 #define RIL_REQUEST_SEPARATE_CONNECTION 52
3980 
3981 
3982 /**
3983  * RIL_REQUEST_SET_MUTE
3984  *
3985  * Turn on or off uplink (microphone) mute.
3986  *
3987  * Will only be sent while voice call is active.
3988  * Will always be reset to "disable mute" when a new voice call is initiated
3989  *
3990  * "data" is an int *
3991  * (int *)data)[0] is 1 for "enable mute" and 0 for "disable mute"
3992  *
3993  * "response" is NULL
3994  *
3995  * Valid errors:
3996  *  SUCCESS
3997  *  RADIO_NOT_AVAILABLE (radio resetting)
3998  *  INVALID_ARGUMENTS
3999  *  NO_MEMORY
4000  *  REQUEST_RATE_LIMITED
4001  *  INTERNAL_ERR
4002  *  NO_RESOURCES
4003  *  CANCELLED
4004  *  REQUEST_NOT_SUPPORTED
4005  */
4006 
4007 #define RIL_REQUEST_SET_MUTE 53
4008 
4009 /**
4010  * RIL_REQUEST_GET_MUTE
4011  *
4012  * Queries the current state of the uplink mute setting
4013  *
4014  * "data" is NULL
4015  * "response" is an int *
4016  * (int *)response)[0] is 1 for "mute enabled" and 0 for "mute disabled"
4017  *
4018  * Valid errors:
4019  *  SUCCESS
4020  *  RADIO_NOT_AVAILABLE (radio resetting)
4021  *  SS_MODIFIED_TO_DIAL
4022  *  SS_MODIFIED_TO_USSD
4023  *  SS_MODIFIED_TO_SS
4024  *  NO_MEMORY
4025  *  REQUEST_RATE_LIMITED
4026  *  INTERNAL_ERR
4027  *  NO_RESOURCES
4028  *  CANCELLED
4029  *  REQUEST_NOT_SUPPORTED
4030  */
4031 
4032 #define RIL_REQUEST_GET_MUTE 54
4033 
4034 /**
4035  * RIL_REQUEST_QUERY_CLIP
4036  *
4037  * Queries the status of the CLIP supplementary service
4038  *
4039  * (for MMI code "*#30#")
4040  *
4041  * "data" is NULL
4042  * "response" is an int *
4043  * (int *)response)[0] is 1 for "CLIP provisioned"
4044  *                           and 0 for "CLIP not provisioned"
4045  *                           and 2 for "unknown, e.g. no network etc"
4046  *
4047  * Valid errors:
4048  *  SUCCESS
4049  *  RADIO_NOT_AVAILABLE (radio resetting)
4050  *  NO_MEMORY
4051  *  SYSTEM_ERR
4052  *  MODEM_ERR
4053  *  INTERNAL_ERR
4054  *  FDN_CHECK_FAILURE
4055  *  NO_RESOURCES
4056  *  CANCELLED
4057  *  REQUEST_NOT_SUPPORTED
4058  */
4059 
4060 #define RIL_REQUEST_QUERY_CLIP 55
4061 
4062 /**
4063  * RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE - Deprecated use the status
4064  * field in RIL_Data_Call_Response_v6.
4065  *
4066  * Requests the failure cause code for the most recently failed PDP
4067  * context or CDMA data connection active
4068  * replaces RIL_REQUEST_LAST_PDP_FAIL_CAUSE
4069  *
4070  * "data" is NULL
4071  *
4072  * "response" is a "int *"
4073  * ((int *)response)[0] is an integer cause code defined in TS 24.008
4074  *   section 6.1.3.1.3 or close approximation
4075  *
4076  * If the implementation does not have access to the exact cause codes,
4077  * then it should return one of the values listed in
4078  * RIL_DataCallFailCause, as the UI layer needs to distinguish these
4079  * cases for error notification
4080  * and potential retries.
4081  *
4082  * Valid errors:
4083  *  SUCCESS
4084  *  RADIO_NOT_AVAILABLE
4085  *  INTERNAL_ERR
4086  *  NO_MEMORY
4087  *  NO_RESOURCES
4088  *  CANCELLED
4089  *  REQUEST_NOT_SUPPORTED
4090  *
4091  * See also: RIL_REQUEST_LAST_CALL_FAIL_CAUSE
4092  *
4093  * Deprecated use the status field in RIL_Data_Call_Response_v6.
4094  */
4095 
4096 #define RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE 56
4097 
4098 /**
4099  * RIL_REQUEST_DATA_CALL_LIST
4100  *
4101  * Returns the data call list. An entry is added when a
4102  * RIL_REQUEST_SETUP_DATA_CALL is issued and removed on a
4103  * RIL_REQUEST_DEACTIVATE_DATA_CALL. The list is emptied
4104  * when RIL_REQUEST_RADIO_POWER off/on is issued.
4105  *
4106  * "data" is NULL
4107  * "response" is an array of RIL_Data_Call_Response_v6
4108  *
4109  * Valid errors:
4110  *  SUCCESS
4111  *  RADIO_NOT_AVAILABLE (radio resetting)
4112  *  INTERNAL_ERR
4113  *  NO_MEMORY
4114  *  NO_RESOURCES
4115  *  CANCELLED
4116  *  REQUEST_NOT_SUPPORTED
4117  *  SIM_ABSENT
4118  *
4119  * See also: RIL_UNSOL_DATA_CALL_LIST_CHANGED
4120  */
4121 
4122 #define RIL_REQUEST_DATA_CALL_LIST 57
4123 
4124 /**
4125  * RIL_REQUEST_RESET_RADIO - DEPRECATED
4126  *
4127  * Request a radio reset. The RIL implementation may postpone
4128  * the reset until after this request is responded to if the baseband
4129  * is presently busy.
4130  *
4131  * The request is DEPRECATED, use RIL_REQUEST_RADIO_POWER
4132  *
4133  * "data" is NULL
4134  * "response" is NULL
4135  *
4136  * Valid errors:
4137  *  SUCCESS
4138  *  RADIO_NOT_AVAILABLE (radio resetting)
4139  *  REQUEST_NOT_SUPPORTED
4140  */
4141 
4142 #define RIL_REQUEST_RESET_RADIO 58
4143 
4144 /**
4145  * RIL_REQUEST_OEM_HOOK_RAW
4146  *
4147  * This request reserved for OEM-specific uses. It passes raw byte arrays
4148  * back and forth.
4149  *
4150  * It can be invoked on the Java side from
4151  * com.android.internal.telephony.Phone.invokeOemRilRequestRaw()
4152  *
4153  * "data" is a char * of bytes copied from the byte[] data argument in java
4154  * "response" is a char * of bytes that will returned via the
4155  * caller's "response" Message here:
4156  * (byte[])(((AsyncResult)response.obj).result)
4157  *
4158  * An error response here will result in
4159  * (((AsyncResult)response.obj).result) == null and
4160  * (((AsyncResult)response.obj).exception) being an instance of
4161  * com.android.internal.telephony.gsm.CommandException
4162  *
4163  * Valid errors:
4164  *  All
4165  */
4166 
4167 #define RIL_REQUEST_OEM_HOOK_RAW 59
4168 
4169 /**
4170  * RIL_REQUEST_OEM_HOOK_STRINGS
4171  *
4172  * This request reserved for OEM-specific uses. It passes strings
4173  * back and forth.
4174  *
4175  * It can be invoked on the Java side from
4176  * com.android.internal.telephony.Phone.invokeOemRilRequestStrings()
4177  *
4178  * "data" is a const char **, representing an array of null-terminated UTF-8
4179  * strings copied from the "String[] strings" argument to
4180  * invokeOemRilRequestStrings()
4181  *
4182  * "response" is a const char **, representing an array of null-terminated UTF-8
4183  * stings that will be returned via the caller's response message here:
4184  *
4185  * (String[])(((AsyncResult)response.obj).result)
4186  *
4187  * An error response here will result in
4188  * (((AsyncResult)response.obj).result) == null and
4189  * (((AsyncResult)response.obj).exception) being an instance of
4190  * com.android.internal.telephony.gsm.CommandException
4191  *
4192  * Valid errors:
4193  *  All
4194  */
4195 
4196 #define RIL_REQUEST_OEM_HOOK_STRINGS 60
4197 
4198 /**
4199  * RIL_REQUEST_SCREEN_STATE - DEPRECATED
4200  *
4201  * Indicates the current state of the screen.  When the screen is off, the
4202  * RIL should notify the baseband to suppress certain notifications (eg,
4203  * signal strength and changes in LAC/CID or BID/SID/NID/latitude/longitude)
4204  * in an effort to conserve power.  These notifications should resume when the
4205  * screen is on.
4206  *
4207  * Note this request is deprecated. Use RIL_REQUEST_SEND_DEVICE_STATE to report the device state
4208  * to the modem and use RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER to turn on/off unsolicited
4209  * response from the modem in different scenarios.
4210  *
4211  * "data" is int *
4212  * ((int *)data)[0] is == 1 for "Screen On"
4213  * ((int *)data)[0] is == 0 for "Screen Off"
4214  *
4215  * "response" is NULL
4216  *
4217  * Valid errors:
4218  *  SUCCESS
4219  *  NO_MEMORY
4220  *  INTERNAL_ERR
4221  *  SYSTEM_ERR
4222  *  INVALID_ARGUMENTS
4223  *  NO_RESOURCES
4224  *  CANCELLED
4225  *  REQUEST_NOT_SUPPORTED
4226  */
4227 #define RIL_REQUEST_SCREEN_STATE 61
4228 
4229 
4230 /**
4231  * RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION
4232  *
4233  * Enables/disables supplementary service related notifications
4234  * from the network.
4235  *
4236  * Notifications are reported via RIL_UNSOL_SUPP_SVC_NOTIFICATION.
4237  *
4238  * "data" is int *
4239  * ((int *)data)[0] is == 1 for notifications enabled
4240  * ((int *)data)[0] is == 0 for notifications disabled
4241  *
4242  * "response" is NULL
4243  *
4244  * Valid errors:
4245  *  SUCCESS
4246  *  RADIO_NOT_AVAILABLE
4247  *  SIM_BUSY
4248  *  INVALID_ARGUMENTS
4249  *  NO_MEMORY
4250  *  SYSTEM_ERR
4251  *  MODEM_ERR
4252  *  INTERNAL_ERR
4253  *  NO_RESOURCES
4254  *  CANCELLED
4255  *  REQUEST_NOT_SUPPORTED
4256  *
4257  * See also: RIL_UNSOL_SUPP_SVC_NOTIFICATION.
4258  */
4259 #define RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION 62
4260 
4261 /**
4262  * RIL_REQUEST_WRITE_SMS_TO_SIM
4263  *
4264  * Stores a SMS message to SIM memory.
4265  *
4266  * "data" is RIL_SMS_WriteArgs *
4267  *
4268  * "response" is int *
4269  * ((const int *)response)[0] is the record index where the message is stored.
4270  *
4271  * Valid errors:
4272  *  SUCCESS
4273  *  SIM_FULL
4274  *  INVALID_ARGUMENTS
4275  *  INVALID_SMS_FORMAT
4276  *  INTERNAL_ERR
4277  *  MODEM_ERR
4278  *  ENCODING_ERR
4279  *  NO_MEMORY
4280  *  NO_RESOURCES
4281  *  INVALID_MODEM_STATE
4282  *  OPERATION_NOT_ALLOWED
4283  *  INVALID_SMSC_ADDRESS
4284  *  CANCELLED
4285  *  INVALID_MODEM_STATE
4286  *  REQUEST_NOT_SUPPORTED
4287  *  SIM_ABSENT
4288  *
4289  */
4290 #define RIL_REQUEST_WRITE_SMS_TO_SIM 63
4291 
4292 /**
4293  * RIL_REQUEST_DELETE_SMS_ON_SIM
4294  *
4295  * Deletes a SMS message from SIM memory.
4296  *
4297  * "data" is int  *
4298  * ((int *)data)[0] is the record index of the message to delete.
4299  *
4300  * "response" is NULL
4301  *
4302  * Valid errors:
4303  *  SUCCESS
4304  *  SIM_FULL
4305  *  INVALID_ARGUMENTS
4306  *  NO_MEMORY
4307  *  REQUEST_RATE_LIMITED
4308  *  SYSTEM_ERR
4309  *  MODEM_ERR
4310  *  NO_SUCH_ENTRY
4311  *  INTERNAL_ERR
4312  *  NO_RESOURCES
4313  *  CANCELLED
4314  *  INVALID_MODEM_STATE
4315  *  REQUEST_NOT_SUPPORTED
4316  *  SIM_ABSENT
4317  *
4318  */
4319 #define RIL_REQUEST_DELETE_SMS_ON_SIM 64
4320 
4321 /**
4322  * RIL_REQUEST_SET_BAND_MODE
4323  *
4324  * Assign a specified band for RF configuration.
4325  *
4326  * "data" is int *
4327  * ((int *)data)[0] is a RIL_RadioBandMode
4328  *
4329  * "response" is NULL
4330  *
4331  * Valid errors:
4332  *  SUCCESS
4333  *  RADIO_NOT_AVAILABLE
4334  *  OPERATION_NOT_ALLOWED
4335  *  NO_MEMORY
4336  *  INTERNAL_ERR
4337  *  SYSTEM_ERR
4338  *  INVALID_ARGUMENTS
4339  *  MODEM_ERR
4340  *  REQUEST_NOT_SUPPORTED
4341  *  NO_RESOURCES
4342  *  CANCELLED
4343  *
4344  * See also: RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE
4345  */
4346 #define RIL_REQUEST_SET_BAND_MODE 65
4347 
4348 /**
4349  * RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE
4350  *
4351  * Query the list of band mode supported by RF.
4352  *
4353  * "data" is NULL
4354  *
4355  * "response" is int *
4356  * "response" points to an array of int's, the int[0] is the size of array;
4357  * subsequent values are a list of RIL_RadioBandMode listing supported modes.
4358  *
4359  * Valid errors:
4360  *  SUCCESS
4361  *  RADIO_NOT_AVAILABLE
4362  *  NO_MEMORY
4363  *  INTERNAL_ERR
4364  *  SYSTEM_ERR
4365  *  MODEM_ERR
4366  *  REQUEST_NOT_SUPPORTED
4367  *  NO_RESOURCES
4368  *  CANCELLED
4369  *
4370  * See also: RIL_REQUEST_SET_BAND_MODE
4371  */
4372 #define RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE 66
4373 
4374 /**
4375  * RIL_REQUEST_STK_GET_PROFILE
4376  *
4377  * Requests the profile of SIM tool kit.
4378  * The profile indicates the SAT/USAT features supported by ME.
4379  * The SAT/USAT features refer to 3GPP TS 11.14 and 3GPP TS 31.111
4380  *
4381  * "data" is NULL
4382  *
4383  * "response" is a const char * containing SAT/USAT profile
4384  * in hexadecimal format string starting with first byte of terminal profile
4385  *
4386  * Valid errors:
4387  *  RIL_E_SUCCESS
4388  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
4389  *  INTERNAL_ERR
4390  *  NO_MEMORY
4391  *  NO_RESOURCES
4392  *  CANCELLED
4393  *  REQUEST_NOT_SUPPORTED
4394  */
4395 #define RIL_REQUEST_STK_GET_PROFILE 67
4396 
4397 /**
4398  * RIL_REQUEST_STK_SET_PROFILE
4399  *
4400  * Download the STK terminal profile as part of SIM initialization
4401  * procedure
4402  *
4403  * "data" is a const char * containing SAT/USAT profile
4404  * in hexadecimal format string starting with first byte of terminal profile
4405  *
4406  * "response" is NULL
4407  *
4408  * Valid errors:
4409  *  RIL_E_SUCCESS
4410  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
4411  *  INTERNAL_ERR
4412  *  NO_MEMORY
4413  *  NO_RESOURCES
4414  *  CANCELLED
4415  *  REQUEST_NOT_SUPPORTED
4416  */
4417 #define RIL_REQUEST_STK_SET_PROFILE 68
4418 
4419 /**
4420  * RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND
4421  *
4422  * Requests to send a SAT/USAT envelope command to SIM.
4423  * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111
4424  *
4425  * "data" is a const char * containing SAT/USAT command
4426  * in hexadecimal format string starting with command tag
4427  *
4428  * "response" is a const char * containing SAT/USAT response
4429  * in hexadecimal format string starting with first byte of response
4430  * (May be NULL)
4431  *
4432  * Valid errors:
4433  *  RIL_E_SUCCESS
4434  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
4435  *  SIM_BUSY
4436  *  OPERATION_NOT_ALLOWED
4437  *  INTERNAL_ERR
4438  *  NO_MEMORY
4439  *  NO_RESOURCES
4440  *  CANCELLED
4441  *  INVALID_ARGUMENTS
4442  *  MODEM_ERR
4443  *  REQUEST_NOT_SUPPORTED
4444  */
4445 #define RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND 69
4446 
4447 /**
4448  * RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE
4449  *
4450  * Requests to send a terminal response to SIM for a received
4451  * proactive command
4452  *
4453  * "data" is a const char * containing SAT/USAT response
4454  * in hexadecimal format string starting with first byte of response data
4455  *
4456  * "response" is NULL
4457  *
4458  * Valid errors:
4459  *  RIL_E_SUCCESS
4460  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
4461  *  RIL_E_OPERATION_NOT_ALLOWED
4462  *  INTERNAL_ERR
4463  *  NO_MEMORY
4464  *  NO_RESOURCES
4465  *  CANCELLED
4466  *  INVALID_MODEM_STATE
4467  *  REQUEST_NOT_SUPPORTED
4468  */
4469 #define RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE 70
4470 
4471 /**
4472  * RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM
4473  *
4474  * When STK application gets RIL_UNSOL_STK_CALL_SETUP, the call actually has
4475  * been initialized by ME already. (We could see the call has been in the 'call
4476  * list') So, STK application needs to accept/reject the call according as user
4477  * operations.
4478  *
4479  * "data" is int *
4480  * ((int *)data)[0] is > 0 for "accept" the call setup
4481  * ((int *)data)[0] is == 0 for "reject" the call setup
4482  *
4483  * "response" is NULL
4484  *
4485  * Valid errors:
4486  *  RIL_E_SUCCESS
4487  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
4488  *  RIL_E_OPERATION_NOT_ALLOWED
4489  *  INTERNAL_ERR
4490  *  NO_MEMORY
4491  *  NO_RESOURCES
4492  *  CANCELLED
4493  *  REQUEST_NOT_SUPPORTED
4494  */
4495 #define RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM 71
4496 
4497 /**
4498  * RIL_REQUEST_EXPLICIT_CALL_TRANSFER
4499  *
4500  * Connects the two calls and disconnects the subscriber from both calls.
4501  *
4502  * "data" is NULL
4503  * "response" is NULL
4504  *
4505  * Valid errors:
4506  *  SUCCESS
4507  *  RADIO_NOT_AVAILABLE (radio resetting)
4508  *  INVALID_STATE
4509  *  NO_RESOURCES
4510  *  NO_MEMORY
4511  *  INVALID_ARGUMENTS
4512  *  SYSTEM_ERR
4513  *  MODEM_ERR
4514  *  INTERNAL_ERR
4515  *  INVALID_CALL_ID
4516  *  INVALID_STATE
4517  *  OPERATION_NOT_ALLOWED
4518  *  NO_RESOURCES
4519  *  CANCELLED
4520  *  REQUEST_NOT_SUPPORTED
4521  */
4522 #define RIL_REQUEST_EXPLICIT_CALL_TRANSFER 72
4523 
4524 /**
4525  * RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE
4526  *
4527  * Requests to set the preferred network type for searching and registering
4528  * (CS/PS domain, RAT, and operation mode)
4529  *
4530  * "data" is int * which is RIL_PreferredNetworkType
4531  *
4532  * "response" is NULL
4533  *
4534  * Valid errors:
4535  *  SUCCESS
4536  *  RADIO_NOT_AVAILABLE (radio resetting)
4537  *  OPERATION_NOT_ALLOWED
4538  *  MODE_NOT_SUPPORTED
4539  *  NO_MEMORY
4540  *  INTERNAL_ERR
4541  *  SYSTEM_ERR
4542  *  INVALID_ARGUMENTS
4543  *  MODEM_ERR
4544  *  REQUEST_NOT_SUPPORTED
4545  *  NO_RESOURCES
4546  *  CANCELLED
4547  */
4548 #define RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE 73
4549 
4550 /**
4551  * RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE
4552  *
4553  * Query the preferred network type (CS/PS domain, RAT, and operation mode)
4554  * for searching and registering
4555  *
4556  * "data" is NULL
4557  *
4558  * "response" is int *
4559  * ((int *)reponse)[0] is == RIL_PreferredNetworkType
4560  *
4561  * Valid errors:
4562  *  SUCCESS
4563  *  RADIO_NOT_AVAILABLE
4564  *  NO_MEMORY
4565  *  INTERNAL_ERR
4566  *  SYSTEM_ERR
4567  *  INVALID_ARGUMENTS
4568  *  MODEM_ERR
4569  *  REQUEST_NOT_SUPPORTED
4570  *  NO_RESOURCES
4571  *  CANCELLED
4572  *
4573  * See also: RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE
4574  */
4575 #define RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE 74
4576 
4577 /**
4578  * RIL_REQUEST_NEIGHBORING_CELL_IDS
4579  *
4580  * Request neighboring cell id in GSM network
4581  *
4582  * "data" is NULL
4583  * "response" must be a " const RIL_NeighboringCell** "
4584  *
4585  * Valid errors:
4586  *  SUCCESS
4587  *  RADIO_NOT_AVAILABLE
4588  *  NO_MEMORY
4589  *  INTERNAL_ERR
4590  *  SYSTEM_ERR
4591  *  MODEM_ERR
4592  *  NO_NETWORK_FOUND
4593  *  REQUEST_NOT_SUPPORTED
4594  *  NO_RESOURCES
4595  *  CANCELLED
4596  */
4597 #define RIL_REQUEST_GET_NEIGHBORING_CELL_IDS 75
4598 
4599 /**
4600  * RIL_REQUEST_SET_LOCATION_UPDATES
4601  *
4602  * Enables/disables network state change notifications due to changes in
4603  * LAC and/or CID (for GSM) or BID/SID/NID/latitude/longitude (for CDMA).
4604  * Basically +CREG=2 vs. +CREG=1 (TS 27.007).
4605  *
4606  * Note:  The RIL implementation should default to "updates enabled"
4607  * when the screen is on and "updates disabled" when the screen is off.
4608  *
4609  * "data" is int *
4610  * ((int *)data)[0] is == 1 for updates enabled (+CREG=2)
4611  * ((int *)data)[0] is == 0 for updates disabled (+CREG=1)
4612  *
4613  * "response" is NULL
4614  *
4615  * Valid errors:
4616  *  SUCCESS
4617  *  RADIO_NOT_AVAILABLE
4618  *  NO_MEMORY
4619  *  INTERNAL_ERR
4620  *  SYSTEM_ERR
4621  *  INVALID_ARGUMENTS
4622  *  MODEM_ERR
4623  *  REQUEST_NOT_SUPPORTED
4624  *  NO_RESOURCES
4625  *  CANCELLED
4626  *
4627  * See also: RIL_REQUEST_SCREEN_STATE, RIL_UNSOL_RESPONSE_NETWORK_STATE_CHANGED
4628  */
4629 #define RIL_REQUEST_SET_LOCATION_UPDATES 76
4630 
4631 /**
4632  * RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE
4633  *
4634  * Request to set the location where the CDMA subscription shall
4635  * be retrieved
4636  *
4637  * "data" is int *
4638  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
4639  *
4640  * "response" is NULL
4641  *
4642  * Valid errors:
4643  *  SUCCESS
4644  *  RADIO_NOT_AVAILABLE
4645  *  SIM_ABSENT
4646  *  SUBSCRIPTION_NOT_AVAILABLE
4647  *  INTERNAL_ERR
4648  *  NO_MEMORY
4649  *  NO_RESOURCES
4650  *  CANCELLED
4651  *  REQUEST_NOT_SUPPORTED
4652  *
4653  * See also: RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE
4654  */
4655 #define RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE 77
4656 
4657 /**
4658  * RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE
4659  *
4660  * Request to set the roaming preferences in CDMA
4661  *
4662  * "data" is int *
4663  * ((int *)data)[0] is == 0 for Home Networks only, as defined in PRL
4664  * ((int *)data)[0] is == 1 for Roaming on Affiliated networks, as defined in PRL
4665  * ((int *)data)[0] is == 2 for Roaming on Any Network, as defined in the PRL
4666  *
4667  * "response" is NULL
4668  *
4669  * Valid errors:
4670  *  SUCCESS
4671  *  RADIO_NOT_AVAILABLE
4672  *  NO_MEMORY
4673  *  INTERNAL_ERR
4674  *  SYSTEM_ERR
4675  *  INVALID_ARGUMENTS
4676  *  MODEM_ERR
4677  *  REQUEST_NOT_SUPPORTED
4678  *  OPERATION_NOT_ALLOWED
4679  *  NO_RESOURCES
4680  *  CANCELLED
4681  */
4682 #define RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE 78
4683 
4684 /**
4685  * RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE
4686  *
4687  * Request the actual setting of the roaming preferences in CDMA in the modem
4688  *
4689  * "data" is NULL
4690  *
4691  * "response" is int *
4692  * ((int *)response)[0] is == 0 for Home Networks only, as defined in PRL
4693  * ((int *)response)[0] is == 1 for Roaming on Affiliated networks, as defined in PRL
4694  * ((int *)response)[0] is == 2 for Roaming on Any Network, as defined in the PRL
4695  *
4696  * "response" is NULL
4697  *
4698  * Valid errors:
4699  *  SUCCESS
4700  *  RADIO_NOT_AVAILABLE
4701  *  NO_MEMORY
4702  *  INTERNAL_ERR
4703  *  SYSTEM_ERR
4704  *  INVALID_ARGUMENTS
4705  *  MODEM_ERR
4706  *  REQUEST_NOT_SUPPORTED
4707  *  NO_RESOURCES
4708  *  CANCELLED
4709  */
4710 #define RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE 79
4711 
4712 /**
4713  * RIL_REQUEST_SET_TTY_MODE
4714  *
4715  * Request to set the TTY mode
4716  *
4717  * "data" is int *
4718  * ((int *)data)[0] is == 0 for TTY off
4719  * ((int *)data)[0] is == 1 for TTY Full
4720  * ((int *)data)[0] is == 2 for TTY HCO (hearing carryover)
4721  * ((int *)data)[0] is == 3 for TTY VCO (voice carryover)
4722  *
4723  * "response" is NULL
4724  *
4725  * Valid errors:
4726  *  SUCCESS
4727  *  RADIO_NOT_AVAILABLE
4728  *  INVALID_ARGUMENTS
4729  *  MODEM_ERR
4730  *  INTERNAL_ERR
4731  *  NO_MEMORY
4732  *  INVALID_ARGUMENTS
4733  *  MODEM_ERR
4734  *  INTERNAL_ERR
4735  *  NO_MEMORY
4736  *  NO_RESOURCES
4737  *  CANCELLED
4738  *  REQUEST_NOT_SUPPORTED
4739  */
4740 #define RIL_REQUEST_SET_TTY_MODE 80
4741 
4742 /**
4743  * RIL_REQUEST_QUERY_TTY_MODE
4744  *
4745  * Request the setting of TTY mode
4746  *
4747  * "data" is NULL
4748  *
4749  * "response" is int *
4750  * ((int *)response)[0] is == 0 for TTY off
4751  * ((int *)response)[0] is == 1 for TTY Full
4752  * ((int *)response)[0] is == 2 for TTY HCO (hearing carryover)
4753  * ((int *)response)[0] is == 3 for TTY VCO (voice carryover)
4754  *
4755  * "response" is NULL
4756  *
4757  * Valid errors:
4758  *  SUCCESS
4759  *  RADIO_NOT_AVAILABLE
4760  *  MODEM_ERR
4761  *  INTERNAL_ERR
4762  *  NO_MEMORY
4763  *  INVALID_ARGUMENTS
4764  *  NO_RESOURCES
4765  *  CANCELLED
4766  *  REQUEST_NOT_SUPPORTED
4767  */
4768 #define RIL_REQUEST_QUERY_TTY_MODE 81
4769 
4770 /**
4771  * RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE
4772  *
4773  * Request to set the preferred voice privacy mode used in voice
4774  * scrambling
4775  *
4776  * "data" is int *
4777  * ((int *)data)[0] is == 0 for Standard Privacy Mode (Public Long Code Mask)
4778  * ((int *)data)[0] is == 1 for Enhanced Privacy Mode (Private Long Code Mask)
4779  *
4780  * "response" is NULL
4781  *
4782  * Valid errors:
4783  *  SUCCESS
4784  *  RADIO_NOT_AVAILABLE
4785  *  INVALID_ARGUMENTS
4786  *  SYSTEM_ERR
4787  *  MODEM_ERR
4788  *  INTERNAL_ERR
4789  *  NO_MEMORY
4790  *  INVALID_CALL_ID
4791  *  NO_RESOURCES
4792  *  CANCELLED
4793  *  REQUEST_NOT_SUPPORTED
4794  */
4795 #define RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE 82
4796 
4797 /**
4798  * RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE
4799  *
4800  * Request the setting of preferred voice privacy mode
4801  *
4802  * "data" is NULL
4803  *
4804  * "response" is int *
4805  * ((int *)response)[0] is == 0 for Standard Privacy Mode (Public Long Code Mask)
4806  * ((int *)response)[0] is == 1 for Enhanced Privacy Mode (Private Long Code Mask)
4807  *
4808  * "response" is NULL
4809  *
4810  * Valid errors:
4811  *  SUCCESS
4812  *  RADIO_NOT_AVAILABLE
4813  *  MODEM_ERR
4814  *  INTERNAL_ERR
4815  *  NO_MEMORY
4816  *  INVALID_ARGUMENTS
4817  *  NO_RESOURCES
4818  *  CANCELLED
4819  *  REQUEST_NOT_SUPPORTED
4820  */
4821 #define RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE 83
4822 
4823 /**
4824  * RIL_REQUEST_CDMA_FLASH
4825  *
4826  * Send FLASH
4827  *
4828  * "data" is const char *
4829  * ((const char *)data)[0] is a FLASH string
4830  *
4831  * "response" is NULL
4832  *
4833  * Valid errors:
4834  *  SUCCESS
4835  *  RADIO_NOT_AVAILABLE
4836  *  INVALID_ARGUMENTS
4837  *  NO_MEMORY
4838  *  SYSTEM_ERR
4839  *  MODEM_ERR
4840  *  INTERNAL_ERR
4841  *  INVALID_CALL_ID
4842  *  INVALID_STATE
4843  *  NO_RESOURCES
4844  *  CANCELLED
4845  *  REQUEST_NOT_SUPPORTED
4846  *
4847  */
4848 #define RIL_REQUEST_CDMA_FLASH 84
4849 
4850 /**
4851  * RIL_REQUEST_CDMA_BURST_DTMF
4852  *
4853  * Send DTMF string
4854  *
4855  * "data" is const char **
4856  * ((const char **)data)[0] is a DTMF string
4857  * ((const char **)data)[1] is the DTMF ON length in milliseconds, or 0 to use
4858  *                          default
4859  * ((const char **)data)[2] is the DTMF OFF length in milliseconds, or 0 to use
4860  *                          default
4861  *
4862  * "response" is NULL
4863  *
4864  * Valid errors:
4865  *  SUCCESS
4866  *  RADIO_NOT_AVAILABLE
4867  *  INVALID_ARGUMENTS
4868  *  NO_MEMORY
4869  *  SYSTEM_ERR
4870  *  MODEM_ERR
4871  *  INTERNAL_ERR
4872  *  INVALID_CALL_ID
4873  *  NO_RESOURCES
4874  *  CANCELLED
4875  *  OPERATION_NOT_ALLOWED
4876  *  REQUEST_NOT_SUPPORTED
4877  *
4878  */
4879 #define RIL_REQUEST_CDMA_BURST_DTMF 85
4880 
4881 /**
4882  * RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY
4883  *
4884  * Takes a 26 digit string (20 digit AKEY + 6 digit checksum).
4885  * If the checksum is valid the 20 digit AKEY is written to NV,
4886  * replacing the existing AKEY no matter what it was before.
4887  *
4888  * "data" is const char *
4889  * ((const char *)data)[0] is a 26 digit string (ASCII digits '0'-'9')
4890  *                         where the last 6 digits are a checksum of the
4891  *                         first 20, as specified in TR45.AHAG
4892  *                         "Common Cryptographic Algorithms, Revision D.1
4893  *                         Section 2.2"
4894  *
4895  * "response" is NULL
4896  *
4897  * Valid errors:
4898  *  SUCCESS
4899  *  RADIO_NOT_AVAILABLE
4900  *  NO_MEMORY
4901  *  INTERNAL_ERR
4902  *  SYSTEM_ERR
4903  *  INVALID_ARGUMENTS
4904  *  MODEM_ERR
4905  *  REQUEST_NOT_SUPPORTED
4906  *  NO_RESOURCES
4907  *  CANCELLED
4908  *
4909  */
4910 #define RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY 86
4911 
4912 /**
4913  * RIL_REQUEST_CDMA_SEND_SMS
4914  *
4915  * Send a CDMA SMS message
4916  *
4917  * "data" is const RIL_CDMA_SMS_Message *
4918  *
4919  * "response" is a const RIL_SMS_Response *
4920  *
4921  * Based on the return error, caller decides to resend if sending sms
4922  * fails. The CDMA error class is derived as follows,
4923  * SUCCESS is error class 0 (no error)
4924  * SMS_SEND_FAIL_RETRY is error class 2 (temporary failure)
4925  *
4926  * Valid errors:
4927  *  SUCCESS
4928  *  RADIO_NOT_AVAILABLE
4929  *  SMS_SEND_FAIL_RETRY
4930  *  NETWORK_REJECT
4931  *  INVALID_STATE
4932  *  INVALID_ARGUMENTS
4933  *  NO_MEMORY
4934  *  REQUEST_RATE_LIMITED
4935  *  INVALID_SMS_FORMAT
4936  *  SYSTEM_ERR
4937  *  FDN_CHECK_FAILURE
4938  *  MODEM_ERR
4939  *  NETWORK_ERR
4940  *  ENCODING_ERR
4941  *  INVALID_SMSC_ADDRESS
4942  *  OPERATION_NOT_ALLOWED
4943  *  NO_RESOURCES
4944  *  CANCELLED
4945  *  REQUEST_NOT_SUPPORTED
4946  *  MODE_NOT_SUPPORTED
4947  *  SIM_ABSENT
4948  *
4949  */
4950 #define RIL_REQUEST_CDMA_SEND_SMS 87
4951 
4952 /**
4953  * RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
4954  *
4955  * Acknowledge the success or failure in the receipt of SMS
4956  * previously indicated via RIL_UNSOL_RESPONSE_CDMA_NEW_SMS
4957  *
4958  * "data" is const RIL_CDMA_SMS_Ack *
4959  *
4960  * "response" is NULL
4961  *
4962  * Valid errors:
4963  *  SUCCESS
4964  *  RADIO_NOT_AVAILABLE
4965  *  INVALID_ARGUMENTS
4966  *  NO_SMS_TO_ACK
4967  *  INVALID_STATE
4968  *  NO_MEMORY
4969  *  REQUEST_RATE_LIMITED
4970  *  SYSTEM_ERR
4971  *  MODEM_ERR
4972  *  INVALID_STATE
4973  *  OPERATION_NOT_ALLOWED
4974  *  NETWORK_NOT_READY
4975  *  INVALID_MODEM_STATE
4976  *  REQUEST_NOT_SUPPORTED
4977  *
4978  */
4979 #define RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE 88
4980 
4981 /**
4982  * RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG
4983  *
4984  * Request the setting of GSM/WCDMA Cell Broadcast SMS config.
4985  *
4986  * "data" is NULL
4987  *
4988  * "response" is a const RIL_GSM_BroadcastSmsConfigInfo **
4989  * "responselen" is count * sizeof (RIL_GSM_BroadcastSmsConfigInfo *)
4990  *
4991  * Valid errors:
4992  *  SUCCESS
4993  *  RADIO_NOT_AVAILABLE
4994  *  INVALID_STATE
4995  *  NO_MEMORY
4996  *  REQUEST_RATE_LIMITED
4997  *  SYSTEM_ERR
4998  *  NO_RESOURCES
4999  *  MODEM_ERR
5000  *  SYSTEM_ERR
5001  *  INTERNAL_ERR
5002  *  NO_RESOURCES
5003  *  CANCELLED
5004  *  INVALID_MODEM_STATE
5005  *  REQUEST_NOT_SUPPORTED
5006  */
5007 #define RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG 89
5008 
5009 /**
5010  * RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG
5011  *
5012  * Set GSM/WCDMA Cell Broadcast SMS config
5013  *
5014  * "data" is a const RIL_GSM_BroadcastSmsConfigInfo **
5015  * "datalen" is count * sizeof(RIL_GSM_BroadcastSmsConfigInfo *)
5016  *
5017  * "response" is NULL
5018  *
5019  * Valid errors:
5020  *  SUCCESS
5021  *  RADIO_NOT_AVAILABLE
5022  *  INVALID_STATE
5023  *  INVALID_ARGUMENTS
5024  *  NO_MEMORY
5025  *  SYSTEM_ERR
5026  *  REQUEST_RATE_LIMITED
5027  *  MODEM_ERR
5028  *  SYSTEM_ERR
5029  *  INTERNAL_ERR
5030  *  NO_RESOURCES
5031  *  CANCELLED
5032  *  INVALID_MODEM_STATE
5033  *  REQUEST_NOT_SUPPORTED
5034  *
5035  */
5036 #define RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG 90
5037 
5038 /**
5039  * RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION
5040  *
5041 * Enable or disable the reception of GSM/WCDMA Cell Broadcast SMS
5042  *
5043  * "data" is const int *
5044  * (const int *)data[0] indicates to activate or turn off the
5045  * reception of GSM/WCDMA Cell Broadcast SMS, 0-1,
5046  *                       0 - Activate, 1 - Turn off
5047  *
5048  * "response" is NULL
5049  *
5050  * Valid errors:
5051  *  SUCCESS
5052  *  RADIO_NOT_AVAILABLE
5053  *  INVALID_STATE
5054  *  INVALID_ARGUMENTS
5055  *  NO_MEMORY
5056  *  SYSTEM_ERR
5057  *  REQUEST_RATE_LIMITED
5058 *   MODEM_ERR
5059 *   INTERNAL_ERR
5060 *   NO_RESOURCES
5061 *   CANCELLED
5062 *   INVALID_MODEM_STATE
5063  *  REQUEST_NOT_SUPPORTED
5064  *
5065  */
5066 #define RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION 91
5067 
5068 /**
5069  * RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG
5070  *
5071  * Request the setting of CDMA Broadcast SMS config
5072  *
5073  * "data" is NULL
5074  *
5075  * "response" is a const RIL_CDMA_BroadcastSmsConfigInfo **
5076  * "responselen" is count * sizeof (RIL_CDMA_BroadcastSmsConfigInfo *)
5077  *
5078  * Valid errors:
5079  *  SUCCESS
5080  *  RADIO_NOT_AVAILABLE
5081  *  INVALID_STATE
5082  *  NO_MEMORY
5083  *  REQUEST_RATE_LIMITED
5084  *  SYSTEM_ERR
5085  *  NO_RESOURCES
5086  *  MODEM_ERR
5087  *  SYSTEM_ERR
5088  *  INTERNAL_ERR
5089  *  NO_RESOURCES
5090  *  CANCELLED
5091  *  INVALID_MODEM_STATE
5092  *  REQUEST_NOT_SUPPORTED
5093  *
5094  */
5095 #define RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG 92
5096 
5097 /**
5098  * RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
5099  *
5100  * Set CDMA Broadcast SMS config
5101  *
5102  * "data" is a const RIL_CDMA_BroadcastSmsConfigInfo **
5103  * "datalen" is count * sizeof(const RIL_CDMA_BroadcastSmsConfigInfo *)
5104  *
5105  * "response" is NULL
5106  *
5107  * Valid errors:
5108  *  SUCCESS
5109  *  RADIO_NOT_AVAILABLE
5110  *  INVALID_STATE
5111  *  INVALID_ARGUMENTS
5112  *  NO_MEMORY
5113  *  SYSTEM_ERR
5114  *  REQUEST_RATE_LIMITED
5115  *  MODEM_ERR
5116  *  SYSTEM_ERR
5117  *  INTERNAL_ERR
5118  *  NO_RESOURCES
5119  *  CANCELLED
5120  *  INVALID_MODEM_STATE
5121  *  REQUEST_NOT_SUPPORTED
5122  *
5123  */
5124 #define RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG 93
5125 
5126 /**
5127  * RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION
5128  *
5129  * Enable or disable the reception of CDMA Broadcast SMS
5130  *
5131  * "data" is const int *
5132  * (const int *)data[0] indicates to activate or turn off the
5133  * reception of CDMA Broadcast SMS, 0-1,
5134  *                       0 - Activate, 1 - Turn off
5135  *
5136  * "response" is NULL
5137  *
5138  * Valid errors:
5139  *  SUCCESS
5140  *  RADIO_NOT_AVAILABLE
5141  *  INVALID_STATE
5142  *  INVALID_ARGUMENTS
5143  *  NO_MEMORY
5144  *  SYSTEM_ERR
5145  *  REQUEST_RATE_LIMITED
5146  *  MODEM_ERR
5147  *  INTERNAL_ERR
5148  *  NO_RESOURCES
5149  *  CANCELLED
5150  *  INVALID_MODEM_STATE
5151  *  REQUEST_NOT_SUPPORTED
5152  *
5153  */
5154 #define RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION 94
5155 
5156 /**
5157  * RIL_REQUEST_CDMA_SUBSCRIPTION
5158  *
5159  * Request the device MDN / H_SID / H_NID.
5160  *
5161  * The request is only allowed when CDMA subscription is available.  When CDMA
5162  * subscription is changed, application layer should re-issue the request to
5163  * update the subscription information.
5164  *
5165  * If a NULL value is returned for any of the device id, it means that error
5166  * accessing the device.
5167  *
5168  * "response" is const char **
5169  * ((const char **)response)[0] is MDN if CDMA subscription is available
5170  * ((const char **)response)[1] is a comma separated list of H_SID (Home SID) if
5171  *                              CDMA subscription is available, in decimal format
5172  * ((const char **)response)[2] is a comma separated list of H_NID (Home NID) if
5173  *                              CDMA subscription is available, in decimal format
5174  * ((const char **)response)[3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
5175  * ((const char **)response)[4] is PRL version if CDMA subscription is available
5176  *
5177  * Valid errors:
5178  *  SUCCESS
5179  *  RIL_E_SUBSCRIPTION_NOT_AVAILABLE
5180  *  NO_MEMORY
5181  *  INTERNAL_ERR
5182  *  SYSTEM_ERR
5183  *  INVALID_ARGUMENTS
5184  *  MODEM_ERR
5185  *  NOT_PROVISIONED
5186  *  REQUEST_NOT_SUPPORTED
5187  *  INTERNAL_ERR
5188  *  NO_RESOURCES
5189  *  CANCELLED
5190  *
5191  */
5192 
5193 #define RIL_REQUEST_CDMA_SUBSCRIPTION 95
5194 
5195 /**
5196  * RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM
5197  *
5198  * Stores a CDMA SMS message to RUIM memory.
5199  *
5200  * "data" is RIL_CDMA_SMS_WriteArgs *
5201  *
5202  * "response" is int *
5203  * ((const int *)response)[0] is the record index where the message is stored.
5204  *
5205  * Valid errors:
5206  *  SUCCESS
5207  *  RADIO_NOT_AVAILABLE
5208  *  SIM_FULL
5209  *  INVALID_ARGUMENTS
5210  *  INVALID_SMS_FORMAT
5211  *  INTERNAL_ERR
5212  *  MODEM_ERR
5213  *  ENCODING_ERR
5214  *  NO_MEMORY
5215  *  NO_RESOURCES
5216  *  INVALID_MODEM_STATE
5217  *  OPERATION_NOT_ALLOWED
5218  *  INVALID_SMSC_ADDRESS
5219  *  CANCELLED
5220  *  INVALID_MODEM_STATE
5221  *  REQUEST_NOT_SUPPORTED
5222  *  SIM_ABSENT
5223  *
5224  */
5225 #define RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 96
5226 
5227 /**
5228  * RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM
5229  *
5230  * Deletes a CDMA SMS message from RUIM memory.
5231  *
5232  * "data" is int  *
5233  * ((int *)data)[0] is the record index of the message to delete.
5234  *
5235  * "response" is NULL
5236  *
5237  * Valid errors:
5238  *  SUCCESS
5239  *  RADIO_NOT_AVAILABLE
5240  *  INVALID_ARGUMENTS
5241  *  NO_MEMORY
5242  *  REQUEST_RATE_LIMITED
5243  *  SYSTEM_ERR
5244  *  MODEM_ERR
5245  *  NO_SUCH_ENTRY
5246  *  INTERNAL_ERR
5247  *  NO_RESOURCES
5248  *  CANCELLED
5249  *  INVALID_MODEM_STATE
5250  *  REQUEST_NOT_SUPPORTED
5251  *  SIM_ABSENT
5252  */
5253 #define RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM 97
5254 
5255 /**
5256  * RIL_REQUEST_DEVICE_IDENTITY
5257  *
5258  * Request the device ESN / MEID / IMEI / IMEISV.
5259  *
5260  * The request is always allowed and contains GSM and CDMA device identity;
5261  * it substitutes the deprecated requests RIL_REQUEST_GET_IMEI and
5262  * RIL_REQUEST_GET_IMEISV.
5263  *
5264  * If a NULL value is returned for any of the device id, it means that error
5265  * accessing the device.
5266  *
5267  * When CDMA subscription is changed the ESN/MEID may change.  The application
5268  * layer should re-issue the request to update the device identity in this case.
5269  *
5270  * "response" is const char **
5271  * ((const char **)response)[0] is IMEI if GSM subscription is available
5272  * ((const char **)response)[1] is IMEISV if GSM subscription is available
5273  * ((const char **)response)[2] is ESN if CDMA subscription is available
5274  * ((const char **)response)[3] is MEID if CDMA subscription is available
5275  *
5276  * Valid errors:
5277  *  SUCCESS
5278  *  RADIO_NOT_AVAILABLE
5279  *  NO_MEMORY
5280  *  INTERNAL_ERR
5281  *  SYSTEM_ERR
5282  *  INVALID_ARGUMENTS
5283  *  MODEM_ERR
5284  *  NOT_PROVISIONED
5285  *  REQUEST_NOT_SUPPORTED
5286  *  NO_RESOURCES
5287  *  CANCELLED
5288  *
5289  */
5290 #define RIL_REQUEST_DEVICE_IDENTITY 98
5291 
5292 /**
5293  * RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE
5294  *
5295  * Request the radio's system selection module to exit emergency
5296  * callback mode.  RIL will not respond with SUCCESS until the modem has
5297  * completely exited from Emergency Callback Mode.
5298  *
5299  * "data" is NULL
5300  *
5301  * "response" is NULL
5302  *
5303  * Valid errors:
5304  *  SUCCESS
5305  *  RADIO_NOT_AVAILABLE
5306  *  OPERATION_NOT_ALLOWED
5307  *  NO_MEMORY
5308  *  INTERNAL_ERR
5309  *  SYSTEM_ERR
5310  *  INVALID_ARGUMENTS
5311  *  MODEM_ERR
5312  *  REQUEST_NOT_SUPPORTED
5313  *  NO_RESOURCES
5314  *  CANCELLED
5315  *
5316  */
5317 #define RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE 99
5318 
5319 /**
5320  * RIL_REQUEST_GET_SMSC_ADDRESS
5321  *
5322  * Queries the default Short Message Service Center address on the device.
5323  *
5324  * "data" is NULL
5325  *
5326  * "response" is const char * containing the SMSC address.
5327  *
5328  * Valid errors:
5329  *  SUCCESS
5330  *  RADIO_NOT_AVAILABLE
5331  *  NO_MEMORY
5332  *  REQUEST_RATE_LIMITED
5333  *  SYSTEM_ERR
5334  *  INTERNAL_ERR
5335  *  MODEM_ERR
5336  *  INVALID_ARGUMENTS
5337  *  INVALID_MODEM_STATE
5338  *  NOT_PROVISIONED
5339  *  NO_RESOURCES
5340  *  CANCELLED
5341  *  REQUEST_NOT_SUPPORTED
5342  *  SIM_ABSENT
5343  *
5344  */
5345 #define RIL_REQUEST_GET_SMSC_ADDRESS 100
5346 
5347 /**
5348  * RIL_REQUEST_SET_SMSC_ADDRESS
5349  *
5350  * Sets the default Short Message Service Center address on the device.
5351  *
5352  * "data" is const char * containing the SMSC address.
5353  *
5354  * "response" is NULL
5355  *
5356  * Valid errors:
5357  *  SUCCESS
5358  *  RADIO_NOT_AVAILABLE
5359  *  INVALID_ARGUMENTS
5360  *  INVALID_SMS_FORMAT
5361  *  NO_MEMORY
5362  *  SYSTEM_ERR
5363  *  REQUEST_RATE_LIMITED
5364  *  MODEM_ERR
5365  *  NO_RESOURCES
5366  *  INTERNAL_ERR
5367  *  CANCELLED
5368  *  REQUEST_NOT_SUPPORTED
5369  *  SIM_ABSENT
5370  */
5371 #define RIL_REQUEST_SET_SMSC_ADDRESS 101
5372 
5373 /**
5374  * RIL_REQUEST_REPORT_SMS_MEMORY_STATUS
5375  *
5376  * Indicates whether there is storage available for new SMS messages.
5377  *
5378  * "data" is int *
5379  * ((int *)data)[0] is 1 if memory is available for storing new messages
5380  *                  is 0 if memory capacity is exceeded
5381  *
5382  * "response" is NULL
5383  *
5384  * Valid errors:
5385  *  SUCCESS
5386  *  RADIO_NOT_AVAILABLE
5387  *  INVALID_ARGUMENTS
5388  *  NO_MEMORY
5389  *  INVALID_STATE
5390  *  SYSTEM_ERR
5391  *  REQUEST_RATE_LIMITED
5392  *  MODEM_ERR
5393  *  INTERNAL_ERR
5394  *  NO_RESOURCES
5395  *  CANCELLED
5396  *  REQUEST_NOT_SUPPORTED
5397  *
5398  */
5399 #define RIL_REQUEST_REPORT_SMS_MEMORY_STATUS 102
5400 
5401 /**
5402  * RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING
5403  *
5404  * Indicates that the StkSerivce is running and is
5405  * ready to receive RIL_UNSOL_STK_XXXXX commands.
5406  *
5407  * "data" is NULL
5408  * "response" is NULL
5409  *
5410  * Valid errors:
5411  *  SUCCESS
5412  *  RADIO_NOT_AVAILABLE
5413  *  INTERNAL_ERR
5414  *  NO_MEMORY
5415  *  NO_RESOURCES
5416  *  CANCELLED
5417  *  REQUEST_NOT_SUPPORTED
5418  *
5419  */
5420 #define RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING 103
5421 
5422 /**
5423  * RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE
5424  *
5425  * Request to query the location where the CDMA subscription shall
5426  * be retrieved
5427  *
5428  * "data" is NULL
5429  *
5430  * "response" is int *
5431  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
5432  *
5433  * Valid errors:
5434  *  SUCCESS
5435  *  RADIO_NOT_AVAILABLE
5436  *  SUBSCRIPTION_NOT_AVAILABLE
5437  *  INTERNAL_ERR
5438  *  NO_MEMORY
5439  *  NO_RESOURCES
5440  *  CANCELLED
5441  *  REQUEST_NOT_SUPPORTED
5442  *
5443  * See also: RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE
5444  */
5445 #define RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE 104
5446 
5447 /**
5448  * RIL_REQUEST_ISIM_AUTHENTICATION
5449  *
5450  * Request the ISIM application on the UICC to perform AKA
5451  * challenge/response algorithm for IMS authentication
5452  *
5453  * "data" is a const char * containing the challenge string in Base64 format
5454  * "response" is a const char * containing the response in Base64 format
5455  *
5456  * Valid errors:
5457  *  SUCCESS
5458  *  RADIO_NOT_AVAILABLE
5459  *  INTERNAL_ERR
5460  *  NO_MEMORY
5461  *  NO_RESOURCES
5462  *  CANCELLED
5463  *  REQUEST_NOT_SUPPORTED
5464  */
5465 #define RIL_REQUEST_ISIM_AUTHENTICATION 105
5466 
5467 /**
5468  * RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU
5469  *
5470  * Acknowledge successful or failed receipt of SMS previously indicated
5471  * via RIL_UNSOL_RESPONSE_NEW_SMS, including acknowledgement TPDU to send
5472  * as the RP-User-Data element of the RP-ACK or RP-ERROR PDU.
5473  *
5474  * "data" is const char **
5475  * ((const char **)data)[0] is "1" on successful receipt (send RP-ACK)
5476  *                          is "0" on failed receipt (send RP-ERROR)
5477  * ((const char **)data)[1] is the acknowledgement TPDU in hexadecimal format
5478  *
5479  * "response" is NULL
5480  *
5481  * Valid errors:
5482  *  SUCCESS
5483  *  RADIO_NOT_AVAILABLE
5484  *  INTERNAL_ERR
5485  *  NO_MEMORY
5486  *  NO_RESOURCES
5487  *  CANCELLED
5488  *  REQUEST_NOT_SUPPORTED
5489  */
5490 #define RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU 106
5491 
5492 /**
5493  * RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS
5494  *
5495  * Requests to send a SAT/USAT envelope command to SIM.
5496  * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111.
5497  *
5498  * This request has one difference from RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND:
5499  * the SW1 and SW2 status bytes from the UICC response are returned along with
5500  * the response data, using the same structure as RIL_REQUEST_SIM_IO.
5501  *
5502  * The RIL implementation shall perform the normal processing of a '91XX'
5503  * response in SW1/SW2 to retrieve the pending proactive command and send it
5504  * as an unsolicited response, as RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND does.
5505  *
5506  * "data" is a const char * containing the SAT/USAT command
5507  * in hexadecimal format starting with command tag
5508  *
5509  * "response" is a const RIL_SIM_IO_Response *
5510  *
5511  * Valid errors:
5512  *  RIL_E_SUCCESS
5513  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
5514  *  SIM_BUSY
5515  *  OPERATION_NOT_ALLOWED
5516  *  INTERNAL_ERR
5517  *  NO_MEMORY
5518  *  NO_RESOURCES
5519  *  CANCELLED
5520  *  REQUEST_NOT_SUPPORTED
5521  *  SIM_ABSENT
5522  */
5523 #define RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS 107
5524 
5525 /**
5526  * RIL_REQUEST_VOICE_RADIO_TECH
5527  *
5528  * Query the radio technology type (3GPP/3GPP2) used for voice. Query is valid only
5529  * when radio state is not RADIO_STATE_UNAVAILABLE
5530  *
5531  * "data" is NULL
5532  * "response" is int *
5533  * ((int *) response)[0] is of type const RIL_RadioTechnology
5534  *
5535  * Valid errors:
5536  *  SUCCESS
5537  *  RADIO_NOT_AVAILABLE
5538  *  INTERNAL_ERR
5539  *  NO_MEMORY
5540  *  NO_RESOURCES
5541  *  CANCELLED
5542  *  REQUEST_NOT_SUPPORTED
5543  */
5544 #define RIL_REQUEST_VOICE_RADIO_TECH 108
5545 
5546 /**
5547  * RIL_REQUEST_GET_CELL_INFO_LIST
5548  *
5549  * Request all of the current cell information known to the radio. The radio
5550  * must a list of all current cells, including the neighboring cells. If for a particular
5551  * cell information isn't known then the appropriate unknown value will be returned.
5552  * This does not cause or change the rate of RIL_UNSOL_CELL_INFO_LIST.
5553  *
5554  * "data" is NULL
5555  *
5556  * "response" is an array of  RIL_CellInfo_v12.
5557  *
5558  * Valid errors:
5559  *  SUCCESS
5560  *  RADIO_NOT_AVAILABLE
5561  *  NO_MEMORY
5562  *  INTERNAL_ERR
5563  *  SYSTEM_ERR
5564  *  MODEM_ERR
5565  *  NO_NETWORK_FOUND
5566  *  REQUEST_NOT_SUPPORTED
5567  *  NO_RESOURCES
5568  *  CANCELLED
5569  *
5570  */
5571 #define RIL_REQUEST_GET_CELL_INFO_LIST 109
5572 
5573 /**
5574  * RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE
5575  *
5576  * Sets the minimum time between when RIL_UNSOL_CELL_INFO_LIST should be invoked.
5577  * A value of 0, means invoke RIL_UNSOL_CELL_INFO_LIST when any of the reported
5578  * information changes. Setting the value to INT_MAX(0x7fffffff) means never issue
5579  * a RIL_UNSOL_CELL_INFO_LIST.
5580  *
5581  * "data" is int *
5582  * ((int *)data)[0] is minimum time in milliseconds
5583  *
5584  * "response" is NULL
5585  *
5586  * Valid errors:
5587  *  SUCCESS
5588  *  RADIO_NOT_AVAILABLE
5589  *  NO_MEMORY
5590  *  INTERNAL_ERR
5591  *  SYSTEM_ERR
5592  *  INVALID_ARGUMENTS
5593  *  REQUEST_NOT_SUPPORTED
5594  *  NO_RESOURCES
5595  *  CANCELLED
5596  */
5597 #define RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE 110
5598 
5599 /**
5600  * RIL_REQUEST_SET_INITIAL_ATTACH_APN
5601  *
5602  * Set an apn to initial attach network
5603  *
5604  * "data" is a const char **
5605  * ((const char **)data)[0] is the APN to connect if radio technology is LTE
5606  * ((const char **)data)[1] is the connection type to request must be one of the
5607  *                          PDP_type values in TS 27.007 section 10.1.1.
5608  *                          For example, "IP", "IPV6", "IPV4V6", or "PPP".
5609  * ((const char **)data)[2] is the PAP / CHAP auth type. Values:
5610  *                          0 => PAP and CHAP is never performed.
5611  *                          1 => PAP may be performed; CHAP is never performed.
5612  *                          2 => CHAP may be performed; PAP is never performed.
5613  *                          3 => PAP / CHAP may be performed - baseband dependent.
5614  * ((const char **)data)[3] is the username for APN, or NULL
5615  * ((const char **)data)[4] is the password for APN, or NULL
5616  *
5617  * "response" is NULL
5618  *
5619  * Valid errors:
5620  *  SUCCESS
5621  *  RADIO_NOT_AVAILABLE (radio resetting)
5622  *  SUBSCRIPTION_NOT_AVAILABLE
5623  *  NO_MEMORY
5624  *  INTERNAL_ERR
5625  *  SYSTEM_ERR
5626  *  INVALID_ARGUMENTS
5627  *  MODEM_ERR
5628  *  NOT_PROVISIONED
5629  *  REQUEST_NOT_SUPPORTED
5630  *  NO_RESOURCES
5631  *  CANCELLED
5632  *
5633  */
5634 #define RIL_REQUEST_SET_INITIAL_ATTACH_APN 111
5635 
5636 /**
5637  * RIL_REQUEST_IMS_REGISTRATION_STATE
5638  *
5639  * This message is DEPRECATED and shall be removed in a future release (target: 2018);
5640  * instead, provide IMS registration status via an IMS Service.
5641  *
5642  * Request current IMS registration state
5643  *
5644  * "data" is NULL
5645  *
5646  * "response" is int *
5647  * ((int *)response)[0] is registration state:
5648  *              0 - Not registered
5649  *              1 - Registered
5650  *
5651  * If ((int*)response)[0] is = 1, then ((int *) response)[1]
5652  * must follow with IMS SMS format:
5653  *
5654  * ((int *) response)[1] is of type RIL_RadioTechnologyFamily
5655  *
5656  * Valid errors:
5657  *  SUCCESS
5658  *  RADIO_NOT_AVAILABLE
5659  *  INTERNAL_ERR
5660  *  NO_MEMORY
5661  *  NO_RESOURCES
5662  *  CANCELLED
5663  *  INVALID_MODEM_STATE
5664  *  REQUEST_NOT_SUPPORTED
5665  */
5666 #define RIL_REQUEST_IMS_REGISTRATION_STATE 112
5667 
5668 /**
5669  * RIL_REQUEST_IMS_SEND_SMS
5670  *
5671  * Send a SMS message over IMS
5672  *
5673  * "data" is const RIL_IMS_SMS_Message *
5674  *
5675  * "response" is a const RIL_SMS_Response *
5676  *
5677  * Based on the return error, caller decides to resend if sending sms
5678  * fails. SMS_SEND_FAIL_RETRY means retry, and other errors means no retry.
5679  * In case of retry, data is encoded based on Voice Technology available.
5680  *
5681  * Valid errors:
5682  *  SUCCESS
5683  *  RADIO_NOT_AVAILABLE
5684  *  SMS_SEND_FAIL_RETRY
5685  *  FDN_CHECK_FAILURE
5686  *  NETWORK_REJECT
5687  *  INVALID_ARGUMENTS
5688  *  INVALID_STATE
5689  *  NO_MEMORY
5690  *  INVALID_SMS_FORMAT
5691  *  SYSTEM_ERR
5692  *  REQUEST_RATE_LIMITED
5693  *  MODEM_ERR
5694  *  NETWORK_ERR
5695  *  ENCODING_ERR
5696  *  INVALID_SMSC_ADDRESS
5697  *  OPERATION_NOT_ALLOWED
5698  *  INTERNAL_ERR
5699  *  NO_RESOURCES
5700  *  CANCELLED
5701  *  REQUEST_NOT_SUPPORTED
5702  *
5703  */
5704 #define RIL_REQUEST_IMS_SEND_SMS 113
5705 
5706 /**
5707  * RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC
5708  *
5709  * Request APDU exchange on the basic channel. This command reflects TS 27.007
5710  * "generic SIM access" operation (+CSIM). The modem must ensure proper function
5711  * of GSM/CDMA, and filter commands appropriately. It should filter
5712  * channel management and SELECT by DF name commands.
5713  *
5714  * "data" is a const RIL_SIM_APDU *
5715  * "sessionid" field should be ignored.
5716  *
5717  * "response" is a const RIL_SIM_IO_Response *
5718  *
5719  * Valid errors:
5720  *  SUCCESS
5721  *  RADIO_NOT_AVAILABLE
5722  *  INTERNAL_ERR
5723  *  NO_MEMORY
5724  *  NO_RESOURCES
5725  *  CANCELLED
5726  *  REQUEST_NOT_SUPPORTED
5727  */
5728 #define RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC 114
5729 
5730 /**
5731  * RIL_REQUEST_SIM_OPEN_CHANNEL
5732  *
5733  * Open a new logical channel and select the given application. This command
5734  * reflects TS 27.007 "open logical channel" operation (+CCHO). This request
5735  * also specifies the P2 parameter (described in ISO 7816-4).
5736  *
5737  * "data" is a const RIL_OpenChannelParam *
5738  *
5739  * "response" is int *
5740  * ((int *)data)[0] contains the session id of the logical channel.
5741  * ((int *)data)[1] onwards may optionally contain the select response for the
5742  *     open channel command with one byte per integer.
5743  *
5744  * Valid errors:
5745  *  SUCCESS
5746  *  RADIO_NOT_AVAILABLE
5747  *  MISSING_RESOURCE
5748  *  NO_SUCH_ELEMENT
5749  *  INTERNAL_ERR
5750  *  NO_MEMORY
5751  *  NO_RESOURCES
5752  *  CANCELLED
5753  *  SIM_ERR
5754  *  INVALID_SIM_STATE
5755  *  MISSING_RESOURCE
5756  *  REQUEST_NOT_SUPPORTED
5757  */
5758 #define RIL_REQUEST_SIM_OPEN_CHANNEL 115
5759 
5760 /**
5761  * RIL_REQUEST_SIM_CLOSE_CHANNEL
5762  *
5763  * Close a previously opened logical channel. This command reflects TS 27.007
5764  * "close logical channel" operation (+CCHC).
5765  *
5766  * "data" is int *
5767  * ((int *)data)[0] is the session id of logical the channel to close.
5768  *
5769  * "response" is NULL
5770  *
5771  * Valid errors:
5772  *  SUCCESS
5773  *  RADIO_NOT_AVAILABLE
5774  *  INTERNAL_ERR
5775  *  NO_MEMORY
5776  *  NO_RESOURCES
5777  *  CANCELLED
5778  *  REQUEST_NOT_SUPPORTED
5779  */
5780 #define RIL_REQUEST_SIM_CLOSE_CHANNEL 116
5781 
5782 /**
5783  * RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL
5784  *
5785  * Exchange APDUs with a UICC over a previously opened logical channel. This
5786  * command reflects TS 27.007 "generic logical channel access" operation
5787  * (+CGLA). The modem should filter channel management and SELECT by DF name
5788  * commands.
5789  *
5790  * "data" is a const RIL_SIM_APDU*
5791  *
5792  * "response" is a const RIL_SIM_IO_Response *
5793  *
5794  * Valid errors:
5795  *  SUCCESS
5796  *  RADIO_NOT_AVAILABLE
5797  *  INTERNAL_ERR
5798  *  NO_MEMORY
5799  *  NO_RESOURCES
5800  *  CANCELLED
5801  *  REQUEST_NOT_SUPPORTED
5802  */
5803 #define RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL 117
5804 
5805 /**
5806  * RIL_REQUEST_NV_READ_ITEM
5807  *
5808  * Read one of the radio NV items defined in RadioNVItems.java / ril_nv_items.h.
5809  * This is used for device configuration by some CDMA operators.
5810  *
5811  * "data" is a const RIL_NV_ReadItem *
5812  *
5813  * "response" is const char * containing the contents of the NV item
5814  *
5815  * Valid errors:
5816  *  SUCCESS
5817  *  RADIO_NOT_AVAILABLE
5818  *  REQUEST_NOT_SUPPORTED
5819  */
5820 #define RIL_REQUEST_NV_READ_ITEM 118
5821 
5822 /**
5823  * RIL_REQUEST_NV_WRITE_ITEM
5824  *
5825  * Write one of the radio NV items defined in RadioNVItems.java / ril_nv_items.h.
5826  * This is used for device configuration by some CDMA operators.
5827  *
5828  * "data" is a const RIL_NV_WriteItem *
5829  *
5830  * "response" is NULL
5831  *
5832  * Valid errors:
5833  *  SUCCESS
5834  *  RADIO_NOT_AVAILABLE
5835  *  REQUEST_NOT_SUPPORTED
5836  */
5837 #define RIL_REQUEST_NV_WRITE_ITEM 119
5838 
5839 /**
5840  * RIL_REQUEST_NV_WRITE_CDMA_PRL
5841  *
5842  * Update the CDMA Preferred Roaming List (PRL) in the radio NV storage.
5843  * This is used for device configuration by some CDMA operators.
5844  *
5845  * "data" is a const char * containing the PRL as a byte array
5846  *
5847  * "response" is NULL
5848  *
5849  * Valid errors:
5850  *  SUCCESS
5851  *  RADIO_NOT_AVAILABLE
5852  *  REQUEST_NOT_SUPPORTED
5853  */
5854 #define RIL_REQUEST_NV_WRITE_CDMA_PRL 120
5855 
5856 /**
5857  * RIL_REQUEST_NV_RESET_CONFIG
5858  *
5859  * Reset the radio NV configuration to the factory state.
5860  * This is used for device configuration by some CDMA operators.
5861  *
5862  * "data" is int *
5863  * ((int *)data)[0] is 1 to reload all NV items
5864  * ((int *)data)[0] is 2 for erase NV reset (SCRTN)
5865  * ((int *)data)[0] is 3 for factory reset (RTN)
5866  *
5867  * "response" is NULL
5868  *
5869  * Valid errors:
5870  *  SUCCESS
5871  *  RADIO_NOT_AVAILABLE
5872  *  REQUEST_NOT_SUPPORTED
5873  */
5874 #define RIL_REQUEST_NV_RESET_CONFIG 121
5875 
5876  /** RIL_REQUEST_SET_UICC_SUBSCRIPTION
5877  * FIXME This API needs to have more documentation.
5878  *
5879  * Selection/de-selection of a subscription from a SIM card
5880  * "data" is const  RIL_SelectUiccSub*
5881 
5882  *
5883  * "response" is NULL
5884  *
5885  *  Valid errors:
5886  *  SUCCESS
5887  *  RADIO_NOT_AVAILABLE (radio resetting)
5888  *  SUBSCRIPTION_NOT_SUPPORTED
5889  *  NO_MEMORY
5890  *  INTERNAL_ERR
5891  *  SYSTEM_ERR
5892  *  INVALID_ARGUMENTS
5893  *  MODEM_ERR
5894  *  REQUEST_NOT_SUPPORTED
5895  *  NO_RESOURCES
5896  *  CANCELLED
5897  *
5898  */
5899 #define RIL_REQUEST_SET_UICC_SUBSCRIPTION  122
5900 
5901 /**
5902  *  RIL_REQUEST_ALLOW_DATA
5903  *
5904  *  Tells the modem whether data calls are allowed or not
5905  *
5906  * "data" is int *
5907  * FIXME slotId and aid will be added.
5908  * ((int *)data)[0] is == 0 to allow data calls
5909  * ((int *)data)[0] is == 1 to disallow data calls
5910  *
5911  * "response" is NULL
5912  *
5913  *  Valid errors:
5914  *
5915  *  SUCCESS
5916  *  RADIO_NOT_AVAILABLE (radio resetting)
5917  *  NO_MEMORY
5918  *  INTERNAL_ERR
5919  *  SYSTEM_ERR
5920  *  MODEM_ERR
5921  *  INVALID_ARGUMENTS
5922  *  DEVICE_IN_USE
5923  *  INVALID_MODEM_STATE
5924  *  REQUEST_NOT_SUPPORTED
5925  *  NO_RESOURCES
5926  *  CANCELLED
5927  *
5928  */
5929 #define RIL_REQUEST_ALLOW_DATA  123
5930 
5931 /**
5932  * RIL_REQUEST_GET_HARDWARE_CONFIG
5933  *
5934  * Request all of the current hardware (modem and sim) associated
5935  * with the RIL.
5936  *
5937  * "data" is NULL
5938  *
5939  * "response" is an array of  RIL_HardwareConfig.
5940  *
5941  * Valid errors:
5942  * RADIO_NOT_AVAILABLE
5943  * REQUEST_NOT_SUPPORTED
5944  */
5945 #define RIL_REQUEST_GET_HARDWARE_CONFIG 124
5946 
5947 /**
5948  * RIL_REQUEST_SIM_AUTHENTICATION
5949  *
5950  * Returns the response of SIM Authentication through RIL to a
5951  * challenge request.
5952  *
5953  * "data" Base64 encoded string containing challenge:
5954  *      int   authContext;          P2 value of authentication command, see P2 parameter in
5955  *                                  3GPP TS 31.102 7.1.2
5956  *      char *authData;             the challenge string in Base64 format, see 3GPP
5957  *                                  TS 31.102 7.1.2
5958  *      char *aid;                  AID value, See ETSI 102.221 8.1 and 101.220 4,
5959  *                                  NULL if no value
5960  *
5961  * "response" Base64 encoded strings containing response:
5962  *      int   sw1;                  Status bytes per 3GPP TS 31.102 section 7.3
5963  *      int   sw2;
5964  *      char *simResponse;          Response in Base64 format, see 3GPP TS 31.102 7.1.2
5965  *
5966  *  Valid errors:
5967  *  RADIO_NOT_AVAILABLE
5968  *  INTERNAL_ERR
5969  *  NO_MEMORY
5970  *  NO_RESOURCES
5971  *  CANCELLED
5972  *  INVALID_MODEM_STATE
5973  *  INVALID_ARGUMENTS
5974  *  SIM_ERR
5975  *  REQUEST_NOT_SUPPORTED
5976  */
5977 #define RIL_REQUEST_SIM_AUTHENTICATION 125
5978 
5979 /**
5980  * RIL_REQUEST_GET_DC_RT_INFO
5981  *
5982  * The request is DEPRECATED, use RIL_REQUEST_GET_ACTIVITY_INFO
5983  * Requests the Data Connection Real Time Info
5984  *
5985  * "data" is NULL
5986  *
5987  * "response" is the most recent RIL_DcRtInfo
5988  *
5989  * Valid errors:
5990  *  SUCCESS
5991  *  RADIO_NOT_AVAILABLE
5992  *  REQUEST_NOT_SUPPORTED
5993  *  INTERNAL_ERR
5994  *  NO_MEMORY
5995  *  NO_RESOURCES
5996  *  CANCELLED
5997  *
5998  * See also: RIL_UNSOL_DC_RT_INFO_CHANGED
5999  */
6000 #define RIL_REQUEST_GET_DC_RT_INFO 126
6001 
6002 /**
6003  * RIL_REQUEST_SET_DC_RT_INFO_RATE
6004  *
6005  * The request is DEPRECATED
6006  * This is the minimum number of milliseconds between successive
6007  * RIL_UNSOL_DC_RT_INFO_CHANGED messages and defines the highest rate
6008  * at which RIL_UNSOL_DC_RT_INFO_CHANGED's will be sent. A value of
6009  * 0 means send as fast as possible.
6010  *
6011  * "data" The number of milliseconds as an int
6012  *
6013  * "response" is null
6014  *
6015  * Valid errors:
6016  *  SUCCESS must not fail
6017  */
6018 #define RIL_REQUEST_SET_DC_RT_INFO_RATE 127
6019 
6020 /**
6021  * RIL_REQUEST_SET_DATA_PROFILE
6022  *
6023  * Set data profile in modem
6024  * Modem should erase existed profiles from framework, and apply new profiles
6025  * "data" is a const RIL_DataProfileInfo **
6026  * "datalen" is count * sizeof(const RIL_DataProfileInfo *)
6027  * "response" is NULL
6028  *
6029  * Valid errors:
6030  *  SUCCESS
6031  *  RADIO_NOT_AVAILABLE (radio resetting)
6032  *  SUBSCRIPTION_NOT_AVAILABLE
6033  *  INTERNAL_ERR
6034  *  NO_MEMORY
6035  *  NO_RESOURCES
6036  *  CANCELLED
6037  *  REQUEST_NOT_SUPPORTED
6038  *  SIM_ABSENT
6039  */
6040 #define RIL_REQUEST_SET_DATA_PROFILE 128
6041 
6042 /**
6043  * RIL_REQUEST_SHUTDOWN
6044  *
6045  * Device is shutting down. All further commands are ignored
6046  * and RADIO_NOT_AVAILABLE must be returned.
6047  *
6048  * "data" is null
6049  * "response" is NULL
6050  *
6051  * Valid errors:
6052  *  SUCCESS
6053  *  RADIO_NOT_AVAILABLE
6054  *  OPERATION_NOT_ALLOWED
6055  *  NO_MEMORY
6056  *  INTERNAL_ERR
6057  *  SYSTEM_ERR
6058  *  REQUEST_NOT_SUPPORTED
6059  *  NO_RESOURCES
6060  *  CANCELLED
6061  */
6062 #define RIL_REQUEST_SHUTDOWN 129
6063 
6064 /**
6065  * RIL_REQUEST_GET_RADIO_CAPABILITY
6066  *
6067  * Used to get phone radio capablility.
6068  *
6069  * "data" is the RIL_RadioCapability structure
6070  *
6071  * Valid errors:
6072  *  SUCCESS
6073  *  RADIO_NOT_AVAILABLE
6074  *  OPERATION_NOT_ALLOWED
6075  *  INVALID_STATE
6076  *  REQUEST_NOT_SUPPORTED
6077  *  INTERNAL_ERR
6078  *  NO_MEMORY
6079  *  NO_RESOURCES
6080  *  CANCELLED
6081  */
6082 #define RIL_REQUEST_GET_RADIO_CAPABILITY 130
6083 
6084 /**
6085  * RIL_REQUEST_SET_RADIO_CAPABILITY
6086  *
6087  * Used to set the phones radio capability. Be VERY careful
6088  * using this request as it may cause some vendor modems to reset. Because
6089  * of the possible modem reset any RIL commands after this one may not be
6090  * processed.
6091  *
6092  * "data" is the RIL_RadioCapability structure
6093  *
6094  * "response" is the RIL_RadioCapability structure, used to feedback return status
6095  *
6096  * Valid errors:
6097  *  SUCCESS means a RIL_UNSOL_RADIO_CAPABILITY will be sent within 30 seconds.
6098  *  RADIO_NOT_AVAILABLE
6099  *  OPERATION_NOT_ALLOWED
6100  *  NO_MEMORY
6101  *  INTERNAL_ERR
6102  *  SYSTEM_ERR
6103  *  INVALID_ARGUMENTS
6104  *  MODEM_ERR
6105  *  INVALID_STATE
6106  *  REQUEST_NOT_SUPPORTED
6107  *  NO_RESOURCES
6108  *  CANCELLED
6109  */
6110 #define RIL_REQUEST_SET_RADIO_CAPABILITY 131
6111 
6112 /**
6113  * RIL_REQUEST_START_LCE
6114  *
6115  * Start Link Capacity Estimate (LCE) service if supported by the radio.
6116  *
6117  * "data" is const int *
6118  * ((const int*)data)[0] specifies the desired reporting interval (ms).
6119  * ((const int*)data)[1] specifies the LCE service mode. 1: PULL; 0: PUSH.
6120  *
6121  * "response" is the RIL_LceStatusInfo.
6122  *
6123  * Valid errors:
6124  * SUCCESS
6125  * RADIO_NOT_AVAILABLE
6126  * LCE_NOT_SUPPORTED
6127  * INTERNAL_ERR
6128  * REQUEST_NOT_SUPPORTED
6129  * NO_MEMORY
6130  * NO_RESOURCES
6131  * CANCELLED
6132  * SIM_ABSENT
6133  */
6134 #define RIL_REQUEST_START_LCE 132
6135 
6136 /**
6137  * RIL_REQUEST_STOP_LCE
6138  *
6139  * Stop Link Capacity Estimate (LCE) service, the STOP operation should be
6140  * idempotent for the radio modem.
6141  *
6142  * "response" is the RIL_LceStatusInfo.
6143  *
6144  * Valid errors:
6145  * SUCCESS
6146  * RADIO_NOT_AVAILABLE
6147  * LCE_NOT_SUPPORTED
6148  * INTERNAL_ERR
6149  * NO_MEMORY
6150  * NO_RESOURCES
6151  * CANCELLED
6152  * REQUEST_NOT_SUPPORTED
6153  *  SIM_ABSENT
6154  */
6155 #define RIL_REQUEST_STOP_LCE 133
6156 
6157 /**
6158  * RIL_REQUEST_PULL_LCEDATA
6159  *
6160  * Pull LCE service for capacity information.
6161  *
6162  * "response" is the RIL_LceDataInfo.
6163  *
6164  * Valid errors:
6165  * SUCCESS
6166  * RADIO_NOT_AVAILABLE
6167  * LCE_NOT_SUPPORTED
6168  * INTERNAL_ERR
6169  * NO_MEMORY
6170  * NO_RESOURCES
6171  * CANCELLED
6172  * REQUEST_NOT_SUPPORTED
6173  *  SIM_ABSENT
6174  */
6175 #define RIL_REQUEST_PULL_LCEDATA 134
6176 
6177 /**
6178  * RIL_REQUEST_GET_ACTIVITY_INFO
6179  *
6180  * Get modem activity information for power consumption estimation.
6181  *
6182  * Request clear-on-read statistics information that is used for
6183  * estimating the per-millisecond power consumption of the cellular
6184  * modem.
6185  *
6186  * "data" is null
6187  * "response" is const RIL_ActivityStatsInfo *
6188  *
6189  * Valid errors:
6190  *
6191  * SUCCESS
6192  * RADIO_NOT_AVAILABLE (radio resetting)
6193  * NO_MEMORY
6194  * INTERNAL_ERR
6195  * SYSTEM_ERR
6196  * MODEM_ERR
6197  * NOT_PROVISIONED
6198  * REQUEST_NOT_SUPPORTED
6199  * NO_RESOURCES CANCELLED
6200  */
6201 #define RIL_REQUEST_GET_ACTIVITY_INFO 135
6202 
6203 /**
6204  * RIL_REQUEST_SET_CARRIER_RESTRICTIONS
6205  *
6206  * Set carrier restrictions for this sim slot. Expected modem behavior:
6207  *  If never receives this command
6208  *  - Must allow all carriers
6209  *  Receives this command with data being NULL
6210  *  - Must allow all carriers. If a previously allowed SIM is present, modem must not reload
6211  *    the SIM. If a previously disallowed SIM is present, reload the SIM and notify Android.
6212  *  Receives this command with a list of carriers
6213  *  - Only allow specified carriers, persist across power cycles and FDR. If a present SIM
6214  *    is in the allowed list, modem must not reload the SIM. If a present SIM is *not* in
6215  *    the allowed list, modem must detach from the registered network and only keep emergency
6216  *    service, and notify Android SIM refresh reset with new SIM state being
6217  *    RIL_CARDSTATE_RESTRICTED. Emergency service must be enabled.
6218  *
6219  * "data" is const RIL_CarrierRestrictions *
6220  * A list of allowed carriers and possibly a list of excluded carriers.
6221  * If data is NULL, means to clear previous carrier restrictions and allow all carriers
6222  *
6223  * "response" is int *
6224  * ((int *)data)[0] contains the number of allowed carriers which have been set correctly.
6225  * On success, it should match the length of list data->allowed_carriers.
6226  * If data is NULL, the value must be 0.
6227  *
6228  * Valid errors:
6229  *  RIL_E_SUCCESS
6230  *  RIL_E_INVALID_ARGUMENTS
6231  *  RIL_E_RADIO_NOT_AVAILABLE
6232  *  RIL_E_REQUEST_NOT_SUPPORTED
6233  *  INTERNAL_ERR
6234  *  NO_MEMORY
6235  *  NO_RESOURCES
6236  *  CANCELLED
6237  */
6238 #define RIL_REQUEST_SET_CARRIER_RESTRICTIONS 136
6239 
6240 /**
6241  * RIL_REQUEST_GET_CARRIER_RESTRICTIONS
6242  *
6243  * Get carrier restrictions for this sim slot. Expected modem behavior:
6244  *  Return list of allowed carriers, or null if all carriers are allowed.
6245  *
6246  * "data" is NULL
6247  *
6248  * "response" is const RIL_CarrierRestrictions *.
6249  * If response is NULL, it means all carriers are allowed.
6250  *
6251  * Valid errors:
6252  *  RIL_E_SUCCESS
6253  *  RIL_E_RADIO_NOT_AVAILABLE
6254  *  RIL_E_REQUEST_NOT_SUPPORTED
6255  *  INTERNAL_ERR
6256  *  NO_MEMORY
6257  *  NO_RESOURCES
6258  *  CANCELLED
6259  */
6260 #define RIL_REQUEST_GET_CARRIER_RESTRICTIONS 137
6261 
6262 /**
6263  * RIL_REQUEST_SEND_DEVICE_STATE
6264  *
6265  * Send the updated device state.
6266  * Modem can perform power saving based on the provided device state.
6267  * "data" is const int *
6268  * ((const int*)data)[0] A RIL_DeviceStateType that specifies the device state type.
6269  * ((const int*)data)[1] Specifies the state. See RIL_DeviceStateType for the definition of each
6270  *                       type.
6271  *
6272  * "datalen" is count * sizeof(const RIL_DeviceState *)
6273  * "response" is NULL
6274  *
6275  * Valid errors:
6276  *  SUCCESS
6277  *  RADIO_NOT_AVAILABLE (radio resetting)
6278  *  NO_MEMORY
6279  *  INTERNAL_ERR
6280  *  SYSTEM_ERR
6281  *  INVALID_ARGUMENTS
6282  *  REQUEST_NOT_SUPPORTED
6283  *  NO_RESOURCES
6284  *  CANCELLED
6285  */
6286 #define RIL_REQUEST_SEND_DEVICE_STATE 138
6287 
6288 /**
6289  * RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER
6290  *
6291  * Set the unsolicited response filter
6292  * This is used to prevent unnecessary application processor
6293  * wake up for power saving purposes by suppressing the
6294  * unsolicited responses in certain scenarios.
6295  *
6296  * "data" is an int *
6297  *
6298  * ((int *)data)[0] is a 32-bit bitmask of RIL_UnsolicitedResponseFilter
6299  *
6300  * "response" is NULL
6301  *
6302  * Valid errors:
6303  *  SUCCESS
6304  *  INVALID_ARGUMENTS (e.g. the requested filter doesn't exist)
6305  *  RADIO_NOT_AVAILABLE (radio resetting)
6306  *  NO_MEMORY
6307  *  INTERNAL_ERR
6308  *  SYSTEM_ERR
6309  *  REQUEST_NOT_SUPPORTED
6310  *  NO_RESOURCES
6311  *  CANCELLED
6312  */
6313 #define RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER 139
6314 
6315  /**
6316   * RIL_REQUEST_SET_SIM_CARD_POWER
6317   *
6318   * Set SIM card power up or down
6319   *
6320   * Request is equivalent to inserting and removing the card, with
6321   * an additional effect where the ability to detect card removal/insertion
6322   * is disabled when the SIM card is powered down.
6323   *
6324   * This will generate RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED
6325   * as if the SIM had been inserted or removed.
6326   *
6327   * "data" is int *
6328   * ((int *)data)[0] is 1 for "SIM POWER UP"
6329   * ((int *)data)[0] is 0 for "SIM POWER DOWN"
6330   *
6331   * "response" is NULL
6332   *
6333   * Valid errors:
6334   *  SUCCESS
6335   *  RADIO_NOT_AVAILABLE
6336   *  REQUEST_NOT_SUPPORTED
6337   *  SIM_ABSENT
6338   *  INVALID_ARGUMENTS
6339   *  INTERNAL_ERR
6340   *  NO_MEMORY
6341   *  NO_RESOURCES
6342   *  CANCELLED
6343   */
6344 #define RIL_REQUEST_SET_SIM_CARD_POWER 140
6345 
6346 /**
6347  * RIL_REQUEST_SET_CARRIER_INFO_IMSI_ENCRYPTION
6348  *
6349  * Provide Carrier specific information to the modem that will be used to
6350  * encrypt the IMSI and IMPI. Sent by the framework during boot, carrier
6351  * switch and everytime we receive a new certificate.
6352  *
6353  * "data" is the RIL_CarrierInfoForImsiEncryption * structure.
6354  *
6355  * "response" is NULL
6356  *
6357  * Valid errors:
6358  *  RIL_E_SUCCESS
6359  *  RIL_E_RADIO_NOT_AVAILABLE
6360  *  SIM_ABSENT
6361  *  RIL_E_REQUEST_NOT_SUPPORTED
6362  *  INVALID_ARGUMENTS
6363  *  MODEM_INTERNAL_FAILURE
6364  *  INTERNAL_ERR
6365  *  NO_MEMORY
6366  *  NO_RESOURCES
6367  *  CANCELLED
6368  */
6369 #define RIL_REQUEST_SET_CARRIER_INFO_IMSI_ENCRYPTION 141
6370 
6371 /**
6372  * RIL_REQUEST_START_NETWORK_SCAN
6373  *
6374  * Starts a new network scan
6375  *
6376  * Request to start a network scan with specified radio access networks with frequency bands and/or
6377  * channels.
6378  *
6379  * "data" is a const RIL_NetworkScanRequest *.
6380  * "response" is NULL
6381  *
6382  * Valid errors:
6383  *  SUCCESS
6384  *  RADIO_NOT_AVAILABLE
6385  *  OPERATION_NOT_ALLOWED
6386  *  DEVICE_IN_USE
6387  *  INTERNAL_ERR
6388  *  NO_MEMORY
6389  *  MODEM_ERR
6390  *  INVALID_ARGUMENTS
6391  *  REQUEST_NOT_SUPPORTED
6392  *  NO_RESOURCES
6393  *  CANCELLED
6394  *
6395  */
6396 #define RIL_REQUEST_START_NETWORK_SCAN 142
6397 
6398 /**
6399  * RIL_REQUEST_STOP_NETWORK_SCAN
6400  *
6401  * Stops an ongoing network scan
6402  *
6403  * Request to stop the ongoing network scan. Since the modem can only perform one scan at a time,
6404  * there is no parameter for this request.
6405  *
6406  * "data" is NULL
6407  * "response" is NULL
6408  *
6409  * Valid errors:
6410  *  SUCCESS
6411  *  INTERNAL_ERR
6412  *  MODEM_ERR
6413  *  NO_MEMORY
6414  *  NO_RESOURCES
6415  *  CANCELLED
6416  *  REQUEST_NOT_SUPPORTED
6417  *
6418  */
6419 #define RIL_REQUEST_STOP_NETWORK_SCAN 143
6420 
6421 /**
6422  * RIL_REQUEST_START_KEEPALIVE
6423  *
6424  * Start a keepalive session
6425  *
6426  * Request that the modem begin sending keepalive packets on a particular
6427  * data call, with a specified source, destination, and format.
6428  *
6429  * "data" is a const RIL_RequestKeepalive
6430  * "response" is RIL_KeepaliveStatus with a valid "handle"
6431  *
6432  * Valid errors:
6433  *  SUCCESS
6434  *  NO_RESOURCES
6435  *  INVALID_ARGUMENTS
6436  *
6437  */
6438 #define RIL_REQUEST_START_KEEPALIVE 144
6439 
6440 /**
6441  * RIL_REQUEST_STOP_KEEPALIVE
6442  *
6443  * Stops an ongoing keepalive session
6444  *
6445  * Requests that a keepalive session with the given handle be stopped.
6446  * there is no parameter for this request.
6447  *
6448  * "data" is an integer handle
6449  * "response" is NULL
6450  *
6451  * Valid errors:
6452  *  SUCCESS
6453  *  INVALID_ARGUMENTS
6454  *
6455  */
6456 #define RIL_REQUEST_STOP_KEEPALIVE 145
6457 
6458 /**
6459  * RIL_REQUEST_GET_MODEM_STACK_STATUS
6460  *
6461  * Request status of a logical modem
6462  *
6463  * Valid errors:
6464  *  SUCCESS
6465  *  RADIO_NOT_AVAILABLE
6466  *  MODEM_ERR
6467  *
6468  */
6469 #define RIL_REQUEST_GET_MODEM_STACK_STATUS 146
6470 
6471 /**
6472  * @param info Response info struct containing response type, serial no. and error
6473  * @param networkTypeBitmap a 32-bit bitmap of RadioAccessFamily.
6474  *
6475  * Valid errors returned:
6476  *   RadioError:NONE
6477  *   RadioError:RADIO_NOT_AVAILABLE
6478  *   RadioError:INTERNAL_ERR
6479  *   RadioError:INVALID_ARGUMENTS
6480  *   RadioError:MODEM_ERR
6481  *   RadioError:REQUEST_NOT_SUPPORTED
6482  *   RadioError:NO_RESOURCES
6483  */
6484 #define RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE_BITMAP 147
6485 
6486 /**
6487  * Callback of IRadio.setPreferredNetworkTypeBitmap(int, bitfield<RadioAccessFamily>)
6488  *
6489  * @param info Response info struct containing response type, serial no. and error
6490  *
6491  * Valid errors returned:
6492  *   RadioError:NONE
6493  *   RadioError:RADIO_NOT_AVAILABLE
6494  *   RadioError:OPERATION_NOT_ALLOWED
6495  *   RadioError:MODE_NOT_SUPPORTED
6496  *   RadioError:INTERNAL_ERR
6497  *   RadioError:INVALID_ARGUMENTS
6498  *   RadioError:MODEM_ERR
6499  *   RadioError:REQUEST_NOT_SUPPORTED
6500  *   RadioError:NO_RESOURCES
6501  */
6502 #define RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE_BITMAP 148
6503 
6504 /**
6505  * RIL_REQUEST_EMERGENCY_DIAL
6506  *
6507  * Initiate emergency voice call, with zero or more emergency service category(s), zero or
6508  * more emergency Uniform Resource Names (URN), and routing information for handling the call.
6509  * Android uses this request to make its emergency call instead of using @1.0::IRadio.dial
6510  * if the 'address' in the 'dialInfo' field is identified as an emergency number by Android.
6511  *
6512  * In multi-sim scenario, if the emergency number is from a specific subscription, this radio
6513  * request is sent through the IRadio service that serves the subscription, no matter of the
6514  * PUK/PIN state of the subscription and the service state of the radio.
6515  *
6516  * Some countries or carriers require some emergency numbers that must be handled with normal
6517  * call routing or emergency routing. If the 'routing' field is specified as
6518  * @1.4::EmergencyNumberRouting#NORMAL, the implementation must use normal call routing to
6519  * handle the call; if it is specified as @1.4::EmergencyNumberRouting#EMERGENCY, the
6520  * implementation must use emergency routing to handle the call; if it is
6521  * @1.4::EmergencyNumberRouting#UNKNOWN, Android does not know how to handle the call.
6522  *
6523  * If the dialed emergency number does not have a specified emergency service category, the
6524  * 'categories' field is set to @1.4::EmergencyServiceCategory#UNSPECIFIED; if the dialed
6525  * emergency number does not have specified emergency Uniform Resource Names, the 'urns' field
6526  * is set to an empty list. If the underlying technology used to request emergency services
6527  * does not support the emergency service category or emergency uniform resource names, the
6528  * field 'categories' or 'urns' may be ignored.
6529  *
6530  * 'fromEmergencyDialer' indicates if this request originated from emergency dialer/shortcut,
6531  * which means an explicit intent from the user to dial an emergency number. The modem must
6532  * treat this as an actual emergency dial and not try to disambiguate.
6533  *
6534  * If 'isTesting' is true, this request is for testing purpose, and must not be sent to a real
6535  * emergency service; otherwise it's for a real emergency call request.
6536  * Valid errors:
6537  *  NONE
6538  *  RADIO_NOT_AVAILABLE (radio resetting)
6539  *  DIAL_MODIFIED_TO_USSD
6540  *  DIAL_MODIFIED_TO_SS
6541  *  DIAL_MODIFIED_TO_DIAL
6542  *  INVALID_ARGUMENTS
6543  *  NO_RESOURCES
6544  *  INTERNAL_ERR
6545  *  FDN_CHECK_FAILURE
6546  *  MODEM_ERR
6547  *  NO_SUBSCRIPTION
6548  *  NO_NETWORK_FOUND
6549  *  INVALID_CALL_ID
6550  *  DEVICE_IN_USE
6551  *  ABORTED
6552  *  INVALID_MODEM_STATE
6553  */
6554 #define RIL_REQUEST_EMERGENCY_DIAL 149
6555 
6556 /**
6557  * Specify which bands modem's background scan must act on.
6558  * If specifyChannels is true, it only scans bands specified in specifiers.
6559  * If specifyChannels is false, it scans all bands.
6560  *
6561  * For example, CBRS is only on LTE band 48. By specifying this band,
6562  * modem saves more power.
6563  *
6564  * Valid errors:
6565  *  SUCCESS
6566  *  RADIO_NOT_AVAILABLE
6567  *  INTERNAL_ERR
6568  *
6569  */
6570 #define RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS 150
6571 
6572 /**
6573  * RIL_REQUEST_ENABLE_MODEM
6574  *
6575  * Enable a logical modem
6576  *
6577  * Valid errors:
6578  *  SUCCESS
6579  *  RADIO_NOT_AVAILABLE
6580  *  MODEM_ERR
6581  *
6582  */
6583 #define RIL_REQUEST_ENABLE_MODEM 151
6584 
6585 /**
6586  * RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA
6587  *
6588  * Sets the signal strength reporting criteria.
6589  *
6590  * The resulting reporting rules are the AND of all the supplied criteria. For each RAN
6591  * The hysteresisDb apply to only the following measured quantities:
6592  * -GERAN    - RSSI
6593  * -CDMA2000 - RSSI
6594  * -UTRAN    - RSCP
6595  * -EUTRAN   - RSRP/RSRQ/RSSNR
6596  *
6597  * The thresholds apply to only the following measured quantities:
6598  * -GERAN    - RSSI
6599  * -CDMA2000 - RSSI
6600  * -UTRAN    - RSCP
6601  * -EUTRAN   - RSRP/RSRQ/RSSNR
6602  * -NGRAN    - SSRSRP/SSRSRQ/SSSINR
6603  *
6604  * Note: Reporting criteria must be individually set for each RAN. For any unset reporting
6605  * criteria, the value is implementation-defined.
6606  *
6607  * Note: @1.5::SignalThresholdInfo includes fields 'hysteresisDb', 'hysteresisMs',
6608  * and 'thresholds'. As this mechanism generally only constrains reports based on one
6609  * measured quantity per RAN, if multiple measured quantities must be used to trigger a report
6610  * for a given RAN, the only valid field may be hysteresisMs: hysteresisDb and thresholds must
6611  * be set to zero and length zero respectively. If either hysteresisDb or thresholds is set,
6612  * then reports shall only be triggered by the respective measured quantity, subject to the
6613  * applied constraints.
6614  *
6615  * Valid errors returned:
6616  *   RadioError:NONE
6617  *   RadioError:INVALID_ARGUMENTS
6618  *   RadioError:RADIO_NOT_AVAILABLE
6619  */
6620 #define RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA 152
6621 
6622 /**
6623  * RIL_REQUEST_SET_LINK_CAPACITY_REPORTING_CRITERIA
6624  *
6625  * Sets the link capacity reporting criteria. The resulting reporting criteria are the AND of
6626  * all the supplied criteria.
6627  *
6628  * Note: Reporting criteria ust be individually set for each RAN. If unset, reporting criteria
6629  * for that RAN are implementation-defined.
6630  *
6631  * Valid errors returned:
6632  *   RadioError:NONE
6633  *   RadioError:INVALID_ARGUMENTS
6634  *   RadioError:RADIO_NOT_AVAILABLE
6635  *   RadioError:INTERNAL_ERR
6636  */
6637 #define RIL_REQUEST_SET_LINK_CAPACITY_REPORTING_CRITERIA 153
6638 
6639 /**
6640  * RIL_REQUEST_ENABLE_UICC_APPLICATIONS
6641  *
6642  * Enable or disable uicc applications.
6643  *
6644  * Valid errors:
6645  *  SUCCESS
6646  *  RADIO_NOT_AVAILABLE
6647  *  SIM_ABSENT
6648  *  INTERNAL_ERR
6649  *  REQUEST_NOT_SUPPORTED
6650  */
6651 #define RIL_REQUEST_ENABLE_UICC_APPLICATIONS 154
6652 
6653 /**
6654  * RIL_REQUEST_ARE_UICC_APPLICATIONS_ENABLED
6655  *
6656  * Whether uicc applications are enabled.
6657  *
6658  * Response: a boolean of enable or not.
6659  *
6660  * Valid errors:
6661  *  SUCCESS
6662  *  RADIO_NOT_AVAILABLE
6663  *  SIM_ABSENT
6664  *  INTERNAL_ERR
6665  *  REQUEST_NOT_SUPPORTED
6666  */
6667 #define RIL_REQUEST_ARE_UICC_APPLICATIONS_ENABLED 155
6668 
6669 /**
6670  * RIL_REQUEST_ENTER_SIM_DEPERSONALIZATION
6671  *
6672  * Requests that sim personlization be deactivated
6673  *
6674  * "data" is const char **
6675  * ((const char **)(data))[0]] is  sim depersonlization code
6676  *
6677  * "response" is int *
6678  * ((int *)response)[0] is the number of retries remaining,
6679  * or -1 if number of retries are infinite.
6680  *
6681  * Valid errors:
6682  *
6683  *  SUCCESS
6684  *  RADIO_NOT_AVAILABLE (radio resetting)
6685  *  PASSWORD_INCORRECT
6686  *  SIM_ABSENT (code is invalid)
6687  *  INTERNAL_ERR
6688  *  NO_MEMORY
6689  *  NO_RESOURCES
6690  *  CANCELLED
6691  *  REQUEST_NOT_SUPPORTED
6692  */
6693 
6694 #define RIL_REQUEST_ENTER_SIM_DEPERSONALIZATION 156
6695 
6696 /**
6697  * RIL_REQUEST_CDMA_SEND_SMS_EXPECT_MORE
6698  *
6699  * Send a CDMA SMS message
6700  *
6701  * "data" is const RIL_CDMA_SMS_Message *
6702  *
6703  * "response" is a const RIL_SMS_Response *
6704  *
6705  * Based on the return error, caller decides to resend if sending sms
6706  * fails. The CDMA error class is derived as follows,
6707  * SUCCESS is error class 0 (no error)
6708  * SMS_SEND_FAIL_RETRY is error class 2 (temporary failure)
6709  *
6710  * Valid errors:
6711  *  SUCCESS
6712  *  RADIO_NOT_AVAILABLE
6713  *  SMS_SEND_FAIL_RETRY
6714  *  NETWORK_REJECT
6715  *  INVALID_STATE
6716  *  INVALID_ARGUMENTS
6717  *  NO_MEMORY
6718  *  REQUEST_RATE_LIMITED
6719  *  INVALID_SMS_FORMAT
6720  *  SYSTEM_ERR
6721  *  FDN_CHECK_FAILURE
6722  *  MODEM_ERR
6723  *  NETWORK_ERR
6724  *  ENCODING_ERR
6725  *  INVALID_SMSC_ADDRESS
6726  *  OPERATION_NOT_ALLOWED
6727  *  NO_RESOURCES
6728  *  CANCELLED
6729  *  REQUEST_NOT_SUPPORTED
6730  *  MODE_NOT_SUPPORTED
6731  *  SIM_ABSENT
6732  */
6733 #define RIL_REQUEST_CDMA_SEND_SMS_EXPECT_MORE 157
6734 
6735 /***********************************************************************/
6736 
6737 /**
6738  * RIL_RESPONSE_ACKNOWLEDGEMENT
6739  *
6740  * This is used by Asynchronous solicited messages and Unsolicited messages
6741  * to acknowledge the receipt of those messages in RIL.java so that the ack
6742  * can be used to let ril.cpp to release wakelock.
6743  *
6744  * Valid errors
6745  * SUCCESS
6746  * RADIO_NOT_AVAILABLE
6747  */
6748 
6749 #define RIL_RESPONSE_ACKNOWLEDGEMENT 800
6750 
6751 /***********************************************************************/
6752 
6753 
6754 #define RIL_UNSOL_RESPONSE_BASE 1000
6755 
6756 /**
6757  * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED
6758  *
6759  * Indicate when value of RIL_RadioState has changed.
6760  *
6761  * Callee will invoke RIL_RadioStateRequest method on main thread
6762  *
6763  * "data" is NULL
6764  */
6765 
6766 #define RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED 1000
6767 
6768 
6769 /**
6770  * RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED
6771  *
6772  * Indicate when call state has changed
6773  *
6774  * Callee will invoke RIL_REQUEST_GET_CURRENT_CALLS on main thread
6775  *
6776  * "data" is NULL
6777  *
6778  * Response should be invoked on, for example,
6779  * "RING", "BUSY", "NO CARRIER", and also call state
6780  * transitions (DIALING->ALERTING ALERTING->ACTIVE)
6781  *
6782  * Redundent or extraneous invocations are tolerated
6783  */
6784 #define RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED 1001
6785 
6786 
6787 /**
6788  * RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED
6789  *
6790  * Called when the voice network state changed
6791  *
6792  * Callee will invoke the following requests on main thread:
6793  *
6794  * RIL_REQUEST_VOICE_REGISTRATION_STATE
6795  * RIL_REQUEST_OPERATOR
6796  *
6797  * "data" is NULL
6798  *
6799  * FIXME should this happen when SIM records are loaded? (eg, for
6800  * EONS)
6801  */
6802 #define RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED 1002
6803 
6804 /**
6805  * RIL_UNSOL_RESPONSE_NEW_SMS
6806  *
6807  * Called when new SMS is received.
6808  *
6809  * "data" is const char *
6810  * This is a pointer to a string containing the PDU of an SMS-DELIVER
6811  * as an ascii string of hex digits. The PDU starts with the SMSC address
6812  * per TS 27.005 (+CMT:)
6813  *
6814  * Callee will subsequently confirm the receipt of thei SMS with a
6815  * RIL_REQUEST_SMS_ACKNOWLEDGE
6816  *
6817  * No new RIL_UNSOL_RESPONSE_NEW_SMS
6818  * or RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT messages should be sent until a
6819  * RIL_REQUEST_SMS_ACKNOWLEDGE has been received
6820  */
6821 
6822 #define RIL_UNSOL_RESPONSE_NEW_SMS 1003
6823 
6824 /**
6825  * RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT
6826  *
6827  * Called when new SMS Status Report is received.
6828  *
6829  * "data" is const char *
6830  * This is a pointer to a string containing the PDU of an SMS-STATUS-REPORT
6831  * as an ascii string of hex digits. The PDU starts with the SMSC address
6832  * per TS 27.005 (+CDS:).
6833  *
6834  * Callee will subsequently confirm the receipt of the SMS with a
6835  * RIL_REQUEST_SMS_ACKNOWLEDGE
6836  *
6837  * No new RIL_UNSOL_RESPONSE_NEW_SMS
6838  * or RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT messages should be sent until a
6839  * RIL_REQUEST_SMS_ACKNOWLEDGE has been received
6840  */
6841 
6842 #define RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT 1004
6843 
6844 /**
6845  * RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM
6846  *
6847  * Called when new SMS has been stored on SIM card
6848  *
6849  * "data" is const int *
6850  * ((const int *)data)[0] contains the slot index on the SIM that contains
6851  * the new message
6852  */
6853 
6854 #define RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM 1005
6855 
6856 /**
6857  * RIL_UNSOL_ON_USSD
6858  *
6859  * Called when a new USSD message is received.
6860  *
6861  * "data" is const char **
6862  * ((const char **)data)[0] points to a type code, which is
6863  *  one of these string values:
6864  *      "0"   USSD-Notify -- text in ((const char **)data)[1]
6865  *      "1"   USSD-Request -- text in ((const char **)data)[1]
6866  *      "2"   Session terminated by network
6867  *      "3"   other local client (eg, SIM Toolkit) has responded
6868  *      "4"   Operation not supported
6869  *      "5"   Network timeout
6870  *
6871  * The USSD session is assumed to persist if the type code is "1", otherwise
6872  * the current session (if any) is assumed to have terminated.
6873  *
6874  * ((const char **)data)[1] points to a message string if applicable, which
6875  * should always be in UTF-8.
6876  */
6877 #define RIL_UNSOL_ON_USSD 1006
6878 /* Previously #define RIL_UNSOL_ON_USSD_NOTIFY 1006   */
6879 
6880 /**
6881  * RIL_UNSOL_ON_USSD_REQUEST
6882  *
6883  * Obsolete. Send via RIL_UNSOL_ON_USSD
6884  */
6885 #define RIL_UNSOL_ON_USSD_REQUEST 1007
6886 
6887 /**
6888  * RIL_UNSOL_NITZ_TIME_RECEIVED
6889  *
6890  * Called when radio has received a NITZ time message
6891  *
6892  * "data" is const char * pointing to NITZ time string
6893  * in the form "yy/mm/dd,hh:mm:ss(+/-)tz,dt"
6894  */
6895 #define RIL_UNSOL_NITZ_TIME_RECEIVED  1008
6896 
6897 /**
6898  * RIL_UNSOL_SIGNAL_STRENGTH
6899  *
6900  * Radio may report signal strength rather han have it polled.
6901  *
6902  * "data" is a const RIL_SignalStrength *
6903  */
6904 #define RIL_UNSOL_SIGNAL_STRENGTH  1009
6905 
6906 
6907 /**
6908  * RIL_UNSOL_DATA_CALL_LIST_CHANGED
6909  *
6910  * "data" is an array of RIL_Data_Call_Response_v6 identical to that
6911  * returned by RIL_REQUEST_DATA_CALL_LIST. It is the complete list
6912  * of current data contexts including new contexts that have been
6913  * activated. A data call is only removed from this list when the
6914  * framework sends a RIL_REQUEST_DEACTIVATE_DATA_CALL or the radio
6915  * is powered off/on.
6916  *
6917  * See also: RIL_REQUEST_DATA_CALL_LIST
6918  */
6919 
6920 #define RIL_UNSOL_DATA_CALL_LIST_CHANGED 1010
6921 
6922 /**
6923  * RIL_UNSOL_SUPP_SVC_NOTIFICATION
6924  *
6925  * Reports supplementary service related notification from the network.
6926  *
6927  * "data" is a const RIL_SuppSvcNotification *
6928  *
6929  */
6930 
6931 #define RIL_UNSOL_SUPP_SVC_NOTIFICATION 1011
6932 
6933 /**
6934  * RIL_UNSOL_STK_SESSION_END
6935  *
6936  * Indicate when STK session is terminated by SIM.
6937  *
6938  * "data" is NULL
6939  */
6940 #define RIL_UNSOL_STK_SESSION_END 1012
6941 
6942 /**
6943  * RIL_UNSOL_STK_PROACTIVE_COMMAND
6944  *
6945  * Indicate when SIM issue a STK proactive command to applications
6946  *
6947  * "data" is a const char * containing SAT/USAT proactive command
6948  * in hexadecimal format string starting with command tag
6949  *
6950  */
6951 #define RIL_UNSOL_STK_PROACTIVE_COMMAND 1013
6952 
6953 /**
6954  * RIL_UNSOL_STK_EVENT_NOTIFY
6955  *
6956  * Indicate when SIM notifies applcations some event happens.
6957  * Generally, application does not need to have any feedback to
6958  * SIM but shall be able to indicate appropriate messages to users.
6959  *
6960  * "data" is a const char * containing SAT/USAT commands or responses
6961  * sent by ME to SIM or commands handled by ME, in hexadecimal format string
6962  * starting with first byte of response data or command tag
6963  *
6964  */
6965 #define RIL_UNSOL_STK_EVENT_NOTIFY 1014
6966 
6967 /**
6968  * RIL_UNSOL_STK_CALL_SETUP
6969  *
6970  * Indicate when SIM wants application to setup a voice call.
6971  *
6972  * "data" is const int *
6973  * ((const int *)data)[0] contains timeout value (in milliseconds)
6974  */
6975 #define RIL_UNSOL_STK_CALL_SETUP 1015
6976 
6977 /**
6978  * RIL_UNSOL_SIM_SMS_STORAGE_FULL
6979  *
6980  * Indicates that SMS storage on the SIM is full.  Sent when the network
6981  * attempts to deliver a new SMS message.  Messages cannot be saved on the
6982  * SIM until space is freed.  In particular, incoming Class 2 messages
6983  * cannot be stored.
6984  *
6985  * "data" is null
6986  *
6987  */
6988 #define RIL_UNSOL_SIM_SMS_STORAGE_FULL 1016
6989 
6990 /**
6991  * RIL_UNSOL_SIM_REFRESH
6992  *
6993  * Indicates that file(s) on the SIM have been updated, or the SIM
6994  * has been reinitialized.
6995  *
6996  * In the case where RIL is version 6 or older:
6997  * "data" is an int *
6998  * ((int *)data)[0] is a RIL_SimRefreshResult.
6999  * ((int *)data)[1] is the EFID of the updated file if the result is
7000  * SIM_FILE_UPDATE or NULL for any other result.
7001  *
7002  * In the case where RIL is version 7:
7003  * "data" is a RIL_SimRefreshResponse_v7 *
7004  *
7005  * Note: If the SIM state changes as a result of the SIM refresh (eg,
7006  * SIM_READY -> SIM_LOCKED_OR_ABSENT), RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED
7007  * should be sent.
7008  */
7009 #define RIL_UNSOL_SIM_REFRESH 1017
7010 
7011 /**
7012  * RIL_UNSOL_CALL_RING
7013  *
7014  * Ring indication for an incoming call (eg, RING or CRING event).
7015  * There must be at least one RIL_UNSOL_CALL_RING at the beginning
7016  * of a call and sending multiple is optional. If the system property
7017  * ro.telephony.call_ring.multiple is false then the upper layers
7018  * will generate the multiple events internally. Otherwise the vendor
7019  * ril must generate multiple RIL_UNSOL_CALL_RING if
7020  * ro.telephony.call_ring.multiple is true or if it is absent.
7021  *
7022  * The rate of these events is controlled by ro.telephony.call_ring.delay
7023  * and has a default value of 3000 (3 seconds) if absent.
7024  *
7025  * "data" is null for GSM
7026  * "data" is const RIL_CDMA_SignalInfoRecord * if CDMA
7027  */
7028 #define RIL_UNSOL_CALL_RING 1018
7029 
7030 /**
7031  * RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED
7032  *
7033  * Indicates that SIM state changes.
7034  *
7035  * Callee will invoke RIL_REQUEST_GET_SIM_STATUS on main thread
7036 
7037  * "data" is null
7038  */
7039 #define RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED 1019
7040 
7041 /**
7042  * RIL_UNSOL_RESPONSE_CDMA_NEW_SMS
7043  *
7044  * Called when new CDMA SMS is received
7045  *
7046  * "data" is const RIL_CDMA_SMS_Message *
7047  *
7048  * Callee will subsequently confirm the receipt of the SMS with
7049  * a RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
7050  *
7051  * No new RIL_UNSOL_RESPONSE_CDMA_NEW_SMS should be sent until
7052  * RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE has been received
7053  *
7054  */
7055 #define RIL_UNSOL_RESPONSE_CDMA_NEW_SMS 1020
7056 
7057 /**
7058  * RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS
7059  *
7060  * Called when new Broadcast SMS is received
7061  *
7062  * "data" can be one of the following:
7063  * If received from GSM network, "data" is const char of 88 bytes
7064  * which indicates each page of a CBS Message sent to the MS by the
7065  * BTS as coded in 3GPP 23.041 Section 9.4.1.2.
7066  * If received from UMTS network, "data" is const char of 90 up to 1252
7067  * bytes which contain between 1 and 15 CBS Message pages sent as one
7068  * packet to the MS by the BTS as coded in 3GPP 23.041 Section 9.4.2.2.
7069  *
7070  */
7071 #define RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS 1021
7072 
7073 /**
7074  * RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL
7075  *
7076  * Indicates that SMS storage on the RUIM is full.  Messages
7077  * cannot be saved on the RUIM until space is freed.
7078  *
7079  * "data" is null
7080  *
7081  */
7082 #define RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL 1022
7083 
7084 /**
7085  * RIL_UNSOL_RESTRICTED_STATE_CHANGED
7086  *
7087  * Indicates a restricted state change (eg, for Domain Specific Access Control).
7088  *
7089  * Radio need send this msg after radio off/on cycle no matter it is changed or not.
7090  *
7091  * "data" is an int *
7092  * ((int *)data)[0] contains a bitmask of RIL_RESTRICTED_STATE_* values.
7093  */
7094 #define RIL_UNSOL_RESTRICTED_STATE_CHANGED 1023
7095 
7096 /**
7097  * RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE
7098  *
7099  * Indicates that the radio system selection module has
7100  * autonomously entered emergency callback mode.
7101  *
7102  * "data" is null
7103  *
7104  */
7105 #define RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE 1024
7106 
7107 /**
7108  * RIL_UNSOL_CDMA_CALL_WAITING
7109  *
7110  * Called when CDMA radio receives a call waiting indication.
7111  *
7112  * "data" is const RIL_CDMA_CallWaiting *
7113  *
7114  */
7115 #define RIL_UNSOL_CDMA_CALL_WAITING 1025
7116 
7117 /**
7118  * RIL_UNSOL_CDMA_OTA_PROVISION_STATUS
7119  *
7120  * Called when CDMA radio receives an update of the progress of an
7121  * OTASP/OTAPA call.
7122  *
7123  * "data" is const int *
7124  *  For CDMA this is an integer OTASP/OTAPA status listed in
7125  *  RIL_CDMA_OTA_ProvisionStatus.
7126  *
7127  */
7128 #define RIL_UNSOL_CDMA_OTA_PROVISION_STATUS 1026
7129 
7130 /**
7131  * RIL_UNSOL_CDMA_INFO_REC
7132  *
7133  * Called when CDMA radio receives one or more info recs.
7134  *
7135  * "data" is const RIL_CDMA_InformationRecords *
7136  *
7137  */
7138 #define RIL_UNSOL_CDMA_INFO_REC 1027
7139 
7140 /**
7141  * RIL_UNSOL_OEM_HOOK_RAW
7142  *
7143  * This is for OEM specific use.
7144  *
7145  * "data" is a byte[]
7146  */
7147 #define RIL_UNSOL_OEM_HOOK_RAW 1028
7148 
7149 /**
7150  * RIL_UNSOL_RINGBACK_TONE
7151  *
7152  * Indicates that nework doesn't have in-band information,  need to
7153  * play out-band tone.
7154  *
7155  * "data" is an int *
7156  * ((int *)data)[0] == 0 for stop play ringback tone.
7157  * ((int *)data)[0] == 1 for start play ringback tone.
7158  */
7159 #define RIL_UNSOL_RINGBACK_TONE 1029
7160 
7161 /**
7162  * RIL_UNSOL_RESEND_INCALL_MUTE
7163  *
7164  * Indicates that framework/application need reset the uplink mute state.
7165  *
7166  * There may be situations where the mute state becomes out of sync
7167  * between the application and device in some GSM infrastructures.
7168  *
7169  * "data" is null
7170  */
7171 #define RIL_UNSOL_RESEND_INCALL_MUTE 1030
7172 
7173 /**
7174  * RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED
7175  *
7176  * Called when CDMA subscription source changed.
7177  *
7178  * "data" is int *
7179  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
7180  */
7181 #define RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED 1031
7182 
7183 /**
7184  * RIL_UNSOL_CDMA_PRL_CHANGED
7185  *
7186  * Called when PRL (preferred roaming list) changes.
7187  *
7188  * "data" is int *
7189  * ((int *)data)[0] is PRL_VERSION as would be returned by RIL_REQUEST_CDMA_SUBSCRIPTION
7190  */
7191 #define RIL_UNSOL_CDMA_PRL_CHANGED 1032
7192 
7193 /**
7194  * RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE
7195  *
7196  * Called when Emergency Callback Mode Ends
7197  *
7198  * Indicates that the radio system selection module has
7199  * proactively exited emergency callback mode.
7200  *
7201  * "data" is NULL
7202  *
7203  */
7204 #define RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE 1033
7205 
7206 /**
7207  * RIL_UNSOL_RIL_CONNECTED
7208  *
7209  * Called the ril connects and returns the version
7210  *
7211  * "data" is int *
7212  * ((int *)data)[0] is RIL_VERSION
7213  */
7214 #define RIL_UNSOL_RIL_CONNECTED 1034
7215 
7216 /**
7217  * RIL_UNSOL_VOICE_RADIO_TECH_CHANGED
7218  *
7219  * Indicates that voice technology has changed. Contains new radio technology
7220  * as a data in the message.
7221  *
7222  * "data" is int *
7223  * ((int *)data)[0] is of type const RIL_RadioTechnology
7224  *
7225  */
7226 #define RIL_UNSOL_VOICE_RADIO_TECH_CHANGED 1035
7227 
7228 /**
7229  * RIL_UNSOL_CELL_INFO_LIST
7230  *
7231  * Same information as returned by RIL_REQUEST_GET_CELL_INFO_LIST, but returned
7232  * at the rate no greater than specified by RIL_REQUEST_SET_UNSOL_CELL_INFO_RATE.
7233  *
7234  * "data" is NULL
7235  *
7236  * "response" is an array of RIL_CellInfo_v12.
7237  */
7238 #define RIL_UNSOL_CELL_INFO_LIST 1036
7239 
7240 /**
7241  * RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED
7242  *
7243  * This message is DEPRECATED and shall be removed in a future release (target: 2018);
7244  * instead, provide IMS registration status via an IMS Service.
7245  *
7246  * Called when IMS registration state has changed
7247  *
7248  * To get IMS registration state and IMS SMS format, callee needs to invoke the
7249  * following request on main thread:
7250  *
7251  * RIL_REQUEST_IMS_REGISTRATION_STATE
7252  *
7253  * "data" is NULL
7254  *
7255  */
7256 #define RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED 1037
7257 
7258 /**
7259  * RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED
7260  *
7261  * Indicated when there is a change in subscription status.
7262  * This event will be sent in the following scenarios
7263  *  - subscription readiness at modem, which was selected by telephony layer
7264  *  - when subscription is deactivated by modem due to UICC card removal
7265  *  - When network invalidates the subscription i.e. attach reject due to authentication reject
7266  *
7267  * "data" is const int *
7268  * ((const int *)data)[0] == 0 for Subscription Deactivated
7269  * ((const int *)data)[0] == 1 for Subscription Activated
7270  *
7271  */
7272 #define RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED 1038
7273 
7274 /**
7275  * RIL_UNSOL_SRVCC_STATE_NOTIFY
7276  *
7277  * Called when Single Radio Voice Call Continuity(SRVCC)
7278  * progress state has changed
7279  *
7280  * "data" is int *
7281  * ((int *)data)[0] is of type const RIL_SrvccState
7282  *
7283  */
7284 
7285 #define RIL_UNSOL_SRVCC_STATE_NOTIFY 1039
7286 
7287 /**
7288  * RIL_UNSOL_HARDWARE_CONFIG_CHANGED
7289  *
7290  * Called when the hardware configuration associated with the RILd changes
7291  *
7292  * "data" is an array of RIL_HardwareConfig
7293  *
7294  */
7295 #define RIL_UNSOL_HARDWARE_CONFIG_CHANGED 1040
7296 
7297 /**
7298  * RIL_UNSOL_DC_RT_INFO_CHANGED
7299  *
7300  * The message is DEPRECATED, use RIL_REQUEST_GET_ACTIVITY_INFO
7301  * Sent when the DC_RT_STATE changes but the time
7302  * between these messages must not be less than the
7303  * value set by RIL_REQUEST_SET_DC_RT_RATE.
7304  *
7305  * "data" is the most recent RIL_DcRtInfo
7306  *
7307  */
7308 #define RIL_UNSOL_DC_RT_INFO_CHANGED 1041
7309 
7310 /**
7311  * RIL_UNSOL_RADIO_CAPABILITY
7312  *
7313  * Sent when RIL_REQUEST_SET_RADIO_CAPABILITY completes.
7314  * Returns the phone radio capability exactly as
7315  * RIL_REQUEST_GET_RADIO_CAPABILITY and should be the
7316  * same set as sent by RIL_REQUEST_SET_RADIO_CAPABILITY.
7317  *
7318  * "data" is the RIL_RadioCapability structure
7319  */
7320 #define RIL_UNSOL_RADIO_CAPABILITY 1042
7321 
7322 /*
7323  * RIL_UNSOL_ON_SS
7324  *
7325  * Called when SS response is received when DIAL/USSD/SS is changed to SS by
7326  * call control.
7327  *
7328  * "data" is const RIL_StkCcUnsolSsResponse *
7329  *
7330  */
7331 #define RIL_UNSOL_ON_SS 1043
7332 
7333 /**
7334  * RIL_UNSOL_STK_CC_ALPHA_NOTIFY
7335  *
7336  * Called when there is an ALPHA from UICC during Call Control.
7337  *
7338  * "data" is const char * containing ALPHA string from UICC in UTF-8 format.
7339  *
7340  */
7341 #define RIL_UNSOL_STK_CC_ALPHA_NOTIFY 1044
7342 
7343 /**
7344  * RIL_UNSOL_LCEDATA_RECV
7345  *
7346  * Called when there is an incoming Link Capacity Estimate (LCE) info report.
7347  *
7348  * "data" is the RIL_LceDataInfo structure.
7349  *
7350  */
7351 #define RIL_UNSOL_LCEDATA_RECV 1045
7352 
7353  /**
7354   * RIL_UNSOL_PCO_DATA
7355   *
7356   * Called when there is new Carrier PCO data received for a data call.  Ideally
7357   * only new data will be forwarded, though this is not required.  Multiple
7358   * boxes of carrier PCO data for a given call should result in a series of
7359   * RIL_UNSOL_PCO_DATA calls.
7360   *
7361   * "data" is the RIL_PCO_Data structure.
7362   *
7363   */
7364 #define RIL_UNSOL_PCO_DATA 1046
7365 
7366  /**
7367   * RIL_UNSOL_MODEM_RESTART
7368   *
7369   * Called when there is a modem reset.
7370   *
7371   * "reason" is "const char *" containing the reason for the reset. It
7372   * could be a crash signature if the restart was due to a crash or some
7373   * string such as "user-initiated restart" or "AT command initiated
7374   * restart" that explains the cause of the modem restart.
7375   *
7376   * When modem restarts, one of the following radio state transitions will happen
7377   * 1) RADIO_STATE_ON->RADIO_STATE_UNAVAILABLE->RADIO_STATE_ON or
7378   * 2) RADIO_STATE_OFF->RADIO_STATE_UNAVAILABLE->RADIO_STATE_OFF
7379   * This message can be sent either just before the RADIO_STATE changes to RADIO_STATE_UNAVAILABLE
7380   * or just after but should never be sent after the RADIO_STATE changes from UNAVAILABLE to
7381   * AVAILABLE(RADIO_STATE_ON/RADIO_STATE_OFF) again.
7382   *
7383   * It should NOT be sent after the RADIO_STATE changes to AVAILABLE after the
7384   * modem restart as that could be interpreted as a second modem reset by the
7385   * framework.
7386   */
7387 #define RIL_UNSOL_MODEM_RESTART 1047
7388 
7389 /**
7390  * RIL_UNSOL_CARRIER_INFO_IMSI_ENCRYPTION
7391  *
7392  * Called when the modem needs Carrier specific information that will
7393  * be used to encrypt IMSI and IMPI.
7394  *
7395  * "data" is NULL
7396  *
7397  */
7398 #define RIL_UNSOL_CARRIER_INFO_IMSI_ENCRYPTION 1048
7399 
7400 /**
7401  * RIL_UNSOL_NETWORK_SCAN_RESULT
7402  *
7403  * Returns incremental result for the network scan which is started by
7404  * RIL_REQUEST_START_NETWORK_SCAN, sent to report results, status, or errors.
7405  *
7406  * "data" is NULL
7407  * "response" is a const RIL_NetworkScanResult *
7408  */
7409 #define RIL_UNSOL_NETWORK_SCAN_RESULT 1049
7410 
7411 /**
7412  * RIL_UNSOL_KEEPALIVE_STATUS
7413  *
7414  * "data" is NULL
7415  * "response" is a const RIL_KeepaliveStatus *
7416  */
7417 #define RIL_UNSOL_KEEPALIVE_STATUS 1050
7418 
7419 /***********************************************************************/
7420 
7421 
7422 #if defined(ANDROID_MULTI_SIM)
7423 /**
7424  * RIL_Request Function pointer
7425  *
7426  * @param request is one of RIL_REQUEST_*
7427  * @param data is pointer to data defined for that RIL_REQUEST_*
7428  *        data is owned by caller, and should not be modified or freed by callee
7429  *        structures passed as data may contain pointers to non-contiguous memory
7430  * @param t should be used in subsequent call to RIL_onResponse
7431  * @param datalen is the length of "data" which is defined as other argument. It may or may
7432  *        not be equal to sizeof(data). Refer to the documentation of individual structures
7433  *        to find if pointers listed in the structure are contiguous and counted in the datalen
7434  *        length or not.
7435  *        (Eg: RIL_IMS_SMS_Message where we don't have datalen equal to sizeof(data))
7436  *
7437  */
7438 typedef void (*RIL_RequestFunc) (int request, void *data,
7439                                     size_t datalen, RIL_Token t, RIL_SOCKET_ID socket_id);
7440 
7441 /**
7442  * This function should return the current radio state synchronously
7443  */
7444 typedef RIL_RadioState (*RIL_RadioStateRequest)(RIL_SOCKET_ID socket_id);
7445 
7446 #else
7447 /* Backward compatible */
7448 
7449 /**
7450  * RIL_Request Function pointer
7451  *
7452  * @param request is one of RIL_REQUEST_*
7453  * @param data is pointer to data defined for that RIL_REQUEST_*
7454  *        data is owned by caller, and should not be modified or freed by callee
7455  *        structures passed as data may contain pointers to non-contiguous memory
7456  * @param t should be used in subsequent call to RIL_onResponse
7457  * @param datalen is the length of "data" which is defined as other argument. It may or may
7458  *        not be equal to sizeof(data). Refer to the documentation of individual structures
7459  *        to find if pointers listed in the structure are contiguous and counted in the datalen
7460  *        length or not.
7461  *        (Eg: RIL_IMS_SMS_Message where we don't have datalen equal to sizeof(data))
7462  *
7463  */
7464 typedef void (*RIL_RequestFunc) (int request, void *data,
7465                                     size_t datalen, RIL_Token t);
7466 
7467 /**
7468  * This function should return the current radio state synchronously
7469  */
7470 typedef RIL_RadioState (*RIL_RadioStateRequest)();
7471 
7472 #endif
7473 
7474 
7475 /**
7476  * This function returns "1" if the specified RIL_REQUEST code is
7477  * supported and 0 if it is not
7478  *
7479  * @param requestCode is one of RIL_REQUEST codes
7480  */
7481 
7482 typedef int (*RIL_Supports)(int requestCode);
7483 
7484 /**
7485  * This function is called from a separate thread--not the
7486  * thread that calls RIL_RequestFunc--and indicates that a pending
7487  * request should be cancelled.
7488  *
7489  * On cancel, the callee should do its best to abandon the request and
7490  * call RIL_onRequestComplete with RIL_Errno CANCELLED at some later point.
7491  *
7492  * Subsequent calls to  RIL_onRequestComplete for this request with
7493  * other results will be tolerated but ignored. (That is, it is valid
7494  * to ignore the cancellation request)
7495  *
7496  * RIL_Cancel calls should return immediately, and not wait for cancellation
7497  *
7498  * Please see ITU v.250 5.6.1 for how one might implement this on a TS 27.007
7499  * interface
7500  *
7501  * @param t token wants to be canceled
7502  */
7503 
7504 typedef void (*RIL_Cancel)(RIL_Token t);
7505 
7506 typedef void (*RIL_TimedCallback) (void *param);
7507 
7508 /**
7509  * Return a version string for your RIL implementation
7510  */
7511 typedef const char * (*RIL_GetVersion) (void);
7512 
7513 typedef struct {
7514     int version;        /* set to RIL_VERSION */
7515     RIL_RequestFunc onRequest;
7516     RIL_RadioStateRequest onStateRequest;
7517     RIL_Supports supports;
7518     RIL_Cancel onCancel;
7519     RIL_GetVersion getVersion;
7520 } RIL_RadioFunctions;
7521 
7522 typedef struct {
7523     char *apn;                  /* the APN to connect to */
7524     char *protocol;             /* one of the PDP_type values in TS 27.007 section 10.1.1 used on
7525                                    roaming network. For example, "IP", "IPV6", "IPV4V6", or "PPP".*/
7526     int authtype;               /* authentication protocol used for this PDP context
7527                                    (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3) */
7528     char *username;             /* the username for APN, or NULL */
7529     char *password;             /* the password for APN, or NULL */
7530 } RIL_InitialAttachApn;
7531 
7532 typedef struct {
7533     char *apn;                  /* the APN to connect to */
7534     char *protocol;             /* one of the PDP_type values in TS 27.007 section 10.1.1 used on
7535                                    home network. For example, "IP", "IPV6", "IPV4V6", or "PPP". */
7536     char *roamingProtocol;      /* one of the PDP_type values in TS 27.007 section 10.1.1 used on
7537                                    roaming network. For example, "IP", "IPV6", "IPV4V6", or "PPP".*/
7538     int authtype;               /* authentication protocol used for this PDP context
7539                                    (None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3) */
7540     char *username;             /* the username for APN, or NULL */
7541     char *password;             /* the password for APN, or NULL */
7542     int supportedTypesBitmask;  /* supported APN types bitmask. See RIL_ApnTypes for the value of
7543                                    each bit. */
7544     int bearerBitmask;          /* the bearer bitmask. See RIL_RadioAccessFamily for the value of
7545                                    each bit. */
7546     int modemCognitive;         /* indicating the APN setting was sent to the modem through
7547                                    setDataProfile earlier. */
7548     int mtu;                    /* maximum transmission unit (MTU) size in bytes */
7549     char *mvnoType;             /* the MVNO type: possible values are "imsi", "gid", "spn" */
7550     char *mvnoMatchData;        /* MVNO match data. Can be anything defined by the carrier.
7551                                    For example,
7552                                      SPN like: "A MOBILE", "BEN NL", etc...
7553                                      IMSI like: "302720x94", "2060188", etc...
7554                                      GID like: "4E", "33", etc... */
7555 } RIL_InitialAttachApn_v15;
7556 
7557 typedef struct {
7558     int authContext;            /* P2 value of authentication command, see P2 parameter in
7559                                    3GPP TS 31.102 7.1.2 */
7560     char *authData;             /* the challenge string in Base64 format, see 3GPP
7561                                    TS 31.102 7.1.2 */
7562     char *aid;                  /* AID value, See ETSI 102.221 8.1 and 101.220 4,
7563                                    NULL if no value. */
7564 } RIL_SimAuthentication;
7565 
7566 typedef struct {
7567     int cid;                    /* Context ID, uniquely identifies this call */
7568     char *bearer_proto;         /* One of the PDP_type values in TS 27.007 section 10.1.1.
7569                                    For example, "IP", "IPV6", "IPV4V6". */
7570     int pco_id;                 /* The protocol ID for this box.  Note that only IDs from
7571                                    FF00H - FFFFH are accepted.  If more than one is included
7572                                    from the network, multiple calls should be made to send all
7573                                    of them. */
7574     int contents_length;        /* The number of octets in the contents. */
7575     char *contents;             /* Carrier-defined content.  It is binary, opaque and
7576                                    loosely defined in LTE Layer 3 spec 24.008 */
7577 } RIL_PCO_Data;
7578 
7579 typedef enum {
7580     NATT_IPV4 = 0,              /* Keepalive specified by RFC 3948 Sec. 2.3 using IPv4 */
7581     NATT_IPV6 = 1               /* Keepalive specified by RFC 3948 Sec. 2.3 using IPv6 */
7582 } RIL_KeepaliveType;
7583 
7584 #define MAX_INADDR_LEN 16
7585 typedef struct {
7586     RIL_KeepaliveType type;                  /* Type of keepalive packet */
7587     char sourceAddress[MAX_INADDR_LEN];      /* Source address in network-byte order */
7588     int sourcePort;                          /* Source port if applicable, or 0x7FFFFFFF;
7589                                                 the maximum value is 65535 */
7590     char destinationAddress[MAX_INADDR_LEN]; /* Destination address in network-byte order */
7591     int destinationPort;                     /* Destination port if applicable or 0x7FFFFFFF;
7592                                                 the maximum value is 65535 */
7593     int maxKeepaliveIntervalMillis;          /* Maximum milliseconds between two packets */
7594     int cid;                                 /* Context ID, uniquely identifies this call */
7595 } RIL_KeepaliveRequest;
7596 
7597 typedef enum {
7598     KEEPALIVE_ACTIVE,                       /* Keepalive session is active */
7599     KEEPALIVE_INACTIVE,                     /* Keepalive session is inactive */
7600     KEEPALIVE_PENDING                       /* Keepalive session status not available */
7601 } RIL_KeepaliveStatusCode;
7602 
7603 typedef struct {
7604     uint32_t sessionHandle;
7605     RIL_KeepaliveStatusCode code;
7606 } RIL_KeepaliveStatus;
7607 
7608 #ifdef RIL_SHLIB
7609 struct RIL_Env {
7610     /**
7611      * "t" is parameter passed in on previous call to RIL_Notification
7612      * routine.
7613      *
7614      * If "e" != SUCCESS, then response can be null/is ignored
7615      *
7616      * "response" is owned by caller, and should not be modified or
7617      * freed by callee
7618      *
7619      * RIL_onRequestComplete will return as soon as possible
7620      */
7621     void (*OnRequestComplete)(RIL_Token t, RIL_Errno e,
7622                            void *response, size_t responselen);
7623 
7624 #if defined(ANDROID_MULTI_SIM)
7625     /**
7626      * "unsolResponse" is one of RIL_UNSOL_RESPONSE_*
7627      * "data" is pointer to data defined for that RIL_UNSOL_RESPONSE_*
7628      *
7629      * "data" is owned by caller, and should not be modified or freed by callee
7630      */
7631     void (*OnUnsolicitedResponse)(int unsolResponse, const void *data, size_t datalen, RIL_SOCKET_ID socket_id);
7632 #else
7633     /**
7634      * "unsolResponse" is one of RIL_UNSOL_RESPONSE_*
7635      * "data" is pointer to data defined for that RIL_UNSOL_RESPONSE_*
7636      *
7637      * "data" is owned by caller, and should not be modified or freed by callee
7638      */
7639     void (*OnUnsolicitedResponse)(int unsolResponse, const void *data, size_t datalen);
7640 #endif
7641     /**
7642      * Call user-specifed "callback" function on on the same thread that
7643      * RIL_RequestFunc is called. If "relativeTime" is specified, then it specifies
7644      * a relative time value at which the callback is invoked. If relativeTime is
7645      * NULL or points to a 0-filled structure, the callback will be invoked as
7646      * soon as possible
7647      */
7648 
7649     void (*RequestTimedCallback) (RIL_TimedCallback callback,
7650                                    void *param, const struct timeval *relativeTime);
7651    /**
7652     * "t" is parameter passed in on previous call RIL_Notification routine
7653     *
7654     * RIL_onRequestAck will be called by vendor when an Async RIL request was received
7655     * by them and an ack needs to be sent back to java ril.
7656     */
7657     void (*OnRequestAck) (RIL_Token t);
7658 };
7659 
7660 
7661 /**
7662  *  RIL implementations must defined RIL_Init
7663  *  argc and argv will be command line arguments intended for the RIL implementation
7664  *  Return NULL on error
7665  *
7666  * @param env is environment point defined as RIL_Env
7667  * @param argc number of arguments
7668  * @param argv list fo arguments
7669  *
7670  */
7671 const RIL_RadioFunctions *RIL_Init(const struct RIL_Env *env, int argc, char **argv);
7672 
7673 /**
7674  *  If BT SAP(SIM Access Profile) is supported, then RIL implementations must define RIL_SAP_Init
7675  *  for initializing RIL_RadioFunctions used for BT SAP communcations. It is called whenever RILD
7676  *  starts or modem restarts. Returns handlers for SAP related request that are made on SAP
7677  *  sepecific socket, analogous to the RIL_RadioFunctions returned by the call to RIL_Init
7678  *  and used on the general RIL socket.
7679  *  argc and argv will be command line arguments intended for the RIL implementation
7680  *  Return NULL on error.
7681  *
7682  * @param env is environment point defined as RIL_Env
7683  * @param argc number of arguments
7684  * @param argv list fo arguments
7685  *
7686  */
7687 const RIL_RadioFunctions *RIL_SAP_Init(const struct RIL_Env *env, int argc, char **argv);
7688 
7689 #else /* RIL_SHLIB */
7690 
7691 /**
7692  * Call this once at startup to register notification routine
7693  *
7694  * @param callbacks user-specifed callback function
7695  */
7696 void RIL_register (const RIL_RadioFunctions *callbacks);
7697 
7698 void rilc_thread_pool();
7699 
7700 
7701 /**
7702  *
7703  * RIL_onRequestComplete will return as soon as possible
7704  *
7705  * @param t is parameter passed in on previous call to RIL_Notification
7706  *          routine.
7707  * @param e error code
7708  *          if "e" != SUCCESS, then response can be null/is ignored
7709  * @param response is owned by caller, and should not be modified or
7710  *                 freed by callee
7711  * @param responselen the length of response in byte
7712  */
7713 void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,
7714                            void *response, size_t responselen);
7715 
7716 /**
7717  * RIL_onRequestAck will be called by vendor when an Async RIL request was received by them and
7718  * an ack needs to be sent back to java ril. This doesn't mark the end of the command or it's
7719  * results, just that the command was received and will take a while. After sending this Ack
7720  * its vendor's responsibility to make sure that AP is up whenever needed while command is
7721  * being processed.
7722  *
7723  * @param t is parameter passed in on previous call to RIL_Notification
7724  *          routine.
7725  */
7726 void RIL_onRequestAck(RIL_Token t);
7727 
7728 #if defined(ANDROID_MULTI_SIM)
7729 /**
7730  * @param unsolResponse is one of RIL_UNSOL_RESPONSE_*
7731  * @param data is pointer to data defined for that RIL_UNSOL_RESPONSE_*
7732  *     "data" is owned by caller, and should not be modified or freed by callee
7733  * @param datalen the length of data in byte
7734  */
7735 
7736 void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
7737                                 size_t datalen, RIL_SOCKET_ID socket_id);
7738 #else
7739 /**
7740  * @param unsolResponse is one of RIL_UNSOL_RESPONSE_*
7741  * @param data is pointer to data defined for that RIL_UNSOL_RESPONSE_*
7742  *     "data" is owned by caller, and should not be modified or freed by callee
7743  * @param datalen the length of data in byte
7744  */
7745 
7746 void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
7747                                 size_t datalen);
7748 #endif
7749 
7750 /**
7751  * Call user-specifed "callback" function on on the same thread that
7752  * RIL_RequestFunc is called. If "relativeTime" is specified, then it specifies
7753  * a relative time value at which the callback is invoked. If relativeTime is
7754  * NULL or points to a 0-filled structure, the callback will be invoked as
7755  * soon as possible
7756  *
7757  * @param callback user-specifed callback function
7758  * @param param parameter list
7759  * @param relativeTime a relative time value at which the callback is invoked
7760  */
7761 
7762 void RIL_requestTimedCallback (RIL_TimedCallback callback,
7763                                void *param, const struct timeval *relativeTime);
7764 
7765 #endif /* RIL_SHLIB */
7766 
7767 #ifdef __cplusplus
7768 }
7769 #endif
7770 
7771 #endif /*ANDROID_RIL_H*/
7772