wifi(interface): Rtt controller HIDL interface

Bug: 31991232
Test: ./hardware/interfaces/update-makefiles.sh
Change-Id: I53b95e85ee8a71bcb0494420913c9511f87908c0
diff --git a/wifi/1.0/IWifiRttController.hal b/wifi/1.0/IWifiRttController.hal
index a0e8b12..93b3d92 100644
--- a/wifi/1.0/IWifiRttController.hal
+++ b/wifi/1.0/IWifiRttController.hal
@@ -17,13 +17,14 @@
 package android.hardware.wifi@1.0;
 
 import IWifiIface;
+import IWifiRttControllerEventCallback;
 
 /**
- * Interface used to perform RTT operations.
+ * Interface used to perform RTT(Round trip time) operations.
  */
 interface IWifiRttController {
   /**
-   * Get the iface on which the RTT operations will be performed.
+   * Get the iface on which the RTT operations must be performed.
    *
    * @return status WifiStatus of the operation.
    *         Possible status codes:
@@ -33,4 +34,208 @@
    *         to a specific iface, null otherwise
    */
   getBoundIface() generates (WifiStatus status, IWifiIface boundIface);
+
+  /**
+   * Requests notifications of significant events on this rtt controller.
+   * Multiple calls to this must register multiple callbacks each of which must
+   * receive all events.
+   *
+   * @param callback An instance of the |IWifiRttControllerEventCallback| HIDL
+   *        interface object.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|
+   */
+  registerEventCallback(IWifiRttControllerEventCallback callback)
+      generates (WifiStatus status);
+
+  /**
+   * API to request RTT measurement.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param rttConfigs Vector of |RttConfig| parameters.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  rangeRequest(CommandId cmdId, vec<RttConfig> rttConfigs)
+      generates (WifiStatus status);
+
+  /**
+   * API to cancel RTT measurements.
+   *
+   * @param cmdId command Id corresponding to the original request.
+   * @param addrs Vector of addresses for which to cancel.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  rangeCancel(CommandId cmdId, vec<MacAddress> addrs)
+      generates (WifiStatus status);
+
+  /**
+   * API to start publishing the channel map on responder device in an NBD
+   * cluster.
+   * Responder device must take this request and schedule broadcasting the
+   * channel map in a NBD ranging attribute in a Service Discovery Frame.
+   * DE must automatically remove the ranging attribute from the OTA queue
+   * after number of Discovery Window specified by numDw where each
+   * Discovery Window is 512 TUs apart.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param params Instance of |RttChannelMap|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  setChannelMap(CommandId cmdId, RttChannelMap params, uint32_t numDw)
+      generates (WifiStatus status);
+
+  /**
+   * API to clear the channel map on the responder device in an NBD cluster.
+   * Responder device must cancel future ranging channel request, starting from
+   * next Discovery Window interval and must also stop broadcasting NBD
+   * ranging attribute in Service Discovery Frame.
+   *
+   * @param cmdId command Id corresponding to the original request.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  clearChannelMap(CommandId cmdId) generates (WifiStatus status);
+
+  /**
+   * RTT capabilities of the device.
+   *
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   * @return capabilities Instance of |RttCapabilities|.
+   */
+  getCapabilities() generates (WifiStatus status, RttCapabilities capabilities);
+
+  /**
+   * Set configuration for debug.
+   *
+   * @param type debug level to be set.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  setDebugCfg(RttDebugType Type) generates (WifiStatus status);
+
+  /**
+   * Get the debug information.
+   *
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   * @return info Instance of |RttDebugInfo|.
+   */
+  getDebugInfo() generates (WifiStatus status, RttDebugInfo info);
+
+  /**
+   * API to configure the LCI(Location civic information).
+   * Used in RTT Responder mode only.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param lci Instance of |RttLciInformation|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  setLci(CommandId cmdId, RttLciInformation lci) generates (WifiStatus status);
+
+  /**
+   * API to configure the LCR(Location civic records).
+   * Used in RTT Responder mode only.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @param lcr Instance of |RttLcrInformation|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  setLcr(CommandId cmdId, RttLcrInformation lcr) generates (WifiStatus status);
+
+  /**
+   * Get RTT responder information e.g. WiFi channel to enable responder on.
+   *
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   * @return info Instance of |RttResponderInfo|.
+   */
+  getResponderInfo() generates (WifiStatus status, RttResponder info);
+
+  /**
+   * Enable RTT responder mode.
+   *
+   * @param cmdId command Id to use for this invocation.
+   * @parm channelHint Hint of the channel information where RTT responder must
+   *       be enabled on.
+   * @param maxDurationInSeconds Timeout of responder mode.
+   * @param info Instance of |RttResponderInfo|.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_INVALID_ARGS|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  enableResponder(CommandId cmdId,
+                  WifiChannelInfo channelHint,
+                  uint32_t maxDurationSeconds,
+                  RttResponder info)
+      generates (WifiStatus status);
+
+  /**
+   * Disable RTT responder mode.
+   *
+   * @param cmdId command Id corresponding to the original request.
+   * @return status WifiStatus of the operation.
+   *         Possible status codes:
+   *         |WifiStatusCode.SUCCESS|,
+   *         |WifiStatusCode.ERROR_WIFI_RTT_CONTROLLER_INVALID|,
+   *         |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+   *         |WifiStatusCode.ERROR_UNKNOWN|
+   */
+  disableResponder(CommandId cmdId) generates (WifiStatus status);
 };