12b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville/* 22b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* Copyright (C) 2014 The Android Open Source Project 32b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* 42b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* Licensed under the Apache License, Version 2.0 (the "License"); 52b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* you may not use this file except in compliance with the License. 62b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* You may obtain a copy of the License at 72b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* 82b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* http://www.apache.org/licenses/LICENSE-2.0 92b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* 102b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* Unless required by applicable law or agreed to in writing, software 112b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* distributed under the License is distributed on an "AS IS" BASIS, 122b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* See the License for the specific language governing permissions and 142b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville* limitations under the License. 152b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville*/ 162b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 172b40e6226b4b71408964bca46f0a9f256cd4f523Wink Savillepackage com.android.internal.telephony; 182b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 192b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville/** 202b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Object to indicate the phone radio capability. 212b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 222b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @hide 232b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 242b40e6226b4b71408964bca46f0a9f256cd4f523Wink Savillepublic class RadioCapability { 252b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 262b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /* 272b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * The RC_PHASE constants are the set of valid values for the mPhase field. 282b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 292b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 302b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 312b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * LM is configured is initial value and value after FINISH completes. 322b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 332b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_PHASE_CONFIGURED = 0; 342b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 352b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 362b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * START is sent before Apply and indicates that an APPLY will be 372b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * forthcoming with these same parameters. 382b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 392b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_PHASE_START = 1; 402b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 412b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 422b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * APPLY is sent after all LM's receive START and returned 432b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * RIL_RadioCapability. status = 0, if any START's fail no APPLY will 442b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * be sent. 452b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 462b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_PHASE_APPLY = 2; 472b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 482b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 492b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * UNSOL_RSP is sent with RIL_UNSOL_RADIO_CAPABILITY. 502b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 512b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_PHASE_UNSOL_RSP = 3; 522b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 532b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 542b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * RC_PHASE_FINISH is sent after all previous phases have completed. 552b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * If an error occurs in any previous commands the RIL_RadioAccessesFamily 562b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * and LogicalModemId fields will be the prior configuration thus 572b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * restoring the configuration to the previous value. An error returned 582b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * by this command will generally be ignored or may cause that logical 592b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * modem to be removed from service 602b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 612b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_PHASE_FINISH = 4; 622b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 632b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /* 642b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * The RC_STATUS_xxx constants are returned in the mStatus field. 652b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 662b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 672b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 682b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * this parameter is no meaning with RC_Phase_START, RC_Phase_APPLY 692b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 702b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_STATUS_NONE = 0; 712b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 722b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 732b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Tell modem the action transaction of set radio capability is 742b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * success with RC_Phase_FINISH. 752b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 762b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_STATUS_SUCCESS = 1; 772b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 782b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 792b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * tell modem the action transaction of set radio capability is fail 802b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * with RC_Phase_FINISH 812b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 822b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public static final int RC_STATUS_FAIL = 2; 832b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 842b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** Version of structure, RIL_RadioCapability_Version */ 852b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private static final int RADIO_CAPABILITY_VERSION = 1; 862b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 872b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** Unique session value defined by framework returned in all "responses/unsol" */ 882b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private int mSession; 892b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 902b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** CONFIGURED, START, APPLY, FINISH */ 912b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private int mPhase; 922b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 932b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 942b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * RadioAccessFamily is a bit field of radio access technologies the 952b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * for the modem is currently supporting. The initial value returned 962b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * my the modem must the the set of bits that the modem currently supports. 972b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * see RadioAccessFamily#RADIO_TECHNOLOGY_XXXX 982b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 992b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private int mRadioAccessFamily; 1002b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1012b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1022b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Logical modem this radio is be connected to. 1032b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * This must be Globally unique on convention is 1042b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * to use a registered name such as com.google.android.lm0 1052b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1062b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private String mLogicalModemUuid; 1072b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1082b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** Return status and an input parameter for RC_Phase_FINISH */ 1092b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private int mStatus; 1102b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1112b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** Phone ID of phone */ 1122b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private int mPhoneId; 1132b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1142b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1152b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Constructor. 1162b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1172b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param phoneId the phone ID 1182b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param session the request transaction id 1192b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param phase the request phase id 1202b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param radioAccessFamily the phone radio access family defined in 1212b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * RadioAccessFamily. It's a bit mask value to represent 1222b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * the support type. 1232b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param logicalModemUuid the logicalModem UUID which phone connected to 1242b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @param status tell modem the action transaction of 1252b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * set radio capability is success or fail with RC_Phase_FINISH 1262b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1272b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public RadioCapability(int phoneId, int session, int phase, 1282b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int radioAccessFamily, String logicalModemUuid, int status) { 1292b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mPhoneId = phoneId; 1302b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mSession = session; 1312b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mPhase = phase; 1322b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mRadioAccessFamily = radioAccessFamily; 1332b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mLogicalModemUuid = logicalModemUuid; 1342b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mStatus = status; 1352b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1362b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1372b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1382b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Get phone ID. 1392b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1402b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return phone ID 1412b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1422b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getPhoneId() { 1432b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mPhoneId; 1442b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1452b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1462b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1472b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Get radio capability version. 1482b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1492b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return radio capability version 1502b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1512b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getVersion() { 1522b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return RADIO_CAPABILITY_VERSION; 1532b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1542b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1552b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1562b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * Get unique session id. 1572b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1582b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return unique session id 1592b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1602b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getSession() { 1612b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mSession; 1622b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1632b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1642b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1652b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1662b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * get radio capability phase. 1672b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1682b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return RadioCapabilityPhase, including CONFIGURED, START, APPLY, FINISH 1692b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1702b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getPhase() { 1712b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mPhase; 1722b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1732b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1742b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1752b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * get radio access family. 1762b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1772b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return radio access family 1782b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1792b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getRadioAccessFamily() { 1802b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mRadioAccessFamily; 1812b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1822b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1832b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1842b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * get logical modem Universally Unique ID. 1852b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1862b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return logical modem uuid 1872b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1882b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public String getLogicalModemUuid() { 1892b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mLogicalModemUuid; 1902b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 1912b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 1922b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville /** 1932b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * get request status. 1942b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * 1952b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville * @return status and an input parameter for RC_PHASE_FINISH 1962b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville */ 1972b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public int getStatus() { 1982b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return mStatus; 1992b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 2002b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 2012b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville @Override 2022b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public String toString() { 2032b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return "{mPhoneId = " + mPhoneId 2042b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mVersion=" + getVersion() 2052b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mSession=" + getSession() 2062b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mPhase=" + getPhase() 2072b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mRadioAccessFamily=" + getRadioAccessFamily() 2082b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mLogicModemId=" + getLogicalModemUuid() 2092b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " mStatus=" + getStatus() 2102b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + "}"; 2112b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 2122b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville} 2132b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 214