From 3d33d7495ffbf12966299df8359d71a6f0926e7a Mon Sep 17 00:00:00 2001 From: Etan Cohen Date: Wed, 27 Sep 2017 13:57:02 -0700 Subject: [PATCH] [Aware] Add support utility for PeerHandle to MAC translation Add a support API to be used between system services only: added in support of RTT service which is provided with a PeerHandle but needs the corresponding MAC address. Bug: 65015034 Test: unit tests on service, integration tests with RTT Change-Id: I6848acda9bfef306b8feaae6987ff18f7bc2e6ec --- Android.mk | 5 ++-- .../aware/IWifiAwareMacAddressProvider.aidl | 27 +++++++++++++++++++ .../net/wifi/aware/IWifiAwareManager.aidl | 4 +++ .../android/net/wifi/aware/PeerHandle.java | 20 ++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl diff --git a/Android.mk b/Android.mk index 98e4299f40be2..3b6969e33b607 100644 --- a/Android.mk +++ b/Android.mk @@ -548,9 +548,10 @@ LOCAL_SRC_FILES += \ telephony/java/com/android/internal/telephony/IWapPushManager.aidl \ telephony/java/com/android/internal/telephony/euicc/IEuiccController.aidl \ wifi/java/android/net/wifi/IWifiManager.aidl \ - wifi/java/android/net/wifi/aware/IWifiAwareEventCallback.aidl \ - wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl \ wifi/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl \ + wifi/java/android/net/wifi/aware/IWifiAwareEventCallback.aidl \ + wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl \ + wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl \ wifi/java/android/net/wifi/p2p/IWifiP2pManager.aidl \ wifi/java/android/net/wifi/rtt/IRttCallback.aidl \ wifi/java/android/net/wifi/rtt/IWifiRttManager.aidl \ diff --git a/wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl b/wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl new file mode 100644 index 0000000000000..0e7289cd9c46f --- /dev/null +++ b/wifi/java/android/net/wifi/aware/IWifiAwareMacAddressProvider.aidl @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2017 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 android.net.wifi.aware; + +/** + * Callback for IWifiAwareManager.getMacAddressFromPeerHandle + * + * @hide + */ +oneway interface IWifiAwareMacAddressProvider +{ + void macAddress(in Map peerIdToMacMap); +} diff --git a/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl b/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl index f33424b613d86..bad5ce226efc0 100644 --- a/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl +++ b/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl @@ -21,6 +21,7 @@ import android.app.PendingIntent; import android.net.wifi.aware.ConfigRequest; import android.net.wifi.aware.IWifiAwareDiscoverySessionCallback; import android.net.wifi.aware.IWifiAwareEventCallback; +import android.net.wifi.aware.IWifiAwareMacAddressProvider; import android.net.wifi.aware.PublishConfig; import android.net.wifi.aware.SubscribeConfig; import android.net.wifi.aware.Characteristics; @@ -52,4 +53,7 @@ interface IWifiAwareManager void sendMessage(int clientId, int discoverySessionId, int peerId, in byte[] message, int messageId, int retryCount); void terminateSession(int clientId, int discoverySessionId); + + // internal APIs: intended to be used between System Services (restricted permissions) + void requestMacAddresses(int uid, in List peerIds, in IWifiAwareMacAddressProvider callback); } diff --git a/wifi/java/android/net/wifi/aware/PeerHandle.java b/wifi/java/android/net/wifi/aware/PeerHandle.java index cd45c524934a8..1b0aba15f9626 100644 --- a/wifi/java/android/net/wifi/aware/PeerHandle.java +++ b/wifi/java/android/net/wifi/aware/PeerHandle.java @@ -32,4 +32,24 @@ public class PeerHandle { /** @hide */ public int peerId; + + /** @hide RTT_API */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (!(o instanceof PeerHandle)) { + return false; + } + + return peerId == ((PeerHandle) o).peerId; + } + + /** @hide RTT_API */ + @Override + public int hashCode() { + return peerId; + } }