1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.server.wifi; 17 18 import android.annotation.NonNull; 19 import android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback; 20 import android.net.wifi.WifiManager; 21 22 import java.util.ArrayList; 23 24 abstract class SupplicantStaIfaceCallbackV1_1Impl extends 25 android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback.Stub { 26 private static final String TAG = SupplicantStaIfaceCallbackV1_1Impl.class.getSimpleName(); 27 private final SupplicantStaIfaceHal mStaIfaceHal; 28 private final String mIfaceName; 29 private final Object mLock; 30 private final WifiMonitor mWifiMonitor; 31 private final SupplicantStaIfaceHal.SupplicantStaIfaceHalCallback mCallbackV10; 32 SupplicantStaIfaceCallbackV1_1Impl(@onNull SupplicantStaIfaceHal staIfaceHal, @NonNull String ifaceName, @NonNull Object lock, @NonNull WifiMonitor wifiMonitor)33 SupplicantStaIfaceCallbackV1_1Impl(@NonNull SupplicantStaIfaceHal staIfaceHal, 34 @NonNull String ifaceName, 35 @NonNull Object lock, 36 @NonNull WifiMonitor wifiMonitor) { 37 mStaIfaceHal = staIfaceHal; 38 mIfaceName = ifaceName; 39 mLock = lock; 40 mWifiMonitor = wifiMonitor; 41 // Create an older callback for function delegation, 42 // and it would cascadingly create older one. 43 mCallbackV10 = mStaIfaceHal.new SupplicantStaIfaceHalCallback(mIfaceName); 44 } 45 46 @Override onNetworkAdded(int id)47 public void onNetworkAdded(int id) { 48 mCallbackV10.onNetworkAdded(id); 49 } 50 51 @Override onNetworkRemoved(int id)52 public void onNetworkRemoved(int id) { 53 mCallbackV10.onNetworkRemoved(id); 54 } 55 56 /** 57 * Added to plumb the new {@code filsHlpSent} param from the V1.3 callback version. 58 */ onStateChanged(int newState, byte[ ] bssid, int id, ArrayList<Byte> ssid, boolean filsHlpSent)59 public void onStateChanged(int newState, byte[/* 6 */] bssid, int id, ArrayList<Byte> ssid, 60 boolean filsHlpSent) { 61 mCallbackV10.onStateChanged(newState, bssid, id, ssid, filsHlpSent); 62 } 63 64 @Override onStateChanged(int newState, byte[ ] bssid, int id, ArrayList<Byte> ssid)65 public void onStateChanged(int newState, byte[/* 6 */] bssid, int id, 66 ArrayList<Byte> ssid) { 67 onStateChanged(newState, bssid, id, ssid, false); 68 } 69 70 @Override onAnqpQueryDone(byte[ ] bssid, ISupplicantStaIfaceCallback.AnqpData data, ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data)71 public void onAnqpQueryDone(byte[/* 6 */] bssid, 72 ISupplicantStaIfaceCallback.AnqpData data, 73 ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data) { 74 mCallbackV10.onAnqpQueryDone(bssid, data, hs20Data); 75 } 76 77 @Override onHs20IconQueryDone(byte[ ] bssid, String fileName, ArrayList<Byte> data)78 public void onHs20IconQueryDone(byte[/* 6 */] bssid, String fileName, 79 ArrayList<Byte> data) { 80 mCallbackV10.onHs20IconQueryDone(bssid, fileName, data); 81 } 82 83 @Override onHs20SubscriptionRemediation(byte[ ] bssid, byte osuMethod, String url)84 public void onHs20SubscriptionRemediation(byte[/* 6 */] bssid, 85 byte osuMethod, String url) { 86 mCallbackV10.onHs20SubscriptionRemediation(bssid, osuMethod, url); 87 } 88 89 @Override onHs20DeauthImminentNotice(byte[ ] bssid, int reasonCode, int reAuthDelayInSec, String url)90 public void onHs20DeauthImminentNotice(byte[/* 6 */] bssid, int reasonCode, 91 int reAuthDelayInSec, String url) { 92 mCallbackV10.onHs20DeauthImminentNotice(bssid, reasonCode, reAuthDelayInSec, url); 93 } 94 95 @Override onDisconnected(byte[ ] bssid, boolean locallyGenerated, int reasonCode)96 public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated, 97 int reasonCode) { 98 mCallbackV10.onDisconnected(bssid, locallyGenerated, reasonCode); 99 } 100 101 @Override onAssociationRejected(byte[ ] bssid, int statusCode, boolean timedOut)102 public void onAssociationRejected(byte[/* 6 */] bssid, int statusCode, 103 boolean timedOut) { 104 mCallbackV10.onAssociationRejected(bssid, statusCode, timedOut); 105 } 106 107 @Override onAuthenticationTimeout(byte[ ] bssid)108 public void onAuthenticationTimeout(byte[/* 6 */] bssid) { 109 mCallbackV10.onAuthenticationTimeout(bssid); 110 } 111 112 @Override onBssidChanged(byte reason, byte[ ] bssid)113 public void onBssidChanged(byte reason, byte[/* 6 */] bssid) { 114 mCallbackV10.onBssidChanged(reason, bssid); 115 } 116 117 @Override onEapFailure()118 public void onEapFailure() { 119 mCallbackV10.onEapFailure(); 120 } 121 122 @Override onEapFailure_1_1(int code)123 public void onEapFailure_1_1(int code) { 124 mCallbackV10.onEapFailure(code); 125 } 126 127 @Override onWpsEventSuccess()128 public void onWpsEventSuccess() { 129 mCallbackV10.onWpsEventSuccess(); 130 } 131 132 @Override onWpsEventFail(byte[ ] bssid, short configError, short errorInd)133 public void onWpsEventFail(byte[/* 6 */] bssid, short configError, short errorInd) { 134 mCallbackV10.onWpsEventFail(bssid, configError, errorInd); 135 } 136 137 @Override onWpsEventPbcOverlap()138 public void onWpsEventPbcOverlap() { 139 mCallbackV10.onWpsEventPbcOverlap(); 140 } 141 142 @Override onExtRadioWorkStart(int id)143 public void onExtRadioWorkStart(int id) { 144 mCallbackV10.onExtRadioWorkStart(id); 145 } 146 147 @Override onExtRadioWorkTimeout(int id)148 public void onExtRadioWorkTimeout(int id) { 149 mCallbackV10.onExtRadioWorkTimeout(id); 150 } 151 } 152