1/*
2* Copyright (C) 2014 The Android Open Source Project
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8*      http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16
17package com.android.internal.telephony;
18
19/**
20 * Object to indicate the phone radio capability.
21 *
22 * @hide
23 */
24public class RadioCapability {
25
26    /*
27     * The RC_PHASE constants are the set of valid values for the mPhase field.
28     */
29
30    /**
31     *  LM is configured is initial value and value after FINISH completes.
32     */
33    public static final int RC_PHASE_CONFIGURED = 0;
34
35    /**
36     * START is sent before Apply and indicates that an APPLY will be
37     * forthcoming with these same parameters.
38     */
39    public static final int RC_PHASE_START = 1;
40
41    /**
42     * APPLY is sent after all LM's receive START and returned
43     * RIL_RadioCapability. status = 0, if any START's fail no APPLY will
44     * be sent.
45     */
46    public static final int RC_PHASE_APPLY = 2;
47
48    /**
49     *  UNSOL_RSP is sent with RIL_UNSOL_RADIO_CAPABILITY.
50     */
51    public static final int RC_PHASE_UNSOL_RSP = 3;
52
53    /**
54     * RC_PHASE_FINISH is sent after all previous phases have completed.
55     * If an error occurs in any previous commands the RIL_RadioAccessesFamily
56     * and LogicalModemId fields will be the prior configuration thus
57     * restoring the configuration to the previous value. An error returned
58     * by this command will generally be ignored or may cause that logical
59     * modem to be removed from service
60     */
61    public static final int RC_PHASE_FINISH = 4;
62
63    /*
64     * The RC_STATUS_xxx constants are returned in the mStatus field.
65     */
66
67     /**
68      *  this parameter is no meaning with RC_Phase_START, RC_Phase_APPLY
69      */
70    public static final int RC_STATUS_NONE = 0;
71
72    /**
73     * Tell modem  the action transaction of set radio capability is
74     * success with RC_Phase_FINISH.
75     */
76    public static final int RC_STATUS_SUCCESS = 1;
77
78    /**
79     * tell modem the action transaction of set radio capability is fail
80     * with RC_Phase_FINISH
81     */
82    public static final int RC_STATUS_FAIL = 2;
83
84    /** Version of structure, RIL_RadioCapability_Version */
85    private static final int RADIO_CAPABILITY_VERSION = 1;
86
87    /** Unique session value defined by framework returned in all "responses/unsol" */
88    private int mSession;
89
90    /** CONFIGURED, START, APPLY, FINISH */
91    private int mPhase;
92
93    /**
94     * RadioAccessFamily is a bit field of radio access technologies the
95     * for the modem is currently supporting. The initial value returned
96     * my the modem must the the set of bits that the modem currently supports.
97     * see RadioAccessFamily#RADIO_TECHNOLOGY_XXXX
98     */
99    private int mRadioAccessFamily;
100
101    /**
102     * Logical modem this radio is be connected to.
103     * This must be Globally unique on convention is
104     * to use a registered name such as com.google.android.lm0
105     */
106    private String mLogicalModemUuid;
107
108    /** Return status and an input parameter for RC_Phase_FINISH */
109    private int mStatus;
110
111    /** Phone ID of phone */
112    private int mPhoneId;
113
114    /**
115     * Constructor.
116     *
117     * @param phoneId the phone ID
118     * @param session the request transaction id
119     * @param phase the request phase id
120     * @param radioAccessFamily the phone radio access family defined in
121     *        RadioAccessFamily. It's a bit mask value to represent
122     *        the support type.
123     * @param logicalModemUuid the logicalModem UUID which phone connected to
124     * @param status tell modem the action transaction of
125     *        set radio capability is success or fail with RC_Phase_FINISH
126     */
127    public RadioCapability(int phoneId, int session, int phase,
128            int radioAccessFamily, String logicalModemUuid, int status) {
129        mPhoneId = phoneId;
130        mSession = session;
131        mPhase = phase;
132        mRadioAccessFamily = radioAccessFamily;
133        mLogicalModemUuid = logicalModemUuid;
134        mStatus = status;
135    }
136
137    /**
138     * Get phone ID.
139     *
140     * @return phone ID
141     */
142    public int getPhoneId() {
143        return mPhoneId;
144    }
145
146    /**
147     * Get radio capability version.
148     *
149     * @return radio capability version
150     */
151    public int getVersion() {
152        return RADIO_CAPABILITY_VERSION;
153    }
154
155    /**
156     * Get unique session id.
157     *
158     * @return unique session id
159     */
160    public int getSession() {
161        return mSession;
162    }
163
164
165    /**
166     * get radio capability phase.
167     *
168     * @return RadioCapabilityPhase, including CONFIGURED, START, APPLY, FINISH
169     */
170    public int getPhase() {
171        return mPhase;
172    }
173
174    /**
175     * get radio access family.
176     *
177     * @return radio access family
178     */
179    public int getRadioAccessFamily() {
180        return mRadioAccessFamily;
181    }
182
183    /**
184     * get logical modem Universally Unique ID.
185     *
186     * @return logical modem uuid
187     */
188    public String getLogicalModemUuid() {
189        return mLogicalModemUuid;
190    }
191
192    /**
193     * get request status.
194     *
195     * @return status and an input parameter for RC_PHASE_FINISH
196     */
197    public int getStatus() {
198        return mStatus;
199    }
200
201    @Override
202    public String toString() {
203        return "{mPhoneId = " + mPhoneId
204                + " mVersion=" + getVersion()
205                + " mSession=" + getSession()
206                + " mPhase=" + getPhase()
207                + " mRadioAccessFamily=" + getRadioAccessFamily()
208                + " mLogicModemId=" + getLogicalModemUuid()
209                + " mStatus=" + getStatus()
210                + "}";
211    }
212}
213
214