summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorEtan Cohen <etancohen@google.com>2016-08-18 15:38:39 -0700
committerEtan Cohen <etancohen@google.com>2016-08-19 12:31:37 -0700
commit65e89d2063f6ee50d00a2579b809deb0a98b5d8b (patch)
tree7fbc3531c17764cb9152214e091d5a00a369b37b /service
parent87aa8222c1454cf9249056ef833dd2806e24ecad (diff)
[NAN] Simplify publish/subscribe configuration - merge match filters
Merge Tx/Rx match filters into single Match filter configuration. Only a single filter can be used at a time (either Tx or Rx). Bug: 30948496 Change-Id: I863b642ca1f1d4790fcedcea07eaa91b7ff8ea17
Diffstat (limited to 'service')
-rw-r--r--service/jni/com_android_server_wifi_nan_WifiNanNative.cpp72
1 files changed, 38 insertions, 34 deletions
diff --git a/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp b/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp
index ff9c4469d..379794de2 100644
--- a/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp
+++ b/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp
@@ -398,6 +398,7 @@ static jint android_net_wifi_nan_publish(JNIEnv *env, jclass cls,
/* configurable settings */
msg.publish_id = publish_id;
+ msg.publish_type = (NanPublishType)helper.getIntField(publish_config, "mPublishType");
size_t array_length;
helper.getByteArrayField(publish_config, "mServiceName", msg.service_name,
@@ -417,25 +418,26 @@ static jint android_net_wifi_nan_publish(JNIEnv *env, jclass cls,
return 0;
}
- helper.getByteArrayField(publish_config, "mTxFilter",
- msg.tx_match_filter, &array_length,
- NAN_MAX_MATCH_FILTER_LEN);
- msg.tx_match_filter_len = array_length;
- if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
- ALOGE("Length of tx filter info field larger than max allowed");
- return 0;
- }
-
- helper.getByteArrayField(publish_config, "mRxFilter",
- msg.rx_match_filter, &array_length,
- NAN_MAX_MATCH_FILTER_LEN);
- msg.rx_match_filter_len = array_length;
- if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
- ALOGE("Length of rx filter info field larger than max allowed");
- return 0;
+ if (msg.publish_type == NAN_PUBLISH_TYPE_UNSOLICITED) {
+ helper.getByteArrayField(publish_config, "mMatchFilter",
+ msg.tx_match_filter, &array_length,
+ NAN_MAX_MATCH_FILTER_LEN);
+ msg.tx_match_filter_len = array_length;
+ if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
+ ALOGE("Length of match filter info field larger than max allowed");
+ return 0;
+ }
+ } else {
+ helper.getByteArrayField(publish_config, "mMatchFilter",
+ msg.rx_match_filter, &array_length,
+ NAN_MAX_MATCH_FILTER_LEN);
+ msg.rx_match_filter_len = array_length;
+ if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
+ ALOGE("Length of match filter info field larger than max allowed");
+ return 0;
+ }
}
- msg.publish_type = (NanPublishType)helper.getIntField(publish_config, "mPublishType");
msg.publish_count = helper.getIntField(publish_config, "mPublishCount");
msg.ttl = helper.getIntField(publish_config, "mTtlSec");
@@ -477,6 +479,7 @@ static jint android_net_wifi_nan_subscribe(JNIEnv *env, jclass cls,
/* configurable settings */
msg.subscribe_id = subscribe_id;
+ msg.subscribe_type = (NanSubscribeType)helper.getIntField(subscribe_config, "mSubscribeType");
size_t array_length;
helper.getByteArrayField(subscribe_config, "mServiceName", msg.service_name,
@@ -496,25 +499,26 @@ static jint android_net_wifi_nan_subscribe(JNIEnv *env, jclass cls,
return 0;
}
- helper.getByteArrayField(subscribe_config, "mTxFilter",
- msg.tx_match_filter, &array_length,
- NAN_MAX_MATCH_FILTER_LEN);
- msg.tx_match_filter_len = array_length;
- if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
- ALOGE("Length of tx filter field larger than max allowed");
- return 0;
- }
-
- helper.getByteArrayField(subscribe_config, "mRxFilter",
- msg.rx_match_filter, &array_length,
- NAN_MAX_MATCH_FILTER_LEN);
- msg.rx_match_filter_len = array_length;
- if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
- ALOGE("Length of rx filter field larger than max allowed");
- return 0;
+ if (msg.subscribe_type == NAN_SUBSCRIBE_TYPE_ACTIVE) {
+ helper.getByteArrayField(subscribe_config, "mMatchFilter",
+ msg.tx_match_filter, &array_length,
+ NAN_MAX_MATCH_FILTER_LEN);
+ msg.tx_match_filter_len = array_length;
+ if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
+ ALOGE("Length of match filter field larger than max allowed");
+ return 0;
+ }
+ } else {
+ helper.getByteArrayField(subscribe_config, "mMatchFilter",
+ msg.rx_match_filter, &array_length,
+ NAN_MAX_MATCH_FILTER_LEN);
+ msg.rx_match_filter_len = array_length;
+ if (array_length > NAN_MAX_MATCH_FILTER_LEN) {
+ ALOGE("Length of match filter field larger than max allowed");
+ return 0;
+ }
}
- 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(