wifi(interface): Add gscan/apf related API's

Changes in the CL:
1. Add gscan/APF related API's to |IWifiStaIface|.
2. Add a new callback HIDL interface (|IWifiStaIfaceEventCallback)
for all callbacks received from |IWifiStaIface|.

Bug: 31991459
Test: Compiles
Change-Id: Id9f2ded9e20bee393ab53d84efa814d52704cd2c
diff --git a/wifi/1.0/IWifiStaIfaceEventCallback.hal b/wifi/1.0/IWifiStaIfaceEventCallback.hal
new file mode 100644
index 0000000..1ee2d4e
--- /dev/null
+++ b/wifi/1.0/IWifiStaIfaceEventCallback.hal
@@ -0,0 +1,126 @@
+/*
+ * 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;
+
+interface IWifiStaIfaceEventCallback {
+  /**
+   * Callback indicating that the requested packet filter was successfully
+   * installed.
+   */
+  oneway onInstallPacketFilterSuccess();
+
+  /**
+   * Callback indicating that installing a packet filter failed.
+   */
+  oneway onInstallPacketFilterFailure(FailureReason reason);
+
+  /**
+   * Callback indicating that a requested background scan was started.
+   */
+  oneway onBackgroundScanStarted();
+
+  /**
+   * Callback indicating that a requested background scan failed to start.
+   */
+  oneway onBackgroundScanStartFailure(FailureReason reason);
+
+  /**
+   * Callback indicating that a scan was stopped
+   */
+  oneway onBackgroundScanStopped();
+
+ /**
+  * Information elements contained within the |ScanResult| structure.
+  * These elements correspond to the IEEE_802.11 standard.
+  */
+  struct InformationElement {
+    uint8_t id;
+    vec<uint8_t> data;
+  };
+
+  /**
+   * 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.
+   */
+  struct ScanResult {
+    int64_t timeStampInUs;
+    vec<uint8_t> ssid;
+    Bssid bssid;
+    uint32_t frequencyInMhz;
+    int8_t rssi;
+    uint16_t beaconPeriodInMs;
+    uint16_t capability;
+    vec<InformationElement> informationElements;
+  };
+
+  /**
+   * Mask of flags set in the |ScanData| instance.
+   */
+  enum ScanDataFlagMask {
+    /**
+     * Indicates that a scan was interrupted/did not occur so results may be
+     * incomplete.
+     */
+    WIFI_SCAN_FLAG_INTERRUPTED = 1 << 0,
+  };
+
+  /**
+   * Structure describing all the information about all the access points seen during
+   * the scan.
+   */
+  struct ScanData {
+    /**
+     * Bitset containing |ScanDataFlagMask| values.
+     */
+    uint32_t flags;
+    /**
+     * Bitset where each bit indicates if the bucket with that index was
+     * scanned.
+     */
+    uint32_t bucketsScanned;
+    /**
+     * List of scan results.
+     */
+    vec<ScanResult> results;
+  };
+
+  /**
+   * Called for each received beacon/probe response for a scan with the
+   * |REPORT_EVENTS_FULL_RESULTS| flag set in
+   * |BackgroundScanBucketParameters.eventReportScheme|.
+   *
+   * @param cmdId command Id corresponding to the request.
+   * @parm result Full scan result for an AP.
+   */
+  oneway onBackgroundFullScanResult(CommandId cmdId, ScanResult result);
+
+  /**
+   * Called when the |BackgroundScanBucketParameters.eventReportScheme| flags
+   * for at least one bucket that was just scanned was
+   * |REPORT_EVENTS_EACH_SCAN| or one of the configured thresholds was
+   * breached.
+   *
+   * @param cmdId command Id corresponding to the request.
+   * @parm scanDatas List of scan result for all AP's seen since last callback.
+   */
+  oneway onBackgroundScanResults(CommandId cmdId, vec<ScanData> scanDatas);
+};