wifi(interface): NAN HIDL interface

Interface is mostly a replication of the wifi_nan.h HAL header file.
1. All the methods are in |IWifiNanIface|.
2. Moved all the callbacks to |IWifiNanIfaceEventCallback.hal|.
2. Moved all the data types to |types.hal|.
3. Changed all the variable size arrays to vecs.

Bug: 31991076
Test: ./hardware/interfaces/update-makefiles.sh
Change-Id: I2af0b0003cf30a0f2bfdcb56b69c492cf831745b
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index a3daa89..40521f2 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -13,6 +13,7 @@
         "IWifiEventCallback.hal",
         "IWifiIface.hal",
         "IWifiNanIface.hal",
+        "IWifiNanIfaceEventCallback.hal",
         "IWifiP2pIface.hal",
         "IWifiRttController.hal",
         "IWifiStaIface.hal",
@@ -27,6 +28,7 @@
         "android/hardware/wifi/1.0/WifiEventCallbackAll.cpp",
         "android/hardware/wifi/1.0/WifiIfaceAll.cpp",
         "android/hardware/wifi/1.0/WifiNanIfaceAll.cpp",
+        "android/hardware/wifi/1.0/WifiNanIfaceEventCallbackAll.cpp",
         "android/hardware/wifi/1.0/WifiP2pIfaceAll.cpp",
         "android/hardware/wifi/1.0/WifiRttControllerAll.cpp",
         "android/hardware/wifi/1.0/WifiStaIfaceAll.cpp",
@@ -47,6 +49,7 @@
         "IWifiEventCallback.hal",
         "IWifiIface.hal",
         "IWifiNanIface.hal",
+        "IWifiNanIfaceEventCallback.hal",
         "IWifiP2pIface.hal",
         "IWifiRttController.hal",
         "IWifiStaIface.hal",
@@ -89,6 +92,11 @@
         "android/hardware/wifi/1.0/BnWifiNanIface.h",
         "android/hardware/wifi/1.0/BpWifiNanIface.h",
         "android/hardware/wifi/1.0/BsWifiNanIface.h",
+        "android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.h",
+        "android/hardware/wifi/1.0/IHwWifiNanIfaceEventCallback.h",
+        "android/hardware/wifi/1.0/BnWifiNanIfaceEventCallback.h",
+        "android/hardware/wifi/1.0/BpWifiNanIfaceEventCallback.h",
+        "android/hardware/wifi/1.0/BsWifiNanIfaceEventCallback.h",
         "android/hardware/wifi/1.0/IWifiP2pIface.h",
         "android/hardware/wifi/1.0/IHwWifiP2pIface.h",
         "android/hardware/wifi/1.0/BnWifiP2pIface.h",
