Add reporting criteria to radio interface.
Enables setting various reporting criteria for unsolicited signal strength and LCE reports. Creates a new LCE report including both up and down bandwidths. Updates documentation for various IndicationFilter bits to add clarity. Bug: 70638175 Test: n/a Change-Id: If8141fbd89baf85ed5ee65d589f111907a9bf8b4
This commit is contained in:
parent
19940c6778
commit
21c6dc3548
5 changed files with 160 additions and 0 deletions
|
@ -31,6 +31,8 @@ hidl_interface {
|
||||||
"CellInfoLte",
|
"CellInfoLte",
|
||||||
"CellInfoWcdma",
|
"CellInfoWcdma",
|
||||||
"IncrementalResultsPeriodicityRange",
|
"IncrementalResultsPeriodicityRange",
|
||||||
|
"IndicationFilter",
|
||||||
|
"LinkCapacityEstimate",
|
||||||
"MaxSearchTimeRange",
|
"MaxSearchTimeRange",
|
||||||
"NetworkScanRequest",
|
"NetworkScanRequest",
|
||||||
"NetworkScanResult",
|
"NetworkScanResult",
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package android.hardware.radio@1.2;
|
package android.hardware.radio@1.2;
|
||||||
|
|
||||||
import @1.1::IRadio;
|
import @1.1::IRadio;
|
||||||
|
import @1.1::RadioAccessNetworks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface is used by telephony and telecom to talk to cellular radio.
|
* This interface is used by telephony and telecom to talk to cellular radio.
|
||||||
|
@ -37,4 +38,72 @@ interface IRadio extends @1.1::IRadio {
|
||||||
* Response function is IRadioResponse.startNetworkScanResponse()
|
* Response function is IRadioResponse.startNetworkScanResponse()
|
||||||
*/
|
*/
|
||||||
oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request);
|
oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the indication filter.
|
||||||
|
*
|
||||||
|
* Prevents the reporting of specified unsolicited indications from the radio. This is used
|
||||||
|
* for power saving in instances when those indications are not needed. If unset, defaults to
|
||||||
|
* @1.2::IndicationFilter:ALL.
|
||||||
|
*
|
||||||
|
* @param serial Serial number of request.
|
||||||
|
* @param indicationFilter 32-bit bitmap of IndicationFilter. Bits set to 1 indicate the
|
||||||
|
* indications are enabled. See @1.2::IndicationFilter for the definition of each bit.
|
||||||
|
*
|
||||||
|
* Response callback is IRadioResponse.setIndicationFilterResponse()
|
||||||
|
*/
|
||||||
|
oneway setIndicationFilter_1_2(int32_t serial, bitfield<IndicationFilter> indicationFilter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the signal strength reporting criteria.
|
||||||
|
*
|
||||||
|
* The resulting reporting criteria are the AND of all the supplied criteria.
|
||||||
|
*
|
||||||
|
* Note: Reporting criteria must be individually set for each RAN. If unset, reporting criteria
|
||||||
|
* for that RAN are implementation-defined.
|
||||||
|
*
|
||||||
|
* Response callback is IRadioResponse.setSignalStrengthReportingCriteriaResponse().
|
||||||
|
*
|
||||||
|
* @param serial Serial number of request.
|
||||||
|
* @param hysteresisMs A hysteresis time in milliseconds to prevent flapping. A value of 0
|
||||||
|
* disables hysteresis.
|
||||||
|
* @param hysteresisDb An interval in dB defining the required magnitude change between reports.
|
||||||
|
* hysteresisDb must be smaller than the smallest threshold delta. An
|
||||||
|
* interval value of 0 disables hysteresis.
|
||||||
|
* @param thresholdsDbm A vector of trigger thresholds in dBm. A vector size of 0 disables the
|
||||||
|
* use of thresholds for reporting.
|
||||||
|
* @param ran The type of network for which to apply these thresholds.
|
||||||
|
*/
|
||||||
|
oneway setSignalStrengthReportingCriteria(int32_t serial, int32_t hysteresisMs,
|
||||||
|
int32_t hysteresisDb, vec<int32_t> thresholdsDbm, RadioAccessNetworks ran);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the link capacity reporting criteria.
|
||||||
|
*
|
||||||
|
* The resulting reporting criteria are the AND of all the supplied criteria.
|
||||||
|
*
|
||||||
|
* Note: Reporting criteria must be individually set for each RAN. If unset, reporting criteria
|
||||||
|
* for that RAN are implementation-defined.
|
||||||
|
*
|
||||||
|
* Response callback is IRadioResponse.setLinkCapacityReportingCriteriaResponse().
|
||||||
|
*
|
||||||
|
* @param serial Serial number of request.
|
||||||
|
* @param hysteresisMs A hysteresis time in milliseconds to prevent flapping. A value of 0
|
||||||
|
* disables hysteresis.
|
||||||
|
* @param hysteresisDlKbps An interval in kbps defining the required magnitude change between DL
|
||||||
|
* reports. hysteresisDlKbps must be smaller than the smallest threshold
|
||||||
|
* delta. A value of 0 disables hysteresis.
|
||||||
|
* @param hysteresisUlKbps An interval in kbps defining the required magnitude change between UL
|
||||||
|
* reports. hysteresisUlKbps must be smaller than the smallest threshold
|
||||||
|
* delta. A value of 0 disables hysteresis.
|
||||||
|
* @param thresholdsDownlinkKbps A vector of trigger thresholds in kbps for downlink reports. A
|
||||||
|
* vector size of 0 disables the use of DL thresholds for
|
||||||
|
* reporting.
|
||||||
|
* @param thresholdsUplinkKbps A vector of trigger thresholds in kbps for uplink reports. A
|
||||||
|
* vector size of 0 disables the use of UL thresholds for reporting.
|
||||||
|
* @param ran The type of network for which to apply these thresholds.
|
||||||
|
*/
|
||||||
|
oneway setLinkCapacityReportingCriteria(int32_t serial, int32_t hysteresisMs,
|
||||||
|
int32_t hysteresisDlKbps, int32_t hysteresisUlKbps, vec<int32_t> thresholdsDownlinkKbps,
|
||||||
|
vec<int32_t> thresholdsUplinkKbps, RadioAccessNetworks ran);
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,4 +37,20 @@ interface IRadioIndication extends @1.1::IRadioIndication {
|
||||||
* @param records Current cell information known to radio
|
* @param records Current cell information known to radio
|
||||||
*/
|
*/
|
||||||
oneway cellInfoList_1_2(RadioIndicationType type, vec<CellInfo> records);
|
oneway cellInfoList_1_2(RadioIndicationType type, vec<CellInfo> records);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates current link capacity estimate.
|
||||||
|
*
|
||||||
|
* This replaces @1.0::IRadioIndication.lceData(). The framework must be able to handle
|
||||||
|
* either this function or @1.0::IRadioIndication.lceData(). Implementations supporting
|
||||||
|
* v1.2 must call this function instead of lceData().
|
||||||
|
*
|
||||||
|
* This indication is sent whenever the reporting criteria, as set by
|
||||||
|
* @1.2::IRadio.setLinkCapacityReportingCriteria, are met and the indication is not
|
||||||
|
* suppressed by @1.2::IRadio.setIndicationFilter_1_2().
|
||||||
|
*
|
||||||
|
* @param type Type of radio indication
|
||||||
|
* @param lce LinkCapacityEstimate information as defined in types.hal
|
||||||
|
*/
|
||||||
|
oneway currentLinkCapacityEstimate(RadioIndicationType type, LinkCapacityEstimate lce);
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,4 +50,26 @@ interface IRadioResponse extends @1.1::IRadioResponse {
|
||||||
* RadioError:NONE
|
* RadioError:NONE
|
||||||
*/
|
*/
|
||||||
oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus);
|
oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param info Response info struct containing response type, serial no. and error
|
||||||
|
*
|
||||||
|
* Valid errors returned:
|
||||||
|
* RadioError:NONE
|
||||||
|
* RadioError:INVALID_ARGUMENTS
|
||||||
|
* RadioError:RADIO_NOT_AVAILABLE
|
||||||
|
* RadioError:INTERNAL_ERR
|
||||||
|
*/
|
||||||
|
oneway setSignalStrengthReportingCriteriaResponse(RadioResponseInfo info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param info Response info struct containing response type, serial no. and error
|
||||||
|
*
|
||||||
|
* Valid errors returned:
|
||||||
|
* RadioError:NONE
|
||||||
|
* RadioError:INVALID_ARGUMENTS
|
||||||
|
* RadioError:RADIO_NOT_AVAILABLE
|
||||||
|
* RadioError:INTERNAL_ERR
|
||||||
|
*/
|
||||||
|
oneway setLinkCapacityReportingCriteriaResponse(RadioResponseInfo info);
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,6 +64,46 @@ enum IncrementalResultsPeriodicityRange : int32_t {
|
||||||
MAX = 10,
|
MAX = 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overwritten from @1.0::IndicationFilter in order to redefine ALL. In the future, this should
|
||||||
|
* be extended instead of overwritten.
|
||||||
|
*/
|
||||||
|
enum IndicationFilter : int32_t {
|
||||||
|
NONE = 0,
|
||||||
|
ALL = ~0,
|
||||||
|
/**
|
||||||
|
* When this bit is set, modem must send the signal strength update through
|
||||||
|
* IRadioIndication.currentSignalStrength() when all criteria specified by
|
||||||
|
* IRadio.setSignalStrengthReportingCriteria() are met.
|
||||||
|
*/
|
||||||
|
SIGNAL_STRENGTH = 1 << 0,
|
||||||
|
/**
|
||||||
|
* When this bit is set, modem must invoke IRadioIndication.networkStateChanged() when any field
|
||||||
|
* in VoiceRegStateResult or DataRegStateResult changes. When this bit is not set, modem must
|
||||||
|
* suppress IRadioIndication.networkStateChanged() when there are only changes from
|
||||||
|
* insignificant fields. Modem must invoke IRadioIndication.networkStateChanged() when
|
||||||
|
* significant fields are updated regardless of whether this bit is set.
|
||||||
|
*
|
||||||
|
* The following fields are considered significant: VoiceRegStateResult.regState,
|
||||||
|
* VoiceRegStateResult.rat, DataRegStateResult.regState, DataRegStateResult.rat.
|
||||||
|
*/
|
||||||
|
FULL_NETWORK_STATE = 1 << 1,
|
||||||
|
/**
|
||||||
|
* When this bit is set, modem must send IRadioIndication.dataCallListChanged() whenever any
|
||||||
|
* field in ITypes.SetupDataCallResult changes. When this bit is not set, modem must suppress
|
||||||
|
* the indication when the only changed field is 'active' (for data dormancy). For all other
|
||||||
|
* field changes, the modem must send IRadioIndication.dataCallListChanged() regardless of
|
||||||
|
* whether this bit is set.
|
||||||
|
*/
|
||||||
|
DATA_CALL_DORMANCY_CHANGED = 1 << 2,
|
||||||
|
/**
|
||||||
|
* When this bit is set, modem must send the link capacity update through
|
||||||
|
* IRadioIndication.currentLinkCapacityEstimate() when all criteria specified by
|
||||||
|
* IRadio.setLinkCapacityReportingCriteria() are met.
|
||||||
|
*/
|
||||||
|
LINK_CAPACITY_ESTIMATE = 1 << 3,
|
||||||
|
};
|
||||||
|
|
||||||
struct NetworkScanRequest {
|
struct NetworkScanRequest {
|
||||||
ScanType type;
|
ScanType type;
|
||||||
|
|
||||||
|
@ -244,3 +284,14 @@ struct CardStatus {
|
||||||
*/
|
*/
|
||||||
string iccid;
|
string iccid;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LinkCapacityEstimate {
|
||||||
|
/**
|
||||||
|
* Estimated downlink capacity in kbps.
|
||||||
|
*/
|
||||||
|
uint32_t downlinkCapacityKbps;
|
||||||
|
/**
|
||||||
|
* Estimated uplink capacity in kbps.
|
||||||
|
*/
|
||||||
|
uint32_t uplinkCapacityKbps;
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in a new issue