OSDN Git Service

Add missing function to telephony HIDL interface.
[android-x86/hardware-interfaces.git] / radio / 1.0 / types.hal
index e5bbe15..9c4b453 100644 (file)
 package android.hardware.radio@1.0;
 
 enum RadioConst : int32_t {
-    RADIO_VERSION = 12,
-    RADIO_LAST_IMPRECISE_RIL_VERSION = 12,
-    RADIO_VERSION_MIN = 6,
-    RADIO_CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
-    RADIO_CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
-    RADIO_MAX_RILDS = 3,
-    RADIO_MAX_SOCKET_NAME_LENGTH = 6,
-    RADIO_MAX_CLIENT_ID_LENGTH = 2,
-    RADIO_MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
-    RADIO_MAX_QEMU_PIPE_NAME_LENGTH = 11,
-    RADIO_MAX_UUID_LENGTH = 64,
-    RADIO_RADIO_CAPABILITY_VERSION = 1,
-    RADIO_CARD_MAX_APPS = 8,
-    RADIO_CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
-    RADIO_SS_INFO_MAX = 4,
-    RADIO_NUM_SERVICE_CLASSES = 7,
-    RADIO_NUM_TX_POWER_LEVELS = 5,
+    CDMA_ALPHA_INFO_BUFFER_LENGTH = 64,
+    CDMA_NUMBER_INFO_BUFFER_LENGTH = 81,
+    MAX_RILDS = 3,
+    MAX_SOCKET_NAME_LENGTH = 6,
+    MAX_CLIENT_ID_LENGTH = 2,
+    MAX_DEBUG_SOCKET_NAME_LENGTH = 12,
+    MAX_QEMU_PIPE_NAME_LENGTH = 11,
+    MAX_UUID_LENGTH = 64,
+    CARD_MAX_APPS = 8,
+    CDMA_MAX_NUMBER_OF_INFO_RECS = 10,
+    SS_INFO_MAX = 4,
+    NUM_SERVICE_CLASSES = 7,
+    NUM_TX_POWER_LEVELS = 5,
 };
 
 enum RadioCdmaSmsConst : int32_t {
@@ -54,7 +50,114 @@ enum RadioCdmaSmsConst : int32_t {
     IP_ADDRESS_SIZE = 4,
 };
 
-enum RadioRestrictedState : int32_t {
+enum RadioError : int32_t {
+    NONE = 0,                             // Success
+    RADIO_NOT_AVAILABLE = 1,              // If radio did not start or is resetting
+    GENERIC_FAILURE = 2,
+    PASSWORD_INCORRECT = 3,               // for PIN/PIN2 methods only
+    SIM_PIN2 = 4,                         // Operation requires SIM PIN2 to be entered
+    SIM_PUK2 = 5,                         // Operation requires SIM PIN2 to be entered
+    REQUEST_NOT_SUPPORTED = 6,
+    CANCELLED = 7,
+    OP_NOT_ALLOWED_DURING_VOICE_CALL = 8, // data ops are not allowed during voice
+                                          // call on a Class C GPRS device
+    OP_NOT_ALLOWED_BEFORE_REG_TO_NW = 9,  // data ops are not allowed before device
+                                          // registers in network
+    SMS_SEND_FAIL_RETRY = 10,             // fail to send sms and need retry
+    SIM_ABSENT = 11,                      // fail to set the location where CDMA subscription
+                                          // shall be retrieved because of SIM or RUIM
+                                          // card absent
+    SUBSCRIPTION_NOT_AVAILABLE = 12,      // fail to find CDMA subscription from specified
+                                          // location
+    MODE_NOT_SUPPORTED = 13,              // HW does not support preferred network type
+    FDN_CHECK_FAILURE = 14,               // command failed because recipient is not on FDN list
+    ILLEGAL_SIM_OR_ME = 15,               // network selection failed due to illegal SIM or ME
+    MISSING_RESOURCE = 16,                // no logical channel available
+    NO_SUCH_ELEMENT = 17,                 // application not found on SIM
+    DIAL_MODIFIED_TO_USSD = 18,           // DIAL request modified to USSD
+    DIAL_MODIFIED_TO_SS = 19,             // DIAL request modified to SS
+    DIAL_MODIFIED_TO_DIAL = 20,           // DIAL request modified to DIAL with different data
+    USSD_MODIFIED_TO_DIAL = 21,           // USSD request modified to DIAL
+    USSD_MODIFIED_TO_SS = 22,             // USSD request modified to SS
+    USSD_MODIFIED_TO_USSD = 23,           // USSD request modified to different USSD request
+    SS_MODIFIED_TO_DIAL = 24,             // SS request modified to DIAL
+    SS_MODIFIED_TO_USSD = 25,             // SS request modified to USSD
+    SUBSCRIPTION_NOT_SUPPORTED = 26,      // Subscription not supported by RIL
+    SS_MODIFIED_TO_SS = 27,               // SS request modified to different SS request
+    LCE_NOT_SUPPORTED = 36,               // LCE service not supported(36 in RILConstants.java)
+    NO_MEMORY = 37,                       // Not sufficient memory to process the request
+    INTERNAL_ERR = 38,                    // Hit unexpected vendor internal error scenario
+    SYSTEM_ERR = 39,                      // Hit platform or system error
+    MODEM_ERR = 40,                       // Hit unexpected modem error
+    INVALID_STATE = 41,                   // Unexpected request for the current state
+    NO_RESOURCES = 42,                    // Not sufficient resource to process the request
+    SIM_ERR = 43,                         // Received error from SIM card
+    INVALID_ARGUMENTS = 44,               // Received invalid arguments in request
+    INVALID_SIM_STATE = 45,               // Cannot process the request in current SIM state
+    INVALID_MODEM_STATE = 46,             // Cannot process the request in current Modem state
+    INVALID_CALL_ID = 47,                 // Received invalid call id in request
+    NO_SMS_TO_ACK = 48,                   // ACK received when there is no SMS to ack
+    NETWORK_ERR = 49,                     // Received error from network
+    REQUEST_RATE_LIMITED = 50,            // Operation denied due to overly-frequent requests
+    SIM_BUSY = 51,                        // SIM is busy
+    SIM_FULL = 52,                        // The target EF is full
+    NETWORK_REJECT = 53,                  // Request is rejected by network
+    OPERATION_NOT_ALLOWED = 54,           // Not allowed the request now
+    EMPTY_RECORD = 55,                    // The request record is empty
+    INVALID_SMS_FORMAT = 56,              // Invalid sms format
+    ENCODING_ERR = 57,                    // Message not encoded properly
+    INVALID_SMSC_ADDRESS = 58,            // SMSC address specified is invalid
+    NO_SUCH_ENTRY = 59,                   // No such entry present to perform the request
+    NETWORK_NOT_READY = 60,               // Network is not ready to perform the request
+    NOT_PROVISIONED = 61,                 // Device doesnot have this value provisioned
+    NO_SUBSCRIPTION = 62,                 // Device doesnot have subscription
+    NO_NETWORK_FOUND = 63,                // Network cannot be found
+    DEVICE_IN_USE = 64,                   // Operation cannot be performed because the device
+                                          // is currently in use
+    RIL_E_ABORTED = 65,                   // Operation aborted
+
+    // TODO(May be moved to vendor HAL extension)
+    // OEM specific error codes. To be used by OEM when they don't want to reveal
+    // specific error codes which would be replaced by Generic failure.
+    OEM_ERROR_1 = 501,
+    OEM_ERROR_2 = 502,
+    OEM_ERROR_3 = 503,
+    OEM_ERROR_4 = 504,
+    OEM_ERROR_5 = 505,
+    OEM_ERROR_6 = 506,
+    OEM_ERROR_7 = 507,
+    OEM_ERROR_8 = 508,
+    OEM_ERROR_9 = 509,
+    OEM_ERROR_10 = 510,
+    OEM_ERROR_11 = 511,
+    OEM_ERROR_12 = 512,
+    OEM_ERROR_13 = 513,
+    OEM_ERROR_14 = 514,
+    OEM_ERROR_15 = 515,
+    OEM_ERROR_16 = 516,
+    OEM_ERROR_17 = 517,
+    OEM_ERROR_18 = 518,
+    OEM_ERROR_19 = 519,
+    OEM_ERROR_20 = 520,
+    OEM_ERROR_21 = 521,
+    OEM_ERROR_22 = 522,
+    OEM_ERROR_23 = 523,
+    OEM_ERROR_24 = 524,
+    OEM_ERROR_25 = 525,
+};
+
+enum RadioResponseType : int32_t {
+    SOLICITED,
+    SOLICITED_ACK,
+    SOLICITED_ACK_EXP,
+};
+
+enum RadioIndicationType : int32_t {
+    UNSOLICITED,
+    UNSOLICITED_ACK_EXP,
+};
+
+enum RestrictedState : int32_t {
     NONE = 0x00,
     CS_EMERGENCY = 0x01,
     CS_NORMAL = 0x02,
@@ -62,130 +165,1771 @@ enum RadioRestrictedState : int32_t {
     PS_ALL = 0x10,
 };
 
-enum RadioCardState : int32_t {
-    ABSENT = 0,
-    PRESENT = 1,
-    ERROR = 2,
-    /* card is present but not usable due to carrier restrictions.*/
-    RESTRICTED = 3,
+enum CardState : int32_t {
+    ABSENT,
+    PRESENT,
+    ERROR,
+    RESTRICTED,                           // card is present but not usable due to carrier
+                                          // restrictions
+};
+
+enum PinState : int32_t {
+    UNKNOWN,
+    ENABLED_NOT_VERIFIED,
+    ENABLED_VERIFIED,
+    DISABLED,
+    ENABLED_BLOCKED,
+    ENABLED_PERM_BLOCKED,
+};
+
+enum AppType : int32_t {
+    UNKNOWN,
+    SIM,
+    USIM,
+    RUIM,
+    CSIM,
+    ISIM,
+};
+
+enum AppState : int32_t {
+    UNKNOWN,
+    DETECTED,
+    PIN,                                  // If PIN1 or UPin is required
+    PUK,                                  // If PUK1 or Puk for UPin is required
+    SUBSCRIPTION_PERSO,                   // perso_substate must be look at when app_state is
+                                          // assigned to this value
+    READY,
+};
+
+enum PersoSubstate : int32_t {
+    UNKNOWN,                              // initial state
+    IN_PROGRESS,                          // in between each lock transition
+    READY,                                // when either SIM or RUIM Perso is finished since each
+                                          // app must only have 1 active perso involved
+    SIM_NETWORK,
+    SIM_NETWORK_SUBSET,
+    SIM_CORPORATE,
+    SIM_SERVICE_PROVIDER,
+    SIM_SIM,
+    SIM_NETWORK_PUK,                      // The corresponding perso lock is blocked
+    SIM_NETWORK_SUBSET_PUK,
+    SIM_CORPORATE_PUK,
+    SIM_SERVICE_PROVIDER_PUK,
+    SIM_SIM_PUK,
+    RUIM_NETWORK1,
+    RUIM_NETWORK2,
+    RUIM_HRPD,
+    RUIM_CORPORATE,
+    RUIM_SERVICE_PROVIDER,
+    RUIM_RUIM,
+    RUIM_NETWORK1_PUK,                   // The corresponding perso lock is blocked
+    RUIM_NETWORK2_PUK,
+    RUIM_HRPD_PUK,
+    RUIM_CORPORATE_PUK,
+    RUIM_SERVICE_PROVIDER_PUK,
+    RUIM_RUIM_PUK,
+};
+
+enum RadioState : int32_t {
+    OFF = 0,                              // Radio explictly powered off (eg CFUN=0)
+    UNAVAILABLE = 1,                      // Radio unavailable (eg, resetting or not booted)
+    ON = 10,                              // Radio is ON
+};
+
+enum SapConnectRsp : int32_t {
+    SUCCESS,
+    CONNECT_FAILURE,
+    MSG_SIZE_TOO_LARGE,
+    MSG_SIZE_TOO_SMALL,
+    CONNECT_OK_CALL_ONGOING
+};
+
+enum SapDisconnectType : int32_t {
+    GRACEFUL,
+    IMMEDIATE
+};
+
+enum SapApduType : int32_t {
+    APDU,
+    APDU7816
+};
+
+enum SapResultCode : int32_t {
+    SUCCESS,
+    GENERIC_FAILURE,
+    CARD_NOT_ACCESSSIBLE,
+    CARD_ALREADY_POWERED_OFF,
+    CARD_REMOVED,
+    CARD_ALREADY_POWERED_ON,
+    DATA_NOT_AVAILABLE,
+    NOT_SUPPORTED
+};
+
+enum SapStatus : int32_t {
+    UNKNOWN_ERROR,
+    CARD_RESET,
+    CARD_NOT_ACCESSIBLE,
+    CARD_REMOVED,
+    CARD_INSERTED,
+    RECOVERED
+};
+
+enum SapTransferProtocol : int32_t {
+    T0,
+    T1
+};
+
+enum CallState : int32_t {
+    ACTIVE,
+    HOLDING,
+    DIALING,                             // MO call only
+    ALERTING,                            // MO call only
+    INCOMING,                            // MT call only
+    WAITING,                             // MT call only
+};
+
+/*
+ * User-to-User signaling Info activation types derived from 3GPP 23.087 v8.0
+ */
+enum UusType : int32_t {
+    TYPE1_IMPLICIT,
+    TYPE1_REQUIRED,
+    TYPE1_NOT_REQUIRED,
+    TYPE2_REQUIRED,
+    TYPE2_NOT_REQUIRED,
+    TYPE3_REQUIRED,
+    TYPE3_NOT_REQUIRED,
+};
+
+/*
+ * User-to-User Signaling Information data coding schemes. Possible values for
+ * Octet 3 (Protocol Discriminator field) in the UUIE. The values have been
+ * specified in section 10.5.4.25 of 3GPP TS 24.008
+ */
+enum UusDcs : int32_t {
+    USP,                                  // User specified protocol
+    OSIHLP,                               // OSI higher layer protocol
+    X244,                                 // X.244
+    RMCF,                                 // Reserved for system mangement convergence function
+    IA5C,                                 // IA5 characters
 };
 
-enum RadioPinState : int32_t {
+enum CallPresentation : int32_t {
+    ALLOWED,
+    RESTRICTED,
+    UNKNOWN,
+    PAYPHONE,
+};
+
+enum Clir : int32_t {
+    DEFAULT,                               // "use subscription default value"
+    INVOCATION,                            // restrict CLI presentation
+    SUPPRESSION,                           // allow CLI presentation
+};
+
+enum LastCallFailCause : int32_t {
+    UNOBTAINABLE_NUMBER = 1,
+    NO_ROUTE_TO_DESTINATION = 3,
+    CHANNEL_UNACCEPTABLE = 6,
+    OPERATOR_DETERMINED_BARRING = 8,
+    NORMAL = 16,
+    BUSY = 17,
+    NO_USER_RESPONDING = 18,
+    NO_ANSWER_FROM_USER = 19,
+    CALL_REJECTED = 21,
+    NUMBER_CHANGED = 22,
+    PREEMPTION = 25,
+    DESTINATION_OUT_OF_ORDER = 27,
+    INVALID_NUMBER_FORMAT = 28,
+    FACILITY_REJECTED = 29,
+    RESP_TO_STATUS_ENQUIRY = 30,
+    NORMAL_UNSPECIFIED = 31,
+    CONGESTION = 34,
+    NETWORK_OUT_OF_ORDER = 38,
+    TEMPORARY_FAILURE = 41,
+    SWITCHING_EQUIPMENT_CONGESTION = 42,
+    ACCESS_INFORMATION_DISCARDED = 43,
+    REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 44,
+    RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47,
+    QOS_UNAVAILABLE = 49,
+    REQUESTED_FACILITY_NOT_SUBSCRIBED = 50,
+    INCOMING_CALLS_BARRED_WITHIN_CUG = 55,
+    BEARER_CAPABILITY_NOT_AUTHORIZED = 57,
+    BEARER_CAPABILITY_UNAVAILABLE = 58,
+    SERVICE_OPTION_NOT_AVAILABLE = 63,
+    BEARER_SERVICE_NOT_IMPLEMENTED = 65,
+    ACM_LIMIT_EXCEEDED = 68,
+    REQUESTED_FACILITY_NOT_IMPLEMENTED = 69,
+    ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70,
+    SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79,
+    INVALID_TRANSACTION_IDENTIFIER = 81,
+    USER_NOT_MEMBER_OF_CUG = 87,
+    INCOMPATIBLE_DESTINATION = 88,
+    INVALID_TRANSIT_NW_SELECTION = 91,
+    SEMANTICALLY_INCORRECT_MESSAGE = 95,
+    INVALID_MANDATORY_INFORMATION = 96,
+    MESSAGE_TYPE_NON_IMPLEMENTED = 97,
+    MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98,
+    INFORMATION_ELEMENT_NON_EXISTENT = 99,
+    CONDITIONAL_IE_ERROR = 100,
+    MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101,
+    RECOVERY_ON_TIMER_EXPIRED = 102,
+    PROTOCOL_ERROR_UNSPECIFIED = 111,
+    INTERWORKING_UNSPECIFIED = 127,
+    CALL_BARRED = 240,
+    FDN_BLOCKED = 241,
+    IMSI_UNKNOWN_IN_VLR = 242,
+    IMEI_NOT_ACCEPTED = 243,
+    DIAL_MODIFIED_TO_USSD = 244,          // STK Call Control
+    DIAL_MODIFIED_TO_SS = 245,
+    DIAL_MODIFIED_TO_DIAL = 246,
+    CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
+    CDMA_DROP = 1001,
+    CDMA_INTERCEPT = 1002,
+    CDMA_REORDER = 1003,
+    CDMA_SO_REJECT = 1004,
+    CDMA_RETRY_ORDER = 1005,
+    CDMA_ACCESS_FAILURE = 1006,
+    CDMA_PREEMPTED = 1007,
+    CDMA_NOT_EMERGENCY = 1008,            // For non-emergency number dialed during emergency
+                                          // callback mode
+    CDMA_ACCESS_BLOCKED = 1009,           // This error will be deprecated soon,
+                                          // vendor code must make sure to map error
+                                          // code to specific error
+    ERROR_UNSPECIFIED = 0xffff,
+};
+
+enum DataCallFailCause : int32_t {
+    NONE = 0,                             // an integer cause code defined in TS 24.008
+                                          // section 6.1.3.1.3 or TS 24.301 Release 8+ Annex B.
+                                          // If the implementation does not have access to the exact
+                                          // cause codes, then it must return one of the
+                                          // following values, as the UI layer needs to distinguish
+                                          // these cases for error notification and potential
+                                          // retries.
+    OPERATOR_BARRED = 0x08,               // no retry
+    NAS_SIGNALLING = 0x0E,                // PDP_FAIL_LLC_SNDCP = 0x19,
+    INSUFFICIENT_RESOURCES = 0x1A,
+    MISSING_UKNOWN_APN = 0x1B,            // no retry
+    UNKNOWN_PDP_ADDRESS_TYPE = 0x1C,      // no retry
+    USER_AUTHENTICATION = 0x1D,           // no retry
+    ACTIVATION_REJECT_GGSN = 0x1E,        // no retry
+    ACTIVATION_REJECT_UNSPECIFIED = 0x1F,
+    SERVICE_OPTION_NOT_SUPPORTED = 0x20,  // no retry
+    SERVICE_OPTION_NOT_SUBSCRIBED = 0x21, // no retry
+    SERVICE_OPTION_OUT_OF_ORDER = 0x22,
+    NSAPI_IN_USE = 0x23,                  // no retry
+    REGULAR_DEACTIVATION = 0x24,          // possibly restart radio,
+                                          // based on framework config
+    QOS_NOT_ACCEPTED = 0x25,
+    NETWORK_FAILURE = 0x26,
+    UMTS_REACTIVATION_REQ = 0x27,
+    FEATURE_NOT_SUPP = 0x28,
+    TFT_SEMANTIC_ERROR = 0x29,
+    TFT_SYTAX_ERROR = 0x2A,
+    UNKNOWN_PDP_CONTEXT = 0x2B,
+    FILTER_SEMANTIC_ERROR = 0x2C,
+    FILTER_SYTAX_ERROR = 0x2D,
+    PDP_WITHOUT_ACTIVE_TFT = 0x2E,
+    ONLY_IPV4_ALLOWED = 0x32,             // no retry
+    ONLY_IPV6_ALLOWED = 0x33,             // no retry
+    ONLY_SINGLE_BEARER_ALLOWED = 0x34,
+    ESM_INFO_NOT_RECEIVED = 0x35,
+    PDN_CONN_DOES_NOT_EXIST = 0x36,
+    MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37,
+    MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41,
+    UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42,
+    INVALID_TRANSACTION_ID = 0x51,
+    MESSAGE_INCORRECT_SEMANTIC = 0x5F,
+    INVALID_MANDATORY_INFO = 0x60,
+    MESSAGE_TYPE_UNSUPPORTED = 0x61,
+    MSG_TYPE_NONCOMPATIBLE_STATE = 0x62,
+    UNKNOWN_INFO_ELEMENT = 0x63,
+    CONDITIONAL_IE_ERROR = 0x64,
+    MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 0x65,
+    PROTOCOL_ERRORS = 0x6F,               // no retry
+    APN_TYPE_CONFLICT = 0x70,
+    INVALID_PCSCF_ADDR = 0x71,
+    INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 0x72,
+    EMM_ACCESS_BARRED = 0x73,
+    EMERGENCY_IFACE_ONLY = 0x74,
+    IFACE_MISMATCH = 0x75,
+    COMPANION_IFACE_IN_USE = 0x76,
+    IP_ADDRESS_MISMATCH = 0x77,
+    IFACE_AND_POL_FAMILY_MISMATCH = 0x78,
+    EMM_ACCESS_BARRED_INFINITE_RETRY = 0x79,
+    AUTH_FAILURE_ON_EMERGENCY_CALL = 0x7A,
+    OEM_DCFAILCAUSE_1 = 0x1001,
+
+    // OEM specific error codes. To be used by OEMs when they don't want to
+    // reveal error code which would be replaced by PDP_FAIL_ERROR_UNSPECIFIED
+    // TODO(May be moved to vendor HAL extension)
+    OEM_DCFAILCAUSE_2 = 0x1002,
+    OEM_DCFAILCAUSE_3 = 0x1003,
+    OEM_DCFAILCAUSE_4 = 0x1004,
+    OEM_DCFAILCAUSE_5 = 0x1005,
+    OEM_DCFAILCAUSE_6 = 0x1006,
+    OEM_DCFAILCAUSE_7 = 0x1007,
+    OEM_DCFAILCAUSE_8 = 0x1008,
+    OEM_DCFAILCAUSE_9 = 0x1009,
+    OEM_DCFAILCAUSE_10 = 0x100A,
+    OEM_DCFAILCAUSE_11 = 0x100B,
+    OEM_DCFAILCAUSE_12 = 0x100C,
+    OEM_DCFAILCAUSE_13 = 0x100D,
+    OEM_DCFAILCAUSE_14 = 0x100E,
+    OEM_DCFAILCAUSE_15 = 0x100F,
+
+    // Not mentioned in the specification
+    VOICE_REGISTRATION_FAIL = -1,
+    DATA_REGISTRATION_FAIL = -2,
+
+    // reasons for data call drop - network/modem disconnect
+    SIGNAL_LOST = -3,
+    PREF_RADIO_TECH_CHANGED = -4,         // preferred technology has changed, must retry
+                                          // with parameters appropriate for new technology
+    RADIO_POWER_OFF = -5,                 // data call was disconnected because radio was resetting,
+                                          // powered off - no retry
+    TETHERED_CALL_ACTIVE = -6,            // data call was disconnected by modem because tethered
+                                          // mode was up on same APN/data profile - no retry until
+                                          // tethered call is off
+    ERROR_UNSPECIFIED = 0xffff,
+};
+
+/*
+ * Please note that registration state UNKNOWN is
+ * treated as "out of service" in the Android telephony.
+ * Registration state REG_DENIED must be returned if Location Update
+ * Reject (with cause 17 - Network Failure) is received
+ * repeatedly from the network, to facilitate
+ * "managed roaming"
+ */
+enum RegState : int32_t {
+    NOT_REG_MT_NOT_SEARCHING_OP,          // Not registered, MT is not currently searching
+                                          // a new operator to register
+    REG_HOME,                             // Registered, home network
+    NOT_REG_MT_SEARCHING_OP,              // Not registered, but MT is currently searching
+                                          // a new operator to register
+    REG_DENIED,                           // Registration denied
+    UNKNOWN,                              // Unknown
+    REG_ROAMING,                          // Registered, roaming
+    NOT_REG_MT_NOT_SEARCHING_OP_EM,       // Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that
+                                          // emergency calls are enabled.
+    NOT_REG_MT_SEARCHING_OP_EM,           // Same as NOT_REG_MT_SEARCHING_OP but indicates that
+                                          // emergency calls are enabled.
+    REG_DENIED_EM,                        // Same as REG_DENIED but indicates that
+                                          // emergency calls are enabled.
+    UNKNOWN_EM                            // Same as UNKNOWN but indicates that
+                                          // emergency calls are enabled.
+};
+
+enum RadioTechnology : int32_t {
     UNKNOWN = 0,
-    ENABLED_NOT_VERIFIED = 1,
-    ENABLED_VERIFIED = 2,
-    DISABLED = 3,
-    ENABLED_BLOCKED = 4,
-    ENABLED_PERM_BLOCKED = 5,
+    GPRS = 1,
+    EDGE = 2,
+    UMTS = 3,
+    IS95A = 4,
+    IS95B = 5,
+    ONE_X_RTT = 6,
+    EVDO_0 = 7,
+    EVDO_A = 8,
+    HSDPA = 9,
+    HSUPA = 10,
+    HSPA = 11,
+    EVDO_B = 12,
+    EHRPD = 13,
+    LTE = 14,
+    HSPAP = 15,                            // HSPA+
+    GSM = 16,                              // Only supports voice
+    TD_SCDMA = 17,
+    IWLAN = 18,
+    LTE_CA = 19,
+};
+
+enum DataProfile : int32_t {
+    DEFAULT = 0,
+    TETHERED = 1,
+    IMS = 2,
+    FOTA = 3,
+    CBS = 4,
+    OEM_BASE = 1000,                      // Start of OEM-specific profiles
+    INVALID = 0xFFFFFFFF,
+};
+
+enum SmsAcknowledgeFailCause : int32_t {
+    MEMORY_CAPAPCITY_EXCEEDED = 0xD3,
+    UNSPECIFIED_ERROR = 0XFF,
 };
 
-enum RadioAppType : int32_t {
+enum CallForwardInfoStatus : int32_t {
+    ACTIVE,
+    INACTIVE,
+    DISABLE,
+    ENABLE,
+    INTERROGATE,
+    REGISTRATION,
+    ERASURE,
+};
+
+enum ClipStatus : int32_t {
+    CLIP_PROVISIONED,                     // CLIP provisioned
+    CLIP_UNPROVISIONED,                   // CLIP not provisioned
+    UNKOWN,                               // unknown, e.g. no network etc
+};
+
+enum SmsWriteArgsStatus : int32_t {
+    REC_UNREAD,
+    REC_READ,
+    STO_UNSENT,
+    STO_SENT,
+};
+
+enum RadioBandMode : int32_t  {
+    BAND_MODE_UNSPECIFIED,                // "unspecified" (selected by baseband automatically)
+    BAND_MODE_EURO,                       // "EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
+    BAND_MODE_USA,                        // "US band"
+                                          // (GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900)
+    BAND_MODE_JPN,                        // "JPN band" (WCDMA-800 / WCDMA-IMT-2000)
+    BAND_MODE_AUS,                        // "AUS band"
+                                          // (GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000)
+    BAND_MODE_AUS_2,                      // "AUS band 2" (GSM-900 / DCS-1800 / WCDMA-850)
+    BAND_MODE_CELL_800,                   // "Cellular" (800-MHz Band)
+    BAND_MODE_PCS,                        // "PCS" (1900-MHz Band)
+    BAND_MODE_JTACS,                      // "Band Class 3" (JTACS Band)
+    BAND_MODE_KOREA_PCS,                  // "Band Class 4" (Korean PCS Band)
+    BAND_MODE_5_450M,                     // "Band Class 5" (450-MHz Band)
+    BAND_MODE_IMT2000,                    // "Band Class 6" (2-GMHz IMT2000 Band)
+    BAND_MODE_7_700M_2,                   // "Band Class 7" (Upper 700-MHz Band)
+    BAND_MODE_8_1800M,                    // "Band Class 8" (1800-MHz Band)
+    BAND_MODE_9_900M,                     // "Band Class 9" (900-MHz Band)
+    BAND_MODE_10_800M_2,                  // "Band Class 10" (Secondary 800-MHz Band)
+    BAND_MODE_EURO_PAMR_400M,             // "Band Class 11" (400-MHz European PAMR Band)
+    BAND_MODE_AWS,                        // "Band Class 15" (AWS Band)
+    BAND_MODE_USA_2500M,                  // "Band Class 16" (US 2.5-GHz Band)
+};
+
+enum OperatorStatus : int32_t {
+    UNKNOWN,
+    AVAILABLE,
+    CURRENT,
+    FORBIDDEN,
+};
+
+enum PreferredNetworkType : int32_t {
+    GSM_WCDMA,                            // GSM/WCDMA (WCDMA preferred)
+    GSM_ONLY,                             // GSM only
+    WCDMA,                                // WCDMA
+    GSM_WCDMA_AUTO,                       // GSM/WCDMA (auto mode, according to PRL)
+    CDMA_EVDO_AUTO,                       // CDMA and EvDo (auto mode, according to PRL)
+    CDMA_ONLY,                            // CDMA only
+    EVDO_ONLY,                            // EvDo only
+    GSM_WCDMA_CDMA_EVDO_AUTO,             // GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
+    LTE_CDMA_EVDO,                        // LTE, CDMA and EvDo
+    LTE_GSM_WCDMA,                        // LTE, GSM/WCDMA
+    LTE_CMDA_EVDO_GSM_WCDMA,              // LTE, CDMA, EvDo, GSM/WCDMA
+    LTE_ONLY,                             // LTE only
+    LTE_WCDMA,                            // LTE/WCDMA
+    TD_SCDMA_ONLY,                        // TD-SCDMA only
+    TD_SCDMA_WCDMA,                       // TD-SCDMA and WCDMA
+    TD_SCDMA_LTE,                         // TD-SCDMA and LTE
+    TD_SCDMA_GSM,                         // TD-SCDMA and GSM
+    TD_SCDMA_GSM_LTE,                     // TD-SCDMA,GSM and LTE
+    TD_SCDMA_GSM_WCDMA,                   // TD-SCDMA, GSM/WCDMA
+    TD_SCDMA_WCDMA_LTE,                   // TD-SCDMA, WCDMA and LTE
+    TD_SCDMA_GSM_WCDMA_LTE,               // TD-SCDMA, GSM/WCDMA and LTE
+    TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO,    // TD-SCDMA, GSM/WCDMA, CDMA and EvDo
+    TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA,     // TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA
+};
+
+enum CdmaSubscriptionSource : int32_t {
+    RUIM_SIM,
+    NV,
+};
+
+enum CdmaRoamingType : int32_t {
+    HOME_NETWORK,
+    AFFILIATED_ROAM,
+    ANY_ROAM,
+};
+
+enum TtyMode : int32_t {
+    OFF,
+    FULL,
+    HCO,                                  // Hearing carryover
+    VCO,                                  // Voice carryover
+};
+
+enum NvItem : int32_t {
+    // CDMA radio and account information (items 1-10)
+    CDMA_MEID = 1,                       // CDMA MEID (hex)
+    CDMA_MIN = 2,                        // CDMA MIN (MSID)
+    CDMA_MDN = 3,                        // CDMA MDN
+    CDMA_ACCOLC = 4,                     // CDMA access overload control
+
+    // Carrier device provisioning (items 11-30)
+    DEVICE_MSL = 11,                     // device MSL
+    RTN_RECONDITIONED_STATUS = 12,       // RTN reconditioned status
+    RTN_ACTIVATION_DATE = 13,            // RTN activation date
+    RTN_LIFE_TIMER = 14,                 // RTN life timer
+    RTN_LIFE_CALLS = 15,                 // RTN life calls
+    RTN_LIFE_DATA_TX = 16,               // RTN life data TX
+    RTN_LIFE_DATA_RX = 17,               // RTN life data RX
+    OMADM_HFA_LEVEL = 18,                // HFA in progress
+
+    // Mobile IP profile information (items 31-50)
+    MIP_PROFILE_NAI = 31,                // NAI realm
+    MIP_PROFILE_HOME_ADDRESS = 32,       // MIP home address
+    MIP_PROFILE_AAA_AUTH = 33,           // AAA auth
+    MIP_PROFILE_HA_AUTH = 34,            // HA auth
+    MIP_PROFILE_PRI_HA_ADDR = 35,        // primary HA address
+    MIP_PROFILE_SEC_HA_ADDR = 36,        // secondary HA address
+    MIP_PROFILE_REV_TUN_PREF = 37,       // reverse TUN preference
+    MIP_PROFILE_HA_SPI = 38,             // HA SPI
+    MIP_PROFILE_AAA_SPI = 39,            // AAA SPI
+    MIP_PROFILE_MN_HA_SS = 40,           // HA shared secret
+    MIP_PROFILE_MN_AAA_SS = 41,          // AAA shared secret
+
+    // CDMA network and band config (items 51-70)
+    CDMA_PRL_VERSION = 51,               // CDMA PRL version
+    CDMA_BC10 = 52,                      // CDMA band class 10
+    CDMA_BC14 = 53,                      // CDMA band class 14
+    CDMA_SO68 = 54,                      // CDMA SO68
+    CDMA_SO73_COP0 = 55,                 // CDMA SO73 COP0
+    CDMA_SO73_COP1TO7 = 56,              // CDMA SO73 COP1-7
+    CDMA_1X_ADVANCED_ENABLED = 57,       // CDMA 1X Advanced enabled
+    CDMA_EHRPD_ENABLED = 58,             // CDMA eHRPD enabled
+    CDMA_EHRPD_FORCED = 59,              // CDMA eHRPD forced
+
+    // LTE network and band config (items 71-90)
+    LTE_BAND_ENABLE_25 = 71,             // LTE band 25 enable
+    LTE_BAND_ENABLE_26 = 72,             // LTE band 26 enable
+    LTE_BAND_ENABLE_41 = 73,             // LTE band 41 enable
+
+    LTE_SCAN_PRIORITY_25 = 74,           // LTE band 25 scan priority
+    LTE_SCAN_PRIORITY_26 = 75,           // LTE band 26 scan priority
+    LTE_SCAN_PRIORITY_41 = 76,           // LTE band 41 scan priority
+
+    LTE_HIDDEN_BAND_PRIORITY_25 = 77,    // LTE hidden band 25 priority
+    LTE_HIDDEN_BAND_PRIORITY_26 = 78,    // LTE hidden band 26 priority
+    LTE_HIDDEN_BAND_PRIORITY_41 = 79,    // LTE hidden band 41 priority
+};
+
+enum ResetNvType : int32_t {
+    RELOAD,                              // reload all NV items
+    ERASE,                               // erase NV reset (SCRTN)
+    FACORY_RESET,                        // factory reset (RTN)
+};
+
+enum HardwareConfigType : int32_t {
+    MODEM,
+    SIM,
+};
+
+enum HardwareConfigState : int32_t {
+    ENABLED,
+    STANDBY,
+    DISABLED,
+};
+
+enum LceStatus : int32_t {
+    NOT_SUPPORTED,
+    STOPPED,
+    ACTIVE
+};
+
+enum CarrierMatchType : int32_t {
+    ALL = 0,                               // Apply to all carriers with the same mcc/mnc
+    SPN = 1,                               // Use SPN and mcc/mnc to identify the carrier
+    IMSI_PREFIX = 2,                       // Use IMSI prefix and mcc/mnc to identify the carrier
+    GID1 = 3,                              // Use GID1 and mcc/mnc to identify the carrier
+    GID2 = 4,                              // Use GID2 and mcc/mnc to identify the carrier
+};
+
+struct NeighboringCell {
+    string cid;                           // Combination of LAC and Cell Id in 32 bits in GSM.
+                                          // Upper 16 bits is LAC and lower 16 bits
+                                          // is CID (as described in TS 27.005)
+                                          // Primary Scrambling Code (as described in TS 25.331)
+                                          // in 9 bits in UMTS
+                                          // Valid values are hexadecimal 0x0000 - 0xffffffff.
+    int32_t rssi;                         // Received RSSI in GSM,
+                                          // Level index of CPICH Received Signal Code Power in UMTS
+};
+
+enum CdmaSmsDigitMode : int32_t {
+    FOUR_BIT,                             // DTMF digits
+    EIGHT_BIT,
+};
+
+enum CdmaSmsNumberMode : int32_t {
+    NOT_DATA_NETWORK,
+    DATA_NETWORK,
+};
+
+enum CdmaSmsNumberType : int32_t {
+    UNKNOWN,
+    INTERNATIONAL_OR_DATA_IP,             // INTERNATIONAL is used when number mode is not data
+                                          // network
+                                          // address. DATA_IP is used when the number mode is data
+                                          // network address
+    NATIONAL_OR_INTERNET_MAIL,            // NATIONAL is used when the number mode is not data
+                                          // network address. INTERNET_MAIL is used when the number
+                                          // mode is data network address. For INTERNET_MAIL, in
+                                          // the address data "digits", each byte contains an ASCII
+                                          // character.
+                                          // Examples are "x@y.com,a@b.com - ref
+                                          // TIA/EIA-637A 3.4.3.3
+    NETWORK,
+    SUBSCRIBER,
+    ALPHANUMERIC,                         // GSM SMS: address value is GSM 7-bit chars
+    ABBREVIATED,
+    RESERVED_7,
+};
+
+enum CdmaSmsNumberPlan : int32_t {
+    UNKNOWN,
+    TELEPHONY,                            // CCITT E.164 and E.163, including ISDN plan
+    RESERVED_2,
+    DATA,                                 // CCITT X.121
+    TELEX,                                // CCITT F.69
+    RESERVED_5,
+    RESERVED_6,
+    RESERVED_7,
+    RESERVED_8,
+    PRIVATE,
+    RESERVED_10,
+    RESERVED_11,
+    RESERVED_12,
+    RESERVED_13,
+    RESERVED_14,
+    RESERVED_15,
+};
+
+enum CdmaSmsSubaddressType : int32_t {
+    NSAP,                                // CCITT X.213 or ISO 8348 AD2
+    USER_SPECIFIED,                      // e.g. X.25
+};
+
+enum CdmaSmsErrorClass : int32_t {
+    NO_ERROR,
+    ERROR,
+};
+
+enum CdmaSmsWriteArgsStatus : int32_t {
+    REC_UNREAD,
+    REC_READ,
+    STO_UNSENT,
+    STO_SENT
+};
+
+enum CellInfoType : int32_t {
+    GSM,
+    CDMA,
+    LTE,
+    WCDMA,
+    TD_SCDMA
+};
+
+enum TimeStampType : int32_t {
+    UNKNOWN,
+    ANTENNA,
+    MODEM,
+    OEM_RIL,
+    JAVA_RIL,
+};
+
+enum ApnAuthType : int32_t {
+    NO_PAP_NO_CHAP,                       // PAP and CHAP is never performed.
+    PAP_NO_CHAP,                          // PAP may be performed; CHAP is never performed.
+    NO_PAP_CHAP,                          // CHAP may be performed; PAP is never performed.
+    PAP_CHAP                              // PAP / CHAP may be performed - baseband dependent.
+};
+
+enum RadioTechnologyFamily : int32_t {
+    THREE_GPP,                            // 3GPP Technologies - GSM, WCDMA
+    THREE_GPP2                            // 3GPP2 Technologies - CDMA
+};
+
+enum RadioCapabilityPhase : int32_t {
+    CONFIGURED = 0,                      // Logical Modem's (LM)  initial value
+                                         // and value after FINISH completes
+    START      = 1,                      // START is sent before APPLY and indicates that an
+                                         // APPLY is forthcoming with these same parameters
+    APPLY      = 2,                      // APPLY is sent after all LM's receive START and returned
+                                         // RadioCapability.status = 0. If any START's fail, hal
+                                         // implementation must not send APPLY.
+    UNSOL_RSP  = 3,                      // UNSOL_RSP is sent with unsol radioCapability()
+    FINISH     = 4                       // FINISH is sent after all commands have completed. If an
+                                         // error occurs in any previous command, the
+                                         // RadioAccessesFamily and logicalModemUuid fields must be
+                                         // the prior configuration thus restoring the configuration
+                                         // to the previous value. An error returned by FINISH
+                                         // will generally be ignored or may cause that logical
+                                         // modem to be removed from service.
+};
+
+enum RadioCapabilityStatus : int32_t {
+    NONE       = 0,                      // This parameter has no meaning with
+                                         // RadioCapabilityPhase:START, RadioCapabilityPhase:APPLY
+    SUCCESS    = 1,                      // Tell modem the action transaction of set radio
+                                         // capability was success with RadioCapabilityPhase:FINISH
+    FAIL       = 2,                      // Tell modem the action transaction of set radio
+                                         // capability is fail with RadioCapabilityPhase:FINISH.
+};
+
+enum RadioAccessFamily : int32_t {
+    UNKNOWN = 1 << RadioTechnology:UNKNOWN,
+    GPRS = 1 << RadioTechnology:GPRS,
+    EDGE = 1 << RadioTechnology:EDGE,
+    UMTS = 1 << RadioTechnology:UMTS,
+    IS95A = 1 << RadioTechnology:IS95A,
+    IS95B = 1 << RadioTechnology:IS95B,
+    ONE_X_RTT = 1 << RadioTechnology:ONE_X_RTT,
+    EVDO_0 = 1 << RadioTechnology:EVDO_0,
+    EVDO_A = 1 << RadioTechnology:EVDO_A,
+    HSDPA = 1 << RadioTechnology:HSDPA,
+    HSUPA = 1 << RadioTechnology:HSUPA,
+    HSPA = 1 << RadioTechnology:HSPA,
+    EVDO_B = 1 << RadioTechnology:EVDO_B,
+    EHRPD = 1 << RadioTechnology:EHRPD,
+    LTE = 1 << RadioTechnology:LTE,
+    HSPAP = 1 << RadioTechnology:HSPAP,
+    GSM = 1 << RadioTechnology:GSM,
+    TD_SCDMA = 1 << RadioTechnology:TD_SCDMA,
+    LTE_CA = 1 << RadioTechnology:LTE_CA
+};
+
+enum UssdModeType : int32_t {
+    NOTIFY,                                // USSD-Notify
+    REQUEST,                               // USSD-Request
+    NW_RELEASE,                            // Session terminated by network
+    LOCAL_CLIENT,                          // other local client (eg, SIM Toolkit) has responded
+    NOT_SUPPORTED,                         // Operation not supported
+    NW_TIMEOUT,                            // Network timeout
+};
+
+enum SimRefreshType : int32_t {
+    SIM_FILE_UPDATE = 0,                   // A file on SIM has been updated.
+    SIM_INIT = 1,                          // SIM initialized. All files should be re-read.
+    SIM_RESET = 2                          // SIM reset. SIM power required, SIM may be locked a
+                                           // nd all files must be re-read.
+};
+
+enum SrvccState :int32_t {
+    HANDOVER_STARTED = 0,
+    HANDOVER_COMPLETED = 1,
+    HANDOVER_FAILED = 2,
+    HANDOVER_CANCELED = 3
+};
+
+enum UiccSubActStatus : int32_t {
+    DEACTIVATE,
+    ACTIVATE
+};
+
+enum SubscriptionType : int32_t {
+    SUBSCRIPTION_1,
+    SUBSCRIPTION_2,
+    SUBSCRIPTION_3
+};
+
+enum DataProfileInfoType : int32_t {
+    COMMON,
+    THREE_GPP,
+    THREE_GPP2
+};
+
+enum PhoneRestrictedState : int32_t {
+    NONE = 0x00,                           // No restriction at all including voice/SMS/USSD/SS/AV64
+                                           // and packet data
+    CS_EMERGENCY = 0x01,                   // Block emergency call due to restriction. But allow all
+                                           // normal voice/SMS/USSD/SS/AV64.
+    CS_NORMAL = 0x02,                      // Block all normal voice/SMS/USSD/SS/AV64 due to
+                                           // restriction. Only Emergency call allowed.
+    CS_ALL = 0x04,                         // Block all voice/SMS/USSD/SS/AV64 including emergency
+                                           // call due to restriction.
+    PS_ALL = 0x10                          // Block packet data access due to restriction.
+};
+
+enum CdmaCallWaitingNumberPresentation : int32_t {
+    ALLOWED = 0,
+    RESTRICTED = 1,
+    UNKNOWN = 2,
+};
+
+enum CdmaCallWaitingNumberType : int32_t {
     UNKNOWN = 0,
-    SIM = 1,
-    USIM = 2,
-    RUIM = 3,
-    CSIM = 4,
-    ISIM = 5,
+    INTERNATIONAL = 1,
+    NATIONAL = 2,
+    NETWORK_SPECIFIC = 3,
+    SUBSCRIBER = 4
 };
 
-enum RadioAppState : int32_t {
+enum CdmaCallWaitingNumberPlan : int32_t {
     UNKNOWN = 0,
-    DETECTED = 1,
-    PIN = 2,
-    /* If PIN1 or UPin is required */
-    PUK = 3,
-    /* If PUK1 or Puk for UPin is required */
-    SUBSCRIPTION_PERSO = 4,
-    /* perso_substate should be look at when app_state is assigned to this value */
-    READY = 5,
+    ISDN = 1,
+    DATA = 3,
+    TELEX = 4,
+    NATIONAL = 8,
+    PRIVATE = 9
+};
+
+enum CdmaOtaProvisionStatus : int32_t {
+    SPL_UNLOCKED,
+    SPC_RETRIES_EXCEEDED,
+    A_KEY_EXCHANGED,
+    SSD_UPDATED,
+    NAM_DOWNLOADED,
+    MDN_DOWNLOADED,
+    IMSI_DOWNLOADED,
+    PRL_DOWNLOADED,
+    COMMITTED,
+    OTAPA_STARTED,
+    OTAPA_STOPPED,
+    OTAPA_ABORTED
+};
+
+/* Names of the CDMA info records (C.S0005 section 3.7.5) */
+enum CdmaInfoRecName : int32_t {
+    DISPLAY,
+    CALLED_PARTY_NUMBER,
+    CALLING_PARTY_NUMBER,
+    CONNECTED_NUMBER,
+    SIGNAL,
+    REDIRECTING_NUMBER,
+    LINE_CONTROL,
+    EXTENDED_DISPLAY,
+    T53_CLIR,
+    T53_RELEASE,
+    T53_AUDIO_CONTROL
 };
 
-enum RadioPersoSubstate : int32_t {
+/* Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11 */
+enum CdmaRedirectingReason : int32_t {
     UNKNOWN = 0,
-    /* initial state */
-    IN_PROGRESS = 1,
-    /* in between each lock transition */
-    READY = 2,
-    /* when either SIM or RUIM Perso is finished since each app can only have 1 active perso
-    involved */
-    SIM_NETWORK = 3,
-    SIM_NETWORK_SUBSET = 4,
-    SIM_CORPORATE = 5,
-    SIM_SERVICE_PROVIDER = 6,
-    SIM_SIM = 7,
-    SIM_NETWORK_PUK = 8,
-    /* The corresponding perso lock is blocked */
-    SIM_NETWORK_SUBSET_PUK = 9,
-    SIM_CORPORATE_PUK = 10,
-    SIM_SERVICE_PROVIDER_PUK = 11,
-    SIM_SIM_PUK = 12,
-    RUIM_NETWORK1 = 13,
-    RUIM_NETWORK2 = 14,
-    RUIM_HRPD = 15,
-    RUIM_CORPORATE = 16,
-    RUIM_SERVICE_PROVIDER = 17,
-    RUIM_RUIM = 18,
-    RUIM_NETWORK1_PUK = 19,
-    /* The corresponding perso lock is blocked */
-    RUIM_NETWORK2_PUK = 20,
-    RUIM_HRPD_PUK = 21,
-    RUIM_CORPORATE_PUK = 22,
-    RUIM_SERVICE_PROVIDER_PUK = 23,
-    RUIM_RUIM_PUK = 24,
-};
-
-enum RadioState : int32_t  {
-  OFF = 0,
-  /* Radio explictly powered off (eg CFUN=0) */
-  UNAVAILABLE = 1,
-  /* States 2-9 below are deprecated. Just leaving them here for backward compatibility. */
-  SIM_NOT_READY = 2,
-  /* Radio is on, but the SIM interface is not ready */
-  SIM_LOCKED_OR_ABSENT = 3,
-  /* SIM PIN locked, PUK required, network
-   personalization locked, or SIM absent */
-  SIM_READY = 4,
-  /* Radio is on and SIM interface is available */
-  RUIM_NOT_READY = 5,
-  /* Radio is on, but the RUIM interface is not ready */
-  RUIM_READY = 6,
-  /* Radio is on and the RUIM interface is available */
-  RUIM_LOCKED_OR_ABSENT = 7,
-  /* RUIM PIN locked, PUK required, network
-   personalization locked, or RUIM absent */
-  NV_NOT_READY = 8,
-  /* Radio is on, but the NV interface is not available */
-  NV_READY = 9,
-  /* Radio is on */
-  ON = 10,
-};
-
-struct RadioAppStatus {
-    RadioAppType appType;
-    RadioAppState appState;
-    RadioPersoSubstate persoSubstate;
-    /* applicable only if app_state == SUBSCRIPTION_PERSO */
-    string aidPtr;
-    /* null terminated string, e.g., from 0xA0, 0x00 -> 0x41, 0x30, 0x30, 0x30 */
+    CALL_FORWARDING_BUSY = 1,
+    CALL_FORWARDING_NO_REPLY = 2,
+    CALLED_DTE_OUT_OF_ORDER = 9,
+    CALL_FORWARDING_BY_THE_CALLED_DTE = 10,
+    CALL_FORWARDING_UNCONDITIONAL = 15,
+    RESERVED
+};
+
+enum SsServiceType : int32_t {
+    CFU,
+    CF_BUSY,
+    CF_NO_REPLY,
+    CF_NOT_REACHABLE,
+    CF_ALL,
+    CF_ALL_CONDITIONAL,
+    CLIP,
+    CLIR,
+    COLP,
+    COLR,
+    WAIT,
+    BAOC,
+    BAOIC,
+    BAOIC_EXC_HOME,
+    BAIC,
+    BAIC_ROAMING,
+    ALL_BARRING,
+    OUTGOING_BARRING,
+    INCOMING_BARRING
+};
+
+enum SsRequestType : int32_t {
+    ACTIVATION,
+    DEACTIVATION,
+    INTERROGATION,
+    REGISTRATION,
+    ERASURE
+};
+
+enum SsTeleserviceType : int32_t {
+    ALL_TELE_AND_BEARER_SERVICES,
+    ALL_TELESEVICES,
+    TELEPHONY,
+    ALL_DATA_TELESERVICES,
+    SMS_SERVICES,
+    ALL_TELESERVICES_EXCEPT_SMS
+};
+
+enum SuppServiceClass : int32_t {
+    NONE = 0,
+    VOICE = 1 << 0,
+    DATA = 1 << 1,
+    FAX = 1 << 2,
+    SMS = 1 << 3,
+    DATA_SYNC = 1 << 4,
+    DATA_ASYNC = 1 << 5,
+    PACKET = 1 << 6,
+    PAD = 1 << 7,
+    MAX = 1 << 7
+};
+
+struct RadioResponseInfo {
+    RadioResponseType type;               // Response type
+    int32_t serial;                       // Serial number of the request
+    RadioError error;                     // Response error
+};
+
+struct AppStatus {
+    AppType appType;
+    AppState appState;
+    PersoSubstate persoSubstate;          // applicable only if app_state == SUBSCRIPTION_PERSO
+    string aidPtr;                        // e.g., from 0xA0, 0x00 -> 0x41,
+                                          // 0x30, 0x30, 0x30
     string appLabelPtr;
-    /* null terminated string */
-    int32_t pin1Replaced;
-    /* applicable to USIM, CSIM & ISIM */
-    RadioPinState pin1;
-    RadioPinState pin2;
-};
-
-struct RadioCardStatus {
-    RadioCardState cardState;
-    RadioPinState universalPinState;
-    /* applicable to USIM and CSIM */
-    int32_t gsmUmtsSubscriptionAppIndex;
-    /* value < RADIO_CARD_MAX_APPS, -1 if none */
-    int32_t cdmaSubscriptionAppIndex;
-    /* value < RADIO_CARD_MAX_APPS, -1 if none */
-    int32_t imsSubscriptionAppIndex;
-    /* value < RADIO_CARD_MAX_APPS, -1 if none */
-    int32_t numApplications;
-    /* value <= RADIO_CARD_MAX_APPS */
-    RadioAppStatus[RadioConst:RADIO_CARD_MAX_APPS] applications;
+    int32_t pin1Replaced;                 // applicable to USIM, CSIM & ISIM
+    PinState pin1;
+    PinState pin2;
+};
+
+struct CardStatus {
+    CardState cardState;
+    PinState universalPinState;           // applicable to USIM and CSIM
+    int32_t gsmUmtsSubscriptionAppIndex;  // value < RadioConst:CARD_MAX_APPS, -1 if none
+    int32_t cdmaSubscriptionAppIndex;     // value < RadioConst:CARD_MAX_APPS, -1 if none
+    int32_t imsSubscriptionAppIndex;      // value < RadioConst:CARD_MAX_APPS, -1 if none
+    int32_t numApplications;              // value <= RadioConst:CARD_MAX_APPS
+    AppStatus[RadioConst:CARD_MAX_APPS] applications;
+};
+
+/*
+ * User-to-User Signaling Information defined in 3GPP 23.087 v8.0
+ */
+struct UusInfo {
+    UusType uusType;                      // UUS Type
+    UusDcs uusDcs;                        // UUS Data Coding Scheme
+    string uusData;                       // UUS data
+};
+
+struct Call {
+    CallState state;
+    int32_t index;                        // Connection Index for use with, eg, AT+CHLD
+    int32_t toa;                          // type of address, eg 145 = intl
+    bool isMpty;                          // true if is mpty call
+    bool isMT;                            // true if call is mobile terminated
+    uint8_t als;                          // ALS line indicator if available (0 = line 1)
+    bool isVoice;                         // true if this is is a voice call
+    bool isVoicePrivacy;                  // true if CDMA voice privacy mode is active
+    string number;                        // Remote party number
+    CallPresentation numberPresentation;
+    string name;                          // Remote party name
+    CallPresentation namePresentation;
+    vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
+};
+
+struct Dial {
+    string address;
+    Clir clir;
+    vec<UusInfo> uusInfo;                 // Vector of User-User Signaling Information
+};
+
+struct GsmSignalStrength {
+    uint32_t signalStrength;              // Valid values are (0-61, 99) as defined in
+                                          // TS 27.007 8.69
+    uint32_t bitErrorRate;                // bit error rate (0-7, 99) as defined in TS 27.007 8.5
+    int32_t timingAdvance;                // Timing Advance in bit periods. 1 bit period = 48/13 us.
+                                          // INT_MAX denotes invalid value
+};
+
+struct WcdmaSignalStrength{
+    int32_t signalStrength;               // Valid values are (0-96, 99) as defined in
+                                          // TS 27.007 8.69
+    int32_t bitErrorRate;                 // bit error rate (0-49, 99) as defined in TS 27.007 8.69
+};
+
+struct CdmaSignalStrength {
+    uint32_t dbm;                         // This value is the actual RSSI
+                                          // value multiplied by -1. Example: If the
+                                          // actual RSSI is -75, then this response value will
+                                          // be 75.
+    uint32_t ecio;                        // This value is the actual
+                                          // Ec/Io multiplied by -10. Example: If the
+                                          // actual Ec/Io is -12.5 dB, then this response value
+                                          // will be 125.
+};
+
+struct EvdoSignalStrength {
+    uint32_t dbm;                         // This value is the actual
+                                          // RSSI value multiplied by -1.
+                                          // Example: If the actual RSSI is -75,
+                                          // then this response value will be 75.
+    uint32_t ecio;                        // This value is the actual
+                                          // Ec/Io multiplied by -10. Example: If the
+                                          // actual Ec/Io is -12.5 dB, then this response value
+                                          // will be 125.
+    uint32_t signalNoiseRatio;            // Valid values are 0-8. 8 is the highest signal to
+                                          // noise ratio.
+};
+
+struct LteSignalStrength {
+    uint32_t signalStrength;              // Valid values are (0-31, 99) as defined in
+                                          // TS 27.007 8.5
+    uint32_t rsrp;                        // The current Reference Signal Receive Power in dBm
+                                          // multipled by -1.
+                                          // Range: 44 to 140 dBm
+                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP TS 36.133 9.1.4
+    uint32_t rsrq;                        // The current Reference Signal Receive Quality in dB
+                                          // multiplied by -1.
+                                          // Range: 20 to 3 dB.
+                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP TS 36.133 9.1.7
+    int32_t rssnr;                        // The current reference signal signal-to-noise ratio in
+                                          // 0.1 dB units.
+                                          // Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
+                                          // INT_MAX : 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP TS 36.101 8.1.1
+    uint32_t cqi;                         // The current Channel Quality Indicator.
+                                          // Range: 0 to 15.
+                                          // INT_MAX : 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP TS 36.101 9.2, 9.3, A.4
+    uint32_t timingAdvance;               // timing advance in micro seconds for a one way trip
+                                          // from cell to device.
+                                          // Approximate distance is calculated using
+                                          // 300m/us * timingAdvance.
+                                          // Range: 0 to 0x7FFFFFFE
+                                          // INT_MAX : 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP 36.321 section 6.1.3.5
+                                          // also: http://www.cellular-planningoptimization.com/2010/02/timing-advance-with-calculation.html
+};
+
+struct TdScdmaSignalStrength {
+    uint32_t rscp;                        // The Received Signal Code Power in dBm multipled by -1.
+                                          // Range : 25 to 120
+                                          // INT_MAX: 0x7FFFFFFF denotes invalid value.
+                                          // Reference: 3GPP TS 25.123, section 9.1.1.1
+};
+
+struct SignalStrength {
+    GsmSignalStrength gw;
+    CdmaSignalStrength cdma;
+    EvdoSignalStrength evdo;
+    LteSignalStrength lte;
+    TdScdmaSignalStrength tdScdma;
+};
+
+struct SendSmsResult {
+    int32_t messageRef;                   // TP-Message-Reference for GSM, and BearerData MessageId
+                                          // for CDMA (See 3GPP2 C.S0015-B, v2.0, table 4.5-1)
+    string ackPDU;                        // or empty string if n/a
+    int32_t errorCode;                    // See 3GPP 27.005, 3.2.5 for GSM/UMTS,
+                                          // 3GPP2 N.S0005 (IS-41C) Table 171 for CDMA,
+                                          // -1 if unknown or not applicable
+};
+
+struct SetupDataCallResult {
+    int32_t status;                       // A RadioDataCallFailCause, 0 which is
+                                          // RadioDataCallFailCause:NONE if no error
+    int32_t suggestedRetryTime;           // If status != 0, this fields indicates the suggested
+                                          // retry back-off timer value RIL wants to override the
+                                          // one pre-configured in FW.
+                                          // The unit is miliseconds.
+                                          // The value < 0 means no value is suggested.
+                                          // The value 0 means retry must be done ASAP.
+                                          // The value of INT_MAX(0x7fffffff) means no retry.
+    int32_t cid;                          // Context ID, uniquely identifies this call
+    int32_t active;                       // 0=inactive, 1=active/physical link down,
+                                          // 2=active/physical link up */
+    string type;                          // One of the PDP_type values in TS 27.007 section 10.1.1.
+                                          // For example, "IP", "IPV6", "IPV4V6", or "PPP". If
+                                          // status is
+                                          // RadioDataCallFailCause:ONLY_SINGLE_BEARER_ALLOWED this
+                                          // is the type supported such as "IP" or "IPV6"
+    string ifname;                        // The network interface name
+    string addresses;                     // A space-delimited list of addresses with optional "/"
+                                          // prefix length, e.g., "192.0.1.3" or
+                                          // "192.0.1.11/16 2001:db8::1/64".
+                                          // Typically 1 IPv4 or 1 IPv6 or
+                                          // one of each. If the prefix length is absent the
+                                          // addresses are assumed to be point to point with IPv4
+                                          // having a prefix length of 32 and IPv6 128.
+    string dnses;                         // A space-delimited list of DNS server addresses,
+                                          // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+                                          // Empty if no dns server addresses returned.
+    string gateways;                      // A space-delimited list of default gateway addresses,
+                                          // e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+                                          // When empty, the addresses represent
+                                          // point to point connections.
+    string pcscf;                         // the Proxy Call State Control Function address
+                                          // via PCO(Protocol Configuration Option) for IMS client.
+    int32_t mtu;                          // MTU received from network
+                                          // Value <= 0 means network has either not sent a
+                                          // value or sent an invalid value
+};
+
+struct IccIo {
+    int32_t command;                      // one of the commands listed for TS 27.007 +CRSM
+    int32_t fileid;                       // EF id
+    string path;                          // "pathid" from TS 27.007 +CRSM command.
+                                          // Path is in hex asciii format eg "7f205f70"
+                                          // Path must always be provided.
+    int32_t p1;                           // Values of p1, p2 & p3 defined as per 3GPP TS 51.011
+    int32_t p2;
+    int32_t p3;
+    string data;                          // information to be written to the SIM
+    string pin2;
+    string aidPtr;                        // AID value, See ETSI 102.221 8.1 and 101.220 4, empty
+                                          // string if no value.
+};
+
+struct IccIoResult {
+    int32_t sw1;
+    int32_t sw2;
+    string simResponse;                   // In hex string format ([a-fA-F0-9]*), except for
+                                          // SIM_AUTHENTICATION response for which it is in
+                                          // Base64 format, see 3GPP TS 31.102 7.1.2
+};
+
+struct VoiceRegStateResult {
+    RegState regState;
+    int32_t lac;                          // LAC if registered on a GSM/WCDMA system or
+                                          // -1 if not.Valid LAC are 0x0000 - 0xffff
+    int32_t cid;                          // CID. if registered on a * GSM/WCDMA or -1 if not
+                                          // Valid CID are 0x00000000 - 0xffffffff
+                                          // In GSM, CID is Cell ID (see TS 27.007) in 16 bits
+                                          // In UMTS, CID is UMTS Cell Identity (see TS 25.331)
+                                          // in 28 bits
+    int32_t rat;                          // indicates the available voice radio technology,
+                                          // valid values as defined by RIL_RadioTechnology.
+    int32_t baseStationId;                // Base Station ID. if registered on a CDMA
+                                          // system or -1 if not. Base Station ID in decimal format
+    int32_t baseStationLatitude;          // Base Station latitude. if registered on a
+                                          // CDMA system or -1 if not. Base Station latitude is a
+                                          // decimal number as specified in 3GPP2 C.S0005-A v6.0.
+                                          // It is represented in units of 0.25 seconds and ranges
+                                          // from -1296000 to 1296000, both values inclusive
+                                          // (corresponding to a range of -90 to +90 degrees).
+    int32_t baseStationLongitude;         // Base Station longitude. if registered on a
+                                          // CDMA system or -1 if not. Base Station
+                                          // longitude is a decimal number as specified in
+                                          // 3GPP2 C.S0005-A v6.0. It is represented in
+                                          // units of 0.25 seconds and ranges from -2592000
+                                          // to 2592000, both values inclusive (corresponding
+                                          // to a range of -180 to +180 degrees).
+    bool cssSupported;                    // concurrent services support indicator. if
+                                          // registered on a CDMA system.
+                                          // false - Concurrent services not supported,
+                                          // true - Concurrent services supported
+    int32_t systemId;                     // System ID. if registered on a CDMA system or
+                                          // -1 if not. Valid System ID are 0 - 32767
+    int32_t networkId;                    // Network ID. if registered on a CDMA system or
+                                          // -1 if not. Valid System ID are 0 - 65535
+    int32_t roamingIndicator;             // TSB-58 Roaming Indicator if registered
+                                          // on a CDMA or EVDO system or -1 if not.
+                                          // Valid values are 0-255.
+    int32_t systemIsInPrl;                // indicates whether the current system is in the
+                                          // PRL if registered on a CDMA or EVDO system or -1 if
+                                          // not. 0=not in the PRL, 1=in the PRL
+    int32_t defaultRoamingIndicator;      // default Roaming Indicator from the PRL,
+                                          // if registered on a CDMA or EVDO system or -1 if not.
+                                          // Valid values are 0-255.
+    int32_t reasonForDenial;              // reasonForDenial if registration state is 3
+                                          // (Registration denied) this is an enumerated reason why
+                                          // registration was denied. See 3GPP TS 24.008,
+                                          // 10.5.3.6 and Annex G.
+                                          // 0 - General
+                                          // 1 - Authentication Failure
+                                          // 2 - IMSI unknown in HLR
+                                          // 3 - Illegal MS
+                                          // 4 - Illegal ME
+                                          // 5 - PLMN not allowed
+                                          // 6 - Location area not allowed
+                                          // 7 - Roaming not allowed
+                                          // 8 - No Suitable Cells in this Location Area
+                                          // 9 - Network failure
+                                          // 10 - Persistent location update reject
+                                          // 11 - PLMN not allowed
+                                          // 12 - Location area not allowed
+                                          // 13 - Roaming not allowed in this Location Area
+                                          // 15 - No Suitable Cells in this Location Area
+                                          // 17 - Network Failure
+                                          // 20 - MAC Failure
+                                          // 21 - Sync Failure
+                                          // 22 - Congestion
+                                          // 23 - GSM Authentication unacceptable
+                                          // 25 - Not Authorized for this CSG
+                                          // 32 - Service option not supported
+                                          // 33 - Requested service option not subscribed
+                                          // 34 - Service option temporarily out of order
+                                          // 38 - Call cannot be identified
+                                          // 48-63 - Retry upon entry into a new cell
+                                          // 95 - Semantically incorrect message
+                                          // 96 - Invalid mandatory information
+                                          // 97 - Message type non-existent or not implemented
+                                          // 98 - Message type not compatible with protocol state
+                                          // 99 - Information element non-existent or not implemented
+                                          // 100 - Conditional IE error
+                                          // 101 - Message not compatible with protocol state
+                                          // 111 - Protocol error, unspecified
+    int32_t psc;                          // Primary Scrambling Code of the current
+                                          // cell as described in TS 25.331, in hexadecimal
+                                          // format, or -1 if unknown or not registered
+                                          // to a UMTS network.
+};
+
+struct DataRegStateResult {
+    RegState regState;                    // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
+                                          // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
+                                          // UNKNOWN, REG_ROAMING defined in RegState
+    int32_t lac;                          // LAC if registered or -1 if not
+                                          // valid LAC are 0x0000 - 0xffff
+    int32_t cid;                          // CID if registered or -1 if not
+                                          // valid CID are 0x00000000 - 0x0fffffff
+    int32_t rat;                          // indicates the available data radio technology,
+                                          // valid values as defined by RIL_RadioTechnology.
+    int32_t reasonDataDenied;             // if registration state is 3 (Registration
+                                          // denied) this is an enumerated reason why
+                                          // registration was denied. See 3GPP TS 24.008,
+                                          // Annex G.6 "Additonal cause codes for GMM".
+                                          // 7 == GPRS services not allowed
+                                          // 8 == GPRS services and non-GPRS services not allowed
+                                          // 9 == MS identity cannot be derived by the network
+                                          // 10 == Implicitly detached
+                                          // 14 == GPRS services not allowed in this PLMN
+                                          // 16 == MSC temporarily not reachable
+                                          // 40 == No PDP context activated
+    int32_t maxDataCalls;                 // The maximum number of simultaneous Data Calls that
+                                          // must be established using setupDataCall().
+    // The values below are optional LTE location information in decimal.
+    // If a value is unknown that value must be -1.
+    int32_t tac;                          // a 16-bit Tracking Area Code.
+    int32_t phyCid;                       // a 0-503 Physical Cell Identifier.
+    int32_t eci;                          // a 28-bit E-UTRAN Cell Identifier.
+    int32_t csgid;                        // a 27-bit Closed Subscriber Group Identity.
+    int32_t tadv;                         // a 6-bit timing advance value.
+};
+
+// See also com.android.internal.telephony.gsm.CallForwardInfo
+struct CallForwardInfo {
+    CallForwardInfoStatus status;         // For queryCallForwardStatus()
+                                          // status must be ACTIVE, INACTIVE
+                                          // For setCallForward():
+                                          // status must be
+                                          // DISABLE, ENABLE, INTERROGATE, REGISTRATION, ERASURE
+    int32_t reason;                       // from TS 27.007 7.11 "reason"
+    int32_t serviceClass;                 // From 27.007 +CCFC/+CLCK "class"
+                                          // See table for Android mapping from
+                                          // MMI service code
+                                          // 0 means user doesnt input class
+    int32_t toa;                          // "type" from TS 27.007 7.11
+    string number;                        // "number" from TS 27.007 7.11.
+    int32_t timeSeconds;
+};
+
+// Response struct used in responseQueryAvailableNetworks
+struct OperatorInfo {
+    string alphaLong;                     // long alpha ONS or EONS
+    string alphaShort;                    // short alpha ONS or EONS
+    string operatorNumeric;               // 5 or 6 digit numeric code (MCC + MNC)
+    OperatorStatus status;
+};
+
+struct SmsWriteArgs {
+    SmsWriteArgsStatus status;            // Status of message. See TS 27.005 3.1
+    string pdu;                           // PDU of message to write, as an ASCII hex string less
+                                          // the SMSC address, the TP-layer length is strlen(pdu)/2.
+    string smsc;                          // SMSC address in GSM BCD format prefixed by a length
+                                          // byte (as expected by TS 27.005) or NULL for default
+                                          // SMSC
+};
+
+struct CdmaSmsAddress {
+    CdmaSmsDigitMode digitMode;          // CdmaSmsDigitMode is of two types : 4 bit & 8 bit.
+                                         // For 4-bit type, only "digits" field defined below in
+                                         // this struct is used.
+    CdmaSmsNumberMode numberMode;        // Used only when digitMode is 8-bit
+    CdmaSmsNumberType numberType;        // Used only when digitMode is 8-bit.
+                                         // To specify an international address, use the following:
+                                         // digitMode = CdmaSmsDigitMode:EIGHT_BIT:
+                                         // numberMode = CdmaSmsNumberMode:NOT_DATA_NETWORK
+                                         // numberType = CdmaSmsNumberType:INTERNATIONAL_OR_DATA_IP
+                                         // numberPlan = CdmaSmsNumberPlan:TELEPHONY
+                                         // numberOfDigits = number of digits
+                                         // digits = ASCII digits, e.g. '1', '2', '3', '4', and '5'
+    CdmaSmsNumberPlan numberPlan;        // Used only when digitMode is 8-bit
+    vec<uint8_t> digits;                 // Each byte in this array represents a 4 bit or 8-bit digit
+                                         // of address data
+};
+
+struct CdmaSmsSubaddress {
+    CdmaSmsSubaddressType subaddressType;
+    bool odd;                            // true means the last byte's lower 4 bits must be ignored
+    vec<uint8_t> digits;                 // Each byte respresents an 8-bit digit of subaddress data
+};
+
+struct CdmaSmsMessage {
+    int32_t teleserviceId;
+    bool isServicePresent;
+    int32_t serviceCategory;
+    CdmaSmsAddress address;
+    CdmaSmsSubaddress subAddress;
+    vec<uint8_t> bearerData;             // 3GPP2 C.S0015-B, v2.0,
+};
+
+struct CdmaSmsAck {
+    CdmaSmsErrorClass errorClass;
+    int32_t smsCauseCode;                // As defined in N.S00005, 6.5.2.125.
+                                         // Currently, only 35 (resource shortage) and
+                                         // 39 (other terminal problem) are reported.
+};
+
+struct CdmaBroadcastSmsConfigInfo {
+    int32_t serviceCategory;             // serviceCategory defines a Broadcast message identifier
+                                         // whose value is 0x0000 - 0xFFFF as defined in
+                                         // C.R1001G 9.3.1 and 9.3.2.
+    int32_t language;                    // language code of Broadcast Message
+                                         // whose value is 0x00 - 0x07 as defined in C.R1001G 9.2.
+    bool selected;                       // selected false means message types specified in
+                                         // serviceCategory are not accepted, while true means
+                                         // accepted.
+};
+
+struct CdmaSmsWriteArgs {
+    CdmaSmsWriteArgsStatus status;       // Status of message. See TS 27.005 3.1
+    CdmaSmsMessage message;
+};
+
+
+/**
+ * Which types of Cell Broadcast Message (CBM) are to be received by the ME
+ *
+ * fromServiceID - uToServiceID defines a range of CBM message identifiers
+ * whose value is 0x0000 - 0xFFFF as defined in TS 23.041 9.4.1.2.2 for GMS
+ * and 9.4.4.2.2 for UMTS. All other values must be treated as empty
+ * CBM message ID.
+ *
+ * fromCodeScheme - uToCodeScheme defines a range of CBM data coding schemes
+ * whose value is 0x00 - 0xFF as defined in TS 23.041 9.4.1.2.3 for GMS
+ * and 9.4.4.2.3 for UMTS.
+ * All other values must be treated as empty CBM data coding scheme.
+ *
+ * selected false means message types specified in <fromServiceId, toServiceId>
+ * and <fromCodeScheme, toCodeScheme>are not accepted, while true means accepted.
+ */
+struct GsmBroadcastSmsConfigInfo {
+    int32_t fromServiceId;
+    int32_t toServiceId;
+    int32_t fromCodeScheme;
+    int32_t toCodeScheme;
+    bool selected;
+};
+
+struct CellIdentityGsm {
+    string mcc;                          // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
+    string mnc;                          // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
+                                         // unknown
+    int32_t lac;                         // 16-bit Location Area Code, 0..65535, INT_MAX if unknown
+    int32_t cid;                         // 16-bit GSM Cell Identity described in
+                                         // TS 27.007, 0..65535, INT_MAX if unknown
+    int32_t arfcn;                       // 16-bit GSM Absolute RF channel number, INT_MAX if
+                                         // unknown
+    uint8_t bsic;                        // 6-bit Base Station Identity Code, 0xFF if unknown
+};
+
+struct CellIdentityWcdma {
+    string mcc;                          // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
+    string mnc;                          // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX
+                                         // if unknown
+    int32_t lac;                         // 16-bit Location Area Code, 0..65535, INT_MAX if unknown
+    int32_t cid;                         // 28-bit UMTS Cell Identity described in
+                                         // TS 25.331, 0..268435455, INT_MAX if unknown
+    int32_t psc;                         // 9-bit UMTS Primary Scrambling Code described in
+                                         // TS 25.331, 0..511, INT_MAX if unknown
+    int32_t uarfcn;                      // 16-bit UMTS Absolute RF Channel Number, INT_MAX if
+                                         // unknown
+};
+
+struct CellIdentityCdma {
+    int32_t networkId;                   // Network Id 0..65535, INT_MAX if unknown
+    int32_t systemId;                    // CDMA System Id 0..32767, INT_MAX if unknown
+    int32_t basestationId;               // Base Station Id 0..65535, INT_MAX if unknown
+    int32_t longitude;                   // Longitude is a decimal number as specified in
+                                         // 3GPP2 C.S0005-A v6.0. It is represented in units of
+                                         // 0.25 seconds and ranges from -2592000 to 2592000,
+                                         // both values inclusive (corresponding to a range of -180
+                                         // to +180 degrees). INT_MAX if unknown
+    int32_t latitude;                    // Latitude is a decimal number as specified in
+                                         // 3GPP2 C.S0005-A v6.0. It is represented in units of
+                                         // 0.25 seconds and ranges from -1296000 to 1296000,
+                                         // both values inclusive (corresponding to a range of -90
+                                         // to +90 degrees). INT_MAX if unknown
+};
+
+struct CellIdentityLte {
+    string mcc;                          // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
+    string mnc;                          // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
+                                         // unknown
+    int32_t ci;                          // 28-bit Cell Identity described in TS TS 27.007, INT_MAX
+                                         // if unknown
+    int32_t pci;                         // physical cell id 0..503, INT_MAX if unknown
+    int32_t tac;                         // 16-bit tracking area code, INT_MAX if unknown
+    int32_t earfcn;                      // 18-bit LTE Absolute RC Channel Number, INT_MAX if
+                                         // unknown
+};
+
+struct CellIdentityTdscdma {
+    string mcc;                          // 3-digit Mobile Country Code, 0..999, INT_MAX if unknown
+    string mnc;                          // 2 or 3-digit Mobile Network Code, 0..999, INT_MAX if
+                                         // unknown
+    int32_t lac;                         // 16-bit Location Area Code, 0..65535, INT_MAX if
+                                         // unknown
+    int32_t cid;                         // 28-bit UMTS Cell Identity described in
+                                         // TS 25.331, 0..268435455, INT_MAX if unknown
+    int32_t cpid;                        // 8-bit Cell Parameters ID described in
+                                         // TS 25.331, 0..127, INT_MAX if unknown
+};
+
+struct CellInfoGsm {
+    CellIdentityGsm cellIdentityGsm;
+    GsmSignalStrength signalStrengthGsm;
+};
+
+struct CellInfoWcdma {
+    CellIdentityWcdma cellIdentityWcdma;
+    WcdmaSignalStrength signalStrengthWcdma;
+};
+
+struct CellInfoCdma {
+    CellIdentityCdma cellIdentityCdma;
+    CdmaSignalStrength signalStrengthCdma;
+    EvdoSignalStrength signalStrengthEvdo;
+};
+
+struct CellInfoLte {
+    CellIdentityLte cellIdentityLte;
+    LteSignalStrength signalStrengthLte;
+};
+
+struct CellInfoTdscdma {
+    CellIdentityTdscdma cellIdentityTdscdma;
+    TdScdmaSignalStrength signalStrengthTdscdma;
+};
+
+struct CellInfo {
+    CellInfoType cellInfoType;           // cell type for selecting from union CellInfo
+    bool registered;                     // true if this cell is registered false if not registered
+    TimeStampType timeStampType;         // type of time stamp represented by timeStamp
+    uint64_t timeStamp;                  // Time in nanos as returned by ril_nano_time
+    // Only one of the below vectors must be of size 1 based on the CellInfoType & others must be
+    // of size 0
+    vec<CellInfoGsm> gsm;                // Valid only if type = gsm and size = 1 else must be empty
+    vec<CellInfoCdma> cdma;              // Valid only if type = cdma and size = 1 else must be
+                                         // empty
+    vec<CellInfoLte> lte;                // Valid only if type = lte and size = 1 else must be
+                                         // empty
+    vec<CellInfoWcdma> wcdma;            // Valid only if type = wcdma and size = 1 else must be
+                                         // empty
+    vec<CellInfoTdscdma> tdscdma;        // Valid only if type = tdscdma and size = 1 else must be
+                                         // empty
+};
+
+struct GsmSmsMessage {
+    string smscPdu;                      // SMSC address in GSM BCD format prefixed by a length
+                                         // byte (as expected by TS 27.005) or empty string for
+                                         // default SMSC
+    string pdu;                          // SMS in PDU format as an ASCII hex string less the
+                                         // SMSC address. TP-Layer-Length is be "strlen(pdu)/2
+};
+
+struct ImsSmsMessage {
+    RadioTechnologyFamily tech;
+    bool retry;                          // false == not retry, true == retry */
+    int32_t messageRef;                  // Valid field if retry is set to true.
+                                         // Contains messageRef from SendSmsResult stuct
+                                         // corresponding to failed MO SMS.
+    // Only one of the below vectors must be of size 1 based on the RadioTechnologyFamily & others
+    // must be of size 0
+    vec<CdmaSmsMessage> cdmaMessage;     // Valid field if tech is 3GPP2 and size = 1 else must be
+                                         // empty
+    vec<GsmSmsMessage> gsmMessage;       // Valid field if tech is 3GPP and size = 1 else must be
+                                         // empty
+};
+
+struct SimApdu {
+    int32_t sessionid;                   // "sessionid" from TS 27.007 +CGLA command. Must be
+                                         // ignored for +CSIM command.
+    // Following fields are used to derive the APDU ("command" and "length"
+    // values in TS 27.007 +CSIM and +CGLA commands).
+    int32_t cla;
+    int32_t instruction;
+    int32_t p1;
+    int32_t p2;
+    int32_t p3;                          // A negative P3 implies a 4 byte APDU.
+    string data;                         // In hex string format ([a-fA-F0-9]*).
+};
+
+struct NvWriteItem {
+    NvItem itemID;
+    string value;
+};
+
+struct SelectUiccSub {
+    int32_t slot;
+    int32_t appIndex;                   // array subscriptor from
+                                        // applications[RadioConst:CARD_MAX_APPS] in
+                                        // getIccCardStatus()
+    SubscriptionType subType;
+    UiccSubActStatus actStatus;
+};
+
+struct HardwareConfigModem {
+    int32_t rilModel;
+    uint32_t rat;                       // bitset - ref. RadioTechnology.
+    int32_t maxVoice;
+    int32_t maxData;
+    int32_t maxStandby;
+};
+
+struct HardwareConfigSim {
+    string modemUuid;                   // RadioConst:MAX_UUID_LENGTH is max length of the
+                                        // string
+};
+
+struct HardwareConfig {
+    HardwareConfigType type;
+    string uuid;                         // RadioConst:MAX_UUID_LENGTH is max length of the
+                                         // string
+    HardwareConfigState state;
+    // Only one of the below vectors must have size = 1 based on the HardwareConfigType and other
+    // must have size = 0.
+    vec<HardwareConfigModem> modem;      // Valid only if type is Modem and size = 1 else must be
+                                         // empty
+    vec<HardwareConfigSim> sim;          // Valid only if type is SIM or else emptyand size = 1
+                                         // else must be empty
+};
+
+struct DataProfileInfo {
+    int32_t profileId;                   // id of the data profile
+    string apn;                          // The APN to connect to
+    string protocol;                     // One of the PDP_type values in TS 27.007 section 10.1.1.
+                                         // For example, "IP", "IPV6", "IPV4V6", or "PPP".
+    ApnAuthType authType;
+    string user;                         // The username for APN, or empty string
+    string password;                     // The password for APN, or empty string
+    DataProfileInfoType type;
+    int32_t maxConnsTime;                // The period in seconds to limit the maximum connections
+    int32_t maxConns;                    // The maximum connections during maxConnsTime
+    int32_t waitTime;                    // The required wait time in seconds after a successful UE
+                                         // initiated disconnect of a given PDN connection before
+                                         // the device can send a new PDN connection request for
+                                         // that given PDN
+    bool enabled;                        // True to enable the profile, false to disable
+};
+
+struct RadioCapability {
+    int32_t session;                     // Unique session value defined by framework returned in
+                                         // all "responses/unsol"
+    RadioCapabilityPhase phase;
+    RadioAccessFamily raf;
+    string logicalModemUuid;             // A UUID typically "com.xxxx.lmX where X is the logical
+                                         // modem. RadioConst:MAX_UUID_LENGTH is the max
+                                         // length
+    RadioCapabilityStatus status;
+};
+
+struct LceStatusInfo {
+    LceStatus lceStatus;
+    uint8_t actualIntervalMs;            // actual LCE reporting interval,
+                                         // meaningful only if LceStatus = ACTIVE.
+};
+
+struct LceDataInfo {
+    uint32_t lastHopCapacityKbps;          // last-hop cellular capacity: kilobits/second.
+    uint8_t confidenceLevel;               // capacity estimate confidence: 0-100
+    bool lceSuspended;                     // LCE report going to be suspended? (e.g., radio
+                                           // moves to inactive state or network type change)
+                                           // true = suspended;
+                                           // false = not suspended.
+};
+
+struct ActivityStatsInfo {
+    uint32_t sleepModeTimeMs;              // total time (in ms) when modem is in a low power or
+                                           // sleep state
+    uint32_t idleModeTimeMs;               // total time (in ms) when modem is awake but neither
+                                           // the transmitter nor receiver are active/awake
+    uint32_t[RadioConst:NUM_TX_POWER_LEVELS] txmModetimeMs;
+                                           // Each index represent total time (in ms) during which
+                                           // the transmitter is active/awake for a particular
+                                           // power range as shown below.
+                                           // index 0 = tx_power < 0dBm
+                                           // index 1 = 0dBm < tx_power < 5dBm
+                                           // index 2 = 5dBm < tx_power < 15dBm
+                                           // index 3 = 15dBm < tx_power < 20dBm
+                                           // index 4 = tx_power > 20dBm
+    uint32_t rxModeTimeMs;                 // total time (in ms) for which receiver is
+                                           // active/awake and the transmitter is inactive
+};
+
+struct Carrier {
+    string mcc;
+    string mnc;
+    CarrierMatchType matchType;            // Specify match type for the carrier.
+                                           // If it’s ALL, matchData is empty string;
+                                           // otherwise, matchData is the value for the match type.
+    string matchData;
+};
+
+struct CarrierRestrictions {
+    vec<Carrier> allowedCarriers;          // whitelist for allowed carriers
+    vec<Carrier> excludedCarriers;         // blacklist for explicitly excluded carriers
+                                           // which match allowed_carriers. Eg. allowedCarriers
+                                           // match mcc/mnc, excludedCarriers has same mcc/mnc and
+                                           // gid1 is ABCD. It means except the carrier whose gid1
+                                           // is ABCD, all carriers with the same mcc/mnc are
+                                           // allowed.
+};
+
+struct SuppSvcNotification {
+    bool isMT;                             // notification type
+                                           // false = MO intermediate result code
+                                           // true = MT unsolicited result code
+    bool isCode1;                          // See 27.007 7.17
+                                           // true = "code1" for MO
+                                           // false = "code2" for MT
+    int32_t index;                         // CUG index. See 27.007 7.17.
+    int32_t type;                          // "type" from 27.007 7.17 (MT only).
+    string number;                         // "number" from 27.007 7.17
+                                           // (MT only, may be empty string).
+};
+
+struct SimRefreshResult {
+    SimRefreshType type;
+    int32_t efId;                          // is the EFID of the updated file if the result is
+                                           // SIM_FILE_UPDATE or 0 for any other result.
+    string aid;                            // is AID(application ID) of the card application
+                                           // See ETSI 102.221 8.1 and 101.220 4
+                                           // For SIM_FILE_UPDATE result it must be set to AID of
+                                           // application in which updated EF resides or it must be
+                                           // empty string if EF is outside of an application.
+                                           // For SIM_INIT result this field is set to AID of
+                                           // application that caused REFRESH
+                                           // For SIM_RESET result it is empty string.
+};
+
+/* CDMA Signal Information Record as defined in C.S0005 section 3.7.5.5 */
+struct CdmaSignalInfoRecord {
+    bool isPresent;                        // true if signal information record is present
+    int8_t signalType;                     // as defined 3.7.5.5-1
+    int8_t alertPitch;                     // as defined 3.7.5.5-2
+    int8_t signal;                         // as defined 3.7.5.5-3, 3.7.5.5-4 or 3.7.5.5-5
+};
+
+struct CdmaCallWaiting {
+    string number;                         // Remote party number
+    CdmaCallWaitingNumberPresentation numberPresentation;
+    string name;                           // Remote party name
+    CdmaSignalInfoRecord signalInfoRecord;
+    // Number type/Number plan required to support International Call Waiting
+    CdmaCallWaitingNumberType numbertype;
+    CdmaCallWaitingNumberPlan numberPlan;
+};
+
+/*
+ * Display Info Rec as defined in C.S0005 section 3.7.5.1
+ * Extended Display Info Rec as defined in C.S0005 section 3.7.5.16
+ * Note: the Extended Display info rec contains multiple records of the
+ * form: display_tag, display_len, and display_len occurrences of the
+ * char field if the display_tag is not 10000000 or 10000001.
+ * To save space, the records are stored consecutively in a byte buffer.
+ * The display_tag, display_len and chari fields are all 1 byte.
+ */
+struct CdmaDisplayInfoRecord {
+    string alphaBuf;                       // Max length = RadioConst:CDMA_ALPHA_INFO_BUFFER_LENGTH
+};
+
+/*
+ * Called Party Number Info Rec as defined in C.S0005 section 3.7.5.2
+ * Calling Party Number Info Rec as defined in C.S0005 section 3.7.5.3
+ * Connected Number Info Rec as defined in C.S0005 section 3.7.5.4
+ */
+struct CdmaNumberInfoRecord {
+    string number;                         // Max length = RADIP_CDMA_NUMBER_INFO_BUFFER_LENGTH
+    uint8_t numberType;
+    uint8_t numberPlan;
+    uint8_t pi;
+    uint8_t si;
+};
+
+struct  CdmaRedirectingNumberInfoRecord{
+    CdmaNumberInfoRecord redirectingNumber;
+    CdmaRedirectingReason redirectingReason; // redirectingReason is set to UNKNOWN if not included
+};
+
+/* Line Control Information Record as defined in C.S0005 section 3.7.5.15 */
+struct CdmaLineControlInfoRecord {
+    uint8_t lineCtrlPolarityIncluded;
+    uint8_t lineCtrlToggle;
+    uint8_t lineCtrlReverse;
+    uint8_t lineCtrlPowerDenial;
+};
+
+/* T53 CLIR Information Record */
+struct CdmaT53ClirInfoRecord {
+    uint8_t cause;
+};
+
+/* T53 Audio Control Information Record */
+struct CdmaT53AudioControlInfoRecord {
+    uint8_t upLink;
+    uint8_t downLink;
+};
+
+struct CdmaInformationRecord {
+    CdmaInfoRecName name;
+    // Only one of the below vectors must have size = 1 based on the
+    // CdmaInfoRecName. All other vectors must have size 0.
+    vec<CdmaDisplayInfoRecord> display;  // Display and Extended Display Info Rec
+    vec<CdmaNumberInfoRecord> number;    // Called Party Number, Calling Party Number, Connected
+                                         // number Info Rec
+    vec<CdmaSignalInfoRecord> signal;    // Signal Info Rec
+    vec<CdmaRedirectingNumberInfoRecord> redir; // Redirecting Number Info Rec
+    vec<CdmaLineControlInfoRecord> lineCtrl;    // Line Control Info Rec
+    vec<CdmaT53ClirInfoRecord> clir;     // T53 CLIR Info Rec
+    vec<CdmaT53AudioControlInfoRecord> audioCtrl; // T53 Audio Control Info Rec
+};
+
+struct CdmaInformationRecords {
+    vec<CdmaInformationRecord> infoRec;  // Max length = RadioConst:CDMA_MAX_NUMBER_OF_INFO_RECS
+};
+
+struct CfData {
+    vec<CallForwardInfo> cfInfo;         // This is the response data
+                                         // for SS request to query call
+                                         // forward status. see getCallForwardStatus()
+                                         // Max size = RadioConst:NUM_SERVICE_CLASSES
+};
+
+struct SsInfoData {
+    vec<int32_t> ssInfo;                 // This is the response data for all of the SS GET/SET
+                                         // Radio requests. E.g. IRadio.getClir() returns
+                                         // two ints, so first two values of ssInfo[] will be
+                                         // used for response if serviceType is SS_CLIR and
+                                         // requestType is SS_INTERROGATION
+                                         // Max size = RadioConst:SS_INFO_MAX
+};
+
+struct StkCcUnsolSsResult {
+    SsServiceType serviceType;
+    SsRequestType requestType;
+    SsTeleserviceType teleserviceType;
+    SuppServiceClass serviceClass;
+    RadioError result;
+    // Only one of the below vectors may contain values and other must be empty
+    vec<SsInfoData> ssInfo;              // Valid only for all SsserviceType except
+                                         // SsServiceType:CF_* else empty.
+    vec<CfData> cfData;                  // Valid for SsServiceType:CF_* else empty
+};
+
+struct PcoDataInfo {
+    int32_t cid;                         // Context ID, uniquely identifies this call
+    string bearerProto;                  // One of the PDP_type values in TS 27.007 section 10.1.1.
+                                         // For example, "IP", "IPV6", "IPV4V6"
+    int32_t pcoId;                       // The protocol ID for this box. Note that only IDs from
+                                         // FF00H - FFFFH are accepted. If more than one is
+                                         // included from the network, multiple calls must be made
+                                         // to send all of them.
+    vec<uint8_t> contents;               // Carrier-defined content. It is binary, opaque and
+                                         // loosely defined in LTE Layer 3 spec 24.008
 };
\ No newline at end of file