diff --git a/wifi/1.0/Android.mk b/wifi/1.0/Android.mk
index c7983ea..3ae6aff 100644
--- a/wifi/1.0/Android.mk
+++ b/wifi/1.0/Android.mk
@@ -30,6 +30,1111 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (NanAvailDuration)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanAvailDuration.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanAvailDuration
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadReceive)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadReceive.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadReceive
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanCapabilities)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanCapabilities.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanCapabilities
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanChannelIndex)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanChannelIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanChannelIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanClusterEvent)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanClusterEvent.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanClusterEvent
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanConfigRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanConfigRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanConfigRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanConnectionType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanConnectionType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanConnectionType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathAppInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathAppInfo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathAppInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathChannelCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathChannelCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathChannelCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathConfirmInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathConfirmInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathConfirmInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathEndInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathEndInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathEndInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathEndRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathEndRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathEndRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathIndicationResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathIndicationResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathIndicationResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathInitiatorRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathInitiatorRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathInitiatorRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathQosCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathQosCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathQosCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathRequestInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathRequestInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathRequestInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathRequestResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathRequestResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathRequestResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathResponseCode)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathResponseCode.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathResponseCode
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathSecurityCfgStatus)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathSecurityCfgStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathSecurityCfgStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDeviceRole)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDeviceRole.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDeviceRole
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDisabledInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDisabledInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDisabledInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDiscEngEventInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDiscEngEventInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDiscEngEventInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDiscEngEventType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDiscEngEventType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDiscEngEventType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanEnableRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanEnableRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanEnableRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFollowupInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFollowupInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFollowupInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFurtherAvailabilityChannel)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFurtherAvailabilityChannel.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFurtherAvailabilityChannel
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFurtherAvailabilityMap)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFurtherAvailabilityMap.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFurtherAvailabilityMap
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMacAddressEvent)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMacAddressEvent.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMacAddressEvent
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchAlg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchAlg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchAlg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchExpiredInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchExpiredInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchExpiredInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishCancelRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishCancelRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishCancelRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishTerminatedInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishTerminatedInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishTerminatedInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceivePostConnectivityCapability)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceivePostConnectivityCapability.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceivePostConnectivityCapability
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceivePostDiscovery)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceivePostDiscovery.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceivePostDiscovery
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceiveVendorSpecificAttribute)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceiveVendorSpecificAttribute.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceiveVendorSpecificAttribute
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanResponseMsg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanResponseMsg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanResponseMsg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanResponseType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanResponseType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanResponseType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSizes)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSizes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSizes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSocialChannelScanParams)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSocialChannelScanParams.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSocialChannelScanParams
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfIncludeType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfIncludeType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfIncludeType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfState)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfState.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfState
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSsiInMatchInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSsiInMatchInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSsiInMatchInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanStatusType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanStatusType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanStatusType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeCancelRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeCancelRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeCancelRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeTerminatedInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeTerminatedInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeTerminatedInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitFollowupInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitFollowupInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitFollowupInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitFollowupRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitFollowupRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitFollowupRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitPostConnectivityCapability)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitPostConnectivityCapability.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitPostConnectivityCapability
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitPostDiscovery)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitPostDiscovery.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitPostDiscovery
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitVendorSpecificAttribute)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitVendorSpecificAttribute.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitVendorSpecificAttribute
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitWindowType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitWindowType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitWindowType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTxPriority)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTxPriority.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTxPriority
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTxType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTxType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTxType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanVsaRxFrameMask)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanVsaRxFrameMask.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanVsaRxFrameMask
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (WifiStatus)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/WifiStatus.java
@@ -204,6 +1309,10 @@
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiNanIface.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiIface.hal
 $(GEN): $(LOCAL_PATH)/IWifiIface.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
 $(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
 $(GEN): PRIVATE_CUSTOM_TOOL = \
         $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
@@ -215,6 +1324,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build IWifiNanIfaceEventCallback.hal
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::IWifiNanIfaceEventCallback
+
+$(GEN): $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IWifiP2pIface.hal
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiP2pIface.java
@@ -326,6 +1454,1111 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (NanAvailDuration)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanAvailDuration.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanAvailDuration
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadReceive)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadReceive.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadReceive
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanBeaconSdfPayloadRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanBeaconSdfPayloadRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanCapabilities)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanCapabilities.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanCapabilities
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanChannelIndex)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanChannelIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanChannelIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanClusterEvent)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanClusterEvent.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanClusterEvent
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanConfigRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanConfigRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanConfigRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanConnectionType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanConnectionType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanConnectionType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathAppInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathAppInfo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathAppInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathChannelCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathChannelCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathChannelCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathConfirmInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathConfirmInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathConfirmInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathEndInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathEndInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathEndInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathEndRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathEndRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathEndRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathIndicationResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathIndicationResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathIndicationResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathInitiatorRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathInitiatorRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathInitiatorRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathQosCfg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathQosCfg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathQosCfg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathRequestInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathRequestInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathRequestInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathRequestResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathRequestResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathRequestResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathResponseCode)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathResponseCode.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathResponseCode
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDataPathSecurityCfgStatus)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDataPathSecurityCfgStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDataPathSecurityCfgStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDeviceRole)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDeviceRole.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDeviceRole
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDisabledInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDisabledInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDisabledInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDiscEngEventInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDiscEngEventInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDiscEngEventInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanDiscEngEventType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanDiscEngEventType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanDiscEngEventType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanEnableRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanEnableRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanEnableRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFollowupInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFollowupInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFollowupInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFurtherAvailabilityChannel)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFurtherAvailabilityChannel.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFurtherAvailabilityChannel
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanFurtherAvailabilityMap)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanFurtherAvailabilityMap.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanFurtherAvailabilityMap
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMacAddressEvent)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMacAddressEvent.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMacAddressEvent
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchAlg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchAlg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchAlg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchExpiredInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchExpiredInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchExpiredInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanMatchInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanMatchInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanMatchInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishCancelRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishCancelRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishCancelRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishTerminatedInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishTerminatedInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishTerminatedInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanPublishType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanPublishType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanPublishType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceivePostConnectivityCapability)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceivePostConnectivityCapability.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceivePostConnectivityCapability
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceivePostDiscovery)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceivePostDiscovery.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceivePostDiscovery
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanReceiveVendorSpecificAttribute)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanReceiveVendorSpecificAttribute.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanReceiveVendorSpecificAttribute
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanResponseMsg)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanResponseMsg.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanResponseMsg
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanResponseType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanResponseType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanResponseType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSizes)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSizes.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSizes
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSocialChannelScanParams)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSocialChannelScanParams.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSocialChannelScanParams
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfIncludeType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfIncludeType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfIncludeType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfState)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfState.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfState
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSrfType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSrfType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSrfType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSsiInMatchInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSsiInMatchInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSsiInMatchInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanStatusType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanStatusType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanStatusType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeCancelRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeCancelRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeCancelRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeResponse)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeResponse
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeTerminatedInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeTerminatedInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeTerminatedInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanSubscribeType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanSubscribeType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanSubscribeType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitFollowupInd)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitFollowupInd.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitFollowupInd
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitFollowupRequest)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitFollowupRequest.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitFollowupRequest
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitPostConnectivityCapability)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitPostConnectivityCapability.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitPostConnectivityCapability
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitPostDiscovery)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitPostDiscovery.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitPostDiscovery
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitVendorSpecificAttribute)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitVendorSpecificAttribute.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitVendorSpecificAttribute
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTransmitWindowType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTransmitWindowType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTransmitWindowType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTxPriority)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTxPriority.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTxPriority
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanTxType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanTxType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanTxType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (NanVsaRxFrameMask)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/NanVsaRxFrameMask.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::types.NanVsaRxFrameMask
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (WifiStatus)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/WifiStatus.java
@@ -500,6 +2733,10 @@
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiNanIface.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiIface.hal
 $(GEN): $(LOCAL_PATH)/IWifiIface.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
 $(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
 $(GEN): PRIVATE_CUSTOM_TOOL = \
         $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
@@ -511,6 +2748,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build IWifiNanIfaceEventCallback.hal
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+        -Ljava -randroid.hardware:hardware/interfaces \
+        android.hardware.wifi@1.0::IWifiNanIfaceEventCallback
+
+$(GEN): $(LOCAL_PATH)/IWifiNanIfaceEventCallback.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IWifiP2pIface.hal
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiP2pIface.java
diff --git a/wifi/1.0/IWifiNanIface.hal b/wifi/1.0/IWifiNanIface.hal
index dade94c..2926c4f 100644
--- a/wifi/1.0/IWifiNanIface.hal
+++ b/wifi/1.0/IWifiNanIface.hal
@@ -17,10 +17,259 @@
 package android.hardware.wifi@1.0;
 
 import IWifiIface;
+import IWifiNanIfaceEventCallback;
 
 /**
- * Interface used to represent a single NAN iface.
+ * Interface used to represent a single NAN(Neighbour Aware Network) iface.
  */
 interface IWifiNanIface extends IWifiIface {
-  /** TODO(rpius): Add methods to the interface. */
+  /**
+   * Requests notifications of significant events on this iface. Multiple calls
+   * to this must register multiple callbacks each of which must receive all
+   * events.
+   *
+   * @param callback An instance of the |IWifiNanIfaceEventCallback| HIDL interface
+   *        object.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|
+   */
+  registerEventCallback(IWifiNanIfaceEventCallback callback)
+      generates (WifiStatus status);
+
+  /**
+   * Enable NAN functionality.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanEnableRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  enableRequest(CommandId cmdId, NanEnableRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Disable NAN functionality.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  disableRequest(CommandId cmdId) generates (WifiStatus status);
+
+  /**
+   * Publish request to advertize a service.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanPublishRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  publishRequest(CommandId cmdId, NanPublishRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Cancel previous publish requests.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanPublishCancelRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  publishCancelRequest(CommandId cmdId, NanPublishCancelRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Subscribe request to search for a service.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanSubscribeRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  subscribeRequest(CommandId cmdId, NanSubscribeRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Cancel previous subscribe requests.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanSubscribeCancelRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  subscribeCancelRequest(CommandId cmdId, NanSubscribeCancelRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * NAN transmit follow up request.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanTransmitFollowupRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  transmitFollowupRequest(CommandId cmdId, NanTransmitFollowupRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * NAN configuration request.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanConfigRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  configRequest(CommandId cmdId, NanConfigRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Set NAN Beacon or sdf payload to discovery engine.
+   * This instructs the Discovery Engine to begin publishing the
+   * received payload in any Beacon or Service Discovery Frame transmitted
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanBeaconSdfPayloadRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  beaconSdfPayloadRequest(CommandId cmdId, NanBeaconSdfPayloadRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Get NAN HAL version.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @return version Instance of |NanVersion|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  getVersion() generates (WifiStatus status, NanVersion version);
+
+  /**
+   * Get NAN capabilities.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  getCapabilities(CommandId cmdId) generates (WifiStatus status);
+
+  /**
+   * Create NAN Data Interface
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  dataInterfaceCreate(CommandId cmdId, string ifaceName)
+      generates (WifiStatus status);
+
+  /**
+   * Delete NAN Data Interface.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  dataInterfaceDelete(CommandId cmdId, string ifaceName)
+      generates (WifiStatus status);
+
+  /**
+   * Initiate a NDP session: Initiator
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanDataPathInitiatorRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  dataRequestInitiator(CommandId cmdId, NanDataPathInitiatorRequest msg)
+      generates (WifiStatus status);
+
+  /**
+   * Response to a data indication received corresponding to a NDP session. An indication
+   * is received with a data request and the responder will send a data response.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanDataPathIndicationResponse|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  dataIndicationResponse(CommandId cmdId, NanDataPathIndicationResponse msg)
+      generates (WifiStatus status);
+
+  /**
+   * NDL termination request: from either Initiator/Responder.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param msg Instance of |NanDataPathEndRequest|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  dataEnd(CommandId cmdId, NanDataPathEndRequest msg)
+      generates (WifiStatus status);
 };
diff --git a/wifi/1.0/IWifiNanIfaceEventCallback.hal b/wifi/1.0/IWifiNanIfaceEventCallback.hal
new file mode 100644
index 0000000..27b4374
--- /dev/null
+++ b/wifi/1.0/IWifiNanIfaceEventCallback.hal
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+/**
+ * NAN Response and Event Callbacks.
+ */
+interface IWifiNanIfaceEventCallback {
+  /**
+   * NotifyResponse invoked to notify the status of the Request.
+   */
+  oneway notifyResponse(CommandId id, NanResponseMsg rspData);
+
+  /**
+   * Callbacks for the various asynchornous NAN Events.
+   */
+  oneway eventPublishTerminated(NanPublishTerminatedInd event);
+
+  oneway eventMatch(NanMatchInd event);
+
+  oneway eventMatchExpired(NanMatchExpiredInd event);
+
+  oneway eventSubscribeTerminated(NanSubscribeTerminatedInd event);
+
+  oneway eventFollowup(NanFollowupInd event);
+
+  oneway eventDiscEngEvent(NanDiscEngEventInd event);
+
+  oneway eventDisabled(NanDisabledInd event);
+
+  oneway eventBeaconSdfPayload(NanBeaconSdfPayloadInd event);
+
+  oneway eventDataRequest(NanDataPathRequestInd event);
+
+  oneway eventDataConfirm(NanDataPathConfirmInd event);
+
+  oneway eventDataEnd(NanDataPathEndInd event);
+
+  oneway eventTransmitFollowup(NanTransmitFollowupInd event);
+};
diff --git a/wifi/1.0/IWifiStaIface.hal b/wifi/1.0/IWifiStaIface.hal
index 52f0d4a..8f45777 100644
--- a/wifi/1.0/IWifiStaIface.hal
+++ b/wifi/1.0/IWifiStaIface.hal
@@ -151,7 +151,7 @@
      * Channel frequencies (in Mhz) to scan if |band| is set to
      * |UNSPECIFIED|.
      */
-    vec<uint32_t> frequenciesInMhz;
+    vec<WifiChannelInMhz> frequencies;
     /**
      * Period at which this bucket must be scanned (in milliseconds). Must be an integer
      * multiple of the |basePeriodInMs| specified in the BackgroundScanParameters.
@@ -395,10 +395,10 @@
    *         |WifiStatusCode.ERROR_NOT_SUPPORTED|,
    *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
    *         |WifiStatusCode.ERROR_UNKNOWN|
-   * @return frequenciesInMhz vector of valid frequencies for the provided band.
+   * @return frequencies vector of valid frequencies for the provided band.
    */
   getValidFrequenciesForBackgroundScan(BackgroundScanBand band)
-      generates (WifiStatus status, vec<uint32_t> frequenciesInMhz);
+      generates (WifiStatus status, vec<WifiChannelInMhz> frequencies);
 
   /**
    * Start a background scan using the given cmdId as an identifier. Only one
diff --git a/wifi/1.0/IWifiStaIfaceEventCallback.hal b/wifi/1.0/IWifiStaIfaceEventCallback.hal
index 7466fc3..129c258 100644
--- a/wifi/1.0/IWifiStaIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiStaIfaceEventCallback.hal
@@ -27,11 +27,6 @@
   };
 
   /**
-   * BSSID type. 6 octets representing the physical address of an AP.
-   */
-  typedef uint8_t[6] Bssid;
-
-  /**
    * Structure describing all the information about a single access point seen
    * during the scan.
    */
@@ -39,8 +34,8 @@
     int64_t timeStampInUs;
     vec<uint8_t> ssid;
     Bssid bssid;
-    uint32_t frequencyInMhz;
     int8_t rssi;
+    WifiChannelInMhz frequency;
     uint16_t beaconPeriodInMs;
     uint16_t capability;
     vec<InformationElement> informationElements;
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index f80b9a0..a7ecf7e 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -76,3 +76,1384 @@
  * |IWifiStaIface.installApfPacketFilter|, etc.
  */
 typedef uint32_t CommandId;
+
+/**
+ * Channel frequency in Mhz.
+ */
+typedef uint32_t WifiChannelInMhz;
+
+/**
+ * Mac Address type. 6 octets representing physical address of a device.
+ */
+typedef uint8_t[6] MacAddress;
+
+/**
+ * BSSID type. 6 octets representing the physical address of an AP.
+ */
+typedef MacAddress Bssid;
+
+/**
+ * NAN specific types.
+ * TODO(b/32159498): Move to a separate nan_types.hal.
+ */
+/**
+ * Various max sizes used in the NAN interface.
+ */
+enum NanMaxSize : uint32_t {
+  SOCIAL_CHANNELS = 3,
+  SERVICE_NAME_LEN = 255,
+  MATCH_FILTER_LEN = 255,
+  SERVICE_SPECIFIC_INFO_LEN = 1024,
+  VSA_DATA_LEN = 1024,
+  MESH_DATA_LEN = 32,
+  INFRA_DATA_LEN = 32,
+  CLUSTER_ATTRIBUTE_LEN = 255,
+  SUBSCRIBE_MAX_ADDRESS = 42,
+  FAM_CHANNELS = 32,
+  POSTDISCOVERY_LEN = 5,
+  FRAME_DATA_LEN = 504,
+  DP_APP_INFO_LEN = 512,
+};
+
+/**
+ * NAN protocol Version info.
+ */
+typedef int32_t NanVersion;
+
+/** NAN Iface specific types */
+/**
+ * NAN data path identifiers.
+ */
+typedef uint32_t NanDataPathId;
+
+/**
+ * Data request Initiator/Responder app/service related info.
+ */
+struct NanDataPathAppInfo {
+  /**
+   * Max length: |MAX_DP_APP_INFO_LEN|.
+   */
+  vec<uint8_t> ndpAppInfo;
+};
+
+/**
+ * Configuration params of Data request Initiator/Responder.
+ */
+struct NanDataPathCfg {
+  /**
+   * Indicates whether to use Security/No Security.
+   */
+  bool useSecurity;
+  /**
+   * Indicating whether to use QOS/No QOS.
+   */
+  bool useQos;
+};
+
+/**
+ * Indicates the availability interval duration associated with the
+ * Availability Intervals Bitmap field
+ */
+enum NanAvailDuration : uint32_t {
+  DURATION_16MS = 0,
+  DURATION_32MS = 1,
+  DURATION_64MS = 2,
+};
+
+/**
+ * Possible connection types in Post NAN Discovery attributes.
+ */
+enum NanConnectionType : uint32_t {
+  WLAN_INFRA = 0,
+  P2P_OPER = 1,
+  WLAN_IBSS = 2,
+  WLAN_MESH = 3,
+  FURTHER_SERVICE_AVAILABILITY = 4,
+  WLAN_RANGING = 5,
+};
+
+/**
+ * Possible device roles in Post NAN Discovery attributes.
+ */
+enum NanDeviceRole : uint32_t {
+  WLAN_INFRA_AP = 0,
+  WLAN_INFRA_STA = 1,
+  P2P_OPER_GO = 2,
+  P2P_OPER_DEV = 3,
+  P2P_OPER_CLI = 4,
+};
+
+/**
+ * Data request Responder's response.
+ */
+enum NanDataPathResponseCode : uint32_t {
+  ACCEPT = 0,
+  REJECT,
+};
+
+/**
+ * Further availability per channel information.
+ */
+struct NanFurtherAvailabilityChannel {
+  /**
+   * Defined above.
+   */
+  NanAvailDuration entryControl;
+  /**
+   * 1 byte field indicating the frequency band the NAN Device
+   * must be available as defined in IEEE Std. 802.11-2012
+   * Annex E Table E-4 Global Operating Classes
+   */
+  uint8_t classVal;
+  /**
+   * 1 byte field indicating the channel the NAN Device
+   * must be available.
+   */
+  uint8_t channel;
+  /**
+   * Map Id - 4 bit field which identifies the Further
+   * availability map attribute.
+   */
+  uint8_t mapid;
+  /**
+   * Divides the time between the beginnings of consecutive "Discovery
+   * Windows" of a given NAN cluster into consecutive time intervals
+   * of equal durations. The time interval duration is specified by
+   * the |entryControl| field.
+   * A  device that sets the i-th bit of the Availability
+   * Intervals Bitmap to 1 shall be present during the corresponding
+   * i-th time interval in the operation channel indicated by the
+   * Operating Class and Channel Number fields in the same Availability Entry.
+   * A  device that sets the i-th bit of the Availability Intervals Bitmap to
+   * 0 may be present during the corresponding i-th time interval in the operation
+   * channel indicated by the Operating Class and Channel Number fields in the same
+   * Availability Entry.
+   * The size of the Bitmap is dependent upon the Availability Interval Duration
+   * Chosen in the Entry Control Field.  The size can be either 1, 2 or 4 bytes long
+   * - Duration field is equal to 0, only AIB[0] is valid
+   * - Duration field is equal to 1, only AIB [0] and AIB [1] is valid
+   * - Duration field is equal to 2, AIB [0], AIB [1], AIB [2] and AIB [3] are valid
+   */
+  uint32_t availIntervalBitmap;
+};
+
+/**
+ * NAN Publish Types.
+ */
+enum NanPublishType : uint32_t {
+  UNSOLICITED = 0,
+  SOLICITED,
+  UNSOLICITED_SOLICITED,
+};
+
+/**
+ * NAN Transmit Priorities.
+ */
+enum NanTxPriority : uint32_t {
+  NORMAL = 0,
+  HIGH,
+};
+
+/**
+ * NAN Transmit Types.
+ */
+enum NanTxType : uint32_t {
+  BROADCAST = 0,
+  UNICAST,
+};
+
+/**
+ * NAN Subscribe Type.
+ */
+enum NanSubscribeType : uint32_t {
+  PASSIVE = 0,
+  ACTIVE,
+};
+
+/**
+ * NAN Service Response Filter Attribute Bit.
+ */
+enum NanSrfType : uint32_t {
+  BLOOM_FILTER = 0,
+  PARTIAL_MAC_ADDR,
+};
+
+/**
+ * NAN Service Response Filter Include Bit.
+ */
+enum NanSrfIncludeType : uint32_t {
+  DO_NOT_RESPOND = 0,
+  RESPOND,
+};
+
+/**
+ * NAN Match indication type.
+ */
+enum NanMatchAlg : uint32_t {
+  MATCH_ONCE = 0,
+  MATCH_CONTINUOUS,
+  MATCH_NEVER,
+};
+
+/**
+ * NAN Transmit Window Type.
+ */
+enum NanTransmitWindowType : uint32_t {
+  DW = 0,
+  FAW,
+};
+
+/**
+ * NAN DP channel config options.
+ */
+enum NanDataPathChannelCfg : uint32_t {
+  CHANNEL_NOT_REQUESTED = 0,
+  REQUEST_CHANNEL_SETUP,
+  FORCE_CHANNEL_SETUP,
+};
+
+/**
+ * Host can send Vendor specific attributes which the Discovery Engine can
+ * enclose in Beacons and/or Service Discovery frames transmitted.
+ * Below structure is used to populate that.
+ * TODO(b/32207606): This can be moved to vendor extension to the HIDL.
+ */
+struct NanTransmitVendorSpecificAttribute {
+  /**
+   * 0 = transmit only in the next discovery window
+   * 1 = transmit in next 16 discovery window
+   */
+  uint8_t payloadTransmitFlag;
+  /**
+   * Below flags must determine in which all frames
+   * the vendor specific attributes must be included
+   */
+  uint8_t txInDiscoveryBeacon;
+  uint8_t txInSyncBeacon;
+  uint8_t txInServiceDiscovery;
+  /**
+   * Organizationally Unique Identifier.
+   */
+  uint32_t vendorOui;
+  /**
+   * Vendor specific attribute to be transmitted.
+   * Max length: |MAX_VSA_DATA_LEN|.
+   */
+  vec<uint8_t> vsa;
+};
+
+/**
+ * Host can set the Periodic scan parameters for each of the
+ * 3(6, 44, 149) Social channels. Only these channels are allowed
+ * any other channels are rejected
+ */
+ enum NanChannelIndex : uint32_t {
+  CHANNEL_24G_BAND = 0,
+  CHANNEL_5G_BAND_LOW,
+  CHANNEL_5G_BAND_HIGH,
+};
+
+/**
+ * Structure to set the Social Channel Scan parameters
+ * passed as part of EnableRequest/ConfigRequest.
+ */
+struct NanSocialChannelScanParams {
+  /**
+   * Dwell time of each social channel in milliseconds
+   * ChannelIndex corresponds to the respective channel
+   * If time set to 0 then the FW default time must be used.
+   * Max length: |MAX_SOCIAL_CHANNELS|.
+   * dwellTime[i] refers to the dwell time of the i'th social channel.
+   */
+  vec<uint8_t> dwellTime;
+  /**
+   * Scan period of each social channel in seconds
+   * ChannelIndex corresponds to the respective channel
+   * If time set to 0 then the FW default time must be used.
+   * Max length: |MAX_SOCIAL_CHANNELS|.
+   * scanPeriod[i] refers to the scan period of the i'th social channel.
+   */
+  vec<uint16_t> scanPeriod;
+};
+
+/**
+ * Enable Request Message Structure
+ * The EnableReq message in  structs the Discovery Engine to enter an operational state
+ */
+struct NanEnableRequest {
+  /**
+   * Mandatory parameters below.
+   */
+  uint8_t masterPref;
+  /**
+   * A cluster_low value matching cluster_high indicates a request to join
+   * a cluster with that value. If the requested cluster is not found the
+   * device must start its own cluster.
+   */
+  uint16_t clusterLow;
+  uint16_t clusterHigh;
+  /**
+   * Optional configuration of Enable request.
+   * Each of the optional parameters have configure flag which
+   * determine whether configuration is to be passed or not.
+   * TODO(b/32207606): Check if these config variables needed or not.
+   */
+  bool validSupport5gVal;
+  uint8_t support5gVal;
+  /**
+   * BIT 0 is used to specify to include Service IDs in Sync/Discovery beacons
+   * 0 - Do not include SIDs in any beacons
+   * 1 - Include SIDs in all beacons.
+   * Rest 7 bits are count field which allows control over the number of SIDs
+   * included in the Beacon.  0 means to include as many SIDs that fit into
+   * the maximum allow Beacon frame size
+   */
+  bool validSidBeaconVal;
+  uint8_t sidBeaconVal;
+  /**
+   * The rssi values below must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  bool valid2dot4gRssiCloseVal;
+  uint8_t rssiClose2dot4gVal;
+  bool valid2dot4gRssiMiddleVal;
+  uint8_t rssiMiddle2dot4gVal;
+  bool valid2dot4gRssiProximityVal;
+  uint8_t rssiProximity2dot4gVal;
+  bool validHopCountLimitVal;
+  uint8_t hopCountLimitVal;
+  /**
+   * Defines 2.4G channel access support
+   */
+  bool valid2dot4gSupportVal;
+  bool support2dot4gVal;
+  /**
+   * Defines 2.4G channels must be used for sync/discovery beacons
+   */
+  bool valid2dot4gBeaconsVal;
+  bool beacon2dot4gVal;
+  /**
+   * Defines 2.4G channels must be used for Service Discovery frames
+   */
+  bool valid2dot4gSdfVal;
+  bool sdf2dot4gVal;
+  /**
+   * Defines 5G channels must be used for sync/discovery beacons
+   */
+  bool valid5gBeaconsVal;
+  bool beacon5gVal;
+  /**
+   * Defines 5G channels must be used for Service Discovery frames
+   */
+  bool valid5gSdfVal;
+  bool sdf5gVal;
+  /**
+   * 1 byte value which defines the RSSI in
+   * dBm for a close by Peer in 5 Ghz channels.
+   * The rssi values must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  bool valid5gRssiCloseVal;
+  uint8_t rssiClose5gVal;
+  /**
+   * 1 byte value which defines the RSSI value in
+   * dBm for a close by Peer in 5 Ghz channels.
+   * The rssi values must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  bool valid5gRssiMiddleVal;
+  uint8_t rssiMiddle5gVal;
+  /**
+   * 1 byte value which defines the RSSI filter
+   * threshold.  Any Service Descriptors received above this
+   * value that are configured for RSSI filtering must be dropped.
+   * The rssi values must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  bool valid5gRssiCloseProximityVal;
+  uint8_t rssiCloseProximity5gVal;
+  /**
+   * 1 byte quantity which defines the window size over
+   * which the “average RSSI” must be calculated over.
+   */
+  bool validRssiWindowSizeVal;
+  uint8_t rssiWindowSizeVal;
+  /**
+   * The 24 bit Organizationally Unique ID + the 8 bit Network Id.
+   */
+  uint8_t validOuiVal;
+  uint32_t ouiVal;
+  /**
+   * NAN Interface Address, If not configured the Discovery Engine
+   * must generate a 6 byte Random MAC.
+   */
+  bool validIntfAddrVal;
+  MacAddress intfAddrVal;
+  /**
+   * If set to true, the Discovery Engine must enclose the Cluster
+   * Attribute only sent in Beacons in a Vendor Specific Attribute
+   * and transmit in a Service Descriptor Frame.
+   */
+  bool configClusterAttributeVal;
+  /**
+   * The periodicity in seconds between full scan’s to find any new
+   * clusters available in the area. A Full scan must not be done
+   * more than every 10 seconds and must not be done less than every
+   * 30 seconds.
+   */
+  bool validScanParamsVal;
+  NanSocialChannelScanParams scanParamsVal;
+  /**
+   * 1 byte quantity which forces the Random Factor to a particular
+   * value for all transmitted Sync/Discovery beacons
+   */
+  bool validRandomFactorForceVal;
+  uint8_t randomFactorForceVal;
+  /**
+   * 1 byte quantity which forces the HC for all transmitted Sync and
+   * Discovery Beacon NO matter the real HC being received over the
+   * air.
+   */
+  bool validHopCountForceVal;
+  uint8_t hopCountForceVal;
+  /**
+   * Channel frequency in MHz to enable  on.
+   */
+  bool valid24gChannelVal;
+  WifiChannelInMhz channel24gVal;
+  bool valid5gChannelVal;
+  WifiChannelInMhz channel5gVal;
+};
+
+
+/**
+ * Publish Msg Structure
+ * Message is used to request the DE to publish the Service Name
+ * using the parameters passed into the "Discovery Window".
+ */
+struct NanPublishRequest {
+  /**
+   * Id  0 means new publish, any other id is existing publish.
+   */
+  uint16_t publishId;
+  /**
+   * How many seconds to run for. 0 means forever until canceled.
+   */
+  uint16_t ttl;
+  /**
+   * Periodicity of OTA unsolicited publish. Specified in increments of 500 ms.
+   */
+  uint16_t period;
+  /**
+   * 0= unsolicited, solicited = 1, 2= both.
+   */
+  NanPublishType publishType;
+  /**
+   * 0 = broadcast, 1= unicast  if solicited publish.
+   */
+  NanTxType txType;
+  /**
+   * Number of OTA Publish, 0 means forever until canceled.
+   */
+  uint8_t publishCount;
+  /**
+   * UTF-8 encoded string identifying the service.
+   * Max length: |MAX_SERVICE_NAME_LEN|.
+   */
+  string serviceName;
+  /**
+   * Field which specifies how the matching indication to host is controlled.
+   * 0 - Match and Indicate Once
+   * 1 - Match and Indicate continuous
+   * 2 - Match and Indicate never. This means don't indicate the match to
+   *     the host.
+   * 3 - Reserved
+   */
+  NanMatchAlg publishMatchIndicator;
+  /**
+   * Sequence of values NAN Device that has invoked a Subscribe method
+   * corresponding to this Publish method.
+   * Max length: |MAX_SERVICE_SPECIFIC_INFO_LEN|.
+   */
+  vec<uint8_t> serviceSpecificInfo;
+  /**
+   * Ordered sequence of <length, value> pairs which specify further response conditions
+   * beyond the service name used to filter subscribe messages to respond to.
+   * This is only needed when the PT is set to SOLICITED or SOLICITED_UNSOLICITED.
+   * Max length: |MAX_MATCH_FILTER_LEN|.
+   */
+  vec<uint8_t> rxMatchFilter;
+  /**
+   * Ordered sequence of <length, value> pairs to be included in the Discovery Frame.
+   * If present it is always sent in a Discovery Frame
+   * Max length: |MAX_MATCH_FILTER_LEN|.
+   */
+  vec<uint8_t> txMatchFilter;
+  /**
+   * Flag which specifies that the Publish must use the configured RSSI
+   * threshold and the received RSSI in order to filter requests
+   * false – ignore the configured RSSI threshold when running a Service
+   * Descriptor attribute or Service ID List Attribute through the DE matching logic.
+   * true – use the configured RSSI threshold when running a Service
+   * Descriptor attribute or Service ID List Attribute through the DE matching logic.
+   */
+  bool useRssiThreshold;
+  /**
+   * 8-bit bitmap which allows the Host to associate this publish
+   * with a particular Post-NAN Connectivity attribute
+   * which has been sent down in a ConfigureRequest/EnableRequest
+   * message.  If the DE fails to find a configured Post-NAN
+   * connectivity attributes referenced by the bitmap,
+   * the DE must return an error code to the Host.
+   * If the Publish is configured to use a Post-NAN Connectivity
+   * attribute and the Host does not refresh the Post-NAN Connectivity
+   * attribute the Publish must be canceled and the Host must be sent
+   * a PublishTerminatedIndication message.
+   */
+  uint8_t connmap;
+  /**
+   * Set/Enable corresponding bits to disable any indications that follow a publish.
+   * BIT0 - Disable publish termination indication.
+   * BIT1 - Disable match expired indication.
+   * BIT2 - Disable followUp indication received (OTA).
+   */
+  uint8_t recvIndicationCfg;
+};
+
+/**
+ * Publish Cancel Msg Structure.
+ * The PublishServiceCancelReq Message is used to request the DE to stop publishing
+ * the Service Name identified by the Publish Id in the message.
+ */
+struct NanPublishCancelRequest {
+  uint16_t publishId;
+};
+
+/**
+ * NAN Subscribe Structure.
+ * The SubscribeServiceReq message is sent to the Discovery Engine
+ * whenever the Upper layers would like to listen for a Service Name
+ */
+struct NanSubscribeRequest {
+  /**
+   * Id 0 means new subscribe, non zero is existing subscribe.
+   */
+  uint16_t subscribeId;
+  /**
+   * How many seconds to run for. 0 means forever until canceled.
+   */
+  uint16_t ttl;
+  /**
+   * Periodicity of OTA Active Subscribe. Units in increments of 500 ms,
+   * 0 = attempt every DW.
+   */
+  uint16_t period;
+  /**
+   * Flag which specifies how the Subscribe request shall be processed.
+   * 0 - PASSIVE , 1- ACTIVE.
+   */
+  NanSubscribeType subscribeType;
+  /**
+   * Flag which specifies on Active Subscribes how the Service Response Filter
+   * attribute is populated.
+   * 0 - Bloom Filter, 1 - MAC Addr.
+   */
+  NanSrfType serviceResponseFilter;
+  /**
+   * Flag which specifies how the Service Response Filter Include bit is
+   * populated.
+   * 0=Do not respond if in the Address Set, 1= Respond.
+   */
+  NanSrfIncludeType serviceResponseInclude;
+  /**
+   * Flag which specifies if the Service Response Filter must be used when
+   * creating Subscribes.
+   * 0=Do not send the Service Response Filter,1= send.
+   */
+  bool shouldUseServiceResponseFilter;
+  /**
+   * Flag which specifies if the Service Specific Info is needed in
+   * the Publish message before creating the MatchIndication.
+   * 0=Not needed, 1= Required.
+   */
+  bool isSsiRequiredForMatchIndication;
+  /**
+   * Field which specifies how the matching indication to host is controlled.
+   * 0 - Match and Indicate Once
+   * 1 - Match and Indicate continuous
+   * 2 - Match and Indicate never. This means don't indicate the match to the
+   *     host.
+   * 3 - Reserved
+   */
+  NanMatchAlg subscribeMatchIndicator;
+  /**
+   * The number of Subscribe Matches which must occur
+   * before the Subscribe request is automatically terminated.
+   * If this value is 0 this field is not used by the DE.
+   */
+  uint8_t subscribeCount;
+  /**
+   * UTF-8 encoded string identifying the service.
+   * Max length: |MAX_SERVICE_NAME_LEN|.
+   */
+  string serviceName;
+  /**
+   * Sequence of values which further specify the published service beyond the
+   * service name.
+   * Max length: |MAX_SERVICE_SPECIFIC_INFO_LEN|.
+   */
+  vec<uint8_t> serviceSpecificInfo;
+  /**
+   * Ordered sequence of <length, value> pairs used to filter out received
+   * publish discovery messages.
+   * This can be sent both for a Passive or an Active Subscribe
+   * Max length: |MAX_MATCH_FILTER_LEN|.
+   */
+  vec<uint8_t> rxMatchFilter;
+  /**
+   * Ordered sequence of <length, value> pairs  included in the
+   * Discovery Frame when an Active Subscribe is used.
+   * Max length: |MAX_MATCH_FILTER_LEN|.
+   */
+  vec<uint8_t> txMatchFilter;
+  /**
+   * Flag which specifies that the Publish must use the configured RSSI
+   * threshold and the received RSSI in order to filter requests
+   * false – ignore the configured RSSI threshold when running a Service
+   * Descriptor attribute or Service ID List Attribute through the DE matching logic.
+   * true – use the configured RSSI threshold when running a Service
+   * Descriptor attribute or Service ID List Attribute through the DE matching logic.
+   */
+  bool useRssiThreshold;
+  /**
+   * 8-bit bitmap which allows the Host to associate this Active
+   * Subscribe with a particular Post-NAN Connectivity attribute
+   * which has been sent down in a ConfigureRequest/EnableRequest
+   * message.  If the DE fails to find a configured Post-NAN
+   * connectivity attributes referenced by the bitmap,
+   * the DE must return an error code to the Host.
+   * If the Subscribe is configured to use a Post-NAN Connectivity
+   * attribute and the Host does not refresh the Post-NAN Connectivity
+   * attribute the Subscribe must be canceled and the Host must be sent
+   * a SubscribeTerminatedIndication message.
+   */
+  uint8_t connmap;
+  /**
+   * NAN Interface Address, conforming to the format as described in
+   * 8.2.4.3.2 of IEEE Std. 802.11-2012.
+   * Max length: |MAX_SUBSCRIBE_MAX_ADDRESS|.
+   */
+  vec<MacAddress> intfAddr;
+  /**
+   * Set/Enable corresponding bits to disable indications that follow a
+   * subscribe.
+   * BIT0 - Disable subscribe termination indication.
+   * BIT1 - Disable match expired indication.
+   * BIT2 - Disable followUp indication received (OTA).
+   */
+  uint8_t recvIndicationCfg;
+};
+
+/**
+ * NAN Subscribe Cancel Structure
+ * The SubscribeCancelReq Message is used to request the DE to stop looking
+ * for the Service Name.
+ */
+struct NanSubscribeCancelRequest {
+  uint16_t subscribeId;
+};
+
+/**
+ * Transmit follow up Structure.
+ * The TransmitFollowupReq message is sent to the DE to allow the sending of
+ * the Service_Specific_Info to a particular MAC address.
+ */
+struct NanTransmitFollowupRequest {
+  /**
+   * Publish or Subscribe Id of an earlier Publish/Subscribe.
+   */
+  uint16_t publishSubscribeId;
+  /**
+   * This Id is the Requestor Instance that is passed as
+   * part of earlier MatchInd/FollowupInd message.
+   */
+  uint32_t requestorInstanceId;
+  /**
+   * Unicast address.
+   */
+  MacAddress addr;
+  /**
+   * Priority of the request 2=high.
+   */
+  NanTxPriority priority;
+  /**
+   * Flag which the DE uses to decide if received in a DW or a FAW
+   * 0= send in a DW, 1=send in FAW.
+   */
+  NanTransmitWindowType dwOrFaw;
+  /**
+   * Sequence of values which further specify the published service beyond
+   * the service name.
+   * Max length: |MAX_SERVICE_SPECIFIC_INFO_LEN|.
+   */
+  vec<uint8_t> serviceSpecificInfo;
+  /**
+   * Set/Enable corresponding bits to disable responses after followUp.
+   * BIT0 - Disable followUp response from FW.
+   */
+  uint8_t recvIndicationCfg;
+};
+
+/**
+ * Config Structure.
+ * The ConfigurationReq message is sent by the Host to the
+ * Discovery Engine in order to configure the Discovery Engine during runtime.
+ */
+struct NanConfigRequest {
+  bool validSidBeaconVal;
+  uint8_t sidBeacon;
+  bool validRssiProximityVal;
+  uint8_t rssiProximity;
+  bool validMasterPrefVal;
+  uint8_t masterPref;
+  /**
+   * 1 byte value which defines the RSSI filter threshold.
+   * Any Service Descriptors received above this value
+   * that are configured for RSSI filtering must be dropped.
+   * The rssi values must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  bool valid5gRssiCloseProximityVal;
+  uint8_t rssiCloseProximity5gVal;
+  /**
+   * 2 byte quantity which defines the window size over
+   * which the “average RSSI” must be calculated over.
+   */
+  bool validRssiWindowSizeVal;
+  uint16_t rssiWindowSizeVal;
+  /**
+   * If set to 1, the Discovery Engine must enclose the Cluster
+   * Attribute only sent in Beacons in a Vendor Specific Attribute
+   * and transmit in a Service Descriptor Frame.
+   */
+  bool configClusterAttributeVal;
+  /**
+   * The periodicity in seconds between full scan’s to find any new
+   * clusters available in the area.  A Full scan must not be done
+   * more than every 10 seconds and must not be done less than every
+   * 30 seconds.
+   */
+  bool validScanParamsVal;
+  NanSocialChannelScanParams scanParamsVal;
+  /**
+   * 1 byte quantity which forces the Random Factor to a particular
+   * value for all transmitted Sync/Discovery beacons
+   */
+  bool validRandomFactorForceVal;
+  uint8_t randomFactorForceVal;
+  /**
+   * 1 byte quantity which forces the HC for all transmitted Sync and
+   * Discovery Beacon NO matter the real HC being received over the
+   * air.
+   */
+  bool validHopCountForceVal;
+  uint8_t hopCountForceVal;
+};
+
+/**
+ * Beacon Sdf Payload Structure
+ * The Discovery Engine can be configured to publish vendor specific attributes as part of
+ * beacon or service discovery frame transmitted as part of this request..
+ */
+struct NanBeaconSdfPayloadRequest {
+  /**
+   * VendorAttribute must have the Vendor Specific Attribute which the
+   * vendor wants to publish as part of Discovery or Sync or Service discovery frame
+   */
+  NanTransmitVendorSpecificAttribute vsa;
+};
+
+/**
+ *  Data Path Initiator requesting a data session.
+ */
+struct NanDataPathInitiatorRequest {
+  /**
+   * Unique Instance Id identifying the Responder's service.
+   * This is same as publish_id notified on the subscribe side
+   * in a publish/subscribe scenario
+   */
+  uint32_t serviceInstanceId;
+  /**
+   * Config flag for channel request.
+   */
+  NanDataPathChannelCfg channelRequestType;
+  /**
+   * Channel frequency in MHz to start data-path.
+   */
+  WifiChannelInMhz channel;
+  /**
+   * Discovery MAC addr of the publisher/peer.
+   */
+  MacAddress peerDiscMacAddr;
+  /**
+   * Interface name on which this NDP session is to be started.
+   * This must be the same interface name provided during interface
+   * create.
+   */
+  string ndpIface;
+  /**
+   * Initiator/Responder Security/QoS configuration.
+   */
+  NanDataPathCfg ndpCfg;
+  /**
+   * App/Service information of the Initiator.
+   */
+  NanDataPathAppInfo appInfo;
+};
+
+/**
+ * Data struct Nanto initiate a data response on the responder side
+ * for an indication received with a data request.
+ */
+struct NanDataPathIndicationResponse {
+  /**
+   * Unique token Id generated on the initiator/responder
+   * side used for a NDP session between two NAN devices.
+   */
+  NanDataPathId ndpInstanceId;
+  /**
+   * Interface name on which this NDP session is to be started.
+   * This must be the same interface name provided during interface
+   * create.
+   */
+  string ndpIface;
+  /**
+   * Initiator/Responder Security/QoS configuration.
+   */
+  NanDataPathCfg ndpCfg;
+  /**
+   * App/Service information of the responder.
+   */
+  NanDataPathAppInfo appInfo;
+  /**
+   * Response Code indicating ACCEPT/REJECT/DEFER
+   */
+  NanDataPathResponseCode rspCode;
+};
+
+/**
+ * NDP termination info.
+ */
+struct NanDataPathEndRequest {
+  uint8_t numNdpInstances;
+  /**
+   * Unique token Id generated on the initiator/responder side
+   * used for a NDP session between two NAN devices
+   */
+  vec<NanDataPathId> ndpInstanceIds;
+};
+
+/**
+ * Definition of various ResponseType
+ */
+enum NanResponseType : uint32_t  {
+  ENABLED = 0,
+  DISABLED = 1,
+  PUBLISH = 2,
+  PUBLISH_CANCEL = 3,
+  TRANSMIT_FOLLOWUP = 4,
+  SUBSCRIBE = 5,
+  SUBSCRIBE_CANCEL = 6,
+  CONFIG = 8,
+  ERROR = 10,
+  BEACON_SDF_PAYLOAD = 11,
+  GET_CAPABILITIES = 12,
+  DP_INTERFACE_CREATE = 13,
+  DP_INTERFACE_DELETE = 14,
+  DP_INITIATOR_RESPONSE = 15,
+  DP_RESPONDER_RESPONSE = 16,
+  DP_END = 17,
+};
+
+/**
+ * Various NAN Protocol Response code
+ */
+enum NanStatusType : uint32_t {
+  /* NAN Protocol Response Codes */
+  SUCCESS = 0,
+  TIMEOUT = 1,
+  DE_FAILURE = 2,
+  INVALID_MSG_VERSION = 3,
+  INVALID_MSG_LEN = 4,
+  INVALID_MSG_ID = 5,
+  INVALID_HANDLE = 6,
+  NO_SPACE_AVAILABLE = 7,
+  INVALID_PUBLISH_TYPE = 8,
+  INVALID_TX_TYPE = 9,
+  INVALID_MATCH_ALGORITHM = 10,
+  DISABLE_IN_PROGRESS = 11,
+  INVALID_TLV_LEN = 12,
+  INVALID_TLV_TYPE = 13,
+  MISSING_TLV_TYPE = 14,
+  INVALID_TOTAL_TLVS_LEN = 15,
+  INVALID_MATCH_HANDLE = 16,
+  INVALID_TLV_VALUE = 17,
+  INVALID_TX_PRIORITY = 18,
+  INVALID_CONNECTION_MAP = 19,
+  NOT_ALLOWED = 22,
+  NO_OTA_ACK = 23,
+  TX_FAIL = 24,
+  ALREADY_ENABLED = 25,
+  FOLLOWUP_QUEUE_FULL = 26,
+
+  /* NAN Configuration Response codes */
+  INVALID_RSSI_CLOSE_VALUE = 4096,
+  INVALID_RSSI_MIDDLE_VALUE = 4097,
+  INVALID_HOP_COUNT_LIMIT = 4098,
+  INVALID_MASTER_PREFERENCE_VALUE = 4099,
+  INVALID_LOW_CLUSTER_ID_VALUE = 4100,
+  INVALID_HIGH_CLUSTER_ID_VALUE = 4101,
+  INVALID_BACKGROUND_SCAN_PERIOD = 4102,
+  INVALID_RSSI_PROXIMITY_VALUE = 4103,
+  INVALID_SCAN_CHANNEL = 4104,
+  INVALID_POST_CONNECTIVITY_CAPABILITIES_BITMAP = 4105,
+  INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106,
+  INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107,
+  INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108,
+  INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109,
+  INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110,
+  INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111,
+  INVALID_POST_DISCOVERY_CONN_TYPE_VALUE = 4112,
+  INVALID_POST_DISCOVERY_DEVICE_ROLE_VALUE = 4113,
+  INVALID_POST_DISCOVERY_DURATION_VALUE = 4114,
+  INVALID_POST_DISCOVERY_BITMAP_VALUE = 4115,
+  MISSING_FUTHER_AVAILABILITY_MAP = 4116,
+  INVALID_BAND_CONFIG_FLAGS = 4117,
+  INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118,
+  INVALID_ONGOING_SCAN_PERIOD = 4119,
+  INVALID_DW_INTERVAL_VALUE = 4120,
+  INVALID_DB_INTERVAL_VALUE = 4121,
+
+  /* 4122-8191 RESERVED */
+  TERMINATED_REASON_INVALID = 8192,
+  TERMINATED_REASON_TIMEOUT = 8193,
+  TERMINATED_REASON_USER_REQUEST = 8194,
+  TERMINATED_REASON_FAILURE = 8195,
+  TERMINATED_REASON_COUNT_REACHED = 8196,
+  TERMINATED_REASON_DE_SHUTDOWN = 8197,
+  TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198,
+  TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199,
+  TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200,
+  TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201,
+
+  /* 9000-9500 NDP Status type */
+  NDP_UNSUPPORTED_CONCURRENCY = 9000,
+  NDP_DATA_IFACE_CREATE_FAILED = 9001,
+  NDP_DATA_IFACE_DELETE_FAILED = 9002,
+  NDP_DATA_INITIATOR_REQUEST_FAILED = 9003,
+  NDP_DATA_RESPONDER_REQUEST_FAILED = 9004,
+  NDP_INVALID_SERVICE_INSTANCE_ID = 9005,
+  NDP_INVALID_NDP_INSTANCE_ID = 9006,
+  NDP_INVALID_RESPONSE_CODE = 9007,
+  NDP_INVALID_APP_INFO_LEN = 9008,
+
+  /* OTA failures and timeouts during negotiation */
+  NDP_MGMT_FRAME_REQUEST_FAILED = 9009,
+  NDP_MGMT_FRAME_RESPONSE_FAILED = 9010,
+  NDP_MGMT_FRAME_CONFIRM_FAILED = 9011,
+  NDP_END_FAILED = 9012,
+  NDP_MGMT_FRAME_END_REQUEST_FAILED = 9013,
+
+  /* 9500 onwards vendor specific error codes */
+  NDP_VENDOR_SPECIFIC_ERROR = 9500,
+};
+
+/**
+ * Publish Response Message structure.
+ */
+struct NanPublishResponse {
+  uint16_t publishId;
+};
+
+/**
+ * Subscribe Response Message structure.
+ */
+struct NanSubscribeResponse {
+  uint16_t subscribeId;
+};
+
+/**
+ * Response returned for Initiators Data request.
+ */
+struct NanDataPathRequestResponse {
+  /**
+   * Unique token Id generated on the initiator
+   * side used for a NDP session between two NAN devices
+   */
+  NanDataPathId ndpInstanceId;
+};
+
+/**
+ * NDP Capabilites info.
+ */
+struct NanCapabilities {
+  uint32_t maxConcurrentClusters;
+  uint32_t maxPublishes;
+  uint32_t maxSubscribes;
+  uint32_t maxServiceNameLen;
+  uint32_t maxMatchFilterLen;
+  uint32_t maxTotalMatchFilterLen;
+  uint32_t maxServiceSpecificInfoLen;
+  uint32_t maxVsaDataLen;
+  uint32_t maxMeshDataLen;
+  uint32_t maxNdiInterfaces;
+  uint32_t maxNdpSessions;
+  uint32_t maxAppInfoLen;
+  uint32_t maxQueuedTransmitFollowupMsgs;
+};
+
+/**
+ * NAN Response Message body.
+ */
+union NanResponseMsgBody {
+    NanPublishResponse publishResponse;
+    NanSubscribeResponse subscribeResponse;
+    NanDataPathRequestResponse dataRequestResponse;
+    NanCapabilities nanCapabilities;
+};
+
+/**
+ * NAN Response Messages.
+ */
+struct NanResponseMsg {
+  /**
+   * Contains the result code.
+   */
+  NanStatusType status;
+  /**
+   * For error returns the value is returned which was in error.
+   */
+  uint32_t value;
+  /**
+   * ResponseType Definitions.
+   */
+  NanResponseType responseType;
+  NanResponseMsgBody body;
+};
+
+/**
+ * Publish Terminated Message structure.
+ * The PublishTerminatedInd message is sent by the DE whenever a Publish
+ * terminates from a user-specified timeout or a unrecoverable error in the DE.
+ */
+struct NanPublishTerminatedInd {
+  /**
+   * Id returned during the initial Publish.
+   */
+  uint16_t publishId;
+  NanStatusType reason;
+};
+
+/**
+ * Match Indication Message structure.
+ * The MatchInd message is sent once per responding MAC address whenever
+ * the Discovery Engine detects a match for a previous SubscribeServiceReq
+ * or PublishServiceReq.
+ */
+struct NanMatchInd {
+  /**
+   * Publish or Subscribe Id of an earlier Publish/Subscribe.
+   */
+  uint16_t publishSubscribeId;
+  /**
+   * A 32 bit Requestor Instance Id which is sent to the Application.
+   * This Id must be sent in any subsequent UnmatchInd/FollowupInd
+   * messages.
+   */
+  uint32_t requestorInstanceId;
+  MacAddress addr;
+  /**
+   * Sequence of octets which were received in a Discovery Frame matching the
+   * Subscribe Request.
+   * Max length: |MAX_SERVICE_SPECIFIC_INFO_LEN|.
+   */
+  vec<uint8_t> serviceSpecificInfo;
+  /**
+   * Ordered sequence of <length, value> pairs received in the Discovery Frame
+   * matching the Subscribe Request.
+   * Max length: |MAX_MATCH_FILTER_LEN|.
+   */
+  vec<uint8_t> sdfMatchFilter;
+  /**
+   * Flag to indicate if the Match occurred in a Beacon Frame or in a
+   * Service Discovery Frame.
+   */
+  bool matchOccuredFlag;
+  /**
+   * Flag to indicate FW is out of resource and that it can no longer
+   * track this Service Name. The Host still need to send the received
+   * Match_Handle but duplicate MatchInd messages may be received on
+   * this Handle until the resource frees up.
+   */
+  bool outOfResourceFlag;
+  /**
+   * If RSSI filtering was configured in SubscribeRequest then this
+   * field must contain the received RSSI value. 0 if not.
+   * All rssi values must be specified without sign.
+   * For eg: -70dBm must be specified as 70.
+   */
+  uint8_t rssiValue;
+};
+
+/**
+ * MatchExpired Indication Message structure.
+ * The MatchExpiredInd message is sent whenever the Discovery Engine detects that
+ * a previously Matched Service has been gone for too long. If the previous
+ * MatchInd message for this Publish/Subscribe Id had the out_of_resource_flag
+ * set then this message must not be received
+ */
+struct NanMatchExpiredInd {
+  /**
+   * Publish or Subscribe Id of an earlier Publish/Subscribe.
+   */
+  uint16_t publishSubscribeId;
+  /**
+   * 32 bit value sent by the DE in a previous
+   * MatchInd/FollowupInd to the application.
+   */
+  uint32_t requestorInstanceId;
+};
+
+/**
+ * Subscribe Terminated Message structure.
+ * The SubscribeTerminatedInd message is sent by the DE whenever a
+ * Subscribe terminates from a user-specified timeout or a unrecoverable error in the DE.
+ */
+struct NanSubscribeTerminatedInd {
+  /**
+   * Id returned during initial Subscribe.
+   */
+  uint16_t subscribeId;
+  NanStatusType reason;
+};
+
+/**
+ * Followup Indication Message structure.
+ * The FollowupInd message is sent by the DE to the Host whenever it receives a
+ * Followup message from another peer.
+ */
+struct NanFollowupInd {
+  /**
+   * Publish or Subscribe Id of an earlier Publish/Subscribe.
+   */
+  uint16_t publishSubscribeId;
+  /**
+   * A 32 bit Requestor instance Id which is sent to the Application.
+   * This Id must be used in subsequent UnmatchInd/FollowupInd messages.
+   */
+  uint32_t requestorInstanceId;
+  MacAddress addr;
+  /**
+   * Flag which the DE uses to decide if received in a DW or a FAW
+   * 0= send in a DW, 1=send in FAW.
+   */
+  NanTransmitWindowType dwOrFaw;
+  /**
+   * Sequence of values which further specify the published service beyond
+   * the service name
+   * Max length: |MAX_SERVICE_SPECIFIC_INFO_LEN|.
+   */
+  vec<uint8_t> serviceSpecificInfo;
+};
+
+/**
+ * NAN Protocol Event ID Codes.
+ */
+enum NanDiscEngEventType : uint32_t {
+  /**
+   * Event data notifying the Mac address of the Discovery engine.
+   * which is reported as one of the Discovery engine event
+   */
+  DISC_MAC_ADDR = 0,
+  /**
+   * Event data notifying the Cluster address of the cluster
+   * which is reported as one of the Discovery engine events.
+   */
+  STARTED_CLUSTER,
+  JOINED_CLUSTER,
+};
+
+/**
+ * Discovery Engine Event Indication Message structure.
+ * The Discovery Engine can inform the Host when significant events occur
+ * The data following the EventId is dependent upon the EventId type.
+ * In other words, each new event defined must carry a different
+ * structure of information back to the host.
+ */
+struct NanDiscEngEventInd {
+  /**
+   * NAN Protocol Event Codes.
+   */
+  NanDiscEngEventType eventType;
+  /**
+   * Mac Address associated with the corresponding event.
+   */
+  MacAddress addr;
+};
+
+/**
+ * NAN Disabled Indication Message structure.
+ * The DisableInd message indicates to the upper layers that the Discovery
+ * Engine has flushed all state and has been shutdown.  When this message is
+ * received the DE is guaranteed to have left the NAN cluster it was part of
+ * and must have terminated any in progress Publishes or Subscribes.
+ */
+struct NanDisabledInd {
+  NanStatusType reason;
+};
+
+/**
+ * Mask to determine on which frames attribute was received.
+ */
+enum NanVsaRxFrameMask: uint32_t {
+  DISCOVERY_BEACON_MASK = 1 << 0,
+  SYNC_BEACON_MASK = 1 << 1,
+  SERVICE_DISCOVERY_MASK = 1 << 2
+};
+
+struct NanReceiveVendorSpecificAttribute {
+  /**
+   * Frames on which this vendor specific attribute
+   * was received. Mask |NanVsaRxFrameMask| defined above.
+   */
+  uint8_t vsaReceivedOn;
+  /**
+   * Organizationally Unique Identifier.
+   */
+  uint32_t vendorOui;
+  /**
+   * Vendor specific attribute.
+   * Max length: |MAX_VSA_DATA_LEN|.
+   */
+  vec<uint8_t> vsa;
+};
+
+/**
+ * NAN Beacon SDF Payload Received Message structure.
+ * Discovery engine sends the details of received Beacon or
+ * Service Discovery Frames as part of this structure.
+ */
+struct NanBeaconSdfPayloadReceive {
+  /**
+   * Frame data.
+   * Max length: |MAX_FRAME_DATA_LEN|.
+   */
+  vec<uint8_t> frameData;
+};
+
+/**
+ * NAN Beacon or SDF Payload Indication Message structure.
+ * The BeaconSdfPayloadInd message indicates to the upper layers that information
+ * elements were received either in a Beacon or SDF which needs to be delivered
+ * outside of a Publish/Subscribe Handle.
+ */
+struct NanBeaconSdfPayloadInd {
+  /**
+   * The MAC address of the peer which sent the attributes.
+   */
+  MacAddress addr;
+  /**
+   * NAN Receive Vendor Specific Attribute.
+   */
+  bool isVsaReceived;
+  NanReceiveVendorSpecificAttribute vsa;
+  /**
+   * NAN Beacon or SDF Payload Received.
+   */
+  bool isBeaconSdfPayloadReceived;
+  NanBeaconSdfPayloadReceive data;
+};
+
+/**
+ * NAN Data path request Indication Message structure.
+ * Event indication received on the responder side when a Nan Data request or
+ * NDP session is initiated on the Initiator side.
+ */
+struct NanDataPathRequestInd {
+  /**
+   * Unique Instance Id corresponding to a service/session.
+   * This is similar to the publish_id generated on the
+   * publisher side.
+   */
+  uint16_t serviceInstanceId;
+  /**
+   * Discovery MAC addr of the peer/initiator.
+   */
+  MacAddress peerDiscMacAddr;
+  /**
+   * Unique token Id generated on the initiator/responder side
+   * used for a NDP session between two NAN devices.
+   */
+  NanDataPathId ndpInstanceId;
+  /**
+   * Initiator/Responder Security/QoS configuration.
+   */
+  NanDataPathCfg ndpCfg;
+  /**
+   * App/Service information of the initiator.
+   */
+  NanDataPathAppInfo appInfo;
+};
+
+/**
+ * NAN Data path confirmation Indication Message structure.
+ * Event indication of data confirm is received on both
+ * initiator and responder side confirming a NDP session.
+ */
+struct NanDataPathConfirmInd {
+  /**
+   * Unique token Id generated on the initiator/responder side
+   * used for a NDP session between two NAN devices
+   */
+  NanDataPathId ndpInstanceId;
+  /**
+   * NDI mac address of the peer.
+   * (required to derive target ipv6 address)
+   */
+  MacAddress peerNdiMacAddr;
+  /**
+   * App/Service information of Initiator/Responder.
+   */
+  NanDataPathAppInfo appInfo;
+  /**
+   * Response code indicating ACCEPT/REJECT/DEFER.
+   */
+  NanDataPathResponseCode rspCode;
+  /**
+   * Reason code indicating the cause for REJECT.
+   */
+  NanStatusType reasonCode;
+};
+
+/**
+ * NAN Data path end Indication Message structure.
+ * Event indication received on the initiator/responder side terminating
+ * a NDP session
+ */
+struct NanDataPathEndInd {
+  /**
+   * Unique token Id generated on the initiator/responder side
+   * used for a NDP session between two NAN devices
+   */
+  vec<NanDataPathId> ndpInstanceIds;
+};
+
+/**
+ * NAN Transmit followup Indication Message structure.
+ * Event Indication notifying the transmit followup in progress.
+ */
+struct NanTransmitFollowupInd {
+  CommandId cmdId;
+  NanStatusType reason;
+};
+