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