From bacb8216d5dce993da12fd21850ead8b9aaeea19 Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Fri, 27 Dec 2019 12:58:32 -0800 Subject: [PATCH] Add Indication Filter for Registration Failure -Add IndicationFilter support for Radio 1.5. -Add a new flag for disabling Registration Failure indications. Bug: 146805410 Test: make && atest VtsHalRadioV1_5TargetTest Change-Id: Idcfb3ed64624fe7549b6fa0e434f24ca0f5d42f1 --- current.txt | 6 +++--- radio/1.5/IRadio.hal | 16 ++++++++++++++++ radio/1.5/IRadioResponse.hal | 12 ++++++++++++ radio/1.5/types.hal | 6 ++++++ .../vts/functional/radio_hidl_hal_utils_v1_5.h | 2 ++ radio/1.5/vts/functional/radio_response.cpp | 8 +++++++- 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/current.txt b/current.txt index 5e7700f857..d92ecada03 100644 --- a/current.txt +++ b/current.txt @@ -628,10 +628,10 @@ a64467bae843569f0d465c5be7f0c7a5b987985b55a3ef4794dd5afc68538650 android.hardwar 619fc9839ec6e369cfa9b28e3e9412e6885720ff8f9b5750c1b6ffb905120391 android.hardware.wifi.supplicant@1.3::ISupplicantStaIfaceCallback c9273429fcf98d797d3bb07fdba6f1be95bf960f9255cde169fd1ca4db85f856 android.hardware.wifi.supplicant@1.3::ISupplicantStaNetwork 9b0a3ab6f4f74b971ed094426d8a443e29b512ff03e1ab50c07156396cdb2483 android.hardware.wifi.supplicant@1.3::types -d9044563a5ac5a17a239303b8dec1e51167761ac46e965f61e31654cc034d31b android.hardware.radio@1.5::types -afa2d6cf4c0ba4b8482d5bcc097594ad5bc49be0bf3003034f75955cdaf66045 android.hardware.radio@1.5::IRadio +2c0587a1e83facba604949c31163486f21eb5b47a29c8f29119a47d3bd052103 android.hardware.radio@1.5::types +b5cfa87882b416105fe01e8a40a856d36c93d64f1103d77e12b1281cea13b0bd android.hardware.radio@1.5::IRadio bc59237dbd93949238081f762710552e76670cb648c0e198138551460ac54b1e android.hardware.radio@1.5::IRadioIndication -f4888f9676890b43a459c6380f335fea7a6ad32ed3bafafeb018a88d6c0be8a4 android.hardware.radio@1.5::IRadioResponse +ef10e15cdbe8ba63925302a95962d5679bbda6a4351400cc23e1589ca0e9f94b android.hardware.radio@1.5::IRadioResponse 55f0a15642869ec98a55ea0a5ac049d3e1a6245ff7750deb6bcb7182057eee83 android.hardware.radio.config@1.3::types b27ab0cd40b0b078cdcd024bfe1061c4c4c065f3519eeb9347fa359a3268a5ae android.hardware.radio.config@1.3::IRadioConfig 742360c775313438b0f82256eac62fb5bbc76a6ae6f388573f3aa142fb2c1eea android.hardware.radio.config@1.3::IRadioConfigIndication diff --git a/radio/1.5/IRadio.hal b/radio/1.5/IRadio.hal index fafc6e204d..d0c5b0d6bc 100644 --- a/radio/1.5/IRadio.hal +++ b/radio/1.5/IRadio.hal @@ -21,6 +21,7 @@ import @1.4::IRadio; import @1.4::DataProfileInfo; import @1.5::AccessNetwork; import @1.5::DataProfileInfo; +import @1.5::IndicationFilter; import @1.5::LinkAddress; import @1.5::NetworkScanRequest; import @1.5::RadioAccessSpecifier; @@ -219,4 +220,19 @@ interface IRadio extends @1.4::IRadio { */ oneway setRadioPower_1_5(int32_t serial, bool powerOn, bool forEmergencyCall, bool preferredForEmergencyCall); + + /** + * 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.5::IndicationFilter for the definition of each bit. + * + * Response callback is IRadioResponse.setIndicationFilterResponse() + */ + oneway setIndicationFilter_1_5(int32_t serial, bitfield indicationFilter); }; diff --git a/radio/1.5/IRadioResponse.hal b/radio/1.5/IRadioResponse.hal index 968948b1ae..f1b7e71a34 100644 --- a/radio/1.5/IRadioResponse.hal +++ b/radio/1.5/IRadioResponse.hal @@ -145,4 +145,16 @@ interface IRadioResponse extends @1.4::IRadioResponse { * RadioError:INVALID_ARGUMENTS */ oneway setRadioPowerResponse_1_5(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 + * RadioError:SYSTEM_ERR + */ + oneway setIndicationFilterResponse_1_5(RadioResponseInfo info); }; diff --git a/radio/1.5/types.hal b/radio/1.5/types.hal index 7d6ec417de..12c27d04d3 100644 --- a/radio/1.5/types.hal +++ b/radio/1.5/types.hal @@ -27,6 +27,7 @@ import @1.2::CellIdentityGsm; import @1.2::CellIdentityWcdma; import @1.2::CellIdentityTdscdma; import @1.2::CellIdentityLte; +import @1.2::IndicationFilter; import @1.2::NetworkScanRequest; import @1.4::AccessNetwork; import @1.4::ApnTypes; @@ -424,3 +425,8 @@ safe_union CellIdentity { CellIdentityLte lte; CellIdentityNr nr; }; + +enum IndicationFilter : @1.2::IndicationFilter { + /** Control the unsolicited sending of registration failure reports via onRegistrationFailed */ + REGISTRATION_FAILURE = 1 << 5, +}; diff --git a/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h b/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h index 49a315d838..c3c9f54073 100644 --- a/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h +++ b/radio/1.5/vts/functional/radio_hidl_hal_utils_v1_5.h @@ -551,6 +551,8 @@ class RadioResponse_v1_5 : public ::android::hardware::radio::V1_5::IRadioRespon Return setDataProfileResponse_1_5(const RadioResponseInfo& info); Return setRadioPowerResponse_1_5(const RadioResponseInfo& info); + + Return setIndicationFilterResponse_1_5(const RadioResponseInfo& info); }; /* Callback class for radio indication */ diff --git a/radio/1.5/vts/functional/radio_response.cpp b/radio/1.5/vts/functional/radio_response.cpp index a0b3d5fa18..877945f32b 100644 --- a/radio/1.5/vts/functional/radio_response.cpp +++ b/radio/1.5/vts/functional/radio_response.cpp @@ -953,4 +953,10 @@ Return RadioResponse_v1_5::setRadioPowerResponse_1_5(const RadioResponseIn rspInfo = info; parent_v1_5.notify(info.serial); return Void(); -} \ No newline at end of file +} + +Return RadioResponse_v1_5::setIndicationFilterResponse_1_5(const RadioResponseInfo& info) { + rspInfo = info; + parent_v1_5.notify(info.serial); + return Void(); +}