diff --git a/current.txt b/current.txt index 27db8a5ac9..de06d791d9 100644 --- a/current.txt +++ b/current.txt @@ -604,10 +604,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 -0e3c23f1c815469fdcdc39bc33a486817771c7c6b6e5303f2f25569499fc6c69 android.hardware.radio@1.5::types -2bc87cde08fcd8d9a0f5d4a2b8560ea793264d94f5b763a6b22d4a63d0f3cd5a android.hardware.radio@1.5::IRadio +c897388b19e902a3c4989e0b5d59831e07c0cf14d16195d26ebc760ec353f750 android.hardware.radio@1.5::types +5ae0401fdaad9b85de7bebc5bdd7388a4ea661c46f1e4929341981b0540c67de android.hardware.radio@1.5::IRadio 3afac66f21a33bc9c4b80481c7d5540038348651d9a7d8af64ea13610af138da android.hardware.radio@1.5::IRadioIndication -67c8d90dab3f5b8f1e9cf123d6d1f9e581d382846eacc14476335798b9670885 android.hardware.radio@1.5::IRadioResponse +f4888f9676890b43a459c6380f335fea7a6ad32ed3bafafeb018a88d6c0be8a4 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 62a2c61df0..09be37a0db 100644 --- a/radio/1.5/IRadio.hal +++ b/radio/1.5/IRadio.hal @@ -18,8 +18,10 @@ package android.hardware.radio@1.5; import @1.2::DataRequestReason; import @1.4::IRadio; +import @1.4::DataProfileInfo; import @1.5::AccessNetwork; import @1.5::DataProfileInfo; +import @1.5::LinkAddress; import @1.5::NetworkScanRequest; import @1.5::RadioAccessSpecifier; import @1.5::SignalThresholdInfo; @@ -149,11 +151,7 @@ interface IRadio extends @1.4::IRadio { * @param reason The request reason. Must be DataRequestReason.NORMAL or * DataRequestReason.HANDOVER. * @param addresses If the reason is DataRequestReason.HANDOVER, this indicates the list of link - * addresses of the existing data connection. The format is IP address with optional "/" - * prefix length (The format is defined in RFC-4291 section 2.3). For example, "192.0.1.3", - * "192.0.1.11/16", or "2001:db8::1/64". Typically one IPv4 or one IPv6 or one of each. If - * the prefix length is absent, then the addresses are assumed to be point to point with - * IPv4 with prefix length 32 or IPv6 with prefix length 128. This parameter must be ignored + * addresses of the existing data connection. This parameter must be ignored * unless reason is DataRequestReason.HANDOVER. * @param dnses If the reason is DataRequestReason.HANDOVER, this indicates the list of DNS * addresses of the existing data connection. The format is defined in RFC-4291 section @@ -167,7 +165,7 @@ interface IRadio extends @1.4::IRadio { */ oneway setupDataCall_1_5(int32_t serial, AccessNetwork accessNetwork, DataProfileInfo dataProfileInfo, bool roamingAllowed, - DataRequestReason reason, vec addresses, vec dnses); + DataRequestReason reason, vec addresses, vec dnses); /** * Set an apn to initial attach network @@ -191,7 +189,7 @@ interface IRadio extends @1.4::IRadio { * Response callback is IRadioResponse.setDataProfileResponse_1_5() * * Note this API is the same as the 1.4 version except using the 1.5 DataProfileInfo - * as the input param. + * and LinkAddress as the input param. */ oneway setDataProfile_1_5(int32_t serial, vec profiles); diff --git a/radio/1.5/IRadioResponse.hal b/radio/1.5/IRadioResponse.hal index 7a0bc579fa..968948b1ae 100644 --- a/radio/1.5/IRadioResponse.hal +++ b/radio/1.5/IRadioResponse.hal @@ -18,7 +18,7 @@ package android.hardware.radio@1.5; import @1.0::RadioResponseInfo; import @1.4::IRadioResponse; -import @1.4::SetupDataCallResult; +import @1.5::SetupDataCallResult; /** * Interface declaring response functions to solicited radio requests. diff --git a/radio/1.5/types.hal b/radio/1.5/types.hal index 5795f7b925..750114addd 100644 --- a/radio/1.5/types.hal +++ b/radio/1.5/types.hal @@ -25,7 +25,10 @@ import @1.1::UtranBands; import @1.2::NetworkScanRequest; import @1.4::AccessNetwork; import @1.4::ApnTypes; +import @1.4::DataCallFailCause; +import @1.4::DataConnActiveStatus; import @1.4::DataProfileInfo; +import @1.4::PdpProtocolType; /** * Defining signal strength type. @@ -289,3 +292,105 @@ struct DataProfileInfo { /** Supported APN types bitmap. See ApnTypes for the value of each bit. */ bitfield supportedApnTypesBitmap; }; + +/** + * The properties of the link address. This enum reflects the definition in + * if_addr.h in Linux kernel. + */ +enum AddressProperty : int32_t { + NONE = 0, + + /** Indicates this address is deprecated */ + DEPRECATED = 0x20, +}; + +struct LinkAddress { + /** + * The format is IP address with optional "/" + * prefix length (The format is defined in RFC-4291 section 2.3). For example, "192.0.1.3", + * "192.0.1.11/16", or "2001:db8::1/64". Typically one IPv4 or one IPv6 or one of each. If + * the prefix length is absent, then the addresses are assumed to be point to point with + * IPv4 with prefix length 32 or IPv6 with prefix length 128. + */ + string address; + + /** + * The properties of the link address + */ + bitfield properties; + + /** + * The UTC time that this link address will be deprecated. 0 indicates this information is not + * available. + */ + uint64_t deprecatedTime; + + /** + * The UTC time that this link address will expire and no longer valid. 0 indicates this + * information is not available. + */ + uint64_t expiredTime; +}; + +/** + * Overwritten from @1.4::SetupDataCallResult in order to update the addresses to 1.5 + * version. + */ +struct SetupDataCallResult { + /** Data call fail cause. DataCallFailCause.NONE if no error. */ + DataCallFailCause cause; + + /** + * If status != DataCallFailCause.NONE, this field indicates the suggested retry back-off timer + * value RIL wants to override the one pre-configured in FW. The unit is milliseconds. + * The value < 0 means no value is suggested. + * The value 0 means retry must be done ASAP. + * The value of INT_MAX(0x7fffffff) means no retry. + */ + int32_t suggestedRetryTime; + + /** Context ID, uniquely identifies this call. */ + int32_t cid; + + /** Data connection active status. */ + DataConnActiveStatus active; + + /** + * PDP_type values. If cause is DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this is the type + * supported such as "IP" or "IPV6". + */ + PdpProtocolType type; + + /** The network interface name. */ + string ifname; + + /** + * List of link address. + */ + vec addresses; + + /** + * List of DNS server addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1". Empty if no dns + * server addresses returned. + */ + vec dnses; + + /** + * List of default gateway addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1". + * When empty, the addresses represent point to point connections. + */ + vec gateways; + + /** + * List of P-CSCF(Proxy Call State Control Function) addresses via PCO(Protocol Configuration + * Option), e.g., "2001:db8::1 2001:db8::2 2001:db8::3". Empty if not IMS client. + */ + vec pcscf; + + /** + * MTU received from network. Value <= 0 means network has either not sent a value or sent an + * invalid value. + */ + int32_t mtu; +}; + diff --git a/radio/1.5/vts/functional/radio_hidl_hal_api.cpp b/radio/1.5/vts/functional/radio_hidl_hal_api.cpp index d05d2cbe0f..77d9a02df0 100644 --- a/radio/1.5/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.5/vts/functional/radio_hidl_hal_api.cpp @@ -853,10 +853,11 @@ TEST_F(RadioHidlTest_v1_5, setupDataCall_1_5) { bool roamingAllowed = false; + std::vector<::android::hardware::radio::V1_5::LinkAddress> addresses = {}; + std::vector dnses = {}; + ::android::hardware::radio::V1_2::DataRequestReason reason = ::android::hardware::radio::V1_2::DataRequestReason::NORMAL; - std::vector addresses = {""}; - std::vector dnses = {""}; Return res = radio_v1_5->setupDataCall_1_5(serial, accessNetwork, dataProfileInfo, roamingAllowed, reason, addresses, dnses); 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 c2ee94e401..ba1125767b 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 @@ -544,7 +544,7 @@ class RadioResponse_v1_5 : public ::android::hardware::radio::V1_5::IRadioRespon Return setupDataCallResponse_1_5( const RadioResponseInfo& info, - const android::hardware::radio::V1_4::SetupDataCallResult& dcResponse); + const android::hardware::radio::V1_5::SetupDataCallResult& dcResponse); Return setInitialAttachApnResponse_1_5(const RadioResponseInfo& info); diff --git a/radio/1.5/vts/functional/radio_response.cpp b/radio/1.5/vts/functional/radio_response.cpp index 8932a6499d..a0b3d5fa18 100644 --- a/radio/1.5/vts/functional/radio_response.cpp +++ b/radio/1.5/vts/functional/radio_response.cpp @@ -931,7 +931,7 @@ Return RadioResponse_v1_5::startNetworkScanResponse_1_5(const RadioRespons Return RadioResponse_v1_5::setupDataCallResponse_1_5( const RadioResponseInfo& info, - const android::hardware::radio::V1_4::SetupDataCallResult& /* dcResponse */) { + const android::hardware::radio::V1_5::SetupDataCallResult& /* dcResponse */) { rspInfo = info; parent_v1_5.notify(info.serial); return Void();