Home | History | Annotate | Download | only in telephony
      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 #ifndef FEATURE_UNIT_TEST
     23 #include <sys/time.h>
     24 #endif /* !FEATURE_UNIT_TEST */
     25 
     26 #ifdef __cplusplus
     27 extern "C" {
     28 #endif
     29 
     30 #define RIL_VERSION 8     /* Current version */
     31 #define RIL_VERSION_MIN 6 /* Minimum RIL_VERSION supported */
     32 
     33 #define CDMA_ALPHA_INFO_BUFFER_LENGTH 64
     34 #define CDMA_NUMBER_INFO_BUFFER_LENGTH 81
     35 
     36 typedef void * RIL_Token;
     37 
     38 typedef enum {
     39     RIL_E_SUCCESS = 0,
     40     RIL_E_RADIO_NOT_AVAILABLE = 1,     /* If radio did not start or is resetting */
     41     RIL_E_GENERIC_FAILURE = 2,
     42     RIL_E_PASSWORD_INCORRECT = 3,      /* for PIN/PIN2 methods only! */
     43     RIL_E_SIM_PIN2 = 4,                /* Operation requires SIM PIN2 to be entered */
     44     RIL_E_SIM_PUK2 = 5,                /* Operation requires SIM PIN2 to be entered */
     45     RIL_E_REQUEST_NOT_SUPPORTED = 6,
     46     RIL_E_CANCELLED = 7,
     47     RIL_E_OP_NOT_ALLOWED_DURING_VOICE_CALL = 8, /* data ops are not allowed during voice
     48                                                    call on a Class C GPRS device */
     49     RIL_E_OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,  /* data ops are not allowed before device
     50                                                    registers in network */
     51     RIL_E_SMS_SEND_FAIL_RETRY = 10,             /* fail to send sms and need retry */
     52     RIL_E_SIM_ABSENT = 11,                      /* fail to set the location where CDMA subscription
     53                                                    shall be retrieved because of SIM or RUIM
     54                                                    card absent */
     55     RIL_E_SUBSCRIPTION_NOT_AVAILABLE = 12,      /* fail to find CDMA subscription from specified
     56                                                    location */
     57     RIL_E_MODE_NOT_SUPPORTED = 13,              /* HW does not support preferred network type */
     58     RIL_E_FDN_CHECK_FAILURE = 14,               /* command failed because recipient is not on FDN list */
     59     RIL_E_ILLEGAL_SIM_OR_ME = 15                /* network selection failed due to
     60                                                    illegal SIM or ME */
     61 } RIL_Errno;
     62 
     63 typedef enum {
     64     RIL_CALL_ACTIVE = 0,
     65     RIL_CALL_HOLDING = 1,
     66     RIL_CALL_DIALING = 2,    /* MO call only */
     67     RIL_CALL_ALERTING = 3,   /* MO call only */
     68     RIL_CALL_INCOMING = 4,   /* MT call only */
     69     RIL_CALL_WAITING = 5     /* MT call only */
     70 } RIL_CallState;
     71 
     72 typedef enum {
     73     RADIO_STATE_OFF = 0,                   /* Radio explictly powered off (eg CFUN=0) */
     74     RADIO_STATE_UNAVAILABLE = 1,           /* Radio unavailable (eg, resetting or not booted) */
     75     /* States 2-9 below are deprecated. Just leaving them here for backward compatibility. */
     76     RADIO_STATE_SIM_NOT_READY = 2,         /* Radio is on, but the SIM interface is not ready */
     77     RADIO_STATE_SIM_LOCKED_OR_ABSENT = 3,  /* SIM PIN locked, PUK required, network
     78                                               personalization locked, or SIM absent */
     79     RADIO_STATE_SIM_READY = 4,             /* Radio is on and SIM interface is available */
     80     RADIO_STATE_RUIM_NOT_READY = 5,        /* Radio is on, but the RUIM interface is not ready */
     81     RADIO_STATE_RUIM_READY = 6,            /* Radio is on and the RUIM interface is available */
     82     RADIO_STATE_RUIM_LOCKED_OR_ABSENT = 7, /* RUIM PIN locked, PUK required, network
     83                                               personalization locked, or RUIM absent */
     84     RADIO_STATE_NV_NOT_READY = 8,          /* Radio is on, but the NV interface is not available */
     85     RADIO_STATE_NV_READY = 9,              /* Radio is on and the NV interface is available */
     86     RADIO_STATE_ON = 10                    /* Radio is on */
     87 } RIL_RadioState;
     88 
     89 typedef enum {
     90     RADIO_TECH_UNKNOWN = 0,
     91     RADIO_TECH_GPRS = 1,
     92     RADIO_TECH_EDGE = 2,
     93     RADIO_TECH_UMTS = 3,
     94     RADIO_TECH_IS95A = 4,
     95     RADIO_TECH_IS95B = 5,
     96     RADIO_TECH_1xRTT =  6,
     97     RADIO_TECH_EVDO_0 = 7,
     98     RADIO_TECH_EVDO_A = 8,
     99     RADIO_TECH_HSDPA = 9,
    100     RADIO_TECH_HSUPA = 10,
    101     RADIO_TECH_HSPA = 11,
    102     RADIO_TECH_EVDO_B = 12,
    103     RADIO_TECH_EHRPD = 13,
    104     RADIO_TECH_LTE = 14,
    105     RADIO_TECH_HSPAP = 15, // HSPA+
    106     RADIO_TECH_GSM = 16 // Only supports voice
    107 } RIL_RadioTechnology;
    108 
    109 // Do we want to split Data from Voice and the use
    110 // RIL_RadioTechnology for get/setPreferredVoice/Data ?
    111 typedef enum {
    112     PREF_NET_TYPE_GSM_WCDMA                = 0, /* GSM/WCDMA (WCDMA preferred) */
    113     PREF_NET_TYPE_GSM_ONLY                 = 1, /* GSM only */
    114     PREF_NET_TYPE_WCDMA                    = 2, /* WCDMA  */
    115     PREF_NET_TYPE_GSM_WCDMA_AUTO           = 3, /* GSM/WCDMA (auto mode, according to PRL) */
    116     PREF_NET_TYPE_CDMA_EVDO_AUTO           = 4, /* CDMA and EvDo (auto mode, according to PRL) */
    117     PREF_NET_TYPE_CDMA_ONLY                = 5, /* CDMA only */
    118     PREF_NET_TYPE_EVDO_ONLY                = 6, /* EvDo only */
    119     PREF_NET_TYPE_GSM_WCDMA_CDMA_EVDO_AUTO = 7, /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL) */
    120     PREF_NET_TYPE_LTE_CDMA_EVDO            = 8, /* LTE, CDMA and EvDo */
    121     PREF_NET_TYPE_LTE_GSM_WCDMA            = 9, /* LTE, GSM/WCDMA */
    122     PREF_NET_TYPE_LTE_CMDA_EVDO_GSM_WCDMA  = 10, /* LTE, CDMA, EvDo, GSM/WCDMA */
    123     PREF_NET_TYPE_LTE_ONLY                 = 11  /* LTE only */
    124 } RIL_PreferredNetworkType;
    125 
    126 /* Source for cdma subscription */
    127 typedef enum {
    128    CDMA_SUBSCRIPTION_SOURCE_RUIM_SIM = 0,
    129    CDMA_SUBSCRIPTION_SOURCE_NV = 1
    130 } RIL_CdmaSubscriptionSource;
    131 
    132 /* User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0 */
    133 typedef enum {
    134     RIL_UUS_TYPE1_IMPLICIT = 0,
    135     RIL_UUS_TYPE1_REQUIRED = 1,
    136     RIL_UUS_TYPE1_NOT_REQUIRED = 2,
    137     RIL_UUS_TYPE2_REQUIRED = 3,
    138     RIL_UUS_TYPE2_NOT_REQUIRED = 4,
    139     RIL_UUS_TYPE3_REQUIRED = 5,
    140     RIL_UUS_TYPE3_NOT_REQUIRED = 6
    141 } RIL_UUS_Type;
    142 
    143 /* User-to-User Signaling Information data coding schemes. Possible values for
    144  * Octet 3 (Protocol Discriminator field) in the UUIE. The values have been
    145  * specified in section 10.5.4.25 of 3GPP TS 24.008 */
    146 typedef enum {
    147     RIL_UUS_DCS_USP = 0,          /* User specified protocol */
    148     RIL_UUS_DCS_OSIHLP = 1,       /* OSI higher layer protocol */
    149     RIL_UUS_DCS_X244 = 2,         /* X.244 */
    150     RIL_UUS_DCS_RMCF = 3,         /* Reserved for system mangement
    151                                      convergence function */
    152     RIL_UUS_DCS_IA5c = 4          /* IA5 characters */
    153 } RIL_UUS_DCS;
    154 
    155 /* User-to-User Signaling Information defined in 3GPP 23.087 v8.0
    156  * This data is passed in RIL_ExtensionRecord and rec contains this
    157  * structure when type is RIL_UUS_INFO_EXT_REC */
    158 typedef struct {
    159   RIL_UUS_Type    uusType;    /* UUS Type */
    160   RIL_UUS_DCS     uusDcs;     /* UUS Data Coding Scheme */
    161   int             uusLength;  /* Length of UUS Data */
    162   char *          uusData;    /* UUS Data */
    163 } RIL_UUS_Info;
    164 
    165 /* CDMA Signal Information Record as defined in C.S0005 section 3.7.5.5 */
    166 typedef struct {
    167   char isPresent;    /* non-zero if signal information record is present */
    168   char signalType;   /* as defined 3.7.5.5-1 */
    169   char alertPitch;   /* as defined 3.7.5.5-2 */
    170   char signal;       /* as defined 3.7.5.5-3, 3.7.5.5-4 or 3.7.5.5-5 */
    171 } RIL_CDMA_SignalInfoRecord;
    172 
    173 typedef struct {
    174     RIL_CallState   state;
    175     int             index;      /* Connection Index for use with, eg, AT+CHLD */
    176     int             toa;        /* type of address, eg 145 = intl */
    177     char            isMpty;     /* nonzero if is mpty call */
    178     char            isMT;       /* nonzero if call is mobile terminated */
    179     char            als;        /* ALS line indicator if available
    180                                    (0 = line 1) */
    181     char            isVoice;    /* nonzero if this is is a voice call */
    182     char            isVoicePrivacy;     /* nonzero if CDMA voice privacy mode is active */
    183     char *          number;     /* Remote party number */
    184     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown 3=Payphone */
    185     char *          name;       /* Remote party name */
    186     int             namePresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown 3=Payphone */
    187     RIL_UUS_Info *  uusInfo;    /* NULL or Pointer to User-User Signaling Information */
    188 } RIL_Call;
    189 
    190 /* Deprecated, use RIL_Data_Call_Response_v6 */
    191 typedef struct {
    192     int             cid;        /* Context ID, uniquely identifies this call */
    193     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
    194     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
    195                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". */
    196     char *          apn;        /* ignored */
    197     char *          address;    /* An address, e.g., "192.0.1.3" or "2001:db8::1". */
    198 } RIL_Data_Call_Response_v4;
    199 
    200 /*
    201  * Returned by RIL_REQUEST_SETUP_DATA_CALL, RIL_REQUEST_DATA_CALL_LIST
    202  * and RIL_UNSOL_DATA_CALL_LIST_CHANGED, on error status != 0.
    203  */
    204 typedef struct {
    205     int             status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
    206     int             suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
    207                                            back-off timer value RIL wants to override the one
    208                                            pre-configured in FW.
    209                                            The unit is miliseconds.
    210                                            The value < 0 means no value is suggested.
    211                                            The value 0 means retry should be done ASAP.
    212                                            The value of INT_MAX(0x7fffffff) means no retry. */
    213     int             cid;        /* Context ID, uniquely identifies this call */
    214     int             active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
    215     char *          type;       /* One of the PDP_type values in TS 27.007 section 10.1.1.
    216                                    For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
    217                                    PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
    218                                    such as "IP" or "IPV6" */
    219     char *          ifname;     /* The network interface name */
    220     char *          addresses;  /* A space-delimited list of addresses with optional "/" prefix length,
    221                                    e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
    222                                    May not be empty, typically 1 IPv4 or 1 IPv6 or
    223                                    one of each. If the prefix length is absent the addresses
    224                                    are assumed to be point to point with IPv4 having a prefix
    225                                    length of 32 and IPv6 128. */
    226     char *          dnses;      /* A space-delimited list of DNS server addresses,
    227                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
    228                                    May be empty. */
    229     char *          gateways;   /* A space-delimited list of default gateway addresses,
    230                                    e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
    231                                    May be empty in which case the addresses represent point
    232                                    to point connections. */
    233 } RIL_Data_Call_Response_v6;
    234 
    235 typedef struct {
    236     int messageRef;   /* TP-Message-Reference for GSM,
    237                          and BearerData MessageId for CDMA
    238                          (See 3GPP2 C.S0015-B, v2.0, table 4.5-1). */
    239     char *ackPDU;     /* or NULL if n/a */
    240     int errorCode;    /* See 3GPP 27.005, 3.2.5 for GSM/UMTS,
    241                          3GPP2 N.S0005 (IS-41C) Table 171 for CDMA,
    242                          -1 if unknown or not applicable*/
    243 } RIL_SMS_Response;
    244 
    245 /** Used by RIL_REQUEST_WRITE_SMS_TO_SIM */
    246 typedef struct {
    247     int status;     /* Status of message.  See TS 27.005 3.1, "<stat>": */
    248                     /*      0 = "REC UNREAD"    */
    249                     /*      1 = "REC READ"      */
    250                     /*      2 = "STO UNSENT"    */
    251                     /*      3 = "STO SENT"      */
    252     char * pdu;     /* PDU of message to write, as an ASCII hex string less the SMSC address,
    253                        the TP-layer length is "strlen(pdu)/2". */
    254     char * smsc;    /* SMSC address in GSM BCD format prefixed by a length byte
    255                        (as expected by TS 27.005) or NULL for default SMSC */
    256 } RIL_SMS_WriteArgs;
    257 
    258 /** Used by RIL_REQUEST_DIAL */
    259 typedef struct {
    260     char * address;
    261     int clir;
    262             /* (same as 'n' paremeter in TS 27.007 7.7 "+CLIR"
    263              * clir == 0 on "use subscription default value"
    264              * clir == 1 on "CLIR invocation" (restrict CLI presentation)
    265              * clir == 2 on "CLIR suppression" (allow CLI presentation)
    266              */
    267     RIL_UUS_Info *  uusInfo;    /* NULL or Pointer to User-User Signaling Information */
    268 } RIL_Dial;
    269 
    270 typedef struct {
    271     int command;    /* one of the commands listed for TS 27.007 +CRSM*/
    272     int fileid;     /* EF id */
    273     char *path;     /* "pathid" from TS 27.007 +CRSM command.
    274                        Path is in hex asciii format eg "7f205f70"
    275                        Path must always be provided.
    276                      */
    277     int p1;
    278     int p2;
    279     int p3;
    280     char *data;     /* May be NULL*/
    281     char *pin2;     /* May be NULL*/
    282 } RIL_SIM_IO_v5;
    283 
    284 typedef struct {
    285     int command;    /* one of the commands listed for TS 27.007 +CRSM*/
    286     int fileid;     /* EF id */
    287     char *path;     /* "pathid" from TS 27.007 +CRSM command.
    288                        Path is in hex asciii format eg "7f205f70"
    289                        Path must always be provided.
    290                      */
    291     int p1;
    292     int p2;
    293     int p3;
    294     char *data;     /* May be NULL*/
    295     char *pin2;     /* May be NULL*/
    296     char *aidPtr;   /* AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value. */
    297 } RIL_SIM_IO_v6;
    298 
    299 typedef struct {
    300     int sw1;
    301     int sw2;
    302     char *simResponse;  /* In hex string format ([a-fA-F0-9]*). */
    303 } RIL_SIM_IO_Response;
    304 
    305 /* See also com.android.internal.telephony.gsm.CallForwardInfo */
    306 
    307 typedef struct {
    308     int             status;     /*
    309                                  * For RIL_REQUEST_QUERY_CALL_FORWARD_STATUS
    310                                  * status 1 = active, 0 = not active
    311                                  *
    312                                  * For RIL_REQUEST_SET_CALL_FORWARD:
    313                                  * status is:
    314                                  * 0 = disable
    315                                  * 1 = enable
    316                                  * 2 = interrogate
    317                                  * 3 = registeration
    318                                  * 4 = erasure
    319                                  */
    320 
    321     int             reason;      /* from TS 27.007 7.11 "reason" */
    322     int             serviceClass;/* From 27.007 +CCFC/+CLCK "class"
    323                                     See table for Android mapping from
    324                                     MMI service code
    325                                     0 means user doesn't input class */
    326     int             toa;         /* "type" from TS 27.007 7.11 */
    327     char *          number;      /* "number" from TS 27.007 7.11. May be NULL */
    328     int             timeSeconds; /* for CF no reply only */
    329 }RIL_CallForwardInfo;
    330 
    331 typedef struct {
    332    char * cid;         /* Combination of LAC and Cell Id in 32 bits in GSM.
    333                         * Upper 16 bits is LAC and lower 16 bits
    334                         * is CID (as described in TS 27.005)
    335                         * Primary Scrambling Code (as described in TS 25.331)
    336                         *         in 9 bits in UMTS
    337                         * Valid values are hexadecimal 0x0000 - 0xffffffff.
    338                         */
    339    int    rssi;        /* Received RSSI in GSM,
    340                         * Level index of CPICH Received Signal Code Power in UMTS
    341                         */
    342 } RIL_NeighboringCell;
    343 
    344 /* See RIL_REQUEST_LAST_CALL_FAIL_CAUSE */
    345 typedef enum {
    346     CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
    347     CALL_FAIL_NORMAL = 16,
    348     CALL_FAIL_BUSY = 17,
    349     CALL_FAIL_CONGESTION = 34,
    350     CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
    351     CALL_FAIL_CALL_BARRED = 240,
    352     CALL_FAIL_FDN_BLOCKED = 241,
    353     CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
    354     CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
    355     CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
    356     CALL_FAIL_CDMA_DROP = 1001,
    357     CALL_FAIL_CDMA_INTERCEPT = 1002,
    358     CALL_FAIL_CDMA_REORDER = 1003,
    359     CALL_FAIL_CDMA_SO_REJECT = 1004,
    360     CALL_FAIL_CDMA_RETRY_ORDER = 1005,
    361     CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
    362     CALL_FAIL_CDMA_PREEMPTED = 1007,
    363     CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
    364                                             during emergency callback mode */
    365     CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
    366     CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
    367 } RIL_LastCallFailCause;
    368 
    369 /* See RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE */
    370 typedef enum {
    371     PDP_FAIL_NONE = 0, /* No error, connection ok */
    372 
    373     /* an integer cause code defined in TS 24.008
    374        section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
    375        If the implementation does not have access to the exact cause codes,
    376        then it should return one of the following values,
    377        as the UI layer needs to distinguish these
    378        cases for error notification and potential retries. */
    379     PDP_FAIL_OPERATOR_BARRED = 0x08,               /* no retry */
    380     PDP_FAIL_INSUFFICIENT_RESOURCES = 0x1A,
    381     PDP_FAIL_MISSING_UKNOWN_APN = 0x1B,            /* no retry */
    382     PDP_FAIL_UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,      /* no retry */
    383     PDP_FAIL_USER_AUTHENTICATION = 0x1D,           /* no retry */
    384     PDP_FAIL_ACTIVATION_REJECT_GGSN = 0x1E,        /* no retry */
    385     PDP_FAIL_ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
    386     PDP_FAIL_SERVICE_OPTION_NOT_SUPPORTED = 0x20,  /* no retry */
    387     PDP_FAIL_SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, /* no retry */
    388     PDP_FAIL_SERVICE_OPTION_OUT_OF_ORDER = 0x22,
    389     PDP_FAIL_NSAPI_IN_USE = 0x23,                  /* no retry */
    390     PDP_FAIL_ONLY_IPV4_ALLOWED = 0x32,             /* no retry */
    391     PDP_FAIL_ONLY_IPV6_ALLOWED = 0x33,             /* no retry */
    392     PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED = 0x34,
    393     PDP_FAIL_PROTOCOL_ERRORS   = 0x6F,             /* no retry */
    394 
    395     /* Not mentioned in the specification */
    396     PDP_FAIL_VOICE_REGISTRATION_FAIL = -1,
    397     PDP_FAIL_DATA_REGISTRATION_FAIL = -2,
    398 
    399    /* reasons for data call drop - network/modem disconnect */
    400     PDP_FAIL_SIGNAL_LOST = -3,            /* no retry */
    401     PDP_FAIL_PREF_RADIO_TECH_CHANGED = -4,/* preferred technology has changed, should retry
    402                                              with parameters appropriate for new technology */
    403     PDP_FAIL_RADIO_POWER_OFF = -5,        /* data call was disconnected because radio was resetting,
    404                                              powered off - no retry */
    405     PDP_FAIL_TETHERED_CALL_ACTIVE = -6,   /* data call was disconnected by modem because tethered
    406                                              mode was up on same APN/data profile - no retry until
    407                                              tethered call is off */
    408 
    409     PDP_FAIL_ERROR_UNSPECIFIED = 0xffff,  /* retry silently */
    410 } RIL_DataCallFailCause;
    411 
    412 /* See RIL_REQUEST_SETUP_DATA_CALL */
    413 typedef enum {
    414     RIL_DATA_PROFILE_DEFAULT    = 0,
    415     RIL_DATA_PROFILE_TETHERED   = 1,
    416     RIL_DATA_PROFILE_OEM_BASE   = 1000    /* Start of OEM-specific profiles */
    417 } RIL_DataProfile;
    418 
    419 /* Used by RIL_UNSOL_SUPP_SVC_NOTIFICATION */
    420 typedef struct {
    421     int     notificationType;   /*
    422                                  * 0 = MO intermediate result code
    423                                  * 1 = MT unsolicited result code
    424                                  */
    425     int     code;               /* See 27.007 7.17
    426                                    "code1" for MO
    427                                    "code2" for MT. */
    428     int     index;              /* CUG index. See 27.007 7.17. */
    429     int     type;               /* "type" from 27.007 7.17 (MT only). */
    430     char *  number;             /* "number" from 27.007 7.17
    431                                    (MT only, may be NULL). */
    432 } RIL_SuppSvcNotification;
    433 
    434 #define RIL_CARD_MAX_APPS     8
    435 
    436 typedef enum {
    437     RIL_CARDSTATE_ABSENT   = 0,
    438     RIL_CARDSTATE_PRESENT  = 1,
    439     RIL_CARDSTATE_ERROR    = 2
    440 } RIL_CardState;
    441 
    442 typedef enum {
    443     RIL_PERSOSUBSTATE_UNKNOWN                   = 0, /* initial state */
    444     RIL_PERSOSUBSTATE_IN_PROGRESS               = 1, /* in between each lock transition */
    445     RIL_PERSOSUBSTATE_READY                     = 2, /* when either SIM or RUIM Perso is finished
    446                                                         since each app can only have 1 active perso
    447                                                         involved */
    448     RIL_PERSOSUBSTATE_SIM_NETWORK               = 3,
    449     RIL_PERSOSUBSTATE_SIM_NETWORK_SUBSET        = 4,
    450     RIL_PERSOSUBSTATE_SIM_CORPORATE             = 5,
    451     RIL_PERSOSUBSTATE_SIM_SERVICE_PROVIDER      = 6,
    452     RIL_PERSOSUBSTATE_SIM_SIM                   = 7,
    453     RIL_PERSOSUBSTATE_SIM_NETWORK_PUK           = 8, /* The corresponding perso lock is blocked */
    454     RIL_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK    = 9,
    455     RIL_PERSOSUBSTATE_SIM_CORPORATE_PUK         = 10,
    456     RIL_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK  = 11,
    457     RIL_PERSOSUBSTATE_SIM_SIM_PUK               = 12,
    458     RIL_PERSOSUBSTATE_RUIM_NETWORK1             = 13,
    459     RIL_PERSOSUBSTATE_RUIM_NETWORK2             = 14,
    460     RIL_PERSOSUBSTATE_RUIM_HRPD                 = 15,
    461     RIL_PERSOSUBSTATE_RUIM_CORPORATE            = 16,
    462     RIL_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER     = 17,
    463     RIL_PERSOSUBSTATE_RUIM_RUIM                 = 18,
    464     RIL_PERSOSUBSTATE_RUIM_NETWORK1_PUK         = 19, /* The corresponding perso lock is blocked */
    465     RIL_PERSOSUBSTATE_RUIM_NETWORK2_PUK         = 20,
    466     RIL_PERSOSUBSTATE_RUIM_HRPD_PUK             = 21,
    467     RIL_PERSOSUBSTATE_RUIM_CORPORATE_PUK        = 22,
    468     RIL_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK = 23,
    469     RIL_PERSOSUBSTATE_RUIM_RUIM_PUK             = 24
    470 } RIL_PersoSubstate;
    471 
    472 typedef enum {
    473     RIL_APPSTATE_UNKNOWN               = 0,
    474     RIL_APPSTATE_DETECTED              = 1,
    475     RIL_APPSTATE_PIN                   = 2, /* If PIN1 or UPin is required */
    476     RIL_APPSTATE_PUK                   = 3, /* If PUK1 or Puk for UPin is required */
    477     RIL_APPSTATE_SUBSCRIPTION_PERSO    = 4, /* perso_substate should be look at
    478                                                when app_state is assigned to this value */
    479     RIL_APPSTATE_READY                 = 5
    480 } RIL_AppState;
    481 
    482 typedef enum {
    483     RIL_PINSTATE_UNKNOWN              = 0,
    484     RIL_PINSTATE_ENABLED_NOT_VERIFIED = 1,
    485     RIL_PINSTATE_ENABLED_VERIFIED     = 2,
    486     RIL_PINSTATE_DISABLED             = 3,
    487     RIL_PINSTATE_ENABLED_BLOCKED      = 4,
    488     RIL_PINSTATE_ENABLED_PERM_BLOCKED = 5
    489 } RIL_PinState;
    490 
    491 typedef enum {
    492   RIL_APPTYPE_UNKNOWN = 0,
    493   RIL_APPTYPE_SIM     = 1,
    494   RIL_APPTYPE_USIM    = 2,
    495   RIL_APPTYPE_RUIM    = 3,
    496   RIL_APPTYPE_CSIM    = 4,
    497   RIL_APPTYPE_ISIM    = 5
    498 } RIL_AppType;
    499 
    500 typedef struct
    501 {
    502   RIL_AppType      app_type;
    503   RIL_AppState     app_state;
    504   RIL_PersoSubstate perso_substate; /* applicable only if app_state ==
    505                                        RIL_APPSTATE_SUBSCRIPTION_PERSO */
    506   char             *aid_ptr;        /* null terminated string, e.g., from 0xA0, 0x00 -> 0x41,
    507                                        0x30, 0x30, 0x30 */
    508   char             *app_label_ptr;  /* null terminated string */
    509   int              pin1_replaced;   /* applicable to USIM, CSIM & ISIM */
    510   RIL_PinState     pin1;
    511   RIL_PinState     pin2;
    512 } RIL_AppStatus;
    513 
    514 /* Deprecated, use RIL_CardStatus_v6 */
    515 typedef struct
    516 {
    517   RIL_CardState card_state;
    518   RIL_PinState  universal_pin_state;             /* applicable to USIM and CSIM: RIL_PINSTATE_xxx */
    519   int           gsm_umts_subscription_app_index; /* value < RIL_CARD_MAX_APPS, -1 if none */
    520   int           cdma_subscription_app_index;     /* value < RIL_CARD_MAX_APPS, -1 if none */
    521   int           num_applications;                /* value <= RIL_CARD_MAX_APPS */
    522   RIL_AppStatus applications[RIL_CARD_MAX_APPS];
    523 } RIL_CardStatus_v5;
    524 
    525 typedef struct
    526 {
    527   RIL_CardState card_state;
    528   RIL_PinState  universal_pin_state;             /* applicable to USIM and CSIM: RIL_PINSTATE_xxx */
    529   int           gsm_umts_subscription_app_index; /* value < RIL_CARD_MAX_APPS, -1 if none */
    530   int           cdma_subscription_app_index;     /* value < RIL_CARD_MAX_APPS, -1 if none */
    531   int           ims_subscription_app_index;      /* value < RIL_CARD_MAX_APPS, -1 if none */
    532   int           num_applications;                /* value <= RIL_CARD_MAX_APPS */
    533   RIL_AppStatus applications[RIL_CARD_MAX_APPS];
    534 } RIL_CardStatus_v6;
    535 
    536 /** The result of a SIM refresh, returned in data[0] of RIL_UNSOL_SIM_REFRESH
    537  *      or as part of RIL_SimRefreshResponse_v7
    538  */
    539 typedef enum {
    540     /* A file on SIM has been updated.  data[1] contains the EFID. */
    541     SIM_FILE_UPDATE = 0,
    542     /* SIM initialized.  All files should be re-read. */
    543     SIM_INIT = 1,
    544     /* SIM reset.  SIM power required, SIM may be locked and all files should be re-read. */
    545     SIM_RESET = 2
    546 } RIL_SimRefreshResult;
    547 
    548 typedef struct {
    549     RIL_SimRefreshResult result;
    550     int                  ef_id; /* is the EFID of the updated file if the result is */
    551                                 /* SIM_FILE_UPDATE or 0 for any other result. */
    552     char *               aid;   /* is AID(application ID) of the card application */
    553                                 /* See ETSI 102.221 8.1 and 101.220 4 */
    554                                 /*     For SIM_FILE_UPDATE result it can be set to AID of */
    555                                 /*         application in which updated EF resides or it can be */
    556                                 /*         NULL if EF is outside of an application. */
    557                                 /*     For SIM_INIT result this field is set to AID of */
    558                                 /*         application that caused REFRESH */
    559                                 /*     For SIM_RESET result it is NULL. */
    560 } RIL_SimRefreshResponse_v7;
    561 
    562 /* Deprecated, use RIL_CDMA_CallWaiting_v6 */
    563 typedef struct {
    564     char *          number;             /* Remote party number */
    565     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown */
    566     char *          name;               /* Remote party name */
    567     RIL_CDMA_SignalInfoRecord signalInfoRecord;
    568 } RIL_CDMA_CallWaiting_v5;
    569 
    570 typedef struct {
    571     char *          number;             /* Remote party number */
    572     int             numberPresentation; /* 0=Allowed, 1=Restricted, 2=Not Specified/Unknown */
    573     char *          name;               /* Remote party name */
    574     RIL_CDMA_SignalInfoRecord signalInfoRecord;
    575     /* Number type/Number plan required to support International Call Waiting */
    576     int             number_type;        /* 0=Unknown, 1=International, 2=National,
    577                                            3=Network specific, 4=subscriber */
    578     int             number_plan;        /* 0=Unknown, 1=ISDN, 3=Data, 4=Telex, 8=Nat'l, 9=Private */
    579 } RIL_CDMA_CallWaiting_v6;
    580 
    581 /**
    582  * Which types of Cell Broadcast Message (CBM) are to be received by the ME
    583  *
    584  * uFromServiceID - uToServiceID defines a range of CBM message identifiers
    585  * whose value is 0x0000 - 0xFFFF as defined in TS 23.041 9.4.1.2.2 for GMS
    586  * and 9.4.4.2.2 for UMTS. All other values can be treated as empty
    587  * CBM message ID.
    588  *
    589  * uFromCodeScheme - uToCodeScheme defines a range of CBM data coding schemes
    590  * whose value is 0x00 - 0xFF as defined in TS 23.041 9.4.1.2.3 for GMS
    591  * and 9.4.4.2.3 for UMTS.
    592  * All other values can be treated as empty CBM data coding scheme.
    593  *
    594  * selected 0 means message types specified in <fromServiceId, toServiceId>
    595  * and <fromCodeScheme, toCodeScheme>are not accepted, while 1 means accepted.
    596  *
    597  * Used by RIL_REQUEST_GSM_GET_BROADCAST_CONFIG and
    598  * RIL_REQUEST_GSM_SET_BROADCAST_CONFIG.
    599  */
    600 typedef struct {
    601     int fromServiceId;
    602     int toServiceId;
    603     int fromCodeScheme;
    604     int toCodeScheme;
    605     unsigned char selected;
    606 } RIL_GSM_BroadcastSmsConfigInfo;
    607 
    608 /* No restriction at all including voice/SMS/USSD/SS/AV64 and packet data. */
    609 #define RIL_RESTRICTED_STATE_NONE           0x00
    610 /* Block emergency call due to restriction. But allow all normal voice/SMS/USSD/SS/AV64. */
    611 #define RIL_RESTRICTED_STATE_CS_EMERGENCY   0x01
    612 /* Block all normal voice/SMS/USSD/SS/AV64 due to restriction. Only Emergency call allowed. */
    613 #define RIL_RESTRICTED_STATE_CS_NORMAL      0x02
    614 /* Block all voice/SMS/USSD/SS/AV64 including emergency call due to restriction.*/
    615 #define RIL_RESTRICTED_STATE_CS_ALL         0x04
    616 /* Block packet data access due to restriction. */
    617 #define RIL_RESTRICTED_STATE_PS_ALL         0x10
    618 
    619 /* The status for an OTASP/OTAPA session */
    620 typedef enum {
    621     CDMA_OTA_PROVISION_STATUS_SPL_UNLOCKED,
    622     CDMA_OTA_PROVISION_STATUS_SPC_RETRIES_EXCEEDED,
    623     CDMA_OTA_PROVISION_STATUS_A_KEY_EXCHANGED,
    624     CDMA_OTA_PROVISION_STATUS_SSD_UPDATED,
    625     CDMA_OTA_PROVISION_STATUS_NAM_DOWNLOADED,
    626     CDMA_OTA_PROVISION_STATUS_MDN_DOWNLOADED,
    627     CDMA_OTA_PROVISION_STATUS_IMSI_DOWNLOADED,
    628     CDMA_OTA_PROVISION_STATUS_PRL_DOWNLOADED,
    629     CDMA_OTA_PROVISION_STATUS_COMMITTED,
    630     CDMA_OTA_PROVISION_STATUS_OTAPA_STARTED,
    631     CDMA_OTA_PROVISION_STATUS_OTAPA_STOPPED,
    632     CDMA_OTA_PROVISION_STATUS_OTAPA_ABORTED
    633 } RIL_CDMA_OTA_ProvisionStatus;
    634 
    635 typedef struct {
    636     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
    637     int bitErrorRate;    /* bit error rate (0-7, 99) as defined in TS 27.007 8.5 */
    638 } RIL_GW_SignalStrength;
    639 
    640 typedef struct {
    641     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
    642     int bitErrorRate;    /* bit error rate (0-7, 99) as defined in TS 27.007 8.5 */
    643 } RIL_SignalStrengthWcdma;
    644 
    645 typedef struct {
    646     int dbm;  /* Valid values are positive integers.  This value is the actual RSSI value
    647                * multiplied by -1.  Example: If the actual RSSI is -75, then this response
    648                * value will be 75.
    649                */
    650     int ecio; /* Valid values are positive integers.  This value is the actual Ec/Io multiplied
    651                * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value
    652                * will be 125.
    653                */
    654 } RIL_CDMA_SignalStrength;
    655 
    656 
    657 typedef struct {
    658     int dbm;  /* Valid values are positive integers.  This value is the actual RSSI value
    659                * multiplied by -1.  Example: If the actual RSSI is -75, then this response
    660                * value will be 75.
    661                */
    662     int ecio; /* Valid values are positive integers.  This value is the actual Ec/Io multiplied
    663                * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value
    664                * will be 125.
    665                */
    666     int signalNoiseRatio; /* Valid values are 0-8.  8 is the highest signal to noise ratio. */
    667 } RIL_EVDO_SignalStrength;
    668 
    669 typedef struct {
    670     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
    671     int rsrp;            /* The current Reference Signal Receive Power in dBm multipled by -1.
    672                           * Range: 44 to 140 dBm
    673                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
    674                           * Reference: 3GPP TS 36.133 9.1.4 */
    675     int rsrq;            /* The current Reference Signal Receive Quality in dB multiplied by -1.
    676                           * Range: 20 to 3 dB.
    677                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
    678                           * Reference: 3GPP TS 36.133 9.1.7 */
    679     int rssnr;           /* The current reference signal signal-to-noise ratio in 0.1 dB units.
    680                           * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
    681                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
    682                           * Reference: 3GPP TS 36.101 8.1.1 */
    683     int cqi;             /* The current Channel Quality Indicator.
    684                           * Range: 0 to 15.
    685                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
    686                           * Reference: 3GPP TS 36.101 9.2, 9.3, A.4 */
    687 } RIL_LTE_SignalStrength;
    688 
    689 typedef struct {
    690     int signalStrength;  /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
    691     int rsrp;            /* The current Reference Signal Receive Power in dBm multipled by -1.
    692                           * Range: 44 to 140 dBm
    693                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
    694                           * Reference: 3GPP TS 36.133 9.1.4 */
    695     int rsrq;            /* The current Reference Signal Receive Quality in dB multiplied by -1.
    696                           * Range: 20 to 3 dB.
    697                           * INT_MAX: 0x7FFFFFFF denotes invalid value.
    698                           * Reference: 3GPP TS 36.133 9.1.7 */
    699     int rssnr;           /* The current reference signal signal-to-noise ratio in 0.1 dB units.
    700                           * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
    701                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
    702                           * Reference: 3GPP TS 36.101 8.1.1 */
    703     int cqi;             /* The current Channel Quality Indicator.
    704                           * Range: 0 to 15.
    705                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
    706                           * Reference: 3GPP TS 36.101 9.2, 9.3, A.4 */
    707     int timingAdvance;   /* timing advance in micro seconds for a one way trip from cell to device.
    708                           * Approximate distance can be calculated using 300m/us * timingAdvance.
    709                           * Range: 0 to 0x7FFFFFFE
    710                           * INT_MAX : 0x7FFFFFFF denotes invalid value.
    711                           * Reference: 3GPP 36.321 section 6.1.3.5
    712                           * also: http://www.cellular-planningoptimization.com/2010/02/timing-advance-with-calculation.html */
    713 } RIL_LTE_SignalStrength_v8;
    714 
    715 /* Deprecated, use RIL_SignalStrength_v6 */
    716 typedef struct {
    717     RIL_GW_SignalStrength   GW_SignalStrength;
    718     RIL_CDMA_SignalStrength CDMA_SignalStrength;
    719     RIL_EVDO_SignalStrength EVDO_SignalStrength;
    720 } RIL_SignalStrength_v5;
    721 
    722 typedef struct {
    723     RIL_GW_SignalStrength   GW_SignalStrength;
    724     RIL_CDMA_SignalStrength CDMA_SignalStrength;
    725     RIL_EVDO_SignalStrength EVDO_SignalStrength;
    726     RIL_LTE_SignalStrength  LTE_SignalStrength;
    727 } RIL_SignalStrength_v6;
    728 
    729 typedef struct {
    730     RIL_GW_SignalStrength       GW_SignalStrength;
    731     RIL_CDMA_SignalStrength     CDMA_SignalStrength;
    732     RIL_EVDO_SignalStrength     EVDO_SignalStrength;
    733     RIL_LTE_SignalStrength_v8   LTE_SignalStrength;
    734 } RIL_SignalStrength_v8;
    735 
    736 /** RIL_CellIdentityGsm */
    737 typedef struct {
    738     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown */
    739     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if unknown */
    740     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
    741     int cid;    /* 16-bit GSM Cell Identity described in TS 27.007, 0..65535, INT_MAX if unknown  */
    742 } RIL_CellIdentityGsm;
    743 
    744 /** RIL_CellIdentityWcdma */
    745 typedef struct {
    746     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
    747     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if unknown  */
    748     int lac;    /* 16-bit Location Area Code, 0..65535, INT_MAX if unknown  */
    749     int cid;    /* 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455, INT_MAX if unknown  */
    750     int psc;    /* 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511, INT_MAX if unknown */
    751 } RIL_CellIdentityWcdma;
    752 
    753 /** RIL_CellIdentityCdma */
    754 typedef struct {
    755     int networkId;      /* Network Id 0..65535, INT_MAX if unknown */
    756     int systemId;       /* CDMA System Id 0..32767, INT_MAX if unknown  */
    757     int basestationId;  /* Base Station Id 0..65535, INT_MAX if unknown  */
    758     int longitude;      /* Longitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
    759                          * It is represented in units of 0.25 seconds and ranges from -2592000
    760                          * to 2592000, both values inclusive (corresponding to a range of -180
    761                          * to +180 degrees). INT_MAX if unknown */
    762 
    763     int latitude;       /* Latitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
    764                          * It is represented in units of 0.25 seconds and ranges from -1296000
    765                          * to 1296000, both values inclusive (corresponding to a range of -90
    766                          * to +90 degrees). INT_MAX if unknown */
    767 } RIL_CellIdentityCdma;
    768 
    769 /** RIL_CellIdentityLte */
    770 typedef struct {
    771     int mcc;    /* 3-digit Mobile Country Code, 0..999, INT_MAX if unknown  */
    772     int mnc;    /* 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if unknown  */
    773     int ci;     /* 28-bit Cell Identity described in TS ???, INT_MAX if unknown */
    774     int pci;    /* physical cell id 0..503, INT_MAX if unknown  */
    775     int tac;    /* 16-bit tracking area code, INT_MAX if unknown  */
    776 } RIL_CellIdentityLte;
    777 
    778 /** RIL_CellInfoGsm */
    779 typedef struct {
    780   RIL_CellIdentityGsm   cellIdentityGsm;
    781   RIL_GW_SignalStrength signalStrengthGsm;
    782 } RIL_CellInfoGsm;
    783 
    784 /** RIL_CellInfoWcdma */
    785 typedef struct {
    786   RIL_CellIdentityWcdma cellIdentityWcdma;
    787   RIL_SignalStrengthWcdma signalStrengthWcdma;
    788 } RIL_CellInfoWcdma;
    789 
    790 /** RIL_CellInfoCdma */
    791 typedef struct {
    792   RIL_CellIdentityCdma      cellIdentityCdma;
    793   RIL_CDMA_SignalStrength   signalStrengthCdma;
    794   RIL_EVDO_SignalStrength   signalStrengthEvdo;
    795 } RIL_CellInfoCdma;
    796 
    797 /** RIL_CellInfoLte */
    798 typedef struct {
    799   RIL_CellIdentityLte        cellIdentityLte;
    800   RIL_LTE_SignalStrength_v8  signalStrengthLte;
    801 } RIL_CellInfoLte;
    802 
    803 // Must be the same as CellInfo.TYPE_XXX
    804 typedef enum {
    805   RIL_CELL_INFO_TYPE_GSM    = 1,
    806   RIL_CELL_INFO_TYPE_CDMA   = 2,
    807   RIL_CELL_INFO_TYPE_LTE    = 3,
    808   RIL_CELL_INFO_TYPE_WCDMA  = 4,
    809 } RIL_CellInfoType;
    810 
    811 // Must be the same as CellInfo.TIMESTAMP_TYPE_XXX
    812 typedef enum {
    813     RIL_TIMESTAMP_TYPE_UNKNOWN = 0,
    814     RIL_TIMESTAMP_TYPE_ANTENNA = 1,
    815     RIL_TIMESTAMP_TYPE_MODEM = 2,
    816     RIL_TIMESTAMP_TYPE_OEM_RIL = 3,
    817     RIL_TIMESTAMP_TYPE_JAVA_RIL = 4,
    818 } RIL_TimeStampType;
    819 
    820 typedef struct {
    821   RIL_CellInfoType  cellInfoType;   /* cell type for selecting from union CellInfo */
    822   int               registered;     /* !0 if this cell is registered 0 if not registered */
    823   RIL_TimeStampType timeStampType;  /* type of time stamp represented by timeStamp */
    824   uint64_t          timeStamp;      /* Time in nanos as returned by ril_nano_time */
    825   union {
    826     RIL_CellInfoGsm     gsm;
    827     RIL_CellInfoCdma    cdma;
    828     RIL_CellInfoLte     lte;
    829     RIL_CellInfoWcdma   wcdma;
    830   } CellInfo;
    831 } RIL_CellInfo;
    832 
    833 /* Names of the CDMA info records (C.S0005 section 3.7.5) */
    834 typedef enum {
    835   RIL_CDMA_DISPLAY_INFO_REC,
    836   RIL_CDMA_CALLED_PARTY_NUMBER_INFO_REC,
    837   RIL_CDMA_CALLING_PARTY_NUMBER_INFO_REC,
    838   RIL_CDMA_CONNECTED_NUMBER_INFO_REC,
    839   RIL_CDMA_SIGNAL_INFO_REC,
    840   RIL_CDMA_REDIRECTING_NUMBER_INFO_REC,
    841   RIL_CDMA_LINE_CONTROL_INFO_REC,
    842   RIL_CDMA_EXTENDED_DISPLAY_INFO_REC,
    843   RIL_CDMA_T53_CLIR_INFO_REC,
    844   RIL_CDMA_T53_RELEASE_INFO_REC,
    845   RIL_CDMA_T53_AUDIO_CONTROL_INFO_REC
    846 } RIL_CDMA_InfoRecName;
    847 
    848 /* Display Info Rec as defined in C.S0005 section 3.7.5.1
    849    Extended Display Info Rec as defined in C.S0005 section 3.7.5.16
    850    Note: the Extended Display info rec contains multiple records of the
    851    form: display_tag, display_len, and display_len occurrences of the
    852    chari field if the display_tag is not 10000000 or 10000001.
    853    To save space, the records are stored consecutively in a byte buffer.
    854    The display_tag, display_len and chari fields are all 1 byte.
    855 */
    856 
    857 typedef struct {
    858   char alpha_len;
    859   char alpha_buf[CDMA_ALPHA_INFO_BUFFER_LENGTH];
    860 } RIL_CDMA_DisplayInfoRecord;
    861 
    862 /* Called Party Number Info Rec as defined in C.S0005 section 3.7.5.2
    863    Calling Party Number Info Rec as defined in C.S0005 section 3.7.5.3
    864    Connected Number Info Rec as defined in C.S0005 section 3.7.5.4
    865 */
    866 
    867 typedef struct {
    868   char len;
    869   char buf[CDMA_NUMBER_INFO_BUFFER_LENGTH];
    870   char number_type;
    871   char number_plan;
    872   char pi;
    873   char si;
    874 } RIL_CDMA_NumberInfoRecord;
    875 
    876 /* Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11 */
    877 typedef enum {
    878   RIL_REDIRECTING_REASON_UNKNOWN = 0,
    879   RIL_REDIRECTING_REASON_CALL_FORWARDING_BUSY = 1,
    880   RIL_REDIRECTING_REASON_CALL_FORWARDING_NO_REPLY = 2,
    881   RIL_REDIRECTING_REASON_CALLED_DTE_OUT_OF_ORDER = 9,
    882   RIL_REDIRECTING_REASON_CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
    883   RIL_REDIRECTING_REASON_CALL_FORWARDING_UNCONDITIONAL = 15,
    884   RIL_REDIRECTING_REASON_RESERVED
    885 } RIL_CDMA_RedirectingReason;
    886 
    887 typedef struct {
    888   RIL_CDMA_NumberInfoRecord redirectingNumber;
    889   /* redirectingReason is set to RIL_REDIRECTING_REASON_UNKNOWN if not included */
    890   RIL_CDMA_RedirectingReason redirectingReason;
    891 } RIL_CDMA_RedirectingNumberInfoRecord;
    892 
    893 /* Line Control Information Record as defined in C.S0005 section 3.7.5.15 */
    894 typedef struct {
    895   char lineCtrlPolarityIncluded;
    896   char lineCtrlToggle;
    897   char lineCtrlReverse;
    898   char lineCtrlPowerDenial;
    899 } RIL_CDMA_LineControlInfoRecord;
    900 
    901 /* T53 CLIR Information Record */
    902 typedef struct {
    903   char cause;
    904 } RIL_CDMA_T53_CLIRInfoRecord;
    905 
    906 /* T53 Audio Control Information Record */
    907 typedef struct {
    908   char upLink;
    909   char downLink;
    910 } RIL_CDMA_T53_AudioControlInfoRecord;
    911 
    912 typedef struct {
    913 
    914   RIL_CDMA_InfoRecName name;
    915 
    916   union {
    917     /* Display and Extended Display Info Rec */
    918     RIL_CDMA_DisplayInfoRecord           display;
    919 
    920     /* Called Party Number, Calling Party Number, Connected Number Info Rec */
    921     RIL_CDMA_NumberInfoRecord            number;
    922 
    923     /* Signal Info Rec */
    924     RIL_CDMA_SignalInfoRecord            signal;
    925 
    926     /* Redirecting Number Info Rec */
    927     RIL_CDMA_RedirectingNumberInfoRecord redir;
    928 
    929     /* Line Control Info Rec */
    930     RIL_CDMA_LineControlInfoRecord       lineCtrl;
    931 
    932     /* T53 CLIR Info Rec */
    933     RIL_CDMA_T53_CLIRInfoRecord          clir;
    934 
    935     /* T53 Audio Control Info Rec */
    936     RIL_CDMA_T53_AudioControlInfoRecord  audioCtrl;
    937   } rec;
    938 } RIL_CDMA_InformationRecord;
    939 
    940 #define RIL_CDMA_MAX_NUMBER_OF_INFO_RECS 10
    941 
    942 typedef struct {
    943   char numberOfInfoRecs;
    944   RIL_CDMA_InformationRecord infoRec[RIL_CDMA_MAX_NUMBER_OF_INFO_RECS];
    945 } RIL_CDMA_InformationRecords;
    946 
    947 /**
    948  * RIL_REQUEST_GET_SIM_STATUS
    949  *
    950  * Requests status of the SIM interface and the SIM card
    951  *
    952  * "data" is NULL
    953  *
    954  * "response" is const RIL_CardStatus_v6 *
    955  *
    956  * Valid errors:
    957  *  Must never fail
    958  */
    959 #define RIL_REQUEST_GET_SIM_STATUS 1
    960 
    961 /**
    962  * RIL_REQUEST_ENTER_SIM_PIN
    963  *
    964  * Supplies SIM PIN. Only called if RIL_CardStatus has RIL_APPSTATE_PIN state
    965  *
    966  * "data" is const char **
    967  * ((const char **)data)[0] is PIN value
    968  * ((const char **)data)[1] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
    969  *
    970  * "response" is int *
    971  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
    972  *
    973  * Valid errors:
    974  *
    975  * SUCCESS
    976  * RADIO_NOT_AVAILABLE (radio resetting)
    977  * GENERIC_FAILURE
    978  * PASSWORD_INCORRECT
    979  */
    980 
    981 #define RIL_REQUEST_ENTER_SIM_PIN 2
    982 
    983 
    984 /**
    985  * RIL_REQUEST_ENTER_SIM_PUK
    986  *
    987  * Supplies SIM PUK and new PIN.
    988  *
    989  * "data" is const char **
    990  * ((const char **)data)[0] is PUK value
    991  * ((const char **)data)[1] is new PIN value
    992  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
    993  *
    994  * "response" is int *
    995  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
    996  *
    997  * Valid errors:
    998  *
    999  *  SUCCESS
   1000  *  RADIO_NOT_AVAILABLE (radio resetting)
   1001  *  GENERIC_FAILURE
   1002  *  PASSWORD_INCORRECT
   1003  *     (PUK is invalid)
   1004  */
   1005 
   1006 #define RIL_REQUEST_ENTER_SIM_PUK 3
   1007 
   1008 /**
   1009  * RIL_REQUEST_ENTER_SIM_PIN2
   1010  *
   1011  * Supplies SIM PIN2. Only called following operation where SIM_PIN2 was
   1012  * returned as a a failure from a previous operation.
   1013  *
   1014  * "data" is const char **
   1015  * ((const char **)data)[0] is PIN2 value
   1016  * ((const char **)data)[1] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   1017  *
   1018  * "response" is int *
   1019  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   1020  *
   1021  * Valid errors:
   1022  *
   1023  *  SUCCESS
   1024  *  RADIO_NOT_AVAILABLE (radio resetting)
   1025  *  GENERIC_FAILURE
   1026  *  PASSWORD_INCORRECT
   1027  */
   1028 
   1029 #define RIL_REQUEST_ENTER_SIM_PIN2 4
   1030 
   1031 /**
   1032  * RIL_REQUEST_ENTER_SIM_PUK2
   1033  *
   1034  * Supplies SIM PUK2 and new PIN2.
   1035  *
   1036  * "data" is const char **
   1037  * ((const char **)data)[0] is PUK2 value
   1038  * ((const char **)data)[1] is new PIN2 value
   1039  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   1040  *
   1041  * "response" is int *
   1042  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   1043  *
   1044  * Valid errors:
   1045  *
   1046  *  SUCCESS
   1047  *  RADIO_NOT_AVAILABLE (radio resetting)
   1048  *  GENERIC_FAILURE
   1049  *  PASSWORD_INCORRECT
   1050  *     (PUK2 is invalid)
   1051  */
   1052 
   1053 #define RIL_REQUEST_ENTER_SIM_PUK2 5
   1054 
   1055 /**
   1056  * RIL_REQUEST_CHANGE_SIM_PIN
   1057  *
   1058  * Supplies old SIM PIN and new PIN.
   1059  *
   1060  * "data" is const char **
   1061  * ((const char **)data)[0] is old PIN value
   1062  * ((const char **)data)[1] is new PIN value
   1063  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   1064  *
   1065  * "response" is int *
   1066  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   1067  *
   1068  * Valid errors:
   1069  *
   1070  *  SUCCESS
   1071  *  RADIO_NOT_AVAILABLE (radio resetting)
   1072  *  GENERIC_FAILURE
   1073  *  PASSWORD_INCORRECT
   1074  *     (old PIN is invalid)
   1075  *
   1076  */
   1077 
   1078 #define RIL_REQUEST_CHANGE_SIM_PIN 6
   1079 
   1080 
   1081 /**
   1082  * RIL_REQUEST_CHANGE_SIM_PIN2
   1083  *
   1084  * Supplies old SIM PIN2 and new PIN2.
   1085  *
   1086  * "data" is const char **
   1087  * ((const char **)data)[0] is old PIN2 value
   1088  * ((const char **)data)[1] is new PIN2 value
   1089  * ((const char **)data)[2] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   1090  *
   1091  * "response" is int *
   1092  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   1093  *
   1094  * Valid errors:
   1095  *
   1096  *  SUCCESS
   1097  *  RADIO_NOT_AVAILABLE (radio resetting)
   1098  *  GENERIC_FAILURE
   1099  *  PASSWORD_INCORRECT
   1100  *     (old PIN2 is invalid)
   1101  *
   1102  */
   1103 
   1104 #define RIL_REQUEST_CHANGE_SIM_PIN2 7
   1105 
   1106 /**
   1107  * RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION
   1108  *
   1109  * Requests that network personlization be deactivated
   1110  *
   1111  * "data" is const char **
   1112  * ((const char **)(data))[0]] is network depersonlization code
   1113  *
   1114  * "response" is int *
   1115  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   1116  *
   1117  * Valid errors:
   1118  *
   1119  *  SUCCESS
   1120  *  RADIO_NOT_AVAILABLE (radio resetting)
   1121  *  GENERIC_FAILURE
   1122  *  PASSWORD_INCORRECT
   1123  *     (code is invalid)
   1124  */
   1125 
   1126 #define RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION 8
   1127 
   1128 /**
   1129  * RIL_REQUEST_GET_CURRENT_CALLS
   1130  *
   1131  * Requests current call list
   1132  *
   1133  * "data" is NULL
   1134  *
   1135  * "response" must be a "const RIL_Call **"
   1136  *
   1137  * Valid errors:
   1138  *
   1139  *  SUCCESS
   1140  *  RADIO_NOT_AVAILABLE (radio resetting)
   1141  *  GENERIC_FAILURE
   1142  *      (request will be made again in a few hundred msec)
   1143  */
   1144 
   1145 #define RIL_REQUEST_GET_CURRENT_CALLS 9
   1146 
   1147 
   1148 /**
   1149  * RIL_REQUEST_DIAL
   1150  *
   1151  * Initiate voice call
   1152  *
   1153  * "data" is const RIL_Dial *
   1154  * "response" is NULL
   1155  *
   1156  * This method is never used for supplementary service codes
   1157  *
   1158  * Valid errors:
   1159  *  SUCCESS
   1160  *  RADIO_NOT_AVAILABLE (radio resetting)
   1161  *  GENERIC_FAILURE
   1162  */
   1163 #define RIL_REQUEST_DIAL 10
   1164 
   1165 /**
   1166  * RIL_REQUEST_GET_IMSI
   1167  *
   1168  * Get the SIM IMSI
   1169  *
   1170  * Only valid when radio state is "RADIO_STATE_ON"
   1171  *
   1172  * "data" is const char **
   1173  * ((const char **)data)[0] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   1174  * "response" is a const char * containing the IMSI
   1175  *
   1176  * Valid errors:
   1177  *  SUCCESS
   1178  *  RADIO_NOT_AVAILABLE (radio resetting)
   1179  *  GENERIC_FAILURE
   1180  */
   1181 
   1182 #define RIL_REQUEST_GET_IMSI 11
   1183 
   1184 /**
   1185  * RIL_REQUEST_HANGUP
   1186  *
   1187  * Hang up a specific line (like AT+CHLD=1x)
   1188  *
   1189  * After this HANGUP request returns, RIL should show the connection is NOT
   1190  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
   1191  *
   1192  * "data" is an int *
   1193  * (int *)data)[0] contains Connection index (value of 'x' in CHLD above)
   1194  *
   1195  * "response" is NULL
   1196  *
   1197  * Valid errors:
   1198  *  SUCCESS
   1199  *  RADIO_NOT_AVAILABLE (radio resetting)
   1200  *  GENERIC_FAILURE
   1201  */
   1202 
   1203 #define RIL_REQUEST_HANGUP 12
   1204 
   1205 /**
   1206  * RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND
   1207  *
   1208  * Hang up waiting or held (like AT+CHLD=0)
   1209  *
   1210  * After this HANGUP request returns, RIL should show the connection is NOT
   1211  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
   1212  *
   1213  * "data" is NULL
   1214  * "response" is NULL
   1215  *
   1216  * Valid errors:
   1217  *  SUCCESS
   1218  *  RADIO_NOT_AVAILABLE (radio resetting)
   1219  *  GENERIC_FAILURE
   1220  */
   1221 
   1222 #define RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND 13
   1223 
   1224 /**
   1225  * RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND
   1226  *
   1227  * Hang up waiting or held (like AT+CHLD=1)
   1228  *
   1229  * After this HANGUP request returns, RIL should show the connection is NOT
   1230  * active anymore in next RIL_REQUEST_GET_CURRENT_CALLS query.
   1231  *
   1232  * "data" is NULL
   1233  * "response" is NULL
   1234  *
   1235  * Valid errors:
   1236  *  SUCCESS
   1237  *  RADIO_NOT_AVAILABLE (radio resetting)
   1238  *  GENERIC_FAILURE
   1239  */
   1240 
   1241 #define RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND 14
   1242 
   1243 /**
   1244  * RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE
   1245  *
   1246  * Switch waiting or holding call and active call (like AT+CHLD=2)
   1247  *
   1248  * State transitions should be is follows:
   1249  *
   1250  * If call 1 is waiting and call 2 is active, then if this re
   1251  *
   1252  *   BEFORE                               AFTER
   1253  * Call 1   Call 2                 Call 1       Call 2
   1254  * ACTIVE   HOLDING                HOLDING     ACTIVE
   1255  * ACTIVE   WAITING                HOLDING     ACTIVE
   1256  * HOLDING  WAITING                HOLDING     ACTIVE
   1257  * ACTIVE   IDLE                   HOLDING     IDLE
   1258  * IDLE     IDLE                   IDLE        IDLE
   1259  *
   1260  * "data" is NULL
   1261  * "response" is NULL
   1262  *
   1263  * Valid errors:
   1264  *  SUCCESS
   1265  *  RADIO_NOT_AVAILABLE (radio resetting)
   1266  *  GENERIC_FAILURE
   1267  */
   1268 
   1269 #define RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE 15
   1270 #define RIL_REQUEST_SWITCH_HOLDING_AND_ACTIVE 15
   1271 
   1272 /**
   1273  * RIL_REQUEST_CONFERENCE
   1274  *
   1275  * Conference holding and active (like AT+CHLD=3)
   1276 
   1277  * "data" is NULL
   1278  * "response" is NULL
   1279  *
   1280  * Valid errors:
   1281  *  SUCCESS
   1282  *  RADIO_NOT_AVAILABLE (radio resetting)
   1283  *  GENERIC_FAILURE
   1284  */
   1285 #define RIL_REQUEST_CONFERENCE 16
   1286 
   1287 /**
   1288  * RIL_REQUEST_UDUB
   1289  *
   1290  * Send UDUB (user determined used busy) to ringing or
   1291  * waiting call answer)(RIL_BasicRequest r);
   1292  *
   1293  * "data" is NULL
   1294  * "response" is NULL
   1295  *
   1296  * Valid errors:
   1297  *  SUCCESS
   1298  *  RADIO_NOT_AVAILABLE (radio resetting)
   1299  *  GENERIC_FAILURE
   1300  */
   1301 #define RIL_REQUEST_UDUB 17
   1302 
   1303 /**
   1304  * RIL_REQUEST_LAST_CALL_FAIL_CAUSE
   1305  *
   1306  * Requests the failure cause code for the most recently terminated call
   1307  *
   1308  * "data" is NULL
   1309  * "response" is a "int *"
   1310  * ((int *)response)[0] is RIL_LastCallFailCause.  GSM failure reasons are
   1311  * mapped to cause codes defined in TS 24.008 Annex H where possible. CDMA
   1312  * failure reasons are derived from the possible call failure scenarios
   1313  * described in the "CDMA IS-2000 Release A (C.S0005-A v6.0)" standard.
   1314  *
   1315  * The implementation should return CALL_FAIL_ERROR_UNSPECIFIED for blocked
   1316  * MO calls by restricted state (See RIL_UNSOL_RESTRICTED_STATE_CHANGED)
   1317  *
   1318  * If the implementation does not have access to the exact cause codes,
   1319  * then it should return one of the values listed in RIL_LastCallFailCause,
   1320  * as the UI layer needs to distinguish these cases for tone generation or
   1321  * error notification.
   1322  *
   1323  * Valid errors:
   1324  *  SUCCESS
   1325  *  RADIO_NOT_AVAILABLE
   1326  *  GENERIC_FAILURE
   1327  *
   1328  * See also: RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE
   1329  */
   1330 #define RIL_REQUEST_LAST_CALL_FAIL_CAUSE 18
   1331 
   1332 /**
   1333  * RIL_REQUEST_SIGNAL_STRENGTH
   1334  *
   1335  * Requests current signal strength and associated information
   1336  *
   1337  * Must succeed if radio is on.
   1338  *
   1339  * "data" is NULL
   1340  *
   1341  * "response" is a const RIL_SignalStrength *
   1342  *
   1343  * Valid errors:
   1344  *  SUCCESS
   1345  *  RADIO_NOT_AVAILABLE
   1346  */
   1347 #define RIL_REQUEST_SIGNAL_STRENGTH 19
   1348 
   1349 /**
   1350  * RIL_REQUEST_VOICE_REGISTRATION_STATE
   1351  *
   1352  * Request current registration state
   1353  *
   1354  * "data" is NULL
   1355  * "response" is a "char **"
   1356  * ((const char **)response)[0] is registration state 0-6,
   1357  *              0 - Not registered, MT is not currently searching
   1358  *                  a new operator to register
   1359  *              1 - Registered, home network
   1360  *              2 - Not registered, but MT is currently searching
   1361  *                  a new operator to register
   1362  *              3 - Registration denied
   1363  *              4 - Unknown
   1364  *              5 - Registered, roaming
   1365  *             10 - Same as 0, but indicates that emergency calls
   1366  *                  are enabled.
   1367  *             12 - Same as 2, but indicates that emergency calls
   1368  *                  are enabled.
   1369  *             13 - Same as 3, but indicates that emergency calls
   1370  *                  are enabled.
   1371  *             14 - Same as 4, but indicates that emergency calls
   1372  *                  are enabled.
   1373  *
   1374  * ((const char **)response)[1] is LAC if registered on a GSM/WCDMA system or
   1375  *                              NULL if not.Valid LAC are 0x0000 - 0xffff
   1376  * ((const char **)response)[2] is CID if registered on a * GSM/WCDMA or
   1377  *                              NULL if not.
   1378  *                                 Valid CID are 0x00000000 - 0xffffffff
   1379  *                                    In GSM, CID is Cell ID (see TS 27.007)
   1380  *                                            in 16 bits
   1381  *                                    In UMTS, CID is UMTS Cell Identity
   1382  *                                             (see TS 25.331) in 28 bits
   1383  * ((const char **)response)[3] indicates the available voice radio technology,
   1384  *                              valid values as defined by RIL_RadioTechnology.
   1385  * ((const char **)response)[4] is Base Station ID if registered on a CDMA
   1386  *                              system or NULL if not.  Base Station ID in
   1387  *                              decimal format
   1388  * ((const char **)response)[5] is Base Station latitude if registered on a
   1389  *                              CDMA system or NULL if not. Base Station
   1390  *                              latitude is a decimal number as specified in
   1391  *                              3GPP2 C.S0005-A v6.0. It is represented in
   1392  *                              units of 0.25 seconds and ranges from -1296000
   1393  *                              to 1296000, both values inclusive (corresponding
   1394  *                              to a range of -90 to +90 degrees).
   1395  * ((const char **)response)[6] is Base Station longitude if registered on a
   1396  *                              CDMA system or NULL if not. Base Station
   1397  *                              longitude is a decimal number as specified in
   1398  *                              3GPP2 C.S0005-A v6.0. It is represented in
   1399  *                              units of 0.25 seconds and ranges from -2592000
   1400  *                              to 2592000, both values inclusive (corresponding
   1401  *                              to a range of -180 to +180 degrees).
   1402  * ((const char **)response)[7] is concurrent services support indicator if
   1403  *                              registered on a CDMA system 0-1.
   1404  *                                   0 - Concurrent services not supported,
   1405  *                                   1 - Concurrent services supported
   1406  * ((const char **)response)[8] is System ID if registered on a CDMA system or
   1407  *                              NULL if not. Valid System ID are 0 - 32767
   1408  * ((const char **)response)[9] is Network ID if registered on a CDMA system or
   1409  *                              NULL if not. Valid System ID are 0 - 65535
   1410  * ((const char **)response)[10] is the TSB-58 Roaming Indicator if registered
   1411  *                               on a CDMA or EVDO system or NULL if not. Valid values
   1412  *                               are 0-255.
   1413  * ((const char **)response)[11] indicates whether the current system is in the
   1414  *                               PRL if registered on a CDMA or EVDO system or NULL if
   1415  *                               not. 0=not in the PRL, 1=in the PRL
   1416  * ((const char **)response)[12] is the default Roaming Indicator from the PRL,
   1417  *                               if registered on a CDMA or EVDO system or NULL if not.
   1418  *                               Valid values are 0-255.
   1419  * ((const char **)response)[13] if registration state is 3 (Registration
   1420  *                               denied) this is an enumerated reason why
   1421  *                               registration was denied.  See 3GPP TS 24.008,
   1422  *                               10.5.3.6 and Annex G.
   1423  *                                 0 - General
   1424  *                                 1 - Authentication Failure
   1425  *                                 2 - IMSI unknown in HLR
   1426  *                                 3 - Illegal MS
   1427  *                                 4 - Illegal ME
   1428  *                                 5 - PLMN not allowed
   1429  *                                 6 - Location area not allowed
   1430  *                                 7 - Roaming not allowed
   1431  *                                 8 - No Suitable Cells in this Location Area
   1432  *                                 9 - Network failure
   1433  *                                10 - Persistent location update reject
   1434  *                                11 - PLMN not allowed
   1435  *                                12 - Location area not allowed
   1436  *                                13 - Roaming not allowed in this Location Area
   1437  *                                15 - No Suitable Cells in this Location Area
   1438  *                                17 - Network Failure
   1439  *                                20 - MAC Failure
   1440  *                                21 - Sync Failure
   1441  *                                22 - Congestion
   1442  *                                23 - GSM Authentication unacceptable
   1443  *                                25 - Not Authorized for this CSG
   1444  *                                32 - Service option not supported
   1445  *                                33 - Requested service option not subscribed
   1446  *                                34 - Service option temporarily out of order
   1447  *                                38 - Call cannot be identified
   1448  *                                48-63 - Retry upon entry into a new cell
   1449  *                                95 - Semantically incorrect message
   1450  *                                96 - Invalid mandatory information
   1451  *                                97 - Message type non-existent or not implemented
   1452  *                                98 - Message not compatible with protocol state
   1453  *                                99 - Information element non-existent or not implemented
   1454  *                               100 - Conditional IE error
   1455  *                               101 - Message not compatible with protocol state
   1456  *                               111 - Protocol error, unspecified
   1457  * ((const char **)response)[14] is the Primary Scrambling Code of the current
   1458  *                               cell as described in TS 25.331, in hexadecimal
   1459  *                               format, or NULL if unknown or not registered
   1460  *                               to a UMTS network.
   1461  *
   1462  * Please note that registration state 4 ("unknown") is treated
   1463  * as "out of service" in the Android telephony system
   1464  *
   1465  * Registration state 3 can be returned if Location Update Reject
   1466  * (with cause 17 - Network Failure) is received repeatedly from the network,
   1467  * to facilitate "managed roaming"
   1468  *
   1469  * Valid errors:
   1470  *  SUCCESS
   1471  *  RADIO_NOT_AVAILABLE
   1472  *  GENERIC_FAILURE
   1473  */
   1474 #define RIL_REQUEST_VOICE_REGISTRATION_STATE 20
   1475 
   1476 /**
   1477  * RIL_REQUEST_DATA_REGISTRATION_STATE
   1478  *
   1479  * Request current DATA registration state
   1480  *
   1481  * "data" is NULL
   1482  * "response" is a "char **"
   1483  * ((const char **)response)[0] is registration state 0-5 from TS 27.007 10.1.20 AT+CGREG
   1484  * ((const char **)response)[1] is LAC if registered or NULL if not
   1485  * ((const char **)response)[2] is CID if registered or NULL if not
   1486  * ((const char **)response)[3] indicates the available data radio technology,
   1487  *                              valid values as defined by RIL_RadioTechnology.
   1488  * ((const char **)response)[4] if registration state is 3 (Registration
   1489  *                               denied) this is an enumerated reason why
   1490  *                               registration was denied.  See 3GPP TS 24.008,
   1491  *                               Annex G.6 "Additonal cause codes for GMM".
   1492  *      7 == GPRS services not allowed
   1493  *      8 == GPRS services and non-GPRS services not allowed
   1494  *      9 == MS identity cannot be derived by the network
   1495  *      10 == Implicitly detached
   1496  *      14 == GPRS services not allowed in this PLMN
   1497  *      16 == MSC temporarily not reachable
   1498  *      40 == No PDP context activated
   1499  * ((const char **)response)[5] The maximum number of simultaneous Data Calls that can be
   1500  *                              established using RIL_REQUEST_SETUP_DATA_CALL.
   1501  *
   1502  * The values at offsets 6..10 are optional LTE location information in decimal.
   1503  * If a value is unknown that value may be NULL. If all values are NULL,
   1504  * none need to be present.
   1505  *  ((const char **)response)[6] is TAC, a 16-bit Tracking Area Code.
   1506  *  ((const char **)response)[7] is CID, a 0-503 Physical Cell Identifier.
   1507  *  ((const char **)response)[8] is ECI, a 28-bit E-UTRAN Cell Identifier.
   1508  *  ((const char **)response)[9] is CSGID, a 27-bit Closed Subscriber Group Identity.
   1509  *  ((const char **)response)[10] is TADV, a 6-bit timing advance value.
   1510  *
   1511  * LAC and CID are in hexadecimal format.
   1512  * valid LAC are 0x0000 - 0xffff
   1513  * valid CID are 0x00000000 - 0x0fffffff
   1514  *
   1515  * Please note that registration state 4 ("unknown") is treated
   1516  * as "out of service" in the Android telephony system
   1517  *
   1518  * Valid errors:
   1519  *  SUCCESS
   1520  *  RADIO_NOT_AVAILABLE
   1521  *  GENERIC_FAILURE
   1522  */
   1523 #define RIL_REQUEST_DATA_REGISTRATION_STATE 21
   1524 
   1525 /**
   1526  * RIL_REQUEST_OPERATOR
   1527  *
   1528  * Request current operator ONS or EONS
   1529  *
   1530  * "data" is NULL
   1531  * "response" is a "const char **"
   1532  * ((const char **)response)[0] is long alpha ONS or EONS
   1533  *                                  or NULL if unregistered
   1534  *
   1535  * ((const char **)response)[1] is short alpha ONS or EONS
   1536  *                                  or NULL if unregistered
   1537  * ((const char **)response)[2] is 5 or 6 digit numeric code (MCC + MNC)
   1538  *                                  or NULL if unregistered
   1539  *
   1540  * Valid errors:
   1541  *  SUCCESS
   1542  *  RADIO_NOT_AVAILABLE
   1543  *  GENERIC_FAILURE
   1544  */
   1545 #define RIL_REQUEST_OPERATOR 22
   1546 
   1547 /**
   1548  * RIL_REQUEST_RADIO_POWER
   1549  *
   1550  * Toggle radio on and off (for "airplane" mode)
   1551  * If the radio is is turned off/on the radio modem subsystem
   1552  * is expected return to an initialized state. For instance,
   1553  * any voice and data calls will be terminated and all associated
   1554  * lists emptied.
   1555  *
   1556  * "data" is int *
   1557  * ((int *)data)[0] is > 0 for "Radio On"
   1558  * ((int *)data)[0] is == 0 for "Radio Off"
   1559  *
   1560  * "response" is NULL
   1561  *
   1562  * Turn radio on if "on" > 0
   1563  * Turn radio off if "on" == 0
   1564  *
   1565  * Valid errors:
   1566  *  SUCCESS
   1567  *  RADIO_NOT_AVAILABLE
   1568  *  GENERIC_FAILURE
   1569  */
   1570 #define RIL_REQUEST_RADIO_POWER 23
   1571 
   1572 /**
   1573  * RIL_REQUEST_DTMF
   1574  *
   1575  * Send a DTMF tone
   1576  *
   1577  * If the implementation is currently playing a tone requested via
   1578  * RIL_REQUEST_DTMF_START, that tone should be cancelled and the new tone
   1579  * should be played instead
   1580  *
   1581  * "data" is a char * containing a single character with one of 12 values: 0-9,*,#
   1582  * "response" is NULL
   1583  *
   1584  * FIXME should this block/mute microphone?
   1585  * How does this interact with local DTMF feedback?
   1586  *
   1587  * Valid errors:
   1588  *  SUCCESS
   1589  *  RADIO_NOT_AVAILABLE
   1590  *  GENERIC_FAILURE
   1591  *
   1592  * See also: RIL_REQUEST_DTMF_STOP, RIL_REQUEST_DTMF_START
   1593  *
   1594  */
   1595 #define RIL_REQUEST_DTMF 24
   1596 
   1597 /**
   1598  * RIL_REQUEST_SEND_SMS
   1599  *
   1600  * Send an SMS message
   1601  *
   1602  * "data" is const char **
   1603  * ((const char **)data)[0] is SMSC address in GSM BCD format prefixed
   1604  *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
   1605  * ((const char **)data)[1] is SMS in PDU format as an ASCII hex string
   1606  *      less the SMSC address
   1607  *      TP-Layer-Length is be "strlen(((const char **)data)[1])/2"
   1608  *
   1609  * "response" is a const RIL_SMS_Response *
   1610  *
   1611  * Based on the return error, caller decides to resend if sending sms
   1612  * fails. SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
   1613  * and GENERIC_FAILURE means no retry (i.e. error cause is 500)
   1614  *
   1615  * Valid errors:
   1616  *  SUCCESS
   1617  *  RADIO_NOT_AVAILABLE
   1618  *  SMS_SEND_FAIL_RETRY
   1619  *  FDN_CHECK_FAILURE
   1620  *  GENERIC_FAILURE
   1621  *
   1622  * FIXME how do we specify TP-Message-Reference if we need to resend?
   1623  */
   1624 #define RIL_REQUEST_SEND_SMS 25
   1625 
   1626 
   1627 /**
   1628  * RIL_REQUEST_SEND_SMS_EXPECT_MORE
   1629  *
   1630  * Send an SMS message. Identical to RIL_REQUEST_SEND_SMS,
   1631  * except that more messages are expected to be sent soon. If possible,
   1632  * keep SMS relay protocol link open (eg TS 27.005 AT+CMMS command)
   1633  *
   1634  * "data" is const char **
   1635  * ((const char **)data)[0] is SMSC address in GSM BCD format prefixed
   1636  *      by a length byte (as expected by TS 27.005) or NULL for default SMSC
   1637  * ((const char **)data)[1] is SMS in PDU format as an ASCII hex string
   1638  *      less the SMSC address
   1639  *      TP-Layer-Length is be "strlen(((const char **)data)[1])/2"
   1640  *
   1641  * "response" is a const RIL_SMS_Response *
   1642  *
   1643  * Based on the return error, caller decides to resend if sending sms
   1644  * fails. SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
   1645  * and GENERIC_FAILURE means no retry (i.e. error cause is 500)
   1646  *
   1647  * Valid errors:
   1648  *  SUCCESS
   1649  *  RADIO_NOT_AVAILABLE
   1650  *  SMS_SEND_FAIL_RETRY
   1651  *  GENERIC_FAILURE
   1652  *
   1653  */
   1654 #define RIL_REQUEST_SEND_SMS_EXPECT_MORE 26
   1655 
   1656 
   1657 /**
   1658  * RIL_REQUEST_SETUP_DATA_CALL
   1659  *
   1660  * Setup a packet data connection. If RIL_Data_Call_Response_v6.status
   1661  * return success it is added to the list of data calls and a
   1662  * RIL_UNSOL_DATA_CALL_LIST_CHANGED is sent. The call remains in the
   1663  * list until RIL_REQUEST_DEACTIVATE_DATA_CALL is issued or the
   1664  * radio is powered off/on. This list is returned by RIL_REQUEST_DATA_CALL_LIST
   1665  * and RIL_UNSOL_DATA_CALL_LIST_CHANGED.
   1666  *
   1667  * The RIL is expected to:
   1668  *  - Create one data call context.
   1669  *  - Create and configure a dedicated interface for the context
   1670  *  - The interface must be point to point.
   1671  *  - The interface is configured with one or more addresses and
   1672  *    is capable of sending and receiving packets. The prefix length
   1673  *    of the addresses must be /32 for IPv4 and /128 for IPv6.
   1674  *  - Must NOT change the linux routing table.
   1675  *  - Support up to RIL_REQUEST_DATA_REGISTRATION_STATE response[5]
   1676  *    number of simultaneous data call contexts.
   1677  *
   1678  * "data" is a const char **
   1679  * ((const char **)data)[0] Radio technology to use: 0-CDMA, 1-GSM/UMTS, 2...
   1680  *                          for values above 2 this is RIL_RadioTechnology + 2.
   1681  * ((const char **)data)[1] is a RIL_DataProfile (support is optional)
   1682  * ((const char **)data)[2] is the APN to connect to if radio technology is GSM/UMTS. This APN will
   1683  *                          override the one in the profile. NULL indicates no APN overrride.
   1684  * ((const char **)data)[3] is the username for APN, or NULL
   1685  * ((const char **)data)[4] is the password for APN, or NULL
   1686  * ((const char **)data)[5] is the PAP / CHAP auth type. Values:
   1687  *                          0 => PAP and CHAP is never performed.
   1688  *                          1 => PAP may be performed; CHAP is never performed.
   1689  *                          2 => CHAP may be performed; PAP is never performed.
   1690  *                          3 => PAP / CHAP may be performed - baseband dependent.
   1691  * ((const char **)data)[6] is the connection type to request must be one of the
   1692  *                          PDP_type values in TS 27.007 section 10.1.1.
   1693  *                          For example, "IP", "IPV6", "IPV4V6", or "PPP".
   1694  * ((const char **)data)[7] Optional connection property parameters, format to be defined.
   1695  *
   1696  * "response" is a RIL_Data_Call_Response_v6
   1697  *
   1698  * FIXME may need way to configure QoS settings
   1699  *
   1700  * Valid errors:
   1701  *  SUCCESS should be returned on both success and failure of setup with
   1702  *  the RIL_Data_Call_Response_v6.status containing the actual status.
   1703  *  For all other errors the RIL_Data_Call_Resonse_v6 is ignored.
   1704  *
   1705  *  Other errors could include:
   1706  *    RADIO_NOT_AVAILABLE, GENERIC_FAILURE, OP_NOT_ALLOWED_BEFORE_REG_TO_NW,
   1707  *    OP_NOT_ALLOWED_DURING_VOICE_CALL and REQUEST_NOT_SUPPORTED.
   1708  *
   1709  * See also: RIL_REQUEST_DEACTIVATE_DATA_CALL
   1710  */
   1711 #define RIL_REQUEST_SETUP_DATA_CALL 27
   1712 
   1713 
   1714 /**
   1715  * RIL_REQUEST_SIM_IO
   1716  *
   1717  * Request SIM I/O operation.
   1718  * This is similar to the TS 27.007 "restricted SIM" operation
   1719  * where it assumes all of the EF selection will be done by the
   1720  * callee.
   1721  *
   1722  * "data" is a const RIL_SIM_IO_v6 *
   1723  * Please note that RIL_SIM_IO has a "PIN2" field which may be NULL,
   1724  * or may specify a PIN2 for operations that require a PIN2 (eg
   1725  * updating FDN records)
   1726  *
   1727  * "response" is a const RIL_SIM_IO_Response *
   1728  *
   1729  * Arguments and responses that are unused for certain
   1730  * values of "command" should be ignored or set to NULL
   1731  *
   1732  * Valid errors:
   1733  *  SUCCESS
   1734  *  RADIO_NOT_AVAILABLE
   1735  *  GENERIC_FAILURE
   1736  *  SIM_PIN2
   1737  *  SIM_PUK2
   1738  */
   1739 #define RIL_REQUEST_SIM_IO 28
   1740 
   1741 /**
   1742  * RIL_REQUEST_SEND_USSD
   1743  *
   1744  * Send a USSD message
   1745  *
   1746  * If a USSD session already exists, the message should be sent in the
   1747  * context of that session. Otherwise, a new session should be created.
   1748  *
   1749  * The network reply should be reported via RIL_UNSOL_ON_USSD
   1750  *
   1751  * Only one USSD session may exist at a time, and the session is assumed
   1752  * to exist until:
   1753  *   a) The android system invokes RIL_REQUEST_CANCEL_USSD
   1754  *   b) The implementation sends a RIL_UNSOL_ON_USSD with a type code
   1755  *      of "0" (USSD-Notify/no further action) or "2" (session terminated)
   1756  *
   1757  * "data" is a const char * containing the USSD request in UTF-8 format
   1758  * "response" is NULL
   1759  *
   1760  * Valid errors:
   1761  *  SUCCESS
   1762  *  RADIO_NOT_AVAILABLE
   1763  *  FDN_CHECK_FAILURE
   1764  *  GENERIC_FAILURE
   1765  *
   1766  * See also: RIL_REQUEST_CANCEL_USSD, RIL_UNSOL_ON_USSD
   1767  */
   1768 
   1769 #define RIL_REQUEST_SEND_USSD 29
   1770 
   1771 /**
   1772  * RIL_REQUEST_CANCEL_USSD
   1773  *
   1774  * Cancel the current USSD session if one exists
   1775  *
   1776  * "data" is null
   1777  * "response" is NULL
   1778  *
   1779  * Valid errors:
   1780  *  SUCCESS
   1781  *  RADIO_NOT_AVAILABLE
   1782  *  GENERIC_FAILURE
   1783  */
   1784 
   1785 #define RIL_REQUEST_CANCEL_USSD 30
   1786 
   1787 /**
   1788  * RIL_REQUEST_GET_CLIR
   1789  *
   1790  * Gets current CLIR status
   1791  * "data" is NULL
   1792  * "response" is int *
   1793  * ((int *)data)[0] is "n" parameter from TS 27.007 7.7
   1794  * ((int *)data)[1] is "m" parameter from TS 27.007 7.7
   1795  *
   1796  * Valid errors:
   1797  *  SUCCESS
   1798  *  RADIO_NOT_AVAILABLE
   1799  *  GENERIC_FAILURE
   1800  */
   1801 #define RIL_REQUEST_GET_CLIR 31
   1802 
   1803 /**
   1804  * RIL_REQUEST_SET_CLIR
   1805  *
   1806  * "data" is int *
   1807  * ((int *)data)[0] is "n" parameter from TS 27.007 7.7
   1808  *
   1809  * "response" is NULL
   1810  *
   1811  * Valid errors:
   1812  *  SUCCESS
   1813  *  RADIO_NOT_AVAILABLE
   1814  *  GENERIC_FAILURE
   1815  */
   1816 #define RIL_REQUEST_SET_CLIR 32
   1817 
   1818 /**
   1819  * RIL_REQUEST_QUERY_CALL_FORWARD_STATUS
   1820  *
   1821  * "data" is const RIL_CallForwardInfo *
   1822  *
   1823  * "response" is const RIL_CallForwardInfo **
   1824  * "response" points to an array of RIL_CallForwardInfo *'s, one for
   1825  * each distinct registered phone number.
   1826  *
   1827  * For example, if data is forwarded to +18005551212 and voice is forwarded
   1828  * to +18005559999, then two separate RIL_CallForwardInfo's should be returned
   1829  *
   1830  * If, however, both data and voice are forwarded to +18005551212, then
   1831  * a single RIL_CallForwardInfo can be returned with the service class
   1832  * set to "data + voice = 3")
   1833  *
   1834  * Valid errors:
   1835  *  SUCCESS
   1836  *  RADIO_NOT_AVAILABLE
   1837  *  GENERIC_FAILURE
   1838  */
   1839 #define RIL_REQUEST_QUERY_CALL_FORWARD_STATUS 33
   1840 
   1841 
   1842 /**
   1843  * RIL_REQUEST_SET_CALL_FORWARD
   1844  *
   1845  * Configure call forward rule
   1846  *
   1847  * "data" is const RIL_CallForwardInfo *
   1848  * "response" is NULL
   1849  *
   1850  * Valid errors:
   1851  *  SUCCESS
   1852  *  RADIO_NOT_AVAILABLE
   1853  *  GENERIC_FAILURE
   1854  */
   1855 #define RIL_REQUEST_SET_CALL_FORWARD 34
   1856 
   1857 
   1858 /**
   1859  * RIL_REQUEST_QUERY_CALL_WAITING
   1860  *
   1861  * Query current call waiting state
   1862  *
   1863  * "data" is const int *
   1864  * ((const int *)data)[0] is the TS 27.007 service class to query.
   1865  * "response" is a const int *
   1866  * ((const int *)response)[0] is 0 for "disabled" and 1 for "enabled"
   1867  *
   1868  * If ((const int *)response)[0] is = 1, then ((const int *)response)[1]
   1869  * must follow, with the TS 27.007 service class bit vector of services
   1870  * for which call waiting is enabled.
   1871  *
   1872  * For example, if ((const int *)response)[0]  is 1 and
   1873  * ((const int *)response)[1] is 3, then call waiting is enabled for data
   1874  * and voice and disabled for everything else
   1875  *
   1876  * Valid errors:
   1877  *  SUCCESS
   1878  *  RADIO_NOT_AVAILABLE
   1879  *  GENERIC_FAILURE
   1880  */
   1881 #define RIL_REQUEST_QUERY_CALL_WAITING 35
   1882 
   1883 
   1884 /**
   1885  * RIL_REQUEST_SET_CALL_WAITING
   1886  *
   1887  * Configure current call waiting state
   1888  *
   1889  * "data" is const int *
   1890  * ((const int *)data)[0] is 0 for "disabled" and 1 for "enabled"
   1891  * ((const int *)data)[1] is the TS 27.007 service class bit vector of
   1892  *                           services to modify
   1893  * "response" is NULL
   1894  *
   1895  * Valid errors:
   1896  *  SUCCESS
   1897  *  RADIO_NOT_AVAILABLE
   1898  *  GENERIC_FAILURE
   1899  */
   1900 #define RIL_REQUEST_SET_CALL_WAITING 36
   1901 
   1902 /**
   1903  * RIL_REQUEST_SMS_ACKNOWLEDGE
   1904  *
   1905  * Acknowledge successful or failed receipt of SMS previously indicated
   1906  * via RIL_UNSOL_RESPONSE_NEW_SMS
   1907  *
   1908  * "data" is int *
   1909  * ((int *)data)[0] is 1 on successful receipt
   1910  *                  (basically, AT+CNMA=1 from TS 27.005
   1911  *                  is 0 on failed receipt
   1912  *                  (basically, AT+CNMA=2 from TS 27.005)
   1913  * ((int *)data)[1] if data[0] is 0, this contains the failure cause as defined
   1914  *                  in TS 23.040, 9.2.3.22. Currently only 0xD3 (memory
   1915  *                  capacity exceeded) and 0xFF (unspecified error) are
   1916  *                  reported.
   1917  *
   1918  * "response" is NULL
   1919  *
   1920  * FIXME would like request that specified RP-ACK/RP-ERROR PDU
   1921  *
   1922  * Valid errors:
   1923  *  SUCCESS
   1924  *  RADIO_NOT_AVAILABLE
   1925  *  GENERIC_FAILURE
   1926  */
   1927 #define RIL_REQUEST_SMS_ACKNOWLEDGE  37
   1928 
   1929 /**
   1930  * RIL_REQUEST_GET_IMEI - DEPRECATED
   1931  *
   1932  * Get the device IMEI, including check digit
   1933  *
   1934  * The request is DEPRECATED, use RIL_REQUEST_DEVICE_IDENTITY
   1935  * Valid when RadioState is not RADIO_STATE_UNAVAILABLE
   1936  *
   1937  * "data" is NULL
   1938  * "response" is a const char * containing the IMEI
   1939  *
   1940  * Valid errors:
   1941  *  SUCCESS
   1942  *  RADIO_NOT_AVAILABLE (radio resetting)
   1943  *  GENERIC_FAILURE
   1944  */
   1945 
   1946 #define RIL_REQUEST_GET_IMEI 38
   1947 
   1948 /**
   1949  * RIL_REQUEST_GET_IMEISV - DEPRECATED
   1950  *
   1951  * Get the device IMEISV, which should be two decimal digits
   1952  *
   1953  * The request is DEPRECATED, use RIL_REQUEST_DEVICE_IDENTITY
   1954  * Valid when RadioState is not RADIO_STATE_UNAVAILABLE
   1955  *
   1956  * "data" is NULL
   1957  * "response" is a const char * containing the IMEISV
   1958  *
   1959  * Valid errors:
   1960  *  SUCCESS
   1961  *  RADIO_NOT_AVAILABLE (radio resetting)
   1962  *  GENERIC_FAILURE
   1963  */
   1964 
   1965 #define RIL_REQUEST_GET_IMEISV 39
   1966 
   1967 
   1968 /**
   1969  * RIL_REQUEST_ANSWER
   1970  *
   1971  * Answer incoming call
   1972  *
   1973  * Will not be called for WAITING calls.
   1974  * RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE will be used in this case
   1975  * instead
   1976  *
   1977  * "data" is NULL
   1978  * "response" is NULL
   1979  *
   1980  * Valid errors:
   1981  *  SUCCESS
   1982  *  RADIO_NOT_AVAILABLE (radio resetting)
   1983  *  GENERIC_FAILURE
   1984  */
   1985 
   1986 #define RIL_REQUEST_ANSWER 40
   1987 
   1988 /**
   1989  * RIL_REQUEST_DEACTIVATE_DATA_CALL
   1990  *
   1991  * Deactivate packet data connection and remove from the
   1992  * data call list if SUCCESS is returned. Any other return
   1993  * values should also try to remove the call from the list,
   1994  * but that may not be possible. In any event a
   1995  * RIL_REQUEST_RADIO_POWER off/on must clear the list. An
   1996  * RIL_UNSOL_DATA_CALL_LIST_CHANGED is not expected to be
   1997  * issued because of an RIL_REQUEST_DEACTIVATE_DATA_CALL.
   1998  *
   1999  * "data" is const char **
   2000  * ((char**)data)[0] indicating CID
   2001  * ((char**)data)[1] indicating Disconnect Reason
   2002  *                   0 => No specific reason specified
   2003  *                   1 => Radio shutdown requested
   2004  *
   2005  * "response" is NULL
   2006  *
   2007  * Valid errors:
   2008  *  SUCCESS
   2009  *  RADIO_NOT_AVAILABLE
   2010  *  GENERIC_FAILURE
   2011  *
   2012  * See also: RIL_REQUEST_SETUP_DATA_CALL
   2013  */
   2014 #define RIL_REQUEST_DEACTIVATE_DATA_CALL 41
   2015 
   2016 /**
   2017  * RIL_REQUEST_QUERY_FACILITY_LOCK
   2018  *
   2019  * Query the status of a facility lock state
   2020  *
   2021  * "data" is const char **
   2022  * ((const char **)data)[0] is the facility string code from TS 27.007 7.4
   2023  *                      (eg "AO" for BAOC, "SC" for SIM lock)
   2024  * ((const char **)data)[1] is the password, or "" if not required
   2025  * ((const char **)data)[2] is the TS 27.007 service class bit vector of
   2026  *                           services to query
   2027  * ((const char **)data)[3] is AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   2028  *                            This is only applicable in the case of Fixed Dialing Numbers
   2029  *                            (FDN) requests.
   2030  *
   2031  * "response" is an int *
   2032  * ((const int *)response) 0 is the TS 27.007 service class bit vector of
   2033  *                           services for which the specified barring facility
   2034  *                           is active. "0" means "disabled for all"
   2035  *
   2036  *
   2037  * Valid errors:
   2038  *  SUCCESS
   2039  *  RADIO_NOT_AVAILABLE
   2040  *  GENERIC_FAILURE
   2041  *
   2042  */
   2043 #define RIL_REQUEST_QUERY_FACILITY_LOCK 42
   2044 
   2045 /**
   2046  * RIL_REQUEST_SET_FACILITY_LOCK
   2047  *
   2048  * Enable/disable one facility lock
   2049  *
   2050  * "data" is const char **
   2051  *
   2052  * ((const char **)data)[0] = facility string code from TS 27.007 7.4
   2053  * (eg "AO" for BAOC)
   2054  * ((const char **)data)[1] = "0" for "unlock" and "1" for "lock"
   2055  * ((const char **)data)[2] = password
   2056  * ((const char **)data)[3] = string representation of decimal TS 27.007
   2057  *                            service class bit vector. Eg, the string
   2058  *                            "1" means "set this facility for voice services"
   2059  * ((const char **)data)[4] = AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
   2060  *                            This is only applicable in the case of Fixed Dialing Numbers
   2061  *                            (FDN) requests.
   2062  *
   2063  * "response" is int *
   2064  * ((int *)response)[0] is the number of retries remaining, or -1 if unknown
   2065  *
   2066  * Valid errors:
   2067  *  SUCCESS
   2068  *  RADIO_NOT_AVAILABLE
   2069  *  GENERIC_FAILURE
   2070  *
   2071  */
   2072 #define RIL_REQUEST_SET_FACILITY_LOCK 43
   2073 
   2074 /**
   2075  * RIL_REQUEST_CHANGE_BARRING_PASSWORD
   2076  *
   2077  * Change call barring facility password
   2078  *
   2079  * "data" is const char **
   2080  *
   2081  * ((const char **)data)[0] = facility string code from TS 27.007 7.4
   2082  * (eg "AO" for BAOC)
   2083  * ((const char **)data)[1] = old password
   2084  * ((const char **)data)[2] = new password
   2085  *
   2086  * "response" is NULL
   2087  *
   2088  * Valid errors:
   2089  *  SUCCESS
   2090  *  RADIO_NOT_AVAILABLE
   2091  *  GENERIC_FAILURE
   2092  *
   2093  */
   2094 #define RIL_REQUEST_CHANGE_BARRING_PASSWORD 44
   2095 
   2096 /**
   2097  * RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE
   2098  *
   2099  * Query current network selectin mode
   2100  *
   2101  * "data" is NULL
   2102  *
   2103  * "response" is int *
   2104  * ((const int *)response)[0] is
   2105  *     0 for automatic selection
   2106  *     1 for manual selection
   2107  *
   2108  * Valid errors:
   2109  *  SUCCESS
   2110  *  RADIO_NOT_AVAILABLE
   2111  *  GENERIC_FAILURE
   2112  *
   2113  */
   2114 #define RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE 45
   2115 
   2116 /**
   2117  * RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC
   2118  *
   2119  * Specify that the network should be selected automatically
   2120  *
   2121  * "data" is NULL
   2122  * "response" is NULL
   2123  *
   2124  * This request must not respond until the new operator is selected
   2125  * and registered
   2126  *
   2127  * Valid errors:
   2128  *  SUCCESS
   2129  *  RADIO_NOT_AVAILABLE
   2130  *  ILLEGAL_SIM_OR_ME
   2131  *  GENERIC_FAILURE
   2132  *
   2133  * Note: Returns ILLEGAL_SIM_OR_ME when the failure is permanent and
   2134  *       no retries needed, such as illegal SIM or ME.
   2135  *       Returns GENERIC_FAILURE for all other causes that might be
   2136  *       fixed by retries.
   2137  *
   2138  */
   2139 #define RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC 46
   2140 
   2141 /**
   2142  * RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL
   2143  *
   2144  * Manually select a specified network.
   2145  *
   2146  * "data" is const char * specifying MCCMNC of network to select (eg "310170")
   2147  * "response" is NULL
   2148  *
   2149  * This request must not respond until the new operator is selected
   2150  * and registered
   2151  *
   2152  * Valid errors:
   2153  *  SUCCESS
   2154  *  RADIO_NOT_AVAILABLE
   2155  *  ILLEGAL_SIM_OR_ME
   2156  *  GENERIC_FAILURE
   2157  *
   2158  * Note: Returns ILLEGAL_SIM_OR_ME when the failure is permanent and
   2159  *       no retries needed, such as illegal SIM or ME.
   2160  *       Returns GENERIC_FAILURE for all other causes that might be
   2161  *       fixed by retries.
   2162  *
   2163  */
   2164 #define RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL 47
   2165 
   2166 /**
   2167  * RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
   2168  *
   2169  * Scans for available networks
   2170  *
   2171  * "data" is NULL
   2172  * "response" is const char ** that should be an array of n*4 strings, where
   2173  *    n is the number of available networks
   2174  * For each available network:
   2175  *
   2176  * ((const char **)response)[n+0] is long alpha ONS or EONS
   2177  * ((const char **)response)[n+1] is short alpha ONS or EONS
   2178  * ((const char **)response)[n+2] is 5 or 6 digit numeric code (MCC + MNC)
   2179  * ((const char **)response)[n+3] is a string value of the status:
   2180  *           "unknown"
   2181  *           "available"
   2182  *           "current"
   2183  *           "forbidden"
   2184  *
   2185  * This request must not respond until the new operator is selected
   2186  * and registered
   2187  *
   2188  * Valid errors:
   2189  *  SUCCESS
   2190  *  RADIO_NOT_AVAILABLE
   2191  *  GENERIC_FAILURE
   2192  *
   2193  */
   2194 #define RIL_REQUEST_QUERY_AVAILABLE_NETWORKS 48
   2195 
   2196 /**
   2197  * RIL_REQUEST_DTMF_START
   2198  *
   2199  * Start playing a DTMF tone. Continue playing DTMF tone until
   2200  * RIL_REQUEST_DTMF_STOP is received
   2201  *
   2202  * If a RIL_REQUEST_DTMF_START is received while a tone is currently playing,
   2203  * it should cancel the previous tone and play the new one.
   2204  *
   2205  * "data" is a char *
   2206  * ((char *)data)[0] is a single character with one of 12 values: 0-9,*,#
   2207  * "response" is NULL
   2208  *
   2209  * Valid errors:
   2210  *  SUCCESS
   2211  *  RADIO_NOT_AVAILABLE
   2212  *  GENERIC_FAILURE
   2213  *
   2214  * See also: RIL_REQUEST_DTMF, RIL_REQUEST_DTMF_STOP
   2215  */
   2216 #define RIL_REQUEST_DTMF_START 49
   2217 
   2218 /**
   2219  * RIL_REQUEST_DTMF_STOP
   2220  *
   2221  * Stop playing a currently playing DTMF tone.
   2222  *
   2223  * "data" is NULL
   2224  * "response" is NULL
   2225  *
   2226  * Valid errors:
   2227  *  SUCCESS
   2228  *  RADIO_NOT_AVAILABLE
   2229  *  GENERIC_FAILURE
   2230  *
   2231  * See also: RIL_REQUEST_DTMF, RIL_REQUEST_DTMF_START
   2232  */
   2233 #define RIL_REQUEST_DTMF_STOP 50
   2234 
   2235 /**
   2236  * RIL_REQUEST_BASEBAND_VERSION
   2237  *
   2238  * Return string value indicating baseband version, eg
   2239  * response from AT+CGMR
   2240  *
   2241  * "data" is NULL
   2242  * "response" is const char * containing version string for log reporting
   2243  *
   2244  * Valid errors:
   2245  *  SUCCESS
   2246  *  RADIO_NOT_AVAILABLE
   2247  *  GENERIC_FAILURE
   2248  *
   2249  */
   2250 #define RIL_REQUEST_BASEBAND_VERSION 51
   2251 
   2252 /**
   2253  * RIL_REQUEST_SEPARATE_CONNECTION
   2254  *
   2255  * Separate a party from a multiparty call placing the multiparty call
   2256  * (less the specified party) on hold and leaving the specified party
   2257  * as the only other member of the current (active) call
   2258  *
   2259  * Like AT+CHLD=2x
   2260  *
   2261  * See TS 22.084 1.3.8.2 (iii)
   2262  * TS 22.030 6.5.5 "Entering "2X followed by send"
   2263  * TS 27.007 "AT+CHLD=2x"
   2264  *
   2265  * "data" is an int *
   2266  * (int *)data)[0] contains Connection index (value of 'x' in CHLD above) "response" is NULL
   2267  *
   2268  * "response" is NULL
   2269  *
   2270  * Valid errors:
   2271  *  SUCCESS
   2272  *  RADIO_NOT_AVAILABLE (radio resetting)
   2273  *  GENERIC_FAILURE
   2274  */
   2275 #define RIL_REQUEST_SEPARATE_CONNECTION 52
   2276 
   2277 
   2278 /**
   2279  * RIL_REQUEST_SET_MUTE
   2280  *
   2281  * Turn on or off uplink (microphone) mute.
   2282  *
   2283  * Will only be sent while voice call is active.
   2284  * Will always be reset to "disable mute" when a new voice call is initiated
   2285  *
   2286  * "data" is an int *
   2287  * (int *)data)[0] is 1 for "enable mute" and 0 for "disable mute"
   2288  *
   2289  * "response" is NULL
   2290  *
   2291  * Valid errors:
   2292  *  SUCCESS
   2293  *  RADIO_NOT_AVAILABLE (radio resetting)
   2294  *  GENERIC_FAILURE
   2295  */
   2296 
   2297 #define RIL_REQUEST_SET_MUTE 53
   2298 
   2299 /**
   2300  * RIL_REQUEST_GET_MUTE
   2301  *
   2302  * Queries the current state of the uplink mute setting
   2303  *
   2304  * "data" is NULL
   2305  * "response" is an int *
   2306  * (int *)response)[0] is 1 for "mute enabled" and 0 for "mute disabled"
   2307  *
   2308  * Valid errors:
   2309  *  SUCCESS
   2310  *  RADIO_NOT_AVAILABLE (radio resetting)
   2311  *  GENERIC_FAILURE
   2312  */
   2313 
   2314 #define RIL_REQUEST_GET_MUTE 54
   2315 
   2316 /**
   2317  * RIL_REQUEST_QUERY_CLIP
   2318  *
   2319  * Queries the status of the CLIP supplementary service
   2320  *
   2321  * (for MMI code "*#30#")
   2322  *
   2323  * "data" is NULL
   2324  * "response" is an int *
   2325  * (int *)response)[0] is 1 for "CLIP provisioned"
   2326  *                           and 0 for "CLIP not provisioned"
   2327  *                           and 2 for "unknown, e.g. no network etc"
   2328  *
   2329  * Valid errors:
   2330  *  SUCCESS
   2331  *  RADIO_NOT_AVAILABLE (radio resetting)
   2332  *  GENERIC_FAILURE
   2333  */
   2334 
   2335 #define RIL_REQUEST_QUERY_CLIP 55
   2336 
   2337 /**
   2338  * RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE - Deprecated use the status
   2339  * field in RIL_Data_Call_Response_v6.
   2340  *
   2341  * Requests the failure cause code for the most recently failed PDP
   2342  * context or CDMA data connection active
   2343  * replaces RIL_REQUEST_LAST_PDP_FAIL_CAUSE
   2344  *
   2345  * "data" is NULL
   2346  *
   2347  * "response" is a "int *"
   2348  * ((int *)response)[0] is an integer cause code defined in TS 24.008
   2349  *   section 6.1.3.1.3 or close approximation
   2350  *
   2351  * If the implementation does not have access to the exact cause codes,
   2352  * then it should return one of the values listed in
   2353  * RIL_DataCallFailCause, as the UI layer needs to distinguish these
   2354  * cases for error notification
   2355  * and potential retries.
   2356  *
   2357  * Valid errors:
   2358  *  SUCCESS
   2359  *  RADIO_NOT_AVAILABLE
   2360  *  GENERIC_FAILURE
   2361  *
   2362  * See also: RIL_REQUEST_LAST_CALL_FAIL_CAUSE
   2363  *
   2364  * Deprecated use the status field in RIL_Data_Call_Response_v6.
   2365  */
   2366 
   2367 #define RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE 56
   2368 
   2369 /**
   2370  * RIL_REQUEST_DATA_CALL_LIST
   2371  *
   2372  * Returns the data call list. An entry is added when a
   2373  * RIL_REQUEST_SETUP_DATA_CALL is issued and removed on a
   2374  * RIL_REQUEST_DEACTIVATE_DATA_CALL. The list is emptied
   2375  * when RIL_REQUEST_RADIO_POWER off/on is issued.
   2376  *
   2377  * "data" is NULL
   2378  * "response" is an array of RIL_Data_Call_Response_v6
   2379  *
   2380  * Valid errors:
   2381  *  SUCCESS
   2382  *  RADIO_NOT_AVAILABLE (radio resetting)
   2383  *  GENERIC_FAILURE
   2384  *
   2385  * See also: RIL_UNSOL_DATA_CALL_LIST_CHANGED
   2386  */
   2387 
   2388 #define RIL_REQUEST_DATA_CALL_LIST 57
   2389 
   2390 /**
   2391  * RIL_REQUEST_RESET_RADIO - DEPRECATED
   2392  *
   2393  * Request a radio reset. The RIL implementation may postpone
   2394  * the reset until after this request is responded to if the baseband
   2395  * is presently busy.
   2396  *
   2397  * The request is DEPRECATED, use RIL_REQUEST_RADIO_POWER
   2398  *
   2399  * "data" is NULL
   2400  * "response" is NULL
   2401  *
   2402  * Valid errors:
   2403  *  SUCCESS
   2404  *  RADIO_NOT_AVAILABLE (radio resetting)
   2405  *  GENERIC_FAILURE
   2406  *  REQUEST_NOT_SUPPORTED
   2407  */
   2408 
   2409 #define RIL_REQUEST_RESET_RADIO 58
   2410 
   2411 /**
   2412  * RIL_REQUEST_OEM_HOOK_RAW
   2413  *
   2414  * This request reserved for OEM-specific uses. It passes raw byte arrays
   2415  * back and forth.
   2416  *
   2417  * It can be invoked on the Java side from
   2418  * com.android.internal.telephony.Phone.invokeOemRilRequestRaw()
   2419  *
   2420  * "data" is a char * of bytes copied from the byte[] data argument in java
   2421  * "response" is a char * of bytes that will returned via the
   2422  * caller's "response" Message here:
   2423  * (byte[])(((AsyncResult)response.obj).result)
   2424  *
   2425  * An error response here will result in
   2426  * (((AsyncResult)response.obj).result) == null and
   2427  * (((AsyncResult)response.obj).exception) being an instance of
   2428  * com.android.internal.telephony.gsm.CommandException
   2429  *
   2430  * Valid errors:
   2431  *  All
   2432  */
   2433 
   2434 #define RIL_REQUEST_OEM_HOOK_RAW 59
   2435 
   2436 /**
   2437  * RIL_REQUEST_OEM_HOOK_STRINGS
   2438  *
   2439  * This request reserved for OEM-specific uses. It passes strings
   2440  * back and forth.
   2441  *
   2442  * It can be invoked on the Java side from
   2443  * com.android.internal.telephony.Phone.invokeOemRilRequestStrings()
   2444  *
   2445  * "data" is a const char **, representing an array of null-terminated UTF-8
   2446  * strings copied from the "String[] strings" argument to
   2447  * invokeOemRilRequestStrings()
   2448  *
   2449  * "response" is a const char **, representing an array of null-terminated UTF-8
   2450  * stings that will be returned via the caller's response message here:
   2451  *
   2452  * (String[])(((AsyncResult)response.obj).result)
   2453  *
   2454  * An error response here will result in
   2455  * (((AsyncResult)response.obj).result) == null and
   2456  * (((AsyncResult)response.obj).exception) being an instance of
   2457  * com.android.internal.telephony.gsm.CommandException
   2458  *
   2459  * Valid errors:
   2460  *  All
   2461  */
   2462 
   2463 #define RIL_REQUEST_OEM_HOOK_STRINGS 60
   2464 
   2465 /**
   2466  * RIL_REQUEST_SCREEN_STATE
   2467  *
   2468  * Indicates the current state of the screen.  When the screen is off, the
   2469  * RIL should notify the baseband to suppress certain notifications (eg,
   2470  * signal strength and changes in LAC/CID or BID/SID/NID/latitude/longitude)
   2471  * in an effort to conserve power.  These notifications should resume when the
   2472  * screen is on.
   2473  *
   2474  * "data" is int *
   2475  * ((int *)data)[0] is == 1 for "Screen On"
   2476  * ((int *)data)[0] is == 0 for "Screen Off"
   2477  *
   2478  * "response" is NULL
   2479  *
   2480  * Valid errors:
   2481  *  SUCCESS
   2482  *  GENERIC_FAILURE
   2483  */
   2484 #define RIL_REQUEST_SCREEN_STATE 61
   2485 
   2486 
   2487 /**
   2488  * RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION
   2489  *
   2490  * Enables/disables supplementary service related notifications
   2491  * from the network.
   2492  *
   2493  * Notifications are reported via RIL_UNSOL_SUPP_SVC_NOTIFICATION.
   2494  *
   2495  * "data" is int *
   2496  * ((int *)data)[0] is == 1 for notifications enabled
   2497  * ((int *)data)[0] is == 0 for notifications disabled
   2498  *
   2499  * "response" is NULL
   2500  *
   2501  * Valid errors:
   2502  *  SUCCESS
   2503  *  RADIO_NOT_AVAILABLE
   2504  *  GENERIC_FAILURE
   2505  *
   2506  * See also: RIL_UNSOL_SUPP_SVC_NOTIFICATION.
   2507  */
   2508 #define RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION 62
   2509 
   2510 /**
   2511  * RIL_REQUEST_WRITE_SMS_TO_SIM
   2512  *
   2513  * Stores a SMS message to SIM memory.
   2514  *
   2515  * "data" is RIL_SMS_WriteArgs *
   2516  *
   2517  * "response" is int *
   2518  * ((const int *)response)[0] is the record index where the message is stored.
   2519  *
   2520  * Valid errors:
   2521  *  SUCCESS
   2522  *  GENERIC_FAILURE
   2523  *
   2524  */
   2525 #define RIL_REQUEST_WRITE_SMS_TO_SIM 63
   2526 
   2527 /**
   2528  * RIL_REQUEST_DELETE_SMS_ON_SIM
   2529  *
   2530  * Deletes a SMS message from SIM memory.
   2531  *
   2532  * "data" is int  *
   2533  * ((int *)data)[0] is the record index of the message to delete.
   2534  *
   2535  * "response" is NULL
   2536  *
   2537  * Valid errors:
   2538  *  SUCCESS
   2539  *  GENERIC_FAILURE
   2540  *
   2541  */
   2542 #define RIL_REQUEST_DELETE_SMS_ON_SIM 64
   2543 
   2544 /**
   2545  * RIL_REQUEST_SET_BAND_MODE
   2546  *
   2547  * Assign a specified band for RF configuration.
   2548  *
   2549  * "data" is int *
   2550  * ((int *)data)[0] is == 0 for "unspecified" (selected by baseband automatically)
   2551  * ((int *)data)[0] is == 1 for "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
   2552  * ((int *)data)[0] is == 2 for "US band" (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
   2553  * ((int *)data)[0] is == 3 for "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
   2554  * ((int *)data)[0] is == 4 for "AUS band" (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
   2555  * ((int *)data)[0] is == 5 for "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
   2556  * ((int *)data)[0] is == 6 for "Cellular (800-MHz Band)"
   2557  * ((int *)data)[0] is == 7 for "PCS (1900-MHz Band)"
   2558  * ((int *)data)[0] is == 8 for "Band Class 3 (JTACS Band)"
   2559  * ((int *)data)[0] is == 9 for "Band Class 4 (Korean PCS Band)"
   2560  * ((int *)data)[0] is == 10 for "Band Class 5 (450-MHz Band)"
   2561  * ((int *)data)[0] is == 11 for "Band Class 6 (2-GMHz IMT2000 Band)"
   2562  * ((int *)data)[0] is == 12 for "Band Class 7 (Upper 700-MHz Band)"
   2563  * ((int *)data)[0] is == 13 for "Band Class 8 (1800-MHz Band)"
   2564  * ((int *)data)[0] is == 14 for "Band Class 9 (900-MHz Band)"
   2565  * ((int *)data)[0] is == 15 for "Band Class 10 (Secondary 800-MHz Band)"
   2566  * ((int *)data)[0] is == 16 for "Band Class 11 (400-MHz European PAMR Band)"
   2567  * ((int *)data)[0] is == 17 for "Band Class 15 (AWS Band)"
   2568  * ((int *)data)[0] is == 18 for "Band Class 16 (US 2.5-GHz Band)"
   2569  *
   2570  * "response" is NULL
   2571  *
   2572  * Valid errors:
   2573  *  SUCCESS
   2574  *  RADIO_NOT_AVAILABLE
   2575  *  GENERIC_FAILURE
   2576  */
   2577 #define RIL_REQUEST_SET_BAND_MODE 65
   2578 
   2579 /**
   2580  * RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE
   2581  *
   2582  * Query the list of band mode supported by RF.
   2583  *
   2584  * "data" is NULL
   2585  *
   2586  * "response" is int *
   2587  * "response" points to an array of int's, the int[0] is the size of array, reset is one for
   2588  * each available band mode.
   2589  *
   2590  *  0 for "unspecified" (selected by baseband automatically)
   2591  *  1 for "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
   2592  *  2 for "US band" (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
   2593  *  3 for "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
   2594  *  4 for "AUS band" (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
   2595  *  5 for "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
   2596  *  6 for "Cellular (800-MHz Band)"
   2597  *  7 for "PCS (1900-MHz Band)"
   2598  *  8 for "Band Class 3 (JTACS Band)"
   2599  *  9 for "Band Class 4 (Korean PCS Band)"
   2600  *  10 for "Band Class 5 (450-MHz Band)"
   2601  *  11 for "Band Class 6 (2-GMHz IMT2000 Band)"
   2602  *  12 for "Band Class 7 (Upper 700-MHz Band)"
   2603  *  13 for "Band Class 8 (1800-MHz Band)"
   2604  *  14 for "Band Class 9 (900-MHz Band)"
   2605  *  15 for "Band Class 10 (Secondary 800-MHz Band)"
   2606  *  16 for "Band Class 11 (400-MHz European PAMR Band)"
   2607  *  17 for "Band Class 15 (AWS Band)"
   2608  *  18 for "Band Class 16 (US 2.5-GHz Band)"
   2609  *
   2610  * Valid errors:
   2611  *  SUCCESS
   2612  *  RADIO_NOT_AVAILABLE
   2613  *  GENERIC_FAILURE
   2614  *
   2615  * See also: RIL_REQUEST_SET_BAND_MODE
   2616  */
   2617 #define RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE 66
   2618 
   2619 /**
   2620  * RIL_REQUEST_STK_GET_PROFILE
   2621  *
   2622  * Requests the profile of SIM tool kit.
   2623  * The profile indicates the SAT/USAT features supported by ME.
   2624  * The SAT/USAT features refer to 3GPP TS 11.14 and 3GPP TS 31.111
   2625  *
   2626  * "data" is NULL
   2627  *
   2628  * "response" is a const char * containing SAT/USAT profile
   2629  * in hexadecimal format string starting with first byte of terminal profile
   2630  *
   2631  * Valid errors:
   2632  *  RIL_E_SUCCESS
   2633  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   2634  *  RIL_E_GENERIC_FAILURE
   2635  */
   2636 #define RIL_REQUEST_STK_GET_PROFILE 67
   2637 
   2638 /**
   2639  * RIL_REQUEST_STK_SET_PROFILE
   2640  *
   2641  * Download the STK terminal profile as part of SIM initialization
   2642  * procedure
   2643  *
   2644  * "data" is a const char * containing SAT/USAT profile
   2645  * in hexadecimal format string starting with first byte of terminal profile
   2646  *
   2647  * "response" is NULL
   2648  *
   2649  * Valid errors:
   2650  *  RIL_E_SUCCESS
   2651  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   2652  *  RIL_E_GENERIC_FAILURE
   2653  */
   2654 #define RIL_REQUEST_STK_SET_PROFILE 68
   2655 
   2656 /**
   2657  * RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND
   2658  *
   2659  * Requests to send a SAT/USAT envelope command to SIM.
   2660  * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111
   2661  *
   2662  * "data" is a const char * containing SAT/USAT command
   2663  * in hexadecimal format string starting with command tag
   2664  *
   2665  * "response" is a const char * containing SAT/USAT response
   2666  * in hexadecimal format string starting with first byte of response
   2667  * (May be NULL)
   2668  *
   2669  * Valid errors:
   2670  *  RIL_E_SUCCESS
   2671  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   2672  *  RIL_E_GENERIC_FAILURE
   2673  */
   2674 #define RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND 69
   2675 
   2676 /**
   2677  * RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE
   2678  *
   2679  * Requests to send a terminal response to SIM for a received
   2680  * proactive command
   2681  *
   2682  * "data" is a const char * containing SAT/USAT response
   2683  * in hexadecimal format string starting with first byte of response data
   2684  *
   2685  * "response" is NULL
   2686  *
   2687  * Valid errors:
   2688  *  RIL_E_SUCCESS
   2689  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   2690  *  RIL_E_GENERIC_FAILURE
   2691  */
   2692 #define RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE 70
   2693 
   2694 /**
   2695  * RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM
   2696  *
   2697  * When STK application gets RIL_UNSOL_STK_CALL_SETUP, the call actually has
   2698  * been initialized by ME already. (We could see the call has been in the 'call
   2699  * list') So, STK application needs to accept/reject the call according as user
   2700  * operations.
   2701  *
   2702  * "data" is int *
   2703  * ((int *)data)[0] is > 0 for "accept" the call setup
   2704  * ((int *)data)[0] is == 0 for "reject" the call setup
   2705  *
   2706  * "response" is NULL
   2707  *
   2708  * Valid errors:
   2709  *  RIL_E_SUCCESS
   2710  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   2711  *  RIL_E_GENERIC_FAILURE
   2712  */
   2713 #define RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM 71
   2714 
   2715 /**
   2716  * RIL_REQUEST_EXPLICIT_CALL_TRANSFER
   2717  *
   2718  * Connects the two calls and disconnects the subscriber from both calls.
   2719  *
   2720  * "data" is NULL
   2721  * "response" is NULL
   2722  *
   2723  * Valid errors:
   2724  *  SUCCESS
   2725  *  RADIO_NOT_AVAILABLE (radio resetting)
   2726  *  GENERIC_FAILURE
   2727  */
   2728 #define RIL_REQUEST_EXPLICIT_CALL_TRANSFER 72
   2729 
   2730 /**
   2731  * RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE
   2732  *
   2733  * Requests to set the preferred network type for searching and registering
   2734  * (CS/PS domain, RAT, and operation mode)
   2735  *
   2736  * "data" is int * which is RIL_PreferredNetworkType
   2737  *
   2738  * "response" is NULL
   2739  *
   2740  * Valid errors:
   2741  *  SUCCESS
   2742  *  RADIO_NOT_AVAILABLE (radio resetting)
   2743  *  GENERIC_FAILURE
   2744  *  MODE_NOT_SUPPORTED
   2745  */
   2746 #define RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE 73
   2747 
   2748 /**
   2749  * RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE
   2750  *
   2751  * Query the preferred network type (CS/PS domain, RAT, and operation mode)
   2752  * for searching and registering
   2753  *
   2754  * "data" is NULL
   2755  *
   2756  * "response" is int *
   2757  * ((int *)reponse)[0] is == RIL_PreferredNetworkType
   2758  *
   2759  * Valid errors:
   2760  *  SUCCESS
   2761  *  RADIO_NOT_AVAILABLE
   2762  *  GENERIC_FAILURE
   2763  *
   2764  * See also: RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE
   2765  */
   2766 #define RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE 74
   2767 
   2768 /**
   2769  * RIL_REQUEST_NEIGHBORING_CELL_IDS
   2770  *
   2771  * Request neighboring cell id in GSM network
   2772  *
   2773  * "data" is NULL
   2774  * "response" must be a " const RIL_NeighboringCell** "
   2775  *
   2776  * Valid errors:
   2777  *  SUCCESS
   2778  *  RADIO_NOT_AVAILABLE
   2779  *  GENERIC_FAILURE
   2780  */
   2781 #define RIL_REQUEST_GET_NEIGHBORING_CELL_IDS 75
   2782 
   2783 /**
   2784  * RIL_REQUEST_SET_LOCATION_UPDATES
   2785  *
   2786  * Enables/disables network state change notifications due to changes in
   2787  * LAC and/or CID (for GSM) or BID/SID/NID/latitude/longitude (for CDMA).
   2788  * Basically +CREG=2 vs. +CREG=1 (TS 27.007).
   2789  *
   2790  * Note:  The RIL implementation should default to "updates enabled"
   2791  * when the screen is on and "updates disabled" when the screen is off.
   2792  *
   2793  * "data" is int *
   2794  * ((int *)data)[0] is == 1 for updates enabled (+CREG=2)
   2795  * ((int *)data)[0] is == 0 for updates disabled (+CREG=1)
   2796  *
   2797  * "response" is NULL
   2798  *
   2799  * Valid errors:
   2800  *  SUCCESS
   2801  *  RADIO_NOT_AVAILABLE
   2802  *  GENERIC_FAILURE
   2803  *
   2804  * See also: RIL_REQUEST_SCREEN_STATE, RIL_UNSOL_RESPONSE_NETWORK_STATE_CHANGED
   2805  */
   2806 #define RIL_REQUEST_SET_LOCATION_UPDATES 76
   2807 
   2808 /**
   2809  * RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE
   2810  *
   2811  * Request to set the location where the CDMA subscription shall
   2812  * be retrieved
   2813  *
   2814  * "data" is int *
   2815  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
   2816  *
   2817  * "response" is NULL
   2818  *
   2819  * Valid errors:
   2820  *  SUCCESS
   2821  *  RADIO_NOT_AVAILABLE
   2822  *  GENERIC_FAILURE
   2823  *  SIM_ABSENT
   2824  *  SUBSCRIPTION_NOT_AVAILABLE
   2825  *
   2826  * See also: RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE
   2827  */
   2828 #define RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE 77
   2829 
   2830 /**
   2831  * RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE
   2832  *
   2833  * Request to set the roaming preferences in CDMA
   2834  *
   2835  * "data" is int *
   2836  * ((int *)data)[0] is == 0 for Home Networks only, as defined in PRL
   2837  * ((int *)data)[0] is == 1 for Roaming on Affiliated networks, as defined in PRL
   2838  * ((int *)data)[0] is == 2 for Roaming on Any Network, as defined in the PRL
   2839  *
   2840  * "response" is NULL
   2841  *
   2842  * Valid errors:
   2843  *  SUCCESS
   2844  *  RADIO_NOT_AVAILABLE
   2845  *  GENERIC_FAILURE
   2846  */
   2847 #define RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE 78
   2848 
   2849 /**
   2850  * RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE
   2851  *
   2852  * Request the actual setting of the roaming preferences in CDMA in the modem
   2853  *
   2854  * "data" is NULL
   2855  *
   2856  * "response" is int *
   2857  * ((int *)response)[0] is == 0 for Home Networks only, as defined in PRL
   2858  * ((int *)response)[0] is == 1 for Roaming on Affiliated networks, as defined in PRL
   2859  * ((int *)response)[0] is == 2 for Roaming on Any Network, as defined in the PRL
   2860  *
   2861  * "response" is NULL
   2862  *
   2863  * Valid errors:
   2864  *  SUCCESS
   2865  *  RADIO_NOT_AVAILABLE
   2866  *  GENERIC_FAILURE
   2867  */
   2868 #define RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE 79
   2869 
   2870 /**
   2871  * RIL_REQUEST_SET_TTY_MODE
   2872  *
   2873  * Request to set the TTY mode
   2874  *
   2875  * "data" is int *
   2876  * ((int *)data)[0] is == 0 for TTY off
   2877  * ((int *)data)[0] is == 1 for TTY Full
   2878  * ((int *)data)[0] is == 2 for TTY HCO (hearing carryover)
   2879  * ((int *)data)[0] is == 3 for TTY VCO (voice carryover)
   2880  *
   2881  * "response" is NULL
   2882  *
   2883  * Valid errors:
   2884  *  SUCCESS
   2885  *  RADIO_NOT_AVAILABLE
   2886  *  GENERIC_FAILURE
   2887  */
   2888 #define RIL_REQUEST_SET_TTY_MODE 80
   2889 
   2890 /**
   2891  * RIL_REQUEST_QUERY_TTY_MODE
   2892  *
   2893  * Request the setting of TTY mode
   2894  *
   2895  * "data" is NULL
   2896  *
   2897  * "response" is int *
   2898  * ((int *)response)[0] is == 0 for TTY off
   2899  * ((int *)response)[0] is == 1 for TTY Full
   2900  * ((int *)response)[0] is == 2 for TTY HCO (hearing carryover)
   2901  * ((int *)response)[0] is == 3 for TTY VCO (voice carryover)
   2902  *
   2903  * "response" is NULL
   2904  *
   2905  * Valid errors:
   2906  *  SUCCESS
   2907  *  RADIO_NOT_AVAILABLE
   2908  *  GENERIC_FAILURE
   2909  */
   2910 #define RIL_REQUEST_QUERY_TTY_MODE 81
   2911 
   2912 /**
   2913  * RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE
   2914  *
   2915  * Request to set the preferred voice privacy mode used in voice
   2916  * scrambling
   2917  *
   2918  * "data" is int *
   2919  * ((int *)data)[0] is == 0 for Standard Privacy Mode (Public Long Code Mask)
   2920  * ((int *)data)[0] is == 1 for Enhanced Privacy Mode (Private Long Code Mask)
   2921  *
   2922  * "response" is NULL
   2923  *
   2924  * Valid errors:
   2925  *  SUCCESS
   2926  *  RADIO_NOT_AVAILABLE
   2927  *  GENERIC_FAILURE
   2928  */
   2929 #define RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE 82
   2930 
   2931 /**
   2932  * RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE
   2933  *
   2934  * Request the setting of preferred voice privacy mode
   2935  *
   2936  * "data" is NULL
   2937  *
   2938  * "response" is int *
   2939  * ((int *)response)[0] is == 0 for Standard Privacy Mode (Public Long Code Mask)
   2940  * ((int *)response)[0] is == 1 for Enhanced Privacy Mode (Private Long Code Mask)
   2941  *
   2942  * "response" is NULL
   2943  *
   2944  * Valid errors:
   2945  *  SUCCESS
   2946  *  RADIO_NOT_AVAILABLE
   2947  *  GENERIC_FAILURE
   2948  */
   2949 #define RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE 83
   2950 
   2951 /**
   2952  * RIL_REQUEST_CDMA_FLASH
   2953  *
   2954  * Send FLASH
   2955  *
   2956  * "data" is const char *
   2957  * ((const char *)data)[0] is a FLASH string
   2958  *
   2959  * "response" is NULL
   2960  *
   2961  * Valid errors:
   2962  *  SUCCESS
   2963  *  RADIO_NOT_AVAILABLE
   2964  *  GENERIC_FAILURE
   2965  *
   2966  */
   2967 #define RIL_REQUEST_CDMA_FLASH 84
   2968 
   2969 /**
   2970  * RIL_REQUEST_CDMA_BURST_DTMF
   2971  *
   2972  * Send DTMF string
   2973  *
   2974  * "data" is const char **
   2975  * ((const char **)data)[0] is a DTMF string
   2976  * ((const char **)data)[1] is the DTMF ON length in milliseconds, or 0 to use
   2977  *                          default
   2978  * ((const char **)data)[2] is the DTMF OFF length in milliseconds, or 0 to use
   2979  *                          default
   2980  *
   2981  * "response" is NULL
   2982  *
   2983  * Valid errors:
   2984  *  SUCCESS
   2985  *  RADIO_NOT_AVAILABLE
   2986  *  GENERIC_FAILURE
   2987  *
   2988  */
   2989 #define RIL_REQUEST_CDMA_BURST_DTMF 85
   2990 
   2991 /**
   2992  * RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY
   2993  *
   2994  * Takes a 26 digit string (20 digit AKEY + 6 digit checksum).
   2995  * If the checksum is valid the 20 digit AKEY is written to NV,
   2996  * replacing the existing AKEY no matter what it was before.
   2997  *
   2998  * "data" is const char *
   2999  * ((const char *)data)[0] is a 26 digit string (ASCII digits '0'-'9')
   3000  *                         where the last 6 digits are a checksum of the
   3001  *                         first 20, as specified in TR45.AHAG
   3002  *                         "Common Cryptographic Algorithms, Revision D.1
   3003  *                         Section 2.2"
   3004  *
   3005  * "response" is NULL
   3006  *
   3007  * Valid errors:
   3008  *  SUCCESS
   3009  *  RADIO_NOT_AVAILABLE
   3010  *  GENERIC_FAILURE
   3011  *
   3012  */
   3013 #define RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY 86
   3014 
   3015 /**
   3016  * RIL_REQUEST_CDMA_SEND_SMS
   3017  *
   3018  * Send a CDMA SMS message
   3019  *
   3020  * "data" is const RIL_CDMA_SMS_Message *
   3021  *
   3022  * "response" is a const RIL_SMS_Response *
   3023  *
   3024  * Based on the return error, caller decides to resend if sending sms
   3025  * fails. The CDMA error class is derived as follows,
   3026  * SUCCESS is error class 0 (no error)
   3027  * SMS_SEND_FAIL_RETRY is error class 2 (temporary failure)
   3028  * and GENERIC_FAILURE is error class 3 (permanent and no retry)
   3029  *
   3030  * Valid errors:
   3031  *  SUCCESS
   3032  *  RADIO_NOT_AVAILABLE
   3033  *  SMS_SEND_FAIL_RETRY
   3034  *  GENERIC_FAILURE
   3035  *
   3036  */
   3037 #define RIL_REQUEST_CDMA_SEND_SMS 87
   3038 
   3039 /**
   3040  * RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
   3041  *
   3042  * Acknowledge the success or failure in the receipt of SMS
   3043  * previously indicated via RIL_UNSOL_RESPONSE_CDMA_NEW_SMS
   3044  *
   3045  * "data" is const RIL_CDMA_SMS_Ack *
   3046  *
   3047  * "response" is NULL
   3048  *
   3049  * Valid errors:
   3050  *  SUCCESS
   3051  *  RADIO_NOT_AVAILABLE
   3052  *  GENERIC_FAILURE
   3053  *
   3054  */
   3055 #define RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE 88
   3056 
   3057 /**
   3058  * RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG
   3059  *
   3060  * Request the setting of GSM/WCDMA Cell Broadcast SMS config.
   3061  *
   3062  * "data" is NULL
   3063  *
   3064  * "response" is a const RIL_GSM_BroadcastSmsConfigInfo **
   3065  * "responselen" is count * sizeof (RIL_GSM_BroadcastSmsConfigInfo *)
   3066  *
   3067  * Valid errors:
   3068  *  SUCCESS
   3069  *  RADIO_NOT_AVAILABLE
   3070  *  GENERIC_FAILURE
   3071  *
   3072  */
   3073 #define RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG 89
   3074 
   3075 /**
   3076  * RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG
   3077  *
   3078  * Set GSM/WCDMA Cell Broadcast SMS config
   3079  *
   3080  * "data" is a const RIL_GSM_BroadcastSmsConfigInfo **
   3081  * "datalen" is count * sizeof(RIL_GSM_BroadcastSmsConfigInfo *)
   3082  *
   3083  * "response" is NULL
   3084  *
   3085  * Valid errors:
   3086  *  SUCCESS
   3087  *  RADIO_NOT_AVAILABLE
   3088  *  GENERIC_FAILURE
   3089  *
   3090  */
   3091 #define RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG 90
   3092 
   3093 /**
   3094  * RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION
   3095  *
   3096 * Enable or disable the reception of GSM/WCDMA Cell Broadcast SMS
   3097  *
   3098  * "data" is const int *
   3099  * (const int *)data[0] indicates to activate or turn off the
   3100  * reception of GSM/WCDMA Cell Broadcast SMS, 0-1,
   3101  *                       0 - Activate, 1 - Turn off
   3102  *
   3103  * "response" is NULL
   3104  *
   3105  * Valid errors:
   3106  *  SUCCESS
   3107  *  RADIO_NOT_AVAILABLE
   3108  *  GENERIC_FAILURE
   3109  *
   3110  */
   3111 #define RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION 91
   3112 
   3113 /**
   3114  * RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG
   3115  *
   3116  * Request the setting of CDMA Broadcast SMS config
   3117  *
   3118  * "data" is NULL
   3119  *
   3120  * "response" is a const RIL_CDMA_BroadcastSmsConfigInfo **
   3121  * "responselen" is count * sizeof (RIL_CDMA_BroadcastSmsConfigInfo *)
   3122  *
   3123  * Valid errors:
   3124  *  SUCCESS
   3125  *  RADIO_NOT_AVAILABLE
   3126  *  GENERIC_FAILURE
   3127  *
   3128  */
   3129 #define RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG 92
   3130 
   3131 /**
   3132  * RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
   3133  *
   3134  * Set CDMA Broadcast SMS config
   3135  *
   3136  * "data" is an const RIL_CDMA_BroadcastSmsConfigInfo **
   3137  * "datalen" is count * sizeof(const RIL_CDMA_BroadcastSmsConfigInfo *)
   3138  *
   3139  * "response" is NULL
   3140  *
   3141  * Valid errors:
   3142  *  SUCCESS
   3143  *  RADIO_NOT_AVAILABLE
   3144  *  GENERIC_FAILURE
   3145  *
   3146  */
   3147 #define RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG 93
   3148 
   3149 /**
   3150  * RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION
   3151  *
   3152  * Enable or disable the reception of CDMA Broadcast SMS
   3153  *
   3154  * "data" is const int *
   3155  * (const int *)data[0] indicates to activate or turn off the
   3156  * reception of CDMA Broadcast SMS, 0-1,
   3157  *                       0 - Activate, 1 - Turn off
   3158  *
   3159  * "response" is NULL
   3160  *
   3161  * Valid errors:
   3162  *  SUCCESS
   3163  *  RADIO_NOT_AVAILABLE
   3164  *  GENERIC_FAILURE
   3165  *
   3166  */
   3167 #define RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION 94
   3168 
   3169 /**
   3170  * RIL_REQUEST_CDMA_SUBSCRIPTION
   3171  *
   3172  * Request the device MDN / H_SID / H_NID.
   3173  *
   3174  * The request is only allowed when CDMA subscription is available.  When CDMA
   3175  * subscription is changed, application layer should re-issue the request to
   3176  * update the subscription information.
   3177  *
   3178  * If a NULL value is returned for any of the device id, it means that error
   3179  * accessing the device.
   3180  *
   3181  * "response" is const char **
   3182  * ((const char **)response)[0] is MDN if CDMA subscription is available
   3183  * ((const char **)response)[1] is a comma separated list of H_SID (Home SID) if
   3184  *                              CDMA subscription is available, in decimal format
   3185  * ((const char **)response)[2] is a comma separated list of H_NID (Home NID) if
   3186  *                              CDMA subscription is available, in decimal format
   3187  * ((const char **)response)[3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
   3188  * ((const char **)response)[4] is PRL version if CDMA subscription is available
   3189  *
   3190  * Valid errors:
   3191  *  SUCCESS
   3192  *  RIL_E_SUBSCRIPTION_NOT_AVAILABLE
   3193  */
   3194 
   3195 #define RIL_REQUEST_CDMA_SUBSCRIPTION 95
   3196 
   3197 /**
   3198  * RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM
   3199  *
   3200  * Stores a CDMA SMS message to RUIM memory.
   3201  *
   3202  * "data" is RIL_CDMA_SMS_WriteArgs *
   3203  *
   3204  * "response" is int *
   3205  * ((const int *)response)[0] is the record index where the message is stored.
   3206  *
   3207  * Valid errors:
   3208  *  SUCCESS
   3209  *  RADIO_NOT_AVAILABLE
   3210  *  GENERIC_FAILURE
   3211  *
   3212  */
   3213 #define RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 96
   3214 
   3215 /**
   3216  * RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM
   3217  *
   3218  * Deletes a CDMA SMS message from RUIM memory.
   3219  *
   3220  * "data" is int  *
   3221  * ((int *)data)[0] is the record index of the message to delete.
   3222  *
   3223  * "response" is NULL
   3224  *
   3225  * Valid errors:
   3226  *  SUCCESS
   3227  *  RADIO_NOT_AVAILABLE
   3228  *  GENERIC_FAILURE
   3229  *
   3230  */
   3231 #define RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM 97
   3232 
   3233 /**
   3234  * RIL_REQUEST_DEVICE_IDENTITY
   3235  *
   3236  * Request the device ESN / MEID / IMEI / IMEISV.
   3237  *
   3238  * The request is always allowed and contains GSM and CDMA device identity;
   3239  * it substitutes the deprecated requests RIL_REQUEST_GET_IMEI and
   3240  * RIL_REQUEST_GET_IMEISV.
   3241  *
   3242  * If a NULL value is returned for any of the device id, it means that error
   3243  * accessing the device.
   3244  *
   3245  * When CDMA subscription is changed the ESN/MEID may change.  The application
   3246  * layer should re-issue the request to update the device identity in this case.
   3247  *
   3248  * "response" is const char **
   3249  * ((const char **)response)[0] is IMEI if GSM subscription is available
   3250  * ((const char **)response)[1] is IMEISV if GSM subscription is available
   3251  * ((const char **)response)[2] is ESN if CDMA subscription is available
   3252  * ((const char **)response)[3] is MEID if CDMA subscription is available
   3253  *
   3254  * Valid errors:
   3255  *  SUCCESS
   3256  *  RADIO_NOT_AVAILABLE
   3257  *  GENERIC_FAILURE
   3258  */
   3259 #define RIL_REQUEST_DEVICE_IDENTITY 98
   3260 
   3261 /**
   3262  * RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE
   3263  *
   3264  * Request the radio's system selection module to exit emergency
   3265  * callback mode.  RIL will not respond with SUCCESS until the modem has
   3266  * completely exited from Emergency Callback Mode.
   3267  *
   3268  * "data" is NULL
   3269  *
   3270  * "response" is NULL
   3271  *
   3272  * Valid errors:
   3273  *  SUCCESS
   3274  *  RADIO_NOT_AVAILABLE
   3275  *  GENERIC_FAILURE
   3276  *
   3277  */
   3278 #define RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE 99
   3279 
   3280 /**
   3281  * RIL_REQUEST_GET_SMSC_ADDRESS
   3282  *
   3283  * Queries the default Short Message Service Center address on the device.
   3284  *
   3285  * "data" is NULL
   3286  *
   3287  * "response" is const char * containing the SMSC address.
   3288  *
   3289  * Valid errors:
   3290  *  SUCCESS
   3291  *  RADIO_NOT_AVAILABLE
   3292  *  GENERIC_FAILURE
   3293  *
   3294  */
   3295 #define RIL_REQUEST_GET_SMSC_ADDRESS 100
   3296 
   3297 /**
   3298  * RIL_REQUEST_SET_SMSC_ADDRESS
   3299  *
   3300  * Sets the default Short Message Service Center address on the device.
   3301  *
   3302  * "data" is const char * containing the SMSC address.
   3303  *
   3304  * "response" is NULL
   3305  *
   3306  * Valid errors:
   3307  *  SUCCESS
   3308  *  RADIO_NOT_AVAILABLE
   3309  *  GENERIC_FAILURE
   3310  *
   3311  */
   3312 #define RIL_REQUEST_SET_SMSC_ADDRESS 101
   3313 
   3314 /**
   3315  * RIL_REQUEST_REPORT_SMS_MEMORY_STATUS
   3316  *
   3317  * Indicates whether there is storage available for new SMS messages.
   3318  *
   3319  * "data" is int *
   3320  * ((int *)data)[0] is 1 if memory is available for storing new messages
   3321  *                  is 0 if memory capacity is exceeded
   3322  *
   3323  * "response" is NULL
   3324  *
   3325  * Valid errors:
   3326  *  SUCCESS
   3327  *  RADIO_NOT_AVAILABLE
   3328  *  GENERIC_FAILURE
   3329  *
   3330  */
   3331 #define RIL_REQUEST_REPORT_SMS_MEMORY_STATUS 102
   3332 
   3333 /**
   3334  * RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING
   3335  *
   3336  * Indicates that the StkSerivce is running and is
   3337  * ready to receive RIL_UNSOL_STK_XXXXX commands.
   3338  *
   3339  * "data" is NULL
   3340  * "response" is NULL
   3341  *
   3342  * Valid errors:
   3343  *  SUCCESS
   3344  *  RADIO_NOT_AVAILABLE
   3345  *  GENERIC_FAILURE
   3346  *
   3347  */
   3348 #define RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING 103
   3349 
   3350 /**
   3351  * RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE
   3352  *
   3353  * Request to query the location where the CDMA subscription shall
   3354  * be retrieved
   3355  *
   3356  * "data" is NULL
   3357  *
   3358  * "response" is int *
   3359  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
   3360  *
   3361  * Valid errors:
   3362  *  SUCCESS
   3363  *  RADIO_NOT_AVAILABLE
   3364  *  GENERIC_FAILURE
   3365  *  SUBSCRIPTION_NOT_AVAILABLE
   3366  *
   3367  * See also: RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE
   3368  */
   3369 #define RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE 104
   3370 
   3371 /**
   3372  * RIL_REQUEST_ISIM_AUTHENTICATION
   3373  *
   3374  * Request the ISIM application on the UICC to perform AKA
   3375  * challenge/response algorithm for IMS authentication
   3376  *
   3377  * "data" is a const char * containing the challenge string in Base64 format
   3378  * "response" is a const char * containing the response in Base64 format
   3379  *
   3380  * Valid errors:
   3381  *  SUCCESS
   3382  *  RADIO_NOT_AVAILABLE
   3383  *  GENERIC_FAILURE
   3384  */
   3385 #define RIL_REQUEST_ISIM_AUTHENTICATION 105
   3386 
   3387 /**
   3388  * RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU
   3389  *
   3390  * Acknowledge successful or failed receipt of SMS previously indicated
   3391  * via RIL_UNSOL_RESPONSE_NEW_SMS, including acknowledgement TPDU to send
   3392  * as the RP-User-Data element of the RP-ACK or RP-ERROR PDU.
   3393  *
   3394  * "data" is const char **
   3395  * ((const char **)data)[0] is "1" on successful receipt (send RP-ACK)
   3396  *                          is "0" on failed receipt (send RP-ERROR)
   3397  * ((const char **)data)[1] is the acknowledgement TPDU in hexadecimal format
   3398  *
   3399  * "response" is NULL
   3400  *
   3401  * Valid errors:
   3402  *  SUCCESS
   3403  *  RADIO_NOT_AVAILABLE
   3404  *  GENERIC_FAILURE
   3405  */
   3406 #define RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU 106
   3407 
   3408 /**
   3409  * RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS
   3410  *
   3411  * Requests to send a SAT/USAT envelope command to SIM.
   3412  * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111.
   3413  *
   3414  * This request has one difference from RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND:
   3415  * the SW1 and SW2 status bytes from the UICC response are returned along with
   3416  * the response data, using the same structure as RIL_REQUEST_SIM_IO.
   3417  *
   3418  * The RIL implementation shall perform the normal processing of a '91XX'
   3419  * response in SW1/SW2 to retrieve the pending proactive command and send it
   3420  * as an unsolicited response, as RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND does.
   3421  *
   3422  * "data" is a const char * containing the SAT/USAT command
   3423  * in hexadecimal format starting with command tag
   3424  *
   3425  * "response" is a const RIL_SIM_IO_Response *
   3426  *
   3427  * Valid errors:
   3428  *  RIL_E_SUCCESS
   3429  *  RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
   3430  *  RIL_E_GENERIC_FAILURE
   3431  */
   3432 #define RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS 107
   3433 
   3434 /**
   3435  * RIL_REQUEST_VOICE_RADIO_TECH
   3436  *
   3437  * Query the radio technology type (3GPP/3GPP2) used for voice. Query is valid only
   3438  * when radio state is RADIO_STATE_ON
   3439  *
   3440  * "data" is NULL
   3441  * "response" is int *
   3442  * ((int *) response)[0] is of type const RIL_RadioTechnology
   3443  *
   3444  * Valid errors:
   3445  *  SUCCESS
   3446  *  RADIO_NOT_AVAILABLE
   3447  *  GENERIC_FAILURE
   3448  */
   3449 #define RIL_REQUEST_VOICE_RADIO_TECH 108
   3450 
   3451 /**
   3452  * RIL_REQUEST_GET_CELL_INFO_LIST
   3453  *
   3454  * Request all of the current cell information known to the radio. The radio
   3455  * must a list of all current cells, including the neighboring cells. If for a particular
   3456  * cell information isn't known then the appropriate unknown value will be returned.
   3457  * This does not cause or change the rate of RIL_UNSOL_CELL_INFO_LIST.
   3458  *
   3459  * "data" is NULL
   3460  *
   3461  * "response" is an array of  RIL_CellInfo.
   3462  */
   3463 #define RIL_REQUEST_GET_CELL_INFO_LIST 109
   3464 
   3465 /**
   3466  * RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE
   3467  *
   3468  * Sets the minimum time between when RIL_UNSOL_CELL_INFO_LIST should be invoked.
   3469  * A value of 0, means invoke RIL_UNSOL_CELL_INFO_LIST when any of the reported
   3470  * information changes. Setting the value to INT_MAX(0x7fffffff) means never issue
   3471  * a RIL_UNSOL_CELL_INFO_LIST.
   3472  *
   3473  * "data" is int *
   3474  * ((int *)data)[0] is minimum time in milliseconds
   3475  *
   3476  * "response" is NULL
   3477  *
   3478  * Valid errors:
   3479  *  SUCCESS
   3480  *  RADIO_NOT_AVAILABLE
   3481  *  GENERIC_FAILURE
   3482  */
   3483 #define RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE 110
   3484 
   3485 /***********************************************************************/
   3486 
   3487 
   3488 #define RIL_UNSOL_RESPONSE_BASE 1000
   3489 
   3490 /**
   3491  * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED
   3492  *
   3493  * Indicate when value of RIL_RadioState has changed.
   3494  *
   3495  * Callee will invoke RIL_RadioStateRequest method on main thread
   3496  *
   3497  * "data" is NULL
   3498  */
   3499 
   3500 #define RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED 1000
   3501 
   3502 
   3503 /**
   3504  * RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED
   3505  *
   3506  * Indicate when call state has changed
   3507  *
   3508  * Callee will invoke RIL_REQUEST_GET_CURRENT_CALLS on main thread
   3509  *
   3510  * "data" is NULL
   3511  *
   3512  * Response should be invoked on, for example,
   3513  * "RING", "BUSY", "NO CARRIER", and also call state
   3514  * transitions (DIALING->ALERTING ALERTING->ACTIVE)
   3515  *
   3516  * Redundent or extraneous invocations are tolerated
   3517  */
   3518 #define RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED 1001
   3519 
   3520 
   3521 /**
   3522  * RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED
   3523  *
   3524  * Called when the voice network state changed
   3525  *
   3526  * Callee will invoke the following requests on main thread:
   3527  *
   3528  * RIL_REQUEST_VOICE_REGISTRATION_STATE
   3529  * RIL_REQUEST_OPERATOR
   3530  *
   3531  * "data" is NULL
   3532  *
   3533  * FIXME should this happen when SIM records are loaded? (eg, for
   3534  * EONS)
   3535  */
   3536 #define RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED 1002
   3537 
   3538 /**
   3539  * RIL_UNSOL_RESPONSE_NEW_SMS
   3540  *
   3541  * Called when new SMS is received.
   3542  *
   3543  * "data" is const char *
   3544  * This is a pointer to a string containing the PDU of an SMS-DELIVER
   3545  * as an ascii string of hex digits. The PDU starts with the SMSC address
   3546  * per TS 27.005 (+CMT:)
   3547  *
   3548  * Callee will subsequently confirm the receipt of thei SMS with a
   3549  * RIL_REQUEST_SMS_ACKNOWLEDGE
   3550  *
   3551  * No new RIL_UNSOL_RESPONSE_NEW_SMS
   3552  * or RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT messages should be sent until a
   3553  * RIL_REQUEST_SMS_ACKNOWLEDGE has been received
   3554  */
   3555 
   3556 #define RIL_UNSOL_RESPONSE_NEW_SMS 1003
   3557 
   3558 /**
   3559  * RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT
   3560  *
   3561  * Called when new SMS Status Report is received.
   3562  *
   3563  * "data" is const char *
   3564  * This is a pointer to a string containing the PDU of an SMS-STATUS-REPORT
   3565  * as an ascii string of hex digits. The PDU starts with the SMSC address
   3566  * per TS 27.005 (+CDS:).
   3567  *
   3568  * Callee will subsequently confirm the receipt of the SMS with a
   3569  * RIL_REQUEST_SMS_ACKNOWLEDGE
   3570  *
   3571  * No new RIL_UNSOL_RESPONSE_NEW_SMS
   3572  * or RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT messages should be sent until a
   3573  * RIL_REQUEST_SMS_ACKNOWLEDGE has been received
   3574  */
   3575 
   3576 #define RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT 1004
   3577 
   3578 /**
   3579  * RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM
   3580  *
   3581  * Called when new SMS has been stored on SIM card
   3582  *
   3583  * "data" is const int *
   3584  * ((const int *)data)[0] contains the slot index on the SIM that contains
   3585  * the new message
   3586  */
   3587 
   3588 #define RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM 1005
   3589 
   3590 /**
   3591  * RIL_UNSOL_ON_USSD
   3592  *
   3593  * Called when a new USSD message is received.
   3594  *
   3595  * "data" is const char **
   3596  * ((const char **)data)[0] points to a type code, which is
   3597  *  one of these string values:
   3598  *      "0"   USSD-Notify -- text in ((const char **)data)[1]
   3599  *      "1"   USSD-Request -- text in ((const char **)data)[1]
   3600  *      "2"   Session terminated by network
   3601  *      "3"   other local client (eg, SIM Toolkit) has responded
   3602  *      "4"   Operation not supported
   3603  *      "5"   Network timeout
   3604  *
   3605  * The USSD session is assumed to persist if the type code is "1", otherwise
   3606  * the current session (if any) is assumed to have terminated.
   3607  *
   3608  * ((const char **)data)[1] points to a message string if applicable, which
   3609  * should always be in UTF-8.
   3610  */
   3611 #define RIL_UNSOL_ON_USSD 1006
   3612 /* Previously #define RIL_UNSOL_ON_USSD_NOTIFY 1006   */
   3613 
   3614 /**
   3615  * RIL_UNSOL_ON_USSD_REQUEST
   3616  *
   3617  * Obsolete. Send via RIL_UNSOL_ON_USSD
   3618  */
   3619 #define RIL_UNSOL_ON_USSD_REQUEST 1007
   3620 
   3621 
   3622 /**
   3623  * RIL_UNSOL_NITZ_TIME_RECEIVED
   3624  *
   3625  * Called when radio has received a NITZ time message
   3626  *
   3627  * "data" is const char * pointing to NITZ time string
   3628  * in the form "yy/mm/dd,hh:mm:ss(+/-)tz,dt"
   3629  */
   3630 #define RIL_UNSOL_NITZ_TIME_RECEIVED  1008
   3631 
   3632 /**
   3633  * RIL_UNSOL_SIGNAL_STRENGTH
   3634  *
   3635  * Radio may report signal strength rather han have it polled.
   3636  *
   3637  * "data" is a const RIL_SignalStrength *
   3638  */
   3639 #define RIL_UNSOL_SIGNAL_STRENGTH  1009
   3640 
   3641 
   3642 /**
   3643  * RIL_UNSOL_DATA_CALL_LIST_CHANGED
   3644  *
   3645  * "data" is an array of RIL_Data_Call_Response_v6 identical to that
   3646  * returned by RIL_REQUEST_DATA_CALL_LIST. It is the complete list
   3647  * of current data contexts including new contexts that have been
   3648  * activated. A data call is only removed from this list when the
   3649  * framework sends a RIL_REQUEST_DEACTIVATE_DATA_CALL or the radio
   3650  * is powered off/on.
   3651  *
   3652  * See also: RIL_REQUEST_DATA_CALL_LIST
   3653  */
   3654 
   3655 #define RIL_UNSOL_DATA_CALL_LIST_CHANGED 1010
   3656 
   3657 /**
   3658  * RIL_UNSOL_SUPP_SVC_NOTIFICATION
   3659  *
   3660  * Reports supplementary service related notification from the network.
   3661  *
   3662  * "data" is a const RIL_SuppSvcNotification *
   3663  *
   3664  */
   3665 
   3666 #define RIL_UNSOL_SUPP_SVC_NOTIFICATION 1011
   3667 
   3668 /**
   3669  * RIL_UNSOL_STK_SESSION_END
   3670  *
   3671  * Indicate when STK session is terminated by SIM.
   3672  *
   3673  * "data" is NULL
   3674  */
   3675 #define RIL_UNSOL_STK_SESSION_END 1012
   3676 
   3677 /**
   3678  * RIL_UNSOL_STK_PROACTIVE_COMMAND
   3679  *
   3680  * Indicate when SIM issue a STK proactive command to applications
   3681  *
   3682  * "data" is a const char * containing SAT/USAT proactive command
   3683  * in hexadecimal format string starting with command tag
   3684  *
   3685  */
   3686 #define RIL_UNSOL_STK_PROACTIVE_COMMAND 1013
   3687 
   3688 /**
   3689  * RIL_UNSOL_STK_EVENT_NOTIFY
   3690  *
   3691  * Indicate when SIM notifies applcations some event happens.
   3692  * Generally, application does not need to have any feedback to
   3693  * SIM but shall be able to indicate appropriate messages to users.
   3694  *
   3695  * "data" is a const char * containing SAT/USAT commands or responses
   3696  * sent by ME to SIM or commands handled by ME, in hexadecimal format string
   3697  * starting with first byte of response data or command tag
   3698  *
   3699  */
   3700 #define RIL_UNSOL_STK_EVENT_NOTIFY 1014
   3701 
   3702 /**
   3703  * RIL_UNSOL_STK_CALL_SETUP
   3704  *
   3705  * Indicate when SIM wants application to setup a voice call.
   3706  *
   3707  * "data" is const int *
   3708  * ((const int *)data)[0] contains timeout value (in milliseconds)
   3709  */
   3710 #define RIL_UNSOL_STK_CALL_SETUP 1015
   3711 
   3712 /**
   3713  * RIL_UNSOL_SIM_SMS_STORAGE_FULL
   3714  *
   3715  * Indicates that SMS storage on the SIM is full.  Sent when the network
   3716  * attempts to deliver a new SMS message.  Messages cannot be saved on the
   3717  * SIM until space is freed.  In particular, incoming Class 2 messages
   3718  * cannot be stored.
   3719  *
   3720  * "data" is null
   3721  *
   3722  */
   3723 #define RIL_UNSOL_SIM_SMS_STORAGE_FULL 1016
   3724 
   3725 /**
   3726  * RIL_UNSOL_SIM_REFRESH
   3727  *
   3728  * Indicates that file(s) on the SIM have been updated, or the SIM
   3729  * has been reinitialized.
   3730  *
   3731  * In the case where RIL is version 6 or older:
   3732  * "data" is an int *
   3733  * ((int *)data)[0] is a RIL_SimRefreshResult.
   3734  * ((int *)data)[1] is the EFID of the updated file if the result is
   3735  * SIM_FILE_UPDATE or NULL for any other result.
   3736  *
   3737  * In the case where RIL is version 7:
   3738  * "data" is a RIL_SimRefreshResponse_v7 *
   3739  *
   3740  * Note: If the SIM state changes as a result of the SIM refresh (eg,
   3741  * SIM_READY -> SIM_LOCKED_OR_ABSENT), RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED
   3742  * should be sent.
   3743  */
   3744 #define RIL_UNSOL_SIM_REFRESH 1017
   3745 
   3746 /**
   3747  * RIL_UNSOL_CALL_RING
   3748  *
   3749  * Ring indication for an incoming call (eg, RING or CRING event).
   3750  * There must be at least one RIL_UNSOL_CALL_RING at the beginning
   3751  * of a call and sending multiple is optional. If the system property
   3752  * ro.telephony.call_ring.multiple is false then the upper layers
   3753  * will generate the multiple events internally. Otherwise the vendor
   3754  * ril must generate multiple RIL_UNSOL_CALL_RING if
   3755  * ro.telephony.call_ring.multiple is true or if it is absent.
   3756  *
   3757  * The rate of these events is controlled by ro.telephony.call_ring.delay
   3758  * and has a default value of 3000 (3 seconds) if absent.
   3759  *
   3760  * "data" is null for GSM
   3761  * "data" is const RIL_CDMA_SignalInfoRecord * if CDMA
   3762  */
   3763 #define RIL_UNSOL_CALL_RING 1018
   3764 
   3765 /**
   3766  * RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED
   3767  *
   3768  * Indicates that SIM state changes.
   3769  *
   3770  * Callee will invoke RIL_REQUEST_GET_SIM_STATUS on main thread
   3771 
   3772  * "data" is null
   3773  */
   3774 #define RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED 1019
   3775 
   3776 /**
   3777  * RIL_UNSOL_RESPONSE_CDMA_NEW_SMS
   3778  *
   3779  * Called when new CDMA SMS is received
   3780  *
   3781  * "data" is const RIL_CDMA_SMS_Message *
   3782  *
   3783  * Callee will subsequently confirm the receipt of the SMS with
   3784  * a RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
   3785  *
   3786  * No new RIL_UNSOL_RESPONSE_CDMA_NEW_SMS should be sent until
   3787  * RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE has been received
   3788  *
   3789  */
   3790 #define RIL_UNSOL_RESPONSE_CDMA_NEW_SMS 1020
   3791 
   3792 /**
   3793  * RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS
   3794  *
   3795  * Called when new Broadcast SMS is received
   3796  *
   3797  * "data" can be one of the following:
   3798  * If received from GSM network, "data" is const char of 88 bytes
   3799  * which indicates each page of a CBS Message sent to the MS by the
   3800  * BTS as coded in 3GPP 23.041 Section 9.4.1.2.
   3801  * If received from UMTS network, "data" is const char of 90 up to 1252
   3802  * bytes which contain between 1 and 15 CBS Message pages sent as one
   3803  * packet to the MS by the BTS as coded in 3GPP 23.041 Section 9.4.2.2.
   3804  *
   3805  */
   3806 #define RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS 1021
   3807 
   3808 /**
   3809  * RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL
   3810  *
   3811  * Indicates that SMS storage on the RUIM is full.  Messages
   3812  * cannot be saved on the RUIM until space is freed.
   3813  *
   3814  * "data" is null
   3815  *
   3816  */
   3817 #define RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL 1022
   3818 
   3819 /**
   3820  * RIL_UNSOL_RESTRICTED_STATE_CHANGED
   3821  *
   3822  * Indicates a restricted state change (eg, for Domain Specific Access Control).
   3823  *
   3824  * Radio need send this msg after radio off/on cycle no matter it is changed or not.
   3825  *
   3826  * "data" is an int *
   3827  * ((int *)data)[0] contains a bitmask of RIL_RESTRICTED_STATE_* values.
   3828  */
   3829 #define RIL_UNSOL_RESTRICTED_STATE_CHANGED 1023
   3830 
   3831 /**
   3832  * RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE
   3833  *
   3834  * Indicates that the radio system selection module has
   3835  * autonomously entered emergency callback mode.
   3836  *
   3837  * "data" is null
   3838  *
   3839  */
   3840 #define RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE 1024
   3841 
   3842 /**
   3843  * RIL_UNSOL_CDMA_CALL_WAITING
   3844  *
   3845  * Called when CDMA radio receives a call waiting indication.
   3846  *
   3847  * "data" is const RIL_CDMA_CallWaiting *
   3848  *
   3849  */
   3850 #define RIL_UNSOL_CDMA_CALL_WAITING 1025
   3851 
   3852 /**
   3853  * RIL_UNSOL_CDMA_OTA_PROVISION_STATUS
   3854  *
   3855  * Called when CDMA radio receives an update of the progress of an
   3856  * OTASP/OTAPA call.
   3857  *
   3858  * "data" is const int *
   3859  *  For CDMA this is an integer OTASP/OTAPA status listed in
   3860  *  RIL_CDMA_OTA_ProvisionStatus.
   3861  *
   3862  */
   3863 #define RIL_UNSOL_CDMA_OTA_PROVISION_STATUS 1026
   3864 
   3865 /**
   3866  * RIL_UNSOL_CDMA_INFO_REC
   3867  *
   3868  * Called when CDMA radio receives one or more info recs.
   3869  *
   3870  * "data" is const RIL_CDMA_InformationRecords *
   3871  *
   3872  */
   3873 #define RIL_UNSOL_CDMA_INFO_REC 1027
   3874 
   3875 /**
   3876  * RIL_UNSOL_OEM_HOOK_RAW
   3877  *
   3878  * This is for OEM specific use.
   3879  *
   3880  * "data" is a byte[]
   3881  */
   3882 #define RIL_UNSOL_OEM_HOOK_RAW 1028
   3883 
   3884 /**
   3885  * RIL_UNSOL_RINGBACK_TONE
   3886  *
   3887  * Indicates that nework doesn't have in-band information,  need to
   3888  * play out-band tone.
   3889  *
   3890  * "data" is an int *
   3891  * ((int *)data)[0] == 0 for stop play ringback tone.
   3892  * ((int *)data)[0] == 1 for start play ringback tone.
   3893  */
   3894 #define RIL_UNSOL_RINGBACK_TONE 1029
   3895 
   3896 /**
   3897  * RIL_UNSOL_RESEND_INCALL_MUTE
   3898  *
   3899  * Indicates that framework/application need reset the uplink mute state.
   3900  *
   3901  * There may be situations where the mute state becomes out of sync
   3902  * between the application and device in some GSM infrastructures.
   3903  *
   3904  * "data" is null
   3905  */
   3906 #define RIL_UNSOL_RESEND_INCALL_MUTE 1030
   3907 
   3908 /**
   3909  * RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED
   3910  *
   3911  * Called when CDMA subscription source changed.
   3912  *
   3913  * "data" is int *
   3914  * ((int *)data)[0] is == RIL_CdmaSubscriptionSource
   3915  */
   3916 #define RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED 1031
   3917 
   3918 /**
   3919  * RIL_UNSOL_CDMA_PRL_CHANGED
   3920  *
   3921  * Called when PRL (preferred roaming list) changes.
   3922  *
   3923  * "data" is int *
   3924  * ((int *)data)[0] is PRL_VERSION as would be returned by RIL_REQUEST_CDMA_SUBSCRIPTION
   3925  */
   3926 #define RIL_UNSOL_CDMA_PRL_CHANGED 1032
   3927 
   3928 /**
   3929  * RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE
   3930  *
   3931  * Called when Emergency Callback Mode Ends
   3932  *
   3933  * Indicates that the radio system selection module has
   3934  * proactively exited emergency callback mode.
   3935  *
   3936  * "data" is NULL
   3937  *
   3938  */
   3939 #define RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE 1033
   3940 
   3941 /**
   3942  * RIL_UNSOL_RIL_CONNECTED
   3943  *
   3944  * Called the ril connects and returns the version
   3945  *
   3946  * "data" is int *
   3947  * ((int *)data)[0] is RIL_VERSION
   3948  */
   3949 #define RIL_UNSOL_RIL_CONNECTED 1034
   3950 
   3951 /**
   3952  * RIL_UNSOL_VOICE_RADIO_TECH_CHANGED
   3953  *
   3954  * Indicates that voice technology has changed. Contains new radio technology
   3955  * as a data in the message.
   3956  *
   3957  * "data" is int *
   3958  * ((int *)data)[0] is of type const RIL_RadioTechnology
   3959  *
   3960  */
   3961 #define RIL_UNSOL_VOICE_RADIO_TECH_CHANGED 1035
   3962 
   3963 /**
   3964  * RIL_UNSOL_CELL_INFO_LIST
   3965  *
   3966  * Same information as returned by RIL_REQUEST_GET_CELL_INFO_LIST, but returned
   3967  * at the rate no greater than specified by RIL_REQUEST_SET_UNSOL_CELL_INFO_RATE.
   3968  *
   3969  * "data" is NULL
   3970  *
   3971  * "response" is an array of RIL_CellInfo.
   3972  */
   3973 #define RIL_UNSOL_CELL_INFO_LIST 1036
   3974 
   3975 /***********************************************************************/
   3976 
   3977 
   3978 /**
   3979  * RIL_Request Function pointer
   3980  *
   3981  * @param request is one of RIL_REQUEST_*
   3982  * @param data is pointer to data defined for that RIL_REQUEST_*
   3983  *        data is owned by caller, and should not be modified or freed by callee
   3984  * @param t should be used in subsequent call to RIL_onResponse
   3985  * @param datalen the length of data
   3986  *
   3987  */
   3988 typedef void (*RIL_RequestFunc) (int request, void *data,
   3989                                     size_t datalen, RIL_Token t);
   3990 
   3991 /**
   3992  * This function should return the current radio state synchronously
   3993  */
   3994 typedef RIL_RadioState (*RIL_RadioStateRequest)();
   3995 
   3996 /**
   3997  * This function returns "1" if the specified RIL_REQUEST code is
   3998  * supported and 0 if it is not
   3999  *
   4000  * @param requestCode is one of RIL_REQUEST codes
   4001  */
   4002 
   4003 typedef int (*RIL_Supports)(int requestCode);
   4004 
   4005 /**
   4006  * This function is called from a separate thread--not the
   4007  * thread that calls RIL_RequestFunc--and indicates that a pending
   4008  * request should be cancelled.
   4009  *
   4010  * On cancel, the callee should do its best to abandon the request and
   4011  * call RIL_onRequestComplete with RIL_Errno CANCELLED at some later point.
   4012  *
   4013  * Subsequent calls to  RIL_onRequestComplete for this request with
   4014  * other results will be tolerated but ignored. (That is, it is valid
   4015  * to ignore the cancellation request)
   4016  *
   4017  * RIL_Cancel calls should return immediately, and not wait for cancellation
   4018  *
   4019  * Please see ITU v.250 5.6.1 for how one might implement this on a TS 27.007
   4020  * interface
   4021  *
   4022  * @param t token wants to be canceled
   4023  */
   4024 
   4025 typedef void (*RIL_Cancel)(RIL_Token t);
   4026 
   4027 typedef void (*RIL_TimedCallback) (void *param);
   4028 
   4029 /**
   4030  * Return a version string for your RIL implementation
   4031  */
   4032 typedef const char * (*RIL_GetVersion) (void);
   4033 
   4034 typedef struct {
   4035     int version;        /* set to RIL_VERSION */
   4036     RIL_RequestFunc onRequest;
   4037     RIL_RadioStateRequest onStateRequest;
   4038     RIL_Supports supports;
   4039     RIL_Cancel onCancel;
   4040     RIL_GetVersion getVersion;
   4041 } RIL_RadioFunctions;
   4042 
   4043 #ifdef RIL_SHLIB
   4044 struct RIL_Env {
   4045     /**
   4046      * "t" is parameter passed in on previous call to RIL_Notification
   4047      * routine.
   4048      *
   4049      * If "e" != SUCCESS, then response can be null/is ignored
   4050      *
   4051      * "response" is owned by caller, and should not be modified or
   4052      * freed by callee
   4053      *
   4054      * RIL_onRequestComplete will return as soon as possible
   4055      */
   4056     void (*OnRequestComplete)(RIL_Token t, RIL_Errno e,
   4057                            void *response, size_t responselen);
   4058 
   4059     /**
   4060      * "unsolResponse" is one of RIL_UNSOL_RESPONSE_*
   4061      * "data" is pointer to data defined for that RIL_UNSOL_RESPONSE_*
   4062      *
   4063      * "data" is owned by caller, and should not be modified or freed by callee
   4064      */
   4065 
   4066     void (*OnUnsolicitedResponse)(int unsolResponse, const void *data,
   4067                                     size_t datalen);
   4068 
   4069     /**
   4070      * Call user-specifed "callback" function on on the same thread that
   4071      * RIL_RequestFunc is called. If "relativeTime" is specified, then it specifies
   4072      * a relative time value at which the callback is invoked. If relativeTime is
   4073      * NULL or points to a 0-filled structure, the callback will be invoked as
   4074      * soon as possible
   4075      */
   4076 
   4077     void (*RequestTimedCallback) (RIL_TimedCallback callback,
   4078                                    void *param, const struct timeval *relativeTime);
   4079 };
   4080 
   4081 
   4082 /**
   4083  *  RIL implementations must defined RIL_Init
   4084  *  argc and argv will be command line arguments intended for the RIL implementation
   4085  *  Return NULL on error
   4086  *
   4087  * @param env is environment point defined as RIL_Env
   4088  * @param argc number of arguments
   4089  * @param argv list fo arguments
   4090  *
   4091  */
   4092 const RIL_RadioFunctions *RIL_Init(const struct RIL_Env *env, int argc, char **argv);
   4093 
   4094 #else /* RIL_SHLIB */
   4095 
   4096 /**
   4097  * Call this once at startup to register notification routine
   4098  *
   4099  * @param callbacks user-specifed callback function
   4100  */
   4101 void RIL_register (const RIL_RadioFunctions *callbacks);
   4102 
   4103 
   4104 /**
   4105  *
   4106  * RIL_onRequestComplete will return as soon as possible
   4107  *
   4108  * @param t is parameter passed in on previous call to RIL_Notification
   4109  *          routine.
   4110  * @param e error code
   4111  *          if "e" != SUCCESS, then response can be null/is ignored
   4112  * @param response is owned by caller, and should not be modified or
   4113  *                 freed by callee
   4114  * @param responselen the length of response in byte
   4115  */
   4116 void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,
   4117                            void *response, size_t responselen);
   4118 
   4119 /**
   4120  * @param unsolResponse is one of RIL_UNSOL_RESPONSE_*
   4121  * @param data is pointer to data defined for that RIL_UNSOL_RESPONSE_*
   4122  *     "data" is owned by caller, and should not be modified or freed by callee
   4123  * @param datalen the length of data in byte
   4124  */
   4125 
   4126 void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
   4127                                 size_t datalen);
   4128 
   4129 
   4130 /**
   4131  * Call user-specifed "callback" function on on the same thread that
   4132  * RIL_RequestFunc is called. If "relativeTime" is specified, then it specifies
   4133  * a relative time value at which the callback is invoked. If relativeTime is
   4134  * NULL or points to a 0-filled structure, the callback will be invoked as
   4135  * soon as possible
   4136  *
   4137  * @param callback user-specifed callback function
   4138  * @param param parameter list
   4139  * @param relativeTime a relative time value at which the callback is invoked
   4140  */
   4141 
   4142 void RIL_requestTimedCallback (RIL_TimedCallback callback,
   4143                                void *param, const struct timeval *relativeTime);
   4144 
   4145 
   4146 #endif /* RIL_SHLIB */
   4147 
   4148 #ifdef __cplusplus
   4149 }
   4150 #endif
   4151 
   4152 #endif /*ANDROID_RIL_H*/
   4153