From f769489d5ce91599c619d2433438f7e36965d231 Mon Sep 17 00:00:00 2001 From: Etan Cohen Date: Wed, 9 Mar 2016 11:17:38 -0800 Subject: [NAN] Export match style configuration to API. [DO NOT MERGE] Enables configuration of match notification: either single (only first notification in a string of identical matches) or all (get every single match). Bug: 27568256 Change-Id: Iab1c85df51fb63f540216d653882f1e0ece0262c --- .../com_android_server_wifi_nan_WifiNanNative.cpp | 3 +- .../android/server/wifi/nan/WifiNanHalTest.java | 14 ++++---- .../server/wifi/nan/WifiNanManagerTest.java | 37 ++++++++++++++++++++-- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp b/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp index 548232d2f..263b34ed1 100644 --- a/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp +++ b/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp @@ -375,7 +375,6 @@ static jint android_net_wifi_nan_subscribe(JNIEnv *env, jclass cls, msg.serviceResponseInclude = NAN_SRF_INCLUDE_RESPOND; msg.useServiceResponseFilter = NAN_DO_NOT_USE_SRF; msg.ssiRequiredForMatchIndication = NAN_SSI_NOT_REQUIRED_IN_MATCH_IND; - msg.subscribe_match_indicator = NAN_MATCH_ALG_MATCH_ONCE; msg.rssi_threshold_flag = 0; msg.connmap = 0; msg.num_intf_addr_present = 0; @@ -418,6 +417,8 @@ static jint android_net_wifi_nan_subscribe(JNIEnv *env, jclass cls, msg.subscribe_type = (NanSubscribeType)helper.getIntField(subscribe_config, "mSubscribeType"); msg.subscribe_count = helper.getIntField(subscribe_config, "mSubscribeCount"); msg.ttl = helper.getIntField(subscribe_config, "mTtlSec"); + msg.subscribe_match_indicator = (NanMatchAlg) helper.getIntField( + subscribe_config, "mMatchStyle"); return hal_fn.wifi_nan_subscribe_request(transaction_id, handle, &msg); } diff --git a/tests/wifitests/src/com/android/server/wifi/nan/WifiNanHalTest.java b/tests/wifitests/src/com/android/server/wifi/nan/WifiNanHalTest.java index c4e891b74..b30b80735 100644 --- a/tests/wifitests/src/com/android/server/wifi/nan/WifiNanHalTest.java +++ b/tests/wifitests/src/com/android/server/wifi/nan/WifiNanHalTest.java @@ -166,6 +166,7 @@ public class WifiNanHalTest { final String ssi = "some much longer arbitrary data"; final int subscribeCount = 32; final int subscribeTtl = 33; + final int matchStyle = SubscribeConfig.MATCH_STYLE_ALL; TlvBufferUtils.TlvConstructor tlvTx = new TlvBufferUtils.TlvConstructor(0, 1); tlvTx.allocate(150).putByte(0, (byte) 10).putInt(0, 100).putString(0, "some string") @@ -176,7 +177,7 @@ public class WifiNanHalTest { .putZeroLengthElement(0).putByteArray(0, serviceName.getBytes()); testSubscribe(transactionId, subscribeId, SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE, - serviceName, ssi, tlvTx, tlvRx, subscribeCount, subscribeTtl); + serviceName, ssi, tlvTx, tlvRx, subscribeCount, subscribeTtl, matchStyle); } @Test @@ -187,6 +188,7 @@ public class WifiNanHalTest { final String ssi = "some much longer arbitrary data"; final int subscribeCount = 32; final int subscribeTtl = 33; + final int matchStyle = SubscribeConfig.MATCH_STYLE_FIRST_ONLY; TlvBufferUtils.TlvConstructor tlvTx = new TlvBufferUtils.TlvConstructor(0, 1); tlvTx.allocate(150).putByte(0, (byte) 10).putInt(0, 100).putString(0, "some string") @@ -197,7 +199,7 @@ public class WifiNanHalTest { .putZeroLengthElement(0).putByteArray(0, serviceName.getBytes()); testSubscribe(transactionId, subscribeId, SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE, - serviceName, ssi, tlvTx, tlvRx, subscribeCount, subscribeTtl); + serviceName, ssi, tlvTx, tlvRx, subscribeCount, subscribeTtl, matchStyle); } @Test @@ -720,14 +722,14 @@ public class WifiNanHalTest { private void testSubscribe(short transactionId, int subscribeId, int subscribeType, String serviceName, String ssi, TlvBufferUtils.TlvConstructor tlvTx, - TlvBufferUtils.TlvConstructor tlvRx, int subscribeCount, int subscribeTtl) - throws JSONException { + TlvBufferUtils.TlvConstructor tlvRx, int subscribeCount, int subscribeTtl, + int matchStyle) throws JSONException { SubscribeConfig subscribeConfig = new SubscribeConfig.Builder().setServiceName(serviceName) .setServiceSpecificInfo(ssi) .setTxFilter(tlvTx.getArray(), tlvTx.getActualLength()) .setRxFilter(tlvRx.getArray(), tlvRx.getActualLength()) .setSubscribeType(subscribeType).setSubscribeCount(subscribeCount) - .setTtlSec(subscribeTtl).build(); + .setTtlSec(subscribeTtl).setMatchStyle(matchStyle).build(); mDut.subscribe(transactionId, subscribeId, subscribeConfig); @@ -749,7 +751,7 @@ public class WifiNanHalTest { collector.checkThat("ssiRequiredForMatchIndication", argsData.getInt("ssiRequiredForMatchIndication"), equalTo(0)); collector.checkThat("subscribe_match_indicator", - argsData.getInt("subscribe_match_indicator"), equalTo(0)); + argsData.getInt("subscribe_match_indicator"), equalTo(matchStyle)); collector.checkThat("subscribe_count", argsData.getInt("subscribe_count"), equalTo(subscribeCount)); collector.checkThat("service_name_len", argsData.getInt("service_name_len"), diff --git a/tests/wifitests/src/com/android/server/wifi/nan/WifiNanManagerTest.java b/tests/wifitests/src/com/android/server/wifi/nan/WifiNanManagerTest.java index 3ee8f00ac..f7ae80894 100644 --- a/tests/wifitests/src/com/android/server/wifi/nan/WifiNanManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/nan/WifiNanManagerTest.java @@ -147,6 +147,25 @@ public class WifiNanManagerTest { * SubscribeConfig Tests */ + @Test + public void testSubscribeConfigBuilderDefaults() { + SubscribeConfig subscribeConfig = new SubscribeConfig.Builder().build(); + + collector.checkThat("mServiceName", subscribeConfig.mServiceName, equalTo(null)); + collector.checkThat("mServiceSpecificInfoLength", + subscribeConfig.mServiceSpecificInfoLength, equalTo(0)); + collector.checkThat("mServiceSpecificInfoLength", subscribeConfig.mTxFilterLength, + equalTo(0)); + collector.checkThat("mServiceSpecificInfoLength", subscribeConfig.mRxFilterLength, + equalTo(0)); + collector.checkThat("mSubscribeType", subscribeConfig.mSubscribeType, + equalTo(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)); + collector.checkThat("mSubscribeCount", subscribeConfig.mSubscribeCount, equalTo(0)); + collector.checkThat("mTtlSec", subscribeConfig.mTtlSec, equalTo(0)); + collector.checkThat("mMatchStyle", subscribeConfig.mMatchStyle, + equalTo(SubscribeConfig.MATCH_STYLE_ALL)); + } + @Test public void testSubscribeConfigBuilder() { final String serviceName = "some_service_or_other"; @@ -158,11 +177,13 @@ public class WifiNanManagerTest { final int subscribeType = SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE; final int subscribeCount = 10; final int subscribeTtl = 15; + final int matchStyle = SubscribeConfig.MATCH_STYLE_FIRST_ONLY; SubscribeConfig subscribeConfig = new SubscribeConfig.Builder().setServiceName(serviceName) .setServiceSpecificInfo(serviceSpecificInfo).setTxFilter(txFilter, txFilter.length) .setRxFilter(rxFilter, rxFilter.length).setSubscribeType(subscribeType) - .setSubscribeCount(subscribeCount).setTtlSec(subscribeTtl).build(); + .setSubscribeCount(subscribeCount).setTtlSec(subscribeTtl).setMatchStyle(matchStyle) + .build(); collector.checkThat("mServiceName", serviceName, equalTo(subscribeConfig.mServiceName)); collector.checkThat("mServiceSpecificInfo", @@ -179,6 +200,7 @@ public class WifiNanManagerTest { collector.checkThat("mSubscribeCount", subscribeCount, equalTo(subscribeConfig.mSubscribeCount)); collector.checkThat("mTtlSec", subscribeTtl, equalTo(subscribeConfig.mTtlSec)); + collector.checkThat("mMatchStyle", matchStyle, equalTo(subscribeConfig.mMatchStyle)); } @Test @@ -192,11 +214,13 @@ public class WifiNanManagerTest { final int subscribeType = SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE; final int subscribeCount = 10; final int subscribeTtl = 15; + final int matchStyle = SubscribeConfig.MATCH_STYLE_FIRST_ONLY; SubscribeConfig subscribeConfig = new SubscribeConfig.Builder().setServiceName(serviceName) .setServiceSpecificInfo(serviceSpecificInfo).setTxFilter(txFilter, txFilter.length) .setTxFilter(rxFilter, rxFilter.length).setSubscribeType(subscribeType) - .setSubscribeCount(subscribeCount).setTtlSec(subscribeTtl).build(); + .setSubscribeCount(subscribeCount).setTtlSec(subscribeTtl).setMatchStyle(matchStyle) + .build(); Parcel parcelW = Parcel.obtain(); subscribeConfig.writeToParcel(parcelW, 0); @@ -229,6 +253,15 @@ public class WifiNanManagerTest { new SubscribeConfig.Builder().setTtlSec(-100); } + /** + * Validate that a bad match style configuration throws an exception. + */ + @Test + public void testSubscribeConfigBuilderBadMatchStyle() { + thrown.expect(IllegalArgumentException.class); + new SubscribeConfig.Builder().setMatchStyle(10); + } + /* * PublishConfig Tests */ -- cgit v1.2.3