blob: 6d6200977865d50ae06ef7252d00892737d31976 [file] [log] [blame]
/*
* Copyright (C) 2019 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 com.android.server.wifi;
import android.annotation.NonNull;
import android.hardware.wifi.supplicant.V1_4.ISupplicantStaIfaceCallback.AssociationRejectionData;
import android.net.wifi.WifiManager;
import com.android.server.wifi.hotspot2.WnmData;
import com.android.server.wifi.util.NativeUtil;
import java.util.ArrayList;
abstract class SupplicantStaIfaceCallbackV1_4Impl extends
android.hardware.wifi.supplicant.V1_4.ISupplicantStaIfaceCallback.Stub {
private static final String TAG = SupplicantStaIfaceCallbackV1_4Impl.class.getSimpleName();
private final SupplicantStaIfaceHal mStaIfaceHal;
private final String mIfaceName;
private final WifiMonitor mWifiMonitor;
private final Object mLock;
private final SupplicantStaIfaceHal.SupplicantStaIfaceHalCallbackV1_3 mCallbackV13;
private final SupplicantStaIfaceHal.SupplicantStaIfaceHalCallback mCallbackV10;
SupplicantStaIfaceCallbackV1_4Impl(@NonNull SupplicantStaIfaceHal staIfaceHal,
@NonNull String ifaceName, @NonNull Object lock,
@NonNull WifiMonitor wifiMonitor) {
mStaIfaceHal = staIfaceHal;
mIfaceName = ifaceName;
mLock = lock;
mWifiMonitor = wifiMonitor;
// Create an older callback for function delegation,
// and it would cascadingly create older one.
mCallbackV13 = mStaIfaceHal.new SupplicantStaIfaceHalCallbackV1_3(mIfaceName);
mCallbackV10 = mStaIfaceHal.new SupplicantStaIfaceHalCallback(mIfaceName);
}
@Override
public void onNetworkAdded(int id) {
mCallbackV13.onNetworkAdded(id);
}
@Override
public void onNetworkRemoved(int id) {
mCallbackV13.onNetworkRemoved(id);
}
@Override
public void onStateChanged(int newState, byte[/* 6 */] bssid, int id,
ArrayList<Byte> ssid) {
mCallbackV13.onStateChanged(newState, bssid, id, ssid);
}
@Override
public void onAnqpQueryDone_1_4(byte[/* 6 */] bssid,
AnqpData data,
Hs20AnqpData hs20Data) {
synchronized (mLock) {
mStaIfaceHal.logCallback("onAnqpQueryDone_1_4");
mCallbackV10.onAnqpQueryDone(bssid, data.V1_0 /* v1.0 elemnt */, hs20Data,
data /* v1.4 element */);
}
}
@Override
public void onAnqpQueryDone(byte[/* 6 */] bssid,
android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback.AnqpData data,
Hs20AnqpData hs20Data) {
mCallbackV13.onAnqpQueryDone(bssid, data, hs20Data);
}
@Override
public void onHs20IconQueryDone(byte[/* 6 */] bssid, String fileName,
ArrayList<Byte> data) {
mCallbackV13.onHs20IconQueryDone(bssid, fileName, data);
}
@Override
public void onHs20SubscriptionRemediation(byte[/* 6 */] bssid,
byte osuMethod, String url) {
mCallbackV13.onHs20SubscriptionRemediation(bssid, osuMethod, url);
}
@Override
public void onHs20DeauthImminentNotice(byte[/* 6 */] bssid, int reasonCode,
int reAuthDelayInSec, String url) {
mCallbackV13.onHs20DeauthImminentNotice(bssid, reasonCode, reAuthDelayInSec, url);
}
@Override
public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated,
int reasonCode) {
mCallbackV13.onDisconnected(bssid, locallyGenerated, reasonCode);
}
@Override
public void onAssociationRejected_1_4(AssociationRejectionData assocRejectData) {
synchronized (mLock) {
mStaIfaceHal.logCallback("onAssociationRejected_1_4");
mCallbackV10.onAssociationRejected(assocRejectData);
}
}
@Override
public void onAssociationRejected(byte[/* 6 */] bssid, int statusCode,
boolean timedOut) {
mCallbackV13.onAssociationRejected(bssid, statusCode, timedOut);
}
@Override
public void onAuthenticationTimeout(byte[/* 6 */] bssid) {
mCallbackV13.onAuthenticationTimeout(bssid);
}
@Override
public void onBssidChanged(byte reason, byte[/* 6 */] bssid) {
mCallbackV13.onBssidChanged(reason, bssid);
}
@Override
public void onEapFailure() {
mCallbackV13.onEapFailure();
}
@Override
public void onEapFailure_1_1(int code) {
mCallbackV13.onEapFailure_1_1(code);
}
@Override
public void onEapFailure_1_3(int code) {
mWifiMonitor.broadcastAuthenticationFailureEvent(
mIfaceName, WifiManager.ERROR_AUTH_FAILURE_EAP_FAILURE, code);
}
@Override
public void onWpsEventSuccess() {
mCallbackV13.onWpsEventSuccess();
}
@Override
public void onWpsEventFail(byte[/* 6 */] bssid, short configError, short errorInd) {
mCallbackV13.onWpsEventFail(bssid, configError, errorInd);
}
@Override
public void onWpsEventPbcOverlap() {
mCallbackV13.onWpsEventPbcOverlap();
}
@Override
public void onExtRadioWorkStart(int id) {
mCallbackV13.onExtRadioWorkStart(id);
}
@Override
public void onExtRadioWorkTimeout(int id) {
mCallbackV13.onExtRadioWorkTimeout(id);
}
@Override
public void onDppSuccessConfigReceived(ArrayList<Byte> ssid, String password,
byte[] psk, int securityAkm) {
mCallbackV13.onDppSuccessConfigReceived(
ssid, password, psk, securityAkm);
}
@Override
public void onDppSuccessConfigSent() {
mCallbackV13.onDppSuccessConfigSent();
}
@Override
public void onDppProgress(int code) {
mCallbackV13.onDppProgress(code);
}
@Override
public void onDppFailure(int code) {
mCallbackV13.onDppFailure(code);
}
@Override
public void onPmkCacheAdded(long expirationTimeInSec, ArrayList<Byte> serializedEntry) {
mCallbackV13.onPmkCacheAdded(expirationTimeInSec, serializedEntry);
}
@Override
public void onDppProgress_1_3(int code) {
mCallbackV13.onDppProgress_1_3(code);
}
@Override
public void onDppFailure_1_3(int code, String ssid, String channelList,
ArrayList<Short> bandList) {
mCallbackV13.onDppFailure_1_3(code, ssid, channelList, bandList);
}
@Override
public void onDppSuccess(int code) {
mCallbackV13.onDppSuccess(code);
}
@Override
public void onBssTmHandlingDone(BssTmData tmData) {
mCallbackV13.onBssTmHandlingDone(tmData);
}
@Override
public void onStateChanged_1_3(int newState, byte[/* 6 */] bssid, int id,
ArrayList<Byte> ssid, boolean filsHlpSent) {
mCallbackV13.onStateChanged_1_3(newState, bssid, id, ssid, filsHlpSent);
}
@Override
public void onHs20TermsAndConditionsAcceptanceRequestedNotification(byte[/* 6 */] bssid,
String url) {
synchronized (mLock) {
mStaIfaceHal.logCallback("onHs20TermsAndConditionsAcceptanceRequestedNotification");
mWifiMonitor.broadcastWnmEvent(mIfaceName,
WnmData.createTermsAndConditionsAccetanceRequiredEvent(
NativeUtil.macAddressToLong(bssid), url));
}
}
@Override
public void onNetworkNotFound(ArrayList<Byte> ssid) {
mStaIfaceHal.logCallback("onNetworkNotFoundNotification");
mWifiMonitor.broadcastNetworkNotFoundEvent(mIfaceName, NativeUtil.encodeSsid(ssid));
}
}