[NAN] Expose NAN characteristics as an API

Expose NAN characteristics as an API.

(cherry-pick of commit 3a9de10963d869fa8f721432ce12785de384c560)

Bug: 31912101
Test: build and validate API updates
Change-Id: If02942d738aab8fa2f2f47489c6840af1bc38280
diff --git a/framework/java/android/net/wifi/nan/IWifiNanManager.aidl b/framework/java/android/net/wifi/nan/IWifiNanManager.aidl
index 56baba9..5485824 100644
--- a/framework/java/android/net/wifi/nan/IWifiNanManager.aidl
+++ b/framework/java/android/net/wifi/nan/IWifiNanManager.aidl
@@ -23,6 +23,7 @@
 import android.net.wifi.nan.IWifiNanEventCallback;
 import android.net.wifi.nan.PublishConfig;
 import android.net.wifi.nan.SubscribeConfig;
+import android.net.wifi.nan.WifiNanCharacteristics;
 import android.net.wifi.RttManager;
 
 /**
@@ -36,6 +37,7 @@
     void enableUsage();
     void disableUsage();
     boolean isUsageEnabled();
+    WifiNanCharacteristics getCharacteristics();
 
     // client API
     void connect(in IBinder binder, in String callingPackage, in IWifiNanEventCallback callback,
diff --git a/framework/java/android/net/wifi/nan/WifiNanCharacteristics.aidl b/framework/java/android/net/wifi/nan/WifiNanCharacteristics.aidl
new file mode 100644
index 0000000..e562a00
--- /dev/null
+++ b/framework/java/android/net/wifi/nan/WifiNanCharacteristics.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2016 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 android.net.wifi.nan;
+
+parcelable WifiNanCharacteristics;
diff --git a/framework/java/android/net/wifi/nan/WifiNanCharacteristics.java b/framework/java/android/net/wifi/nan/WifiNanCharacteristics.java
index 32c4258..f43ed4d 100644
--- a/framework/java/android/net/wifi/nan/WifiNanCharacteristics.java
+++ b/framework/java/android/net/wifi/nan/WifiNanCharacteristics.java
@@ -23,7 +23,7 @@
 /**
  * The characteristics of the Wi-Fi NAN implementation.
  *
- * @hide
+ * @hide PROPOSED_NAN_API
  */
 public class WifiNanCharacteristics implements Parcelable {
     /** @hide */
diff --git a/framework/java/android/net/wifi/nan/WifiNanManager.java b/framework/java/android/net/wifi/nan/WifiNanManager.java
index bb15434..002b953 100644
--- a/framework/java/android/net/wifi/nan/WifiNanManager.java
+++ b/framework/java/android/net/wifi/nan/WifiNanManager.java
@@ -293,6 +293,20 @@
     }
 
     /**
+     * Returns the characteristics of the Wi-Fi NAN interface: a set of parameters which specify
+     * limitations on configurations, e.g. the maximum service name length.
+     *
+     * @return An object specifying configuration limitations of NAN.
+     */
+    public WifiNanCharacteristics getCharacteristics() {
+        try {
+            return mService.getCharacteristics();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Attach to the Wi-Fi NAN service - enabling the application to create discovery sessions or
      * create connections to peers. The device will attach to an existing cluster if it can find
      * one or create a new cluster (if it is the first to enable NAN in its vicinity). Results