blob: 34752011ca46a8256e558f337e10840616d85738 [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.internal.telephony;
import android.compat.annotation.UnsupportedAppUsage;
import android.telephony.TelephonyManager;
/**
* Object to indicate the phone radio capability.
*
* @hide
*/
public class RadioCapability {
/*
* The RC_PHASE constants are the set of valid values for the mPhase field.
*/
/**
* LM is configured is initial value and value after FINISH completes.
*/
public static final int RC_PHASE_CONFIGURED = 0;
/**
* START is sent before Apply and indicates that an APPLY will be
* forthcoming with these same parameters.
*/
public static final int RC_PHASE_START = 1;
/**
* APPLY is sent after all LM's receive START and returned
* RIL_RadioCapability. status = 0, if any START's fail no APPLY will
* be sent.
*/
public static final int RC_PHASE_APPLY = 2;
/**
* UNSOL_RSP is sent with RIL_UNSOL_RADIO_CAPABILITY.
*/
public static final int RC_PHASE_UNSOL_RSP = 3;
/**
* RC_PHASE_FINISH is sent after all previous phases have completed.
* If an error occurs in any previous commands the RIL_RadioAccessesFamily
* and LogicalModemId fields will be the prior configuration thus
* restoring the configuration to the previous value. An error returned
* by this command will generally be ignored or may cause that logical
* modem to be removed from service
*/
public static final int RC_PHASE_FINISH = 4;
/*
* The RC_STATUS_xxx constants are returned in the mStatus field.
*/
/**
* this parameter is no meaning with RC_Phase_START, RC_Phase_APPLY
*/
public static final int RC_STATUS_NONE = 0;
/**
* Tell modem the action transaction of set radio capability is
* success with RC_Phase_FINISH.
*/
public static final int RC_STATUS_SUCCESS = 1;
/**
* tell modem the action transaction of set radio capability is fail
* with RC_Phase_FINISH
*/
public static final int RC_STATUS_FAIL = 2;
/** Version of structure, RIL_RadioCapability_Version */
private static final int RADIO_CAPABILITY_VERSION = 1;
/** Unique session value defined by framework returned in all "responses/unsol" */
private int mSession;
/** CONFIGURED, START, APPLY, FINISH */
private int mPhase;
/**
* RadioAccessFamily is a bit field of radio access technologies the
* for the modem is currently supporting. The initial value returned
* my the modem must the the set of bits that the modem currently supports.
* see {@link android.telephony.TelephonyManager.NetworkTypeBitMask}
*/
@TelephonyManager.NetworkTypeBitMask
private int mRadioAccessFamily;
/**
* Logical modem this radio is be connected to.
* This must be Globally unique on convention is
* to use a registered name such as com.google.android.lm0
*/
private String mLogicalModemUuid;
/** Return status and an input parameter for RC_Phase_FINISH */
private int mStatus;
/** Phone ID of phone */
private int mPhoneId;
/**
* Constructor.
*
* @param phoneId the phone ID
* @param session the request transaction id
* @param phase the request phase id
* @param radioAccessFamily the phone radio access family defined in
* {@link android.telephony.TelephonyManager.NetworkTypeBitMask}
* It's a bit mask value to represent the support type.
* @param logicalModemUuid the logicalModem UUID which phone connected to
* @param status tell modem the action transaction of
* set radio capability is success or fail with RC_Phase_FINISH
*/
public RadioCapability(int phoneId, int session, int phase,
@TelephonyManager.NetworkTypeBitMask int radioAccessFamily,
String logicalModemUuid, int status) {
mPhoneId = phoneId;
mSession = session;
mPhase = phase;
mRadioAccessFamily = radioAccessFamily;
mLogicalModemUuid = logicalModemUuid;
mStatus = status;
}
/**
* Get phone ID.
*
* @return phone ID
*/
public int getPhoneId() {
return mPhoneId;
}
/**
* Get radio capability version.
*
* @return radio capability version
*/
public int getVersion() {
return RADIO_CAPABILITY_VERSION;
}
/**
* Get unique session id.
*
* @return unique session id
*/
public int getSession() {
return mSession;
}
/**
* get radio capability phase.
*
* @return RadioCapabilityPhase, including CONFIGURED, START, APPLY, FINISH
*/
public int getPhase() {
return mPhase;
}
/**
* get radio access family.
*
* @return radio access family
*/
@UnsupportedAppUsage
public int getRadioAccessFamily() {
return mRadioAccessFamily;
}
/**
* get logical modem Universally Unique ID.
*
* @return logical modem uuid
*/
public String getLogicalModemUuid() {
return mLogicalModemUuid;
}
/**
* get request status.
*
* @return status and an input parameter for RC_PHASE_FINISH
*/
public int getStatus() {
return mStatus;
}
@Override
public String toString() {
return "{mPhoneId = " + mPhoneId
+ " mVersion=" + getVersion()
+ " mSession=" + getSession()
+ " mPhase=" + getPhase()
+ " mRadioAccessFamily=" + getRadioAccessFamily()
+ " mLogicModemId=" + getLogicalModemUuid()
+ " mStatus=" + getStatus()
+ "}";
}
}