120d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen/* 220d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * Copyright (C) 2016 The Android Open Source Project 320d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * 420d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * Licensed under the Apache License, Version 2.0 (the "License"); 520d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * you may not use this file except in compliance with the License. 620d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * You may obtain a copy of the License at 720d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * 820d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * http://www.apache.org/licenses/LICENSE-2.0 920d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * 1020d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * Unless required by applicable law or agreed to in writing, software 1120d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * distributed under the License is distributed on an "AS IS" BASIS, 1220d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1320d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * See the License for the specific language governing permissions and 1420d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * limitations under the License. 1520d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen */ 1620d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen 170849ded00879dc05175c079011aa038c5ba0770aEtan Cohenpackage android.net.wifi.aware; 1820d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen 195e680daad8096611c9bd2e4fc788d099089b09ccEtan Cohenimport android.annotation.NonNull; 2051181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohenimport android.util.Log; 2151181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen 2220d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen/** 230849ded00879dc05175c079011aa038c5ba0770aEtan Cohen * A class representing a Aware subscribe session. Created when 246831f93725f9efd9c13a278acac62a5d7dcf4a4dEtan Cohen * {@link WifiAwareSession#subscribe(SubscribeConfig, 253de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * DiscoverySessionCallback, android.os.Handler)} 265542ccc59c8634af618348201f26f1b601661857Etan Cohen * is called and a discovery session is created and returned in 273de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * {@link DiscoverySessionCallback#onSubscribeStarted(SubscribeDiscoverySession)}. 283de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * See baseline functionality of all discovery sessions in {@link DiscoverySession}. 293855370c24b575e0943a9a3c146fda980cd71e24Etan Cohen * This object allows updating an existing/running subscribe discovery session using 303855370c24b575e0943a9a3c146fda980cd71e24Etan Cohen * {@link #updateSubscribe(SubscribeConfig)}. 3120d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen */ 323de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohenpublic class SubscribeDiscoverySession extends DiscoverySession { 33b84ad8062dc7e7e0cbc87e6a6769741b66dd4568Etan Cohen private static final String TAG = "SubscribeDiscSession"; 3451181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen 3520d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen /** 3620d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * {@hide} 3720d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen */ 383de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen public SubscribeDiscoverySession(WifiAwareManager manager, int clientId, 390849ded00879dc05175c079011aa038c5ba0770aEtan Cohen int sessionId) { 40bd4bf35d22a04b0c5a39bdf6543cec0af9df2306Etan Cohen super(manager, clientId, sessionId); 4120d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen } 4220d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen 4320d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen /** 44b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * Re-configure the currently active subscribe session. The 453de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * {@link DiscoverySessionCallback} is not replaced - the same listener used 46b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * at creation is still used. The results of the configuration are returned using 473de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * {@link DiscoverySessionCallback}: 48b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * <ul> 493de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * <li>{@link DiscoverySessionCallback#onSessionConfigUpdated()}: configuration 503855370c24b575e0943a9a3c146fda980cd71e24Etan Cohen * update succeeded. 513de35a5e5573828838bfa6359a1ac1bf22b19303Etan Cohen * <li>{@link DiscoverySessionCallback#onSessionConfigFailed()}: configuration 523855370c24b575e0943a9a3c146fda980cd71e24Etan Cohen * update failed. The subscribe discovery session is still running using its previous 53b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * configuration (i.e. update failure does not terminate the session). 54b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * </ul> 5520d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen * 56b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * @param subscribeConfig The new discovery subscribe session configuration 57b0214c4cd56e26a26c2bec61c287fc008ed3e551Etan Cohen * ({@link SubscribeConfig}). 5820d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen */ 595e680daad8096611c9bd2e4fc788d099089b09ccEtan Cohen public void updateSubscribe(@NonNull SubscribeConfig subscribeConfig) { 60231859c2aa3930892a81b2d3cc368a79fbcfaed0Etan Cohen if (mTerminated) { 6151181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen Log.w(TAG, "updateSubscribe: called on terminated session"); 62231859c2aa3930892a81b2d3cc368a79fbcfaed0Etan Cohen return; 63231859c2aa3930892a81b2d3cc368a79fbcfaed0Etan Cohen } else { 640849ded00879dc05175c079011aa038c5ba0770aEtan Cohen WifiAwareManager mgr = mMgr.get(); 6551181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen if (mgr == null) { 660849ded00879dc05175c079011aa038c5ba0770aEtan Cohen Log.w(TAG, "updateSubscribe: called post GC on WifiAwareManager"); 6751181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen return; 6851181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen } 6951181fb85d490b16fa3b8cff5ee3c906d148533bEtan Cohen 70bd4bf35d22a04b0c5a39bdf6543cec0af9df2306Etan Cohen mgr.updateSubscribe(mClientId, mSessionId, subscribeConfig); 71231859c2aa3930892a81b2d3cc368a79fbcfaed0Etan Cohen } 7220d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen } 7320d329b08df7d1a94e6caee781f09e812a79c913Etan Cohen} 74