Wifi: Add HAL API and implementation for instant mode filter

Bug: 203220137
Test: pass vts test
Change-Id: I7f4d9d4390ad69bcfdb2419c2e172c4df2d6863b
diff --git a/wifi/1.6/IWifiChip.hal b/wifi/1.6/IWifiChip.hal
index b252a05..eaa2400 100644
--- a/wifi/1.6/IWifiChip.hal
+++ b/wifi/1.6/IWifiChip.hal
@@ -28,6 +28,19 @@
  */
 interface IWifiChip extends @1.5::IWifiChip {
     /**
+     * Usable Wifi channels filter masks.
+     */
+    enum UsableChannelFilter : @1.5::IWifiChip.UsableChannelFilter {
+        /**
+         * Filter Wifi channels that are supported for NAN3.1 Instant communication mode. This
+         * filter should only be applied to NAN interface.
+         * - If 5G is supported default discovery channel 149/44 is considered,
+         * - If 5G is not supported then channel 6 has to be considered.
+         */
+        NAN_INSTANT_MODE = 1 << 2,
+    };
+
+    /**
      * Create a RTTController instance.
      *
      * RTT controller can be either:
diff --git a/wifi/1.6/default/hidl_struct_util.cpp b/wifi/1.6/default/hidl_struct_util.cpp
index eeea6ef..76341ff 100644
--- a/wifi/1.6/default/hidl_struct_util.cpp
+++ b/wifi/1.6/default/hidl_struct_util.cpp
@@ -433,6 +433,9 @@
     if (hidl_filter_mask & V1_5::IWifiChip::UsableChannelFilter::CONCURRENCY) {
         legacy_filter_mask |= legacy_hal::WIFI_USABLE_CHANNEL_FILTER_CONCURRENCY;
     }
+    if (hidl_filter_mask & V1_6::IWifiChip::UsableChannelFilter::NAN_INSTANT_MODE) {
+        legacy_filter_mask |= WIFI_USABLE_CHANNEL_FILTER_NAN_INSTANT_MODE;
+    }
     return legacy_filter_mask;
 }
 
diff --git a/wifi/1.6/default/wifi_chip.cpp b/wifi/1.6/default/wifi_chip.cpp
index 11512f4..a185724 100644
--- a/wifi/1.6/default/wifi_chip.cpp
+++ b/wifi/1.6/default/wifi_chip.cpp
@@ -715,7 +715,7 @@
 
 Return<void> WifiChip::getUsableChannels_1_6(
         WifiBand band, hidl_bitfield<V1_5::WifiIfaceMode> ifaceModeMask,
-        hidl_bitfield<V1_5::IWifiChip::UsableChannelFilter> filterMask,
+        hidl_bitfield<V1_6::IWifiChip::UsableChannelFilter> filterMask,
         getUsableChannels_1_6_cb _hidl_cb) {
     return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
                            &WifiChip::getUsableChannelsInternal_1_6, _hidl_cb, band, ifaceModeMask,
diff --git a/wifi/1.6/default/wifi_chip.h b/wifi/1.6/default/wifi_chip.h
index 73bdf3a..61ac03d 100644
--- a/wifi/1.6/default/wifi_chip.h
+++ b/wifi/1.6/default/wifi_chip.h
@@ -151,7 +151,7 @@
     Return<void> setCountryCode(const hidl_array<int8_t, 2>& code,
                                 setCountryCode_cb _hidl_cb) override;
     Return<void> getUsableChannels(WifiBand band, hidl_bitfield<V1_5::WifiIfaceMode> ifaceModeMask,
-                                   hidl_bitfield<UsableChannelFilter> filterMask,
+                                   hidl_bitfield<V1_5::IWifiChip::UsableChannelFilter> filterMask,
                                    getUsableChannels_cb _hidl_cb) override;
     Return<void> triggerSubsystemRestart(triggerSubsystemRestart_cb hidl_status_cb) override;
     Return<void> createRttController_1_6(const sp<IWifiIface>& bound_iface,
diff --git a/wifi/1.6/types.hal b/wifi/1.6/types.hal
index 2a49d08..ef6965d 100644
--- a/wifi/1.6/types.hal
+++ b/wifi/1.6/types.hal
@@ -764,7 +764,7 @@
     /**
      * Security Context Identifier attribute contains PMKID shall be included in NDP setup and
      * response messages. Security Context Identifier, Identifies the Security Context. When
-     * security is enabled This field contains the 16 octet PMKID identifying the PMK used for
+     * security is enabled this field contains the 16 octet PMKID identifying the PMK used for
      * setting up the Secure Data Path.
      */
     uint8_t[16] scid;