summaryrefslogtreecommitdiff
path: root/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2017-02-21 16:59:27 -0800
committerRoshan Pius <rpius@google.com>2017-02-21 17:21:47 -0800
commitb70d1e046a5eb7e87c6b96beec30bcb985ee9c3c (patch)
treef78ddc8e6927b7552a24a5f7ba7d599142ad0fbc /service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
parentc7a2afd69a70f497dbffbb4b61146bbe9d82baed (diff)
downloadwifi-b70d1e046a5eb7e87c6b96beec30bcb985ee9c3c.tar.gz
SupplicantStaHal: Store callback objects
Changes in the CL: 1. Store the callback object reference in SupplicantStaIfaceHal & SupplicantStaNetworkHal. 2. Add a log method for callbacks. 3. Move the body of the callback inside the lock. Bug: 33383725 Test: Unit tests Change-Id: Ie5cfc1a3c30e24a43082108caa17bf029f73c69c
Diffstat (limited to 'service/java/com/android/server/wifi/SupplicantStaIfaceHal.java')
-rw-r--r--service/java/com/android/server/wifi/SupplicantStaIfaceHal.java161
1 files changed, 107 insertions, 54 deletions
diff --git a/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java b/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
index 76dc04637..2835c901c 100644
--- a/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
+++ b/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
@@ -85,6 +85,7 @@ public class SupplicantStaIfaceHal {
// Supplicant HAL interface objects
private ISupplicant mISupplicant;
private ISupplicantStaIface mISupplicantStaIface;
+ private ISupplicantStaIfaceCallback mISupplicantStaIfaceCallback;
private String mIfaceName;
// Currently configured network in wpa_supplicant
private SupplicantStaNetworkHal mCurrentNetwork;
@@ -97,6 +98,7 @@ public class SupplicantStaIfaceHal {
public SupplicantStaIfaceHal(Context context, WifiMonitor monitor) {
mContext = context;
mWifiMonitor = monitor;
+ mISupplicantStaIfaceCallback = new SupplicantStaIfaceHalCallback();
}
/**
@@ -239,7 +241,7 @@ public class SupplicantStaIfaceHal {
}
mISupplicantStaIface = getStaIfaceMockable(supplicantIface.value);
mIfaceName = ifaceName.value;
- if (!registerCallback(new SupplicantStaIfaceHalCallback())) {
+ if (!registerCallback(mISupplicantStaIfaceCallback)) {
return false;
}
return true;
@@ -1461,12 +1463,22 @@ public class SupplicantStaIfaceHal {
return false;
} else {
if (mVerboseLoggingEnabled) {
- Log.i(TAG, "ISupplicantStaIface." + methodStr + " succeeded");
+ Log.d(TAG, "ISupplicantStaIface." + methodStr + " succeeded");
}
return true;
}
}
+ /**
+ * Helper function to log callbacks.
+ */
+ private void logCallback(final String methodStr) {
+ if (mVerboseLoggingEnabled) {
+ Log.d(TAG, "ISupplicantStaIfaceCallback." + methodStr + " received");
+ }
+ }
+
+
private void handleRemoteException(RemoteException e, String methodStr) {
supplicantServiceDiedHandler();
Log.e(TAG, "ISupplicantStaIface." + methodStr + " failed with exception", e);
@@ -1638,26 +1650,31 @@ public class SupplicantStaIfaceHal {
@Override
public void onNetworkAdded(int id) {
+ logCallback("onNetworkAdded");
}
@Override
public void onNetworkRemoved(int id) {
+ logCallback("onNetworkRemoved");
}
@Override
public void onStateChanged(int newState, byte[/* 6 */] bssid, int id,
ArrayList<Byte> ssid) {
- SupplicantState newSupplicantState = supplicantHidlStateToFrameworkState(newState);
- WifiSsid wifiSsid =
- WifiSsid.createFromByteArray(NativeUtil.byteArrayFromArrayList(ssid));
- String bssidStr = NativeUtil.macAddressFromByteArray(bssid);
- mWifiMonitor.broadcastSupplicantStateChangeEvent(
- mIfaceName, mFrameworkNetworkId, wifiSsid, bssidStr, newSupplicantState);
- if (newSupplicantState == SupplicantState.ASSOCIATED) {
- mWifiMonitor.broadcastAssociationSuccesfulEvent(mIfaceName, bssidStr);
- } else if (newSupplicantState == SupplicantState.COMPLETED) {
- mWifiMonitor.broadcastNetworkConnectionEvent(
- mIfaceName, mFrameworkNetworkId, bssidStr);
+ logCallback("onStateChanged");
+ synchronized (mLock) {
+ SupplicantState newSupplicantState = supplicantHidlStateToFrameworkState(newState);
+ WifiSsid wifiSsid =
+ WifiSsid.createFromByteArray(NativeUtil.byteArrayFromArrayList(ssid));
+ String bssidStr = NativeUtil.macAddressFromByteArray(bssid);
+ mWifiMonitor.broadcastSupplicantStateChangeEvent(
+ mIfaceName, mFrameworkNetworkId, wifiSsid, bssidStr, newSupplicantState);
+ if (newSupplicantState == SupplicantState.ASSOCIATED) {
+ mWifiMonitor.broadcastAssociationSuccesfulEvent(mIfaceName, bssidStr);
+ } else if (newSupplicantState == SupplicantState.COMPLETED) {
+ mWifiMonitor.broadcastNetworkConnectionEvent(
+ mIfaceName, mFrameworkNetworkId, bssidStr);
+ }
}
}
@@ -1665,98 +1682,134 @@ public class SupplicantStaIfaceHal {
public void onAnqpQueryDone(byte[/* 6 */] bssid,
ISupplicantStaIfaceCallback.AnqpData data,
ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data) {
- Map<Constants.ANQPElementType, ANQPElement> elementsMap = new HashMap<>();
- addAnqpElementToMap(elementsMap, ANQPVenueName, data.venueName);
- addAnqpElementToMap(elementsMap, ANQPRoamingConsortium, data.roamingConsortium);
- addAnqpElementToMap(elementsMap, ANQPIPAddrAvailability, data.ipAddrTypeAvailability);
- addAnqpElementToMap(elementsMap, ANQPNAIRealm, data.naiRealm);
- addAnqpElementToMap(elementsMap, ANQP3GPPNetwork, data.anqp3gppCellularNetwork);
- addAnqpElementToMap(elementsMap, ANQPDomName, data.domainName);
- addAnqpElementToMap(elementsMap, HSFriendlyName, hs20Data.operatorFriendlyName);
- addAnqpElementToMap(elementsMap, HSWANMetrics, hs20Data.wanMetrics);
- addAnqpElementToMap(elementsMap, HSConnCapability, hs20Data.connectionCapability);
- addAnqpElementToMap(elementsMap, HSOSUProviders, hs20Data.osuProvidersList);
- mWifiMonitor.broadcastAnqpDoneEvent(
- mIfaceName, new AnqpEvent(toLongBssid(bssid), elementsMap));
+ logCallback("onAnqpQueryDone");
+ synchronized (mLock) {
+ Map<Constants.ANQPElementType, ANQPElement> elementsMap = new HashMap<>();
+ addAnqpElementToMap(elementsMap, ANQPVenueName, data.venueName);
+ addAnqpElementToMap(elementsMap, ANQPRoamingConsortium, data.roamingConsortium);
+ addAnqpElementToMap(
+ elementsMap, ANQPIPAddrAvailability, data.ipAddrTypeAvailability);
+ addAnqpElementToMap(elementsMap, ANQPNAIRealm, data.naiRealm);
+ addAnqpElementToMap(elementsMap, ANQP3GPPNetwork, data.anqp3gppCellularNetwork);
+ addAnqpElementToMap(elementsMap, ANQPDomName, data.domainName);
+ addAnqpElementToMap(elementsMap, HSFriendlyName, hs20Data.operatorFriendlyName);
+ addAnqpElementToMap(elementsMap, HSWANMetrics, hs20Data.wanMetrics);
+ addAnqpElementToMap(elementsMap, HSConnCapability, hs20Data.connectionCapability);
+ addAnqpElementToMap(elementsMap, HSOSUProviders, hs20Data.osuProvidersList);
+ mWifiMonitor.broadcastAnqpDoneEvent(
+ mIfaceName, new AnqpEvent(toLongBssid(bssid), elementsMap));
+ }
}
@Override
public void onHs20IconQueryDone(byte[/* 6 */] bssid, String fileName,
ArrayList<Byte> data) {
- mWifiMonitor.broadcastIconDoneEvent(
- mIfaceName,
- new IconEvent(toLongBssid(bssid), fileName, data.size(),
- NativeUtil.byteArrayFromArrayList(data)));
+ logCallback("onHs20IconQueryDone");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastIconDoneEvent(
+ mIfaceName,
+ new IconEvent(toLongBssid(bssid), fileName, data.size(),
+ NativeUtil.byteArrayFromArrayList(data)));
+ }
}
@Override
public void onHs20SubscriptionRemediation(byte[/* 6 */] bssid, byte osuMethod, String url) {
- mWifiMonitor.broadcastWnmEvent(
- mIfaceName, new WnmData(toLongBssid(bssid), url, osuMethod));
+ logCallback("onHs20SubscriptionRemediation");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastWnmEvent(
+ mIfaceName, new WnmData(toLongBssid(bssid), url, osuMethod));
+ }
}
@Override
public void onHs20DeauthImminentNotice(byte[/* 6 */] bssid, int reasonCode,
int reAuthDelayInSec, String url) {
- mWifiMonitor.broadcastWnmEvent(
- mIfaceName,
- new WnmData(toLongBssid(bssid), url, reasonCode == WnmData.ESS,
- reAuthDelayInSec));
+ logCallback("onHs20DeauthImminentNotice");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastWnmEvent(
+ mIfaceName,
+ new WnmData(toLongBssid(bssid), url, reasonCode == WnmData.ESS,
+ reAuthDelayInSec));
+ }
}
@Override
public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated, int reasonCode) {
- mWifiMonitor.broadcastNetworkDisconnectionEvent(
- mIfaceName, locallyGenerated ? 1 : 0, reasonCode,
- NativeUtil.macAddressFromByteArray(bssid));
+ logCallback("onDisconnected");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastNetworkDisconnectionEvent(
+ mIfaceName, locallyGenerated ? 1 : 0, reasonCode,
+ NativeUtil.macAddressFromByteArray(bssid));
+ }
}
@Override
public void onAssociationRejected(byte[/* 6 */] bssid, int statusCode) {
- // TODO(b/35464954): Need to figure out when to trigger
- // |WifiMonitor.AUTHENTICATION_FAILURE_REASON_WRONG_PSWD|
- mWifiMonitor.broadcastAssociationRejectionEvent(mIfaceName, statusCode,
- NativeUtil.macAddressFromByteArray(bssid));
+ logCallback("onAssociationRejected");
+ synchronized (mLock) {
+ // TODO(b/35464954): Need to figure out when to trigger
+ // |WifiMonitor.AUTHENTICATION_FAILURE_REASON_WRONG_PSWD|
+ mWifiMonitor.broadcastAssociationRejectionEvent(mIfaceName, statusCode,
+ NativeUtil.macAddressFromByteArray(bssid));
+ }
}
@Override
public void onAuthenticationTimeout(byte[/* 6 */] bssid) {
- mWifiMonitor.broadcastAuthenticationFailureEvent(
- mIfaceName, WifiMonitor.AUTHENTICATION_FAILURE_REASON_TIMEOUT);
+ logCallback("onAuthenticationTimeout");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastAuthenticationFailureEvent(
+ mIfaceName, WifiMonitor.AUTHENTICATION_FAILURE_REASON_TIMEOUT);
+ }
}
@Override
public void onEapFailure() {
- mWifiMonitor.broadcastAuthenticationFailureEvent(
- mIfaceName, WifiMonitor.AUTHENTICATION_FAILURE_REASON_EAP_FAILURE);
+ logCallback("onEapFailure");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastAuthenticationFailureEvent(
+ mIfaceName, WifiMonitor.AUTHENTICATION_FAILURE_REASON_EAP_FAILURE);
+ }
}
@Override
public void onWpsEventSuccess() {
- mWifiMonitor.broadcastWpsSuccessEvent(mIfaceName);
+ logCallback("onWpsEventSuccess");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastWpsSuccessEvent(mIfaceName);
+ }
}
@Override
public void onWpsEventFail(byte[/* 6 */] bssid, short configError, short errorInd) {
- if (configError == WpsConfigError.MSG_TIMEOUT
- && errorInd == WpsErrorIndication.NO_ERROR) {
- mWifiMonitor.broadcastWpsTimeoutEvent(mIfaceName);
- } else {
- mWifiMonitor.broadcastWpsFailEvent(mIfaceName, configError, errorInd);
+ logCallback("onWpsEventFail");
+ synchronized (mLock) {
+ if (configError == WpsConfigError.MSG_TIMEOUT
+ && errorInd == WpsErrorIndication.NO_ERROR) {
+ mWifiMonitor.broadcastWpsTimeoutEvent(mIfaceName);
+ } else {
+ mWifiMonitor.broadcastWpsFailEvent(mIfaceName, configError, errorInd);
+ }
}
}
@Override
public void onWpsEventPbcOverlap() {
- mWifiMonitor.broadcastWpsOverlapEvent(mIfaceName);
+ logCallback("onWpsEventPbcOverlap");
+ synchronized (mLock) {
+ mWifiMonitor.broadcastWpsOverlapEvent(mIfaceName);
+ }
}
@Override
public void onExtRadioWorkStart(int id) {
+ logCallback("onExtRadioWorkStart");
}
@Override
public void onExtRadioWorkTimeout(int id) {
+ logCallback("onExtRadioWorkTimeout");
}
}