wifi(hidl): Add supplicant HIDL interface

Convert the existing AIDL binder interface of wpa_supplicant to HIDL.

Summary of changes:
1. Every HIDL method returns an instance of |SupplicantStatus|
along with any others params (for getters). This is needed to return the
equivalent of |Binder::Status| to indicate errors in the args passed,
stale proxy, etc.
2. All constants are changed to enums. There were some constants which
should have been enums in the first place, but wasn't because AIDL did
not support enums. But, there are others which should be standalone
constants, but are enums now because constants are not supported in HIDL.
3. Conform to HIDL style guide.

Bug: 31365276
Test: `mmm -j32 hardware/interfaces/wifi/1.0/`
Change-Id: Iba753e279fd260788d8628ea2f5c2281b5844095
diff --git a/wifi/1.0/ISupplicantNetworkCallback.hal b/wifi/1.0/ISupplicantNetworkCallback.hal
new file mode 100644
index 0000000..2bdd716
--- /dev/null
+++ b/wifi/1.0/ISupplicantNetworkCallback.hal
@@ -0,0 +1,69 @@
+/*
+ * Copyright 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.hardware.wifi@1.0;
+
+/**
+ * Callback Interface exposed by the wpa_supplicant service
+ * for each network (ISupplicantNetwork).
+ *
+ * Clients need to host an instance of this HIDL interface object and
+ * pass a reference of the object to wpa_supplicant via the
+ * corresponding |ISupplicantNetwork.registerCallback| method.
+ */
+interface ISupplicantNetworkCallback {
+  /** Params of |onNetworkEapSimGsmAuthRequest| request. (Refer RFC 4186) */
+  typedef uint8_t[16] GsmRand;
+  struct NetworkRequestEapSimGsmAuthParams {
+    vec<GsmRand> rands;
+  };
+
+  /** Params of |onNetworkEapSimUmtsAuthRequest| request. (Refer RFC 4187) */
+  struct NetworkRequestEapSimUmtsAuthParams {
+    uint8_t[16] rand;
+    uint8_t[16] autn;
+  };
+
+  /**
+   * Used to request EAP GSM SIM authentication for this particular network.
+   *
+   * The response for the request must be sent using the corresponding
+   * |ISupplicantNetwork.sendNetworkEapSimGsmAuthResponse| call.
+   *
+   * @param params Params associated with the request.
+   */
+  oneway onNetworkEapSimGsmAuthRequest(
+      NetworkRequestEapSimGsmAuthParams params);
+
+  /**
+   * Used to request EAP UMTS SIM authentication for this particular network.
+   *
+   * The response for the request must be sent using the corresponding
+   * |ISupplicantNetwork.sendNetworkEapSimUmtsAuthResponse| call.
+   *
+   * @param params Params associated with the request.
+   */
+  oneway onNetworkEapSimUmtsAuthRequest(
+      NetworkRequestEapSimUmtsAuthParams params);
+
+  /**
+   * Used to request EAP Identity for this particular network.
+   *
+   * The response for the request must be sent using the corresponding
+   * |ISupplicantNetwork.sendNetworkEapIdentityResponse| call.
+   */
+  oneway onNetworkEapIdentityRequest();
+};