summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmed ElArabawy <arabawy@google.com>2019-12-10 05:45:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-12-10 05:45:31 +0000
commit76eb68da2494199b9aff9497baab273d7a914370 (patch)
treebd9f85eace208ca6f2ecec1faeefe7d90b92f08f
parentfcd87af28d921bba79f2a0c4e818945682fb772c (diff)
parent95e8a235fe359714c27803aec1ea2d37757796d1 (diff)
Merge "6GHz: Changes for NAN"
-rw-r--r--service/java/com/android/server/wifi/aware/WifiAwareNativeApi.java390
-rw-r--r--service/java/com/android/server/wifi/aware/WifiAwareStateManager.java7
-rw-r--r--tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java3
3 files changed, 267 insertions, 133 deletions
diff --git a/service/java/com/android/server/wifi/aware/WifiAwareNativeApi.java b/service/java/com/android/server/wifi/aware/WifiAwareNativeApi.java
index 776b52570..cc768aa8a 100644
--- a/service/java/com/android/server/wifi/aware/WifiAwareNativeApi.java
+++ b/service/java/com/android/server/wifi/aware/WifiAwareNativeApi.java
@@ -100,6 +100,15 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
return android.hardware.wifi.V1_2.IWifiNanIface.castFrom(iface);
}
+ /**
+ * (HIDL) Cast the input to a 1.4 NAN interface (possibly resulting in a null).
+ *
+ * Separate function so can be mocked in unit tests.
+ */
+ public android.hardware.wifi.V1_4.IWifiNanIface mockableCastTo_1_4(IWifiNanIface iface) {
+ return android.hardware.wifi.V1_4.IWifiNanIface.castFrom(iface);
+ }
+
/*
* Parameters settable through the shell command.
* see wifi/1.0/types.hal NanBandSpecificConfig.discoveryWindowIntervalVal and
@@ -119,6 +128,12 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
private static final int PARAM_DW_5GHZ_INACTIVE = 0; // 0 = disabled
private static final int PARAM_DW_5GHZ_IDLE = 0; // == inactive
+ // TODO:
+ /* package */ static final String PARAM_DW_6GHZ = "dw_6ghz";
+ private static final int PARAM_DW_6GHZ_DEFAULT = 1; // 1 -> DW=1, latency=512ms
+ private static final int PARAM_DW_6GHZ_INACTIVE = 0; // 0 = disabled
+ private static final int PARAM_DW_6GHZ_IDLE = 0; // == inactive
+
/* package */ static final String PARAM_DISCOVERY_BEACON_INTERVAL_MS =
"disc_beacon_interval_ms";
private static final int PARAM_DISCOVERY_BEACON_INTERVAL_MS_DEFAULT = 0; // Firmware defaults
@@ -242,6 +257,7 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
Map<String, Integer> defaultMap = new HashMap<>();
defaultMap.put(PARAM_DW_24GHZ, PARAM_DW_24GHZ_DEFAULT);
defaultMap.put(PARAM_DW_5GHZ, PARAM_DW_5GHZ_DEFAULT);
+ defaultMap.put(PARAM_DW_6GHZ, PARAM_DW_6GHZ_DEFAULT);
defaultMap.put(PARAM_DISCOVERY_BEACON_INTERVAL_MS,
PARAM_DISCOVERY_BEACON_INTERVAL_MS_DEFAULT);
defaultMap.put(PARAM_NUM_SS_IN_DISCOVERY, PARAM_NUM_SS_IN_DISCOVERY_DEFAULT);
@@ -250,6 +266,7 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
Map<String, Integer> inactiveMap = new HashMap<>();
inactiveMap.put(PARAM_DW_24GHZ, PARAM_DW_24GHZ_INACTIVE);
inactiveMap.put(PARAM_DW_5GHZ, PARAM_DW_5GHZ_INACTIVE);
+ inactiveMap.put(PARAM_DW_6GHZ, PARAM_DW_6GHZ_INACTIVE);
inactiveMap.put(PARAM_DISCOVERY_BEACON_INTERVAL_MS,
PARAM_DISCOVERY_BEACON_INTERVAL_MS_INACTIVE);
inactiveMap.put(PARAM_NUM_SS_IN_DISCOVERY, PARAM_NUM_SS_IN_DISCOVERY_INACTIVE);
@@ -258,6 +275,7 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
Map<String, Integer> idleMap = new HashMap<>();
idleMap.put(PARAM_DW_24GHZ, PARAM_DW_24GHZ_IDLE);
idleMap.put(PARAM_DW_5GHZ, PARAM_DW_5GHZ_IDLE);
+ idleMap.put(PARAM_DW_6GHZ, PARAM_DW_6GHZ_IDLE);
idleMap.put(PARAM_DISCOVERY_BEACON_INTERVAL_MS,
PARAM_DISCOVERY_BEACON_INTERVAL_MS_IDLE);
idleMap.put(PARAM_NUM_SS_IN_DISCOVERY, PARAM_NUM_SS_IN_DISCOVERY_IDLE);
@@ -347,152 +365,229 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
return false;
}
android.hardware.wifi.V1_2.IWifiNanIface iface12 = mockableCastTo_1_2(iface);
+ android.hardware.wifi.V1_4.IWifiNanIface iface14 = mockableCastTo_1_4(iface);
NanConfigRequestSupplemental configSupplemental12 = new NanConfigRequestSupplemental();
- if (iface12 != null) {
- if (VDBG) Log.v(TAG, "HAL 1.2 detected");
+ if (iface12 != null || iface14 != null) {
configSupplemental12.discoveryBeaconIntervalMs = 0;
configSupplemental12.numberOfSpatialStreamsInDiscovery = 0;
configSupplemental12.enableDiscoveryWindowEarlyTermination = false;
configSupplemental12.enableRanging = true;
}
+ NanBandSpecificConfig config24 = new NanBandSpecificConfig();
+ config24.rssiClose = 60;
+ config24.rssiMiddle = 70;
+ config24.rssiCloseProximity = 60;
+ config24.dwellTimeMs = (byte) 200;
+ config24.scanPeriodSec = 20;
+ if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_24GHZ]
+ == ConfigRequest.DW_INTERVAL_NOT_INIT) {
+ config24.validDiscoveryWindowIntervalVal = false;
+ } else {
+ config24.validDiscoveryWindowIntervalVal = true;
+ config24.discoveryWindowIntervalVal =
+ (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
+ .NAN_BAND_24GHZ];
+ }
+
+ NanBandSpecificConfig config5 = new NanBandSpecificConfig();
+ config5.rssiClose = 60;
+ config5.rssiMiddle = 75;
+ config5.rssiCloseProximity = 60;
+ config5.dwellTimeMs = (byte) 200;
+ config5.scanPeriodSec = 20;
+ if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_5GHZ]
+ == ConfigRequest.DW_INTERVAL_NOT_INIT) {
+ config5.validDiscoveryWindowIntervalVal = false;
+ } else {
+ config5.validDiscoveryWindowIntervalVal = true;
+ config5.discoveryWindowIntervalVal =
+ (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
+ .NAN_BAND_5GHZ];
+ }
+
+ // TODO: b/145609058
+ // Need to review values for this config, currently it is a copy from config5
+ NanBandSpecificConfig config6 = new NanBandSpecificConfig();
+ config6.rssiClose = 60;
+ config6.rssiMiddle = 75;
+ config6.rssiCloseProximity = 60;
+ config6.dwellTimeMs = (byte) 200;
+ config6.scanPeriodSec = 20;
+ if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_6GHZ]
+ == ConfigRequest.DW_INTERVAL_NOT_INIT) {
+ config6.validDiscoveryWindowIntervalVal = false;
+ } else {
+ config6.validDiscoveryWindowIntervalVal = true;
+ config6.discoveryWindowIntervalVal =
+ (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
+ .NAN_BAND_6GHZ];
+ }
+
try {
WifiStatus status;
if (initialConfiguration) {
- // translate framework to HIDL configuration
- NanEnableRequest req = new NanEnableRequest();
-
- req.operateInBand[NanBandIndex.NAN_BAND_24GHZ] = true;
- req.operateInBand[NanBandIndex.NAN_BAND_5GHZ] = configRequest.mSupport5gBand;
- req.hopCountMax = 2;
- req.configParams.masterPref = (byte) configRequest.mMasterPreference;
- req.configParams.disableDiscoveryAddressChangeIndication = !notifyIdentityChange;
- req.configParams.disableStartedClusterIndication = !notifyIdentityChange;
- req.configParams.disableJoinedClusterIndication = !notifyIdentityChange;
- req.configParams.includePublishServiceIdsInBeacon = true;
- req.configParams.numberOfPublishServiceIdsInBeacon = 0;
- req.configParams.includeSubscribeServiceIdsInBeacon = true;
- req.configParams.numberOfSubscribeServiceIdsInBeacon = 0;
- req.configParams.rssiWindowSize = 8;
- req.configParams.macAddressRandomizationIntervalSec = mSettableParameters.get(
- PARAM_MAC_RANDOM_INTERVAL_SEC);
-
- NanBandSpecificConfig config24 = new NanBandSpecificConfig();
- config24.rssiClose = 60;
- config24.rssiMiddle = 70;
- config24.rssiCloseProximity = 60;
- config24.dwellTimeMs = (byte) 200;
- config24.scanPeriodSec = 20;
- if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_24GHZ]
- == ConfigRequest.DW_INTERVAL_NOT_INIT) {
- config24.validDiscoveryWindowIntervalVal = false;
- } else {
- config24.validDiscoveryWindowIntervalVal = true;
- config24.discoveryWindowIntervalVal =
- (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
- .NAN_BAND_24GHZ];
- }
- req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
-
- NanBandSpecificConfig config5 = new NanBandSpecificConfig();
- config5.rssiClose = 60;
- config5.rssiMiddle = 75;
- config5.rssiCloseProximity = 60;
- config5.dwellTimeMs = (byte) 200;
- config5.scanPeriodSec = 20;
- if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_5GHZ]
- == ConfigRequest.DW_INTERVAL_NOT_INIT) {
- config5.validDiscoveryWindowIntervalVal = false;
- } else {
- config5.validDiscoveryWindowIntervalVal = true;
- config5.discoveryWindowIntervalVal =
- (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
- .NAN_BAND_5GHZ];
- }
- req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
-
- req.debugConfigs.validClusterIdVals = true;
- req.debugConfigs.clusterIdTopRangeVal = (short) configRequest.mClusterHigh;
- req.debugConfigs.clusterIdBottomRangeVal = (short) configRequest.mClusterLow;
- req.debugConfigs.validIntfAddrVal = false;
- req.debugConfigs.validOuiVal = false;
- req.debugConfigs.ouiVal = 0;
- req.debugConfigs.validRandomFactorForceVal = false;
- req.debugConfigs.randomFactorForceVal = 0;
- req.debugConfigs.validHopCountForceVal = false;
- req.debugConfigs.hopCountForceVal = 0;
- req.debugConfigs.validDiscoveryChannelVal = false;
- req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_24GHZ] = 0;
- req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_5GHZ] = 0;
- req.debugConfigs.validUseBeaconsInBandVal = false;
- req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
- req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
- req.debugConfigs.validUseSdfInBandVal = false;
- req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
- req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
-
- updateConfigForPowerSettings(req.configParams, configSupplemental12, isInteractive,
- isIdle);
-
- if (iface12 != null) {
- status = iface12.enableRequest_1_2(transactionId, req, configSupplemental12);
+ if (iface14 != null) {
+ // translate framework to HIDL configuration (V_1.4)
+ android.hardware.wifi.V1_4.NanEnableRequest req =
+ new android.hardware.wifi.V1_4.NanEnableRequest();
+
+ req.operateInBand[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.operateInBand[NanBandIndex.NAN_BAND_5GHZ] = configRequest.mSupport5gBand;
+ req.operateInBand[android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] =
+ configRequest.mSupport6gBand;
+ req.hopCountMax = 2;
+ req.configParams.masterPref = (byte) configRequest.mMasterPreference;
+ req.configParams.disableDiscoveryAddressChangeIndication =
+ !notifyIdentityChange;
+ req.configParams.disableStartedClusterIndication = !notifyIdentityChange;
+ req.configParams.disableJoinedClusterIndication = !notifyIdentityChange;
+ req.configParams.includePublishServiceIdsInBeacon = true;
+ req.configParams.numberOfPublishServiceIdsInBeacon = 0;
+ req.configParams.includeSubscribeServiceIdsInBeacon = true;
+ req.configParams.numberOfSubscribeServiceIdsInBeacon = 0;
+ req.configParams.rssiWindowSize = 8;
+ req.configParams.macAddressRandomizationIntervalSec = mSettableParameters.get(
+ PARAM_MAC_RANDOM_INTERVAL_SEC);
+
+ req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
+ req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
+ req.configParams.bandSpecificConfig[
+ android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] = config6;
+
+ req.debugConfigs.validClusterIdVals = true;
+ req.debugConfigs.clusterIdTopRangeVal = (short) configRequest.mClusterHigh;
+ req.debugConfigs.clusterIdBottomRangeVal = (short) configRequest.mClusterLow;
+ req.debugConfigs.validIntfAddrVal = false;
+ req.debugConfigs.validOuiVal = false;
+ req.debugConfigs.ouiVal = 0;
+ req.debugConfigs.validRandomFactorForceVal = false;
+ req.debugConfigs.randomFactorForceVal = 0;
+ req.debugConfigs.validHopCountForceVal = false;
+ req.debugConfigs.hopCountForceVal = 0;
+ req.debugConfigs.validDiscoveryChannelVal = false;
+ req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_24GHZ] = 0;
+ req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_5GHZ] = 0;
+ req.debugConfigs.discoveryChannelMhzVal[
+ android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] = 0;
+ req.debugConfigs.validUseBeaconsInBandVal = false;
+ req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
+ req.debugConfigs.useBeaconsInBandVal[
+ android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] = true;
+ req.debugConfigs.validUseSdfInBandVal = false;
+ req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
+ req.debugConfigs.useSdfInBandVal[
+ android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] = true;
+
+ updateConfigForPowerSettings14(req.configParams, configSupplemental12,
+ isInteractive, isIdle);
+
+ status = iface14.enableRequest_1_4(transactionId, req, configSupplemental12);
} else {
- status = iface.enableRequest(transactionId, req);
+ // translate framework to HIDL configuration (before V_1.4)
+ NanEnableRequest req = new NanEnableRequest();
+
+ req.operateInBand[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.operateInBand[NanBandIndex.NAN_BAND_5GHZ] = configRequest.mSupport5gBand;
+ req.hopCountMax = 2;
+ req.configParams.masterPref = (byte) configRequest.mMasterPreference;
+ req.configParams.disableDiscoveryAddressChangeIndication =
+ !notifyIdentityChange;
+ req.configParams.disableStartedClusterIndication = !notifyIdentityChange;
+ req.configParams.disableJoinedClusterIndication = !notifyIdentityChange;
+ req.configParams.includePublishServiceIdsInBeacon = true;
+ req.configParams.numberOfPublishServiceIdsInBeacon = 0;
+ req.configParams.includeSubscribeServiceIdsInBeacon = true;
+ req.configParams.numberOfSubscribeServiceIdsInBeacon = 0;
+ req.configParams.rssiWindowSize = 8;
+ req.configParams.macAddressRandomizationIntervalSec = mSettableParameters.get(
+ PARAM_MAC_RANDOM_INTERVAL_SEC);
+
+ req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
+ req.configParams.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
+
+ req.debugConfigs.validClusterIdVals = true;
+ req.debugConfigs.clusterIdTopRangeVal = (short) configRequest.mClusterHigh;
+ req.debugConfigs.clusterIdBottomRangeVal = (short) configRequest.mClusterLow;
+ req.debugConfigs.validIntfAddrVal = false;
+ req.debugConfigs.validOuiVal = false;
+ req.debugConfigs.ouiVal = 0;
+ req.debugConfigs.validRandomFactorForceVal = false;
+ req.debugConfigs.randomFactorForceVal = 0;
+ req.debugConfigs.validHopCountForceVal = false;
+ req.debugConfigs.hopCountForceVal = 0;
+ req.debugConfigs.validDiscoveryChannelVal = false;
+ req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_24GHZ] = 0;
+ req.debugConfigs.discoveryChannelMhzVal[NanBandIndex.NAN_BAND_5GHZ] = 0;
+ req.debugConfigs.validUseBeaconsInBandVal = false;
+ req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.debugConfigs.useBeaconsInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
+ req.debugConfigs.validUseSdfInBandVal = false;
+ req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_24GHZ] = true;
+ req.debugConfigs.useSdfInBandVal[NanBandIndex.NAN_BAND_5GHZ] = true;
+
+ updateConfigForPowerSettings(req.configParams, configSupplemental12,
+ isInteractive, isIdle);
+
+ if (iface12 != null) {
+ status = iface12.enableRequest_1_2(transactionId, req,
+ configSupplemental12);
+ } else {
+ status = iface.enableRequest(transactionId, req);
+ }
}
} else {
- NanConfigRequest req = new NanConfigRequest();
- req.masterPref = (byte) configRequest.mMasterPreference;
- req.disableDiscoveryAddressChangeIndication = !notifyIdentityChange;
- req.disableStartedClusterIndication = !notifyIdentityChange;
- req.disableJoinedClusterIndication = !notifyIdentityChange;
- req.includePublishServiceIdsInBeacon = true;
- req.numberOfPublishServiceIdsInBeacon = 0;
- req.includeSubscribeServiceIdsInBeacon = true;
- req.numberOfSubscribeServiceIdsInBeacon = 0;
- req.rssiWindowSize = 8;
- req.macAddressRandomizationIntervalSec = mSettableParameters.get(
- PARAM_MAC_RANDOM_INTERVAL_SEC);
-
- NanBandSpecificConfig config24 = new NanBandSpecificConfig();
- config24.rssiClose = 60;
- config24.rssiMiddle = 70;
- config24.rssiCloseProximity = 60;
- config24.dwellTimeMs = (byte) 200;
- config24.scanPeriodSec = 20;
- if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_24GHZ]
- == ConfigRequest.DW_INTERVAL_NOT_INIT) {
- config24.validDiscoveryWindowIntervalVal = false;
- } else {
- config24.validDiscoveryWindowIntervalVal = true;
- config24.discoveryWindowIntervalVal =
- (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
- .NAN_BAND_24GHZ];
- }
- req.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
-
- NanBandSpecificConfig config5 = new NanBandSpecificConfig();
- config5.rssiClose = 60;
- config5.rssiMiddle = 75;
- config5.rssiCloseProximity = 60;
- config5.dwellTimeMs = (byte) 200;
- config5.scanPeriodSec = 20;
- if (configRequest.mDiscoveryWindowInterval[ConfigRequest.NAN_BAND_5GHZ]
- == ConfigRequest.DW_INTERVAL_NOT_INIT) {
- config5.validDiscoveryWindowIntervalVal = false;
- } else {
- config5.validDiscoveryWindowIntervalVal = true;
- config5.discoveryWindowIntervalVal =
- (byte) configRequest.mDiscoveryWindowInterval[ConfigRequest
- .NAN_BAND_5GHZ];
- }
- req.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
-
- updateConfigForPowerSettings(req, configSupplemental12, isInteractive, isIdle);
-
- if (iface12 != null) {
- status = iface12.configRequest_1_2(transactionId, req, configSupplemental12);
+ if (iface14 != null) {
+ android.hardware.wifi.V1_4.NanConfigRequest req =
+ new android.hardware.wifi.V1_4.NanConfigRequest();
+ req.masterPref = (byte) configRequest.mMasterPreference;
+ req.disableDiscoveryAddressChangeIndication = !notifyIdentityChange;
+ req.disableStartedClusterIndication = !notifyIdentityChange;
+ req.disableJoinedClusterIndication = !notifyIdentityChange;
+ req.includePublishServiceIdsInBeacon = true;
+ req.numberOfPublishServiceIdsInBeacon = 0;
+ req.includeSubscribeServiceIdsInBeacon = true;
+ req.numberOfSubscribeServiceIdsInBeacon = 0;
+ req.rssiWindowSize = 8;
+ req.macAddressRandomizationIntervalSec = mSettableParameters.get(
+ PARAM_MAC_RANDOM_INTERVAL_SEC);
+
+ req.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
+ req.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
+ req.bandSpecificConfig[android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ] =
+ config6;
+
+ updateConfigForPowerSettings14(req, configSupplemental12, isInteractive,
+ isIdle);
+
+ status = iface14.configRequest_1_4(transactionId, req, configSupplemental12);
} else {
- status = iface.configRequest(transactionId, req);
+ NanConfigRequest req = new NanConfigRequest();
+ req.masterPref = (byte) configRequest.mMasterPreference;
+ req.disableDiscoveryAddressChangeIndication = !notifyIdentityChange;
+ req.disableStartedClusterIndication = !notifyIdentityChange;
+ req.disableJoinedClusterIndication = !notifyIdentityChange;
+ req.includePublishServiceIdsInBeacon = true;
+ req.numberOfPublishServiceIdsInBeacon = 0;
+ req.includeSubscribeServiceIdsInBeacon = true;
+ req.numberOfSubscribeServiceIdsInBeacon = 0;
+ req.rssiWindowSize = 8;
+ req.macAddressRandomizationIntervalSec = mSettableParameters.get(
+ PARAM_MAC_RANDOM_INTERVAL_SEC);
+
+ req.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ] = config24;
+ req.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ] = config5;
+
+ updateConfigForPowerSettings(req, configSupplemental12, isInteractive, isIdle);
+
+ if (iface12 != null) {
+ status = iface12.configRequest_1_2(transactionId, req,
+ configSupplemental12);
+ } else {
+ status = iface.configRequest(transactionId, req);
+ }
}
}
if (status.code == WifiStatusCode.SUCCESS) {
@@ -1071,7 +1166,7 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
// utilities
/**
- * Update the NAN configuration to reflect the current power settings.
+ * Update the NAN configuration to reflect the current power settings (before V1.4)
*/
private void updateConfigForPowerSettings(NanConfigRequest req,
NanConfigRequestSupplemental configSupplemental12, boolean isInteractive,
@@ -1096,6 +1191,35 @@ public class WifiAwareNativeApi implements WifiAwareShellCommand.DelegatedShellC
key).get(PARAM_ENABLE_DW_EARLY_TERM) != 0;
}
+ /**
+ * Update the NAN configuration to reflect the current power settings (V1.4)
+ */
+ private void updateConfigForPowerSettings14(android.hardware.wifi.V1_4.NanConfigRequest req,
+ NanConfigRequestSupplemental configSupplemental12, boolean isInteractive,
+ boolean isIdle) {
+ String key = POWER_PARAM_DEFAULT_KEY;
+ if (isIdle) {
+ key = POWER_PARAM_IDLE_KEY;
+ } else if (!isInteractive) {
+ key = POWER_PARAM_INACTIVE_KEY;
+ }
+
+ updateSingleConfigForPowerSettings(req.bandSpecificConfig[NanBandIndex.NAN_BAND_5GHZ],
+ mSettablePowerParameters.get(key).get(PARAM_DW_5GHZ));
+ updateSingleConfigForPowerSettings(req.bandSpecificConfig[NanBandIndex.NAN_BAND_24GHZ],
+ mSettablePowerParameters.get(key).get(PARAM_DW_24GHZ));
+ updateSingleConfigForPowerSettings(req.bandSpecificConfig[
+ android.hardware.wifi.V1_4.NanBandIndex.NAN_BAND_6GHZ],
+ mSettablePowerParameters.get(key).get(PARAM_DW_6GHZ));
+
+ configSupplemental12.discoveryBeaconIntervalMs = mSettablePowerParameters.get(key).get(
+ PARAM_DISCOVERY_BEACON_INTERVAL_MS);
+ configSupplemental12.numberOfSpatialStreamsInDiscovery = mSettablePowerParameters.get(
+ key).get(PARAM_NUM_SS_IN_DISCOVERY);
+ configSupplemental12.enableDiscoveryWindowEarlyTermination = mSettablePowerParameters.get(
+ key).get(PARAM_ENABLE_DW_EARLY_TERM) != 0;
+ }
+
private void updateSingleConfigForPowerSettings(NanBandSpecificConfig cfg, int override) {
if (override != -1) {
cfg.validDiscoveryWindowIntervalVal = true;
diff --git a/service/java/com/android/server/wifi/aware/WifiAwareStateManager.java b/service/java/com/android/server/wifi/aware/WifiAwareStateManager.java
index 2b648c0f1..924a222ff 100644
--- a/service/java/com/android/server/wifi/aware/WifiAwareStateManager.java
+++ b/service/java/com/android/server/wifi/aware/WifiAwareStateManager.java
@@ -3156,6 +3156,7 @@ public class WifiAwareStateManager implements WifiAwareShellCommand.DelegatedShe
// - if any request identity change: enable
// - discovery window: minimum value if specified, 0 (disable) is considered an infinity
boolean support5gBand = false;
+ boolean support6gBand = false;
int masterPreference = 0;
boolean clusterIdValid = false;
int clusterLow = 0;
@@ -3164,6 +3165,7 @@ public class WifiAwareStateManager implements WifiAwareShellCommand.DelegatedShe
{ConfigRequest.DW_INTERVAL_NOT_INIT, ConfigRequest.DW_INTERVAL_NOT_INIT};
if (configRequest != null) {
support5gBand = configRequest.mSupport5gBand;
+ support6gBand = configRequest.mSupport6gBand;
masterPreference = configRequest.mMasterPreference;
clusterIdValid = true;
clusterLow = configRequest.mClusterLow;
@@ -3178,6 +3180,11 @@ public class WifiAwareStateManager implements WifiAwareShellCommand.DelegatedShe
support5gBand = true;
}
+ // any request turns on 5G
+ if (cr.mSupport6gBand) {
+ support6gBand = true;
+ }
+
// maximal master preference
masterPreference = Math.max(masterPreference, cr.mMasterPreference);
diff --git a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
index 1db13aec9..c1c13451b 100644
--- a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
@@ -2716,12 +2716,14 @@ public class WifiAwareStateManagerTest extends WifiBaseTest {
ConfigRequest configRequest2 = new ConfigRequest.Builder()
.setSupport5gBand(true) // compatible
+ .setSupport6gBand(false)
.setClusterLow(7).setClusterHigh(155) // incompatible!
.setMasterPreference(0) // compatible
.build();
ConfigRequest configRequest3 = new ConfigRequest.Builder()
.setSupport5gBand(true) // compatible (will use true)
+ .setSupport6gBand(false)
.setClusterLow(5).setClusterHigh(100) // identical (hence compatible)
.setMasterPreference(masterPref3) // compatible (will use max)
// compatible: will use min
@@ -2771,6 +2773,7 @@ public class WifiAwareStateManagerTest extends WifiBaseTest {
inOrder.verify(mockCallback3).onConnectSuccess(clientId3);
collector.checkThat("support 5g: or", true, equalTo(crCapture.getValue().mSupport5gBand));
+ collector.checkThat("support 6g: or", false, equalTo(crCapture.getValue().mSupport6gBand));
collector.checkThat("master preference: max", Math.max(masterPref1, masterPref3),
equalTo(crCapture.getValue().mMasterPreference));
collector.checkThat("dw interval on 2.4: ~min",