wifi(interface): Rtt controller HIDL interface

Bug: 31991232
Test: ./hardware/interfaces/update-makefiles.sh
Change-Id: I53b95e85ee8a71bcb0494420913c9511f87908c0
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index 40521f2..da9210c 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -16,6 +16,7 @@
         "IWifiNanIfaceEventCallback.hal",
         "IWifiP2pIface.hal",
         "IWifiRttController.hal",
+        "IWifiRttControllerEventCallback.hal",
         "IWifiStaIface.hal",
         "IWifiStaIfaceEventCallback.hal",
     ],
@@ -31,6 +32,7 @@
         "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/WifiRttControllerEventCallbackAll.cpp",
         "android/hardware/wifi/1.0/WifiStaIfaceAll.cpp",
         "android/hardware/wifi/1.0/WifiStaIfaceEventCallbackAll.cpp",
     ],
@@ -52,6 +54,7 @@
         "IWifiNanIfaceEventCallback.hal",
         "IWifiP2pIface.hal",
         "IWifiRttController.hal",
+        "IWifiRttControllerEventCallback.hal",
         "IWifiStaIface.hal",
         "IWifiStaIfaceEventCallback.hal",
     ],
@@ -107,6 +110,11 @@
         "android/hardware/wifi/1.0/BnWifiRttController.h",
         "android/hardware/wifi/1.0/BpWifiRttController.h",
         "android/hardware/wifi/1.0/BsWifiRttController.h",
+        "android/hardware/wifi/1.0/IWifiRttControllerEventCallback.h",
+        "android/hardware/wifi/1.0/IHwWifiRttControllerEventCallback.h",
+        "android/hardware/wifi/1.0/BnWifiRttControllerEventCallback.h",
+        "android/hardware/wifi/1.0/BpWifiRttControllerEventCallback.h",
+        "android/hardware/wifi/1.0/BsWifiRttControllerEventCallback.h",
         "android/hardware/wifi/1.0/IWifiStaIface.h",
         "android/hardware/wifi/1.0/IHwWifiStaIface.h",
         "android/hardware/wifi/1.0/BnWifiStaIface.h",
diff --git a/wifi/1.0/Android.mk b/wifi/1.0/Android.mk
index 3ae6aff..9c73154 100644
--- a/wifi/1.0/Android.mk
+++ b/wifi/1.0/Android.mk
@@ -13,6 +13,40 @@
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
 #
+# Build types.hal (ChannelInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/ChannelInfo.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.ChannelInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (ChannelWidth)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/ChannelWidth.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.ChannelWidth
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (IfaceType)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IfaceType.java
@@ -30,6 +64,23 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (InformationElement)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/InformationElement.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.InformationElement
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (NanAvailDuration)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/NanAvailDuration.java
@@ -1135,6 +1186,312 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (RateInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RateInfo.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.RateInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttBw)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttBw.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.RttBw
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttCapabilities)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttCapabilities.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.RttCapabilities
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttChannelMap)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttChannelMap.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.RttChannelMap
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttConfig)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttConfig.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.RttConfig
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttConstants)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttConstants.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.RttConstants
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugFormat)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugFormat.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.RttDebugFormat
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugInfo.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.RttDebugInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugType.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.RttDebugType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttLciInformation)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttLciInformation.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.RttLciInformation
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttLcrInformation)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttLcrInformation.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.RttLcrInformation
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttMotionPattern)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttMotionPattern.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.RttMotionPattern
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttPeerType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttPeerType.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.RttPeerType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttPreamble)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttPreamble.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.RttPreamble
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttResponder)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttResponder.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.RttResponder
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttResult)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttResult.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.RttResult
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttStatus)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttStatus.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.RttStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttType.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.RttType
+
+$(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
@@ -1370,6 +1727,8 @@
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiRttController.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiIface.hal
 $(GEN): $(LOCAL_PATH)/IWifiIface.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
+$(GEN): $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
 $(GEN): $(LOCAL_PATH)/types.hal
 $(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
@@ -1383,6 +1742,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build IWifiRttControllerEventCallback.hal
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiRttControllerEventCallback.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiRttControllerEventCallback.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::IWifiRttControllerEventCallback
+
+$(GEN): $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IWifiStaIface.hal
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiStaIface.java
@@ -1437,6 +1815,40 @@
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
 #
+# Build types.hal (ChannelInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/ChannelInfo.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.ChannelInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (ChannelWidth)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/ChannelWidth.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.ChannelWidth
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (IfaceType)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IfaceType.java
@@ -1454,6 +1866,23 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (InformationElement)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/InformationElement.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.InformationElement
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build types.hal (NanAvailDuration)
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/NanAvailDuration.java
@@ -2559,6 +2988,312 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build types.hal (RateInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RateInfo.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.RateInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttBw)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttBw.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.RttBw
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttCapabilities)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttCapabilities.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.RttCapabilities
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttChannelMap)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttChannelMap.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.RttChannelMap
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttConfig)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttConfig.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.RttConfig
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttConstants)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttConstants.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.RttConstants
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugFormat)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugFormat.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.RttDebugFormat
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugInfo)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugInfo.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.RttDebugInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttDebugType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttDebugType.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.RttDebugType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttLciInformation)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttLciInformation.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.RttLciInformation
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttLcrInformation)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttLcrInformation.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.RttLcrInformation
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttMotionPattern)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttMotionPattern.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.RttMotionPattern
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttPeerType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttPeerType.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.RttPeerType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttPreamble)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttPreamble.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.RttPreamble
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttResponder)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttResponder.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.RttResponder
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttResult)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttResult.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.RttResult
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttStatus)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttStatus.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.RttStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (RttType)
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/RttType.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.RttType
+
+$(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
@@ -2794,6 +3529,8 @@
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiRttController.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiIface.hal
 $(GEN): $(LOCAL_PATH)/IWifiIface.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
+$(GEN): $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
 $(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
 $(GEN): $(LOCAL_PATH)/types.hal
 $(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
@@ -2807,6 +3544,25 @@
 LOCAL_GENERATED_SOURCES += $(GEN)
 
 #
+# Build IWifiRttControllerEventCallback.hal
+#
+GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiRttControllerEventCallback.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IWifiRttControllerEventCallback.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::IWifiRttControllerEventCallback
+
+$(GEN): $(LOCAL_PATH)/IWifiRttControllerEventCallback.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IWifiStaIface.hal
 #
 GEN := $(intermediates)/android/hardware/wifi/1.0/IWifiStaIface.java
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);
 };
diff --git a/wifi/1.0/IWifiRttControllerEventCallback.hal b/wifi/1.0/IWifiRttControllerEventCallback.hal
new file mode 100644
index 0000000..e23e395
--- /dev/null
+++ b/wifi/1.0/IWifiRttControllerEventCallback.hal
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * RTT Response and Event Callbacks.
+ */
+interface IWifiRttControllerEventCallback {
+  /**
+   * Invoked when an RTT result is available.
+   *
+   * @param cmdId command Id corresponding to the original request.
+   * @param results Vector of |RttResult| instances.
+   */
+  oneway onResults(CommandId cmdId, vec<RttResult> results);
+};
diff --git a/wifi/1.0/IWifiStaIface.hal b/wifi/1.0/IWifiStaIface.hal
index 8f45777..5cf1413 100644
--- a/wifi/1.0/IWifiStaIface.hal
+++ b/wifi/1.0/IWifiStaIface.hal
@@ -295,11 +295,11 @@
     LinkLayerIfaceStats iface;
     LinkLayerRadioStats radio;
     /**
-     * Timestamp for each stats sample.
+     * TimeStamp for each stats sample.
      * This is the absolute milliseconds from boot when these stats were
      * sampled.
      */
-    uint32_t timeStampInMs;
+    TimeStampInMs timeStampInMs;
   };
 
   /**
diff --git a/wifi/1.0/IWifiStaIfaceEventCallback.hal b/wifi/1.0/IWifiStaIfaceEventCallback.hal
index 129c258..6bffc7d 100644
--- a/wifi/1.0/IWifiStaIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiStaIfaceEventCallback.hal
@@ -17,28 +17,19 @@
 package android.hardware.wifi@1.0;
 
 interface IWifiStaIfaceEventCallback {
- /**
-  * 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;
-  };
-
   /**
    * Structure describing all the information about a single access point seen
    * during the scan.
    */
   struct ScanResult {
-    int64_t timeStampInUs;
+    TimeStampInUs timeStampInUs;
     vec<uint8_t> ssid;
     Bssid bssid;
-    int8_t rssi;
+    Rssi rssi;
     WifiChannelInMhz frequency;
     uint16_t beaconPeriodInMs;
     uint16_t capability;
-    vec<InformationElement> informationElements;
+    vec<WifiInformationElement> informationElements;
   };
 
   /**
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index a7ecf7e..65c39f7 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -83,6 +83,47 @@
 typedef uint32_t WifiChannelInMhz;
 
 /**
+ * Channel operating width in Mhz.
+ */
+enum WifiChannelWidthInMhz : uint32_t {
+  WIDTH_20    = 0,
+  WIDTH_40    = 1,
+  WIDTH_80    = 2,
+  WIDTH_160   = 3,
+  WIDTH_80P80 = 4,
+  WIDTH_5     = 5,
+  WIDTH_10    = 6,
+  WIDTH_INVALID = -1
+};
+
+/**
+ * Channel information.
+ */
+struct WifiChannelInfo {
+  /**
+   * Channel width (20, 40, 80, 80+80, 160).
+   */
+  WifiChannelWidthInMhz width;
+  /**
+   * Primary 20 MHz channel.
+   */
+  WifiChannelInMhz centerFreq;
+  /**
+   * Center frequency (MHz) first segment.
+   */
+  WifiChannelInMhz centerFreq0;
+  /**
+   * Center frequency (MHz) second segment.
+   */
+  WifiChannelInMhz centerFreq1;
+};
+
+/**
+ * RSSI information.
+ */
+typedef int32_t Rssi;
+
+/**
  * Mac Address type. 6 octets representing physical address of a device.
  */
 typedef uint8_t[6] MacAddress;
@@ -93,6 +134,75 @@
 typedef MacAddress Bssid;
 
 /**
+ * TimeStamp in milliseconds (ms).
+ */
+typedef uint32_t TimeStampInMs;
+
+/**
+ * TimeStamp in microseconds (us).
+ */
+typedef uint64_t TimeStampInUs;
+
+/**
+ * TimeStamp in picoseconds (ps).
+ */
+typedef uint64_t TimeSpanInPs;
+
+/**
+ * Information elements contained within the |ScanResult| structure.
+ * These elements correspond to the IEEE_802.11 standard.
+ */
+struct WifiInformationElement {
+  uint8_t id;
+  vec<uint8_t> data;
+};
+
+enum WifiRatePreamble : uint32_t {
+  OFDM = 0,
+  CCK = 1,
+  HT = 2,
+  VHT = 3,
+  RESERVED = 4
+};
+
+/**
+ * Number of spatial streams in VHT/HT.
+ */
+enum WifiRateNss : uint32_t {
+  NSS_1x1 = 0,
+  NSS_2x2 = 1,
+  NSS_3x3 = 2,
+  NSS_4x4 = 3
+};
+
+/**
+ * Wifi rate info.
+ */
+struct WifiRateInfo {
+  /**
+   * Preamble used for RTT measurements.
+   */
+  WifiRatePreamble preamble;
+  /**
+   * Number of spatial streams.
+   */
+  WifiRateNss nss;
+  /**
+   * Bandwidth of channel.
+   */
+  WifiChannelWidthInMhz bw;
+  /**
+   * OFDM/CCK rate code would be as per ieee std in the units of 0.5mbps.
+   * HT/VHT it would be mcs index.
+   */
+  uint8_t rateMcsIdx;
+  /**
+   * Bitrate in units of 100 Kbps.
+   */
+  uint32_t bitRateInKbps;
+};
+
+/**
  * NAN specific types.
  * TODO(b/32159498): Move to a separate nan_types.hal.
  */
@@ -1457,3 +1567,468 @@
   NanStatusType reason;
 };
 
+/**
+ * RTT specific types.
+ * TODO(b/32159498): Move to a separate rtt_types.hal.
+ */
+/**
+ * Constants used in the RTT interface.
+ */
+enum RttConstants : uint32_t {
+  PREAMBLE_LEGACY = 0x1,
+  PREAMBLE_HT = 0x2,
+  PREAMBLE_VHT = 0x4,
+  BW_5_SUPPORT = 0x1,
+  BW_10_SUPPORT = 0x2,
+  BW_20_SUPPORT = 0x4,
+  BW_40_SUPPORT = 0x8,
+  BW_80_SUPPORT = 0x10,
+  BW_160_SUPPORT = 0x20,
+};
+
+/**
+ * Ranging status.
+ */
+enum RttStatus : uint32_t {
+  SUCCESS = 0,
+  /** General failure status */
+  FAILURE = 1,
+  /** Target STA does not respond to request */
+  FAIL_NO_RSP = 2,
+  /** Request rejected. Applies to 2-sided RTT only */
+  FAIL_REJECTED = 3,
+  FAIL_NOT_SCHEDULED_YET = 4,
+  /** Timing measurement times out */
+  FAIL_TM_TIMEOUT = 5,
+  /** Target on different channel, cannot range */
+  FAIL_AP_ON_DIFF_CHANNEL = 6,
+  /** Ranging not supported */
+  FAIL_NO_CAPABILITY = 7,
+  /** Request aborted for unknown reason */
+  ABORTED = 8,
+  /** Invalid T1-T4 timestamp */
+  FAIL_INVALID_TS = 9,
+  /** 11mc protocol failed */
+  FAIL_PROTOCOL = 10,
+  /** Request could not be scheduled */
+  FAIL_SCHEDULE = 11,
+  /** Responder cannot collaborate at time of request */
+  FAIL_BUSY_TRY_LATER = 12,
+  /** Bad request args */
+  INVALID_REQ = 13,
+  /** WiFi not enabled. */
+  NO_WIFI = 14,
+  /** Responder overrides param info, cannot range with new params */
+  FAIL_FTM_PARAM_OVERRIDE = 15,
+};
+
+/**
+ * RTT peer types.
+ */
+enum RttPeerType : uint32_t {
+  AP = 0x1,
+  STA = 0x2,
+  P2P_GO = 0x3,
+  P2P_CLIENT = 0x4,
+  NAN = 0x5,
+};
+
+/**
+ * RTT Measurement Bandwidth.
+ */
+enum RttBw : uint32_t {
+  BW_5MHZ = 0x01,
+  BW_10MHZ = 0x02,
+  BW_20MHZ = 0x04,
+  BW_40MHZ = 0x08,
+  BW_80MHZ = 0x10,
+  BW_160MHZ = 0x20,
+};
+
+/**
+ * RTT Measurement Preamble.
+ */
+enum RttPreamble : uint32_t {
+  LEGACY = 0x1,
+  HT = 0x2,
+  VHT = 0x4,
+};
+
+/**
+ * RTT Types.
+ */
+enum RttType : uint32_t {
+  ONE_SIDED = 0x1,
+  TWO_SIDED = 0x2,
+};
+
+/**
+ * RTT configuration.
+ */
+struct RttConfig {
+  /**
+   * Peer device mac address.
+   */
+  MacAddress addr;
+  /**
+   * 1-sided or 2-sided RTT.
+   */
+  RttType type;
+  /**
+   * Optional - peer device hint (STA, P2P, AP).
+   */
+  RttPeerType peer;
+  /**
+   * Required for STA-AP mode, optional for P2P, NBD etc.
+   */
+  WifiChannelInfo channel;
+  /**
+   * Time interval between bursts (units: 100 ms).
+   * Applies to 1-sided and 2-sided RTT multi-burst requests.
+   * Range: 0-31, 0: no preference by initiator (2-sided RTT).
+   */
+  uint32_t burstPeriod;
+  /**
+   * Total number of RTT bursts to be executed. It will be
+   * specified in the same way as the parameter "Number of
+   * Burst Exponent" found in the FTM frame format. It
+   * applies to both: 1-sided RTT and 2-sided RTT. Valid
+   * values are 0 to 15 as defined in 802.11mc std.
+   * 0 means single shot
+   * The implication of this parameter on the maximum
+   * number of RTT results is the following:
+   * for 1-sided RTT: max num of RTT results = (2^num_burst)*(num_frames_per_burst)
+   * for 2-sided RTT: max num of RTT results = (2^num_burst)*(num_frames_per_burst - 1)
+   */
+  uint32_t numBurst;
+  /**
+   * Num of frames per burst.
+   * Minimum value = 1, Maximum value = 31
+   * For 2-sided this equals the number of FTM frames
+   * to be attempted in a single burst. This also
+   * equals the number of FTM frames that the
+   * initiator will request that the responder send
+   * in a single frame.
+   */
+  uint32_t numFramesPerBurst;
+  /**
+   * Number of retries for a failed RTT frame.
+   * Applies to 1-sided RTT only. Minimum value = 0, Maximum value = 3
+   */
+  uint32_t numRetriesPerRttFrame;
+  /** Following fields are only valid for 2-side RTT. */
+  /**
+   * Maximum number of retries that the initiator can
+   * retry an FTMR frame.
+   * Minimum value = 0, Maximum value = 3
+   */
+  uint32_t numRetriesPerFtmr;
+  /**
+   * Whether to request location civic info or not.
+   */
+  bool mustRequestLci;
+  /**
+   * Whether to request location civic records or not.
+   */
+  bool mustRequestLcr;
+  /**
+   * Applies to 1-sided and 2-sided RTT. Valid values will
+   * be 2-11 and 15 as specified by the 802.11mc std for
+   * the FTM parameter burst duration. In a multi-burst
+   * request, if responder overrides with larger value,
+   * the initiator will return failure. In a single-burst
+   * request if responder overrides with larger value,
+   * the initiator will sent TMR_STOP to terminate RTT
+   * at the end of the burst_duration it requested.
+   */
+  uint32_t burstDuration;
+  /**
+   * RTT preamble to be used in the RTT frames.
+   */
+  RttPreamble preamble;
+  /**
+   * RTT BW to be used in the RTT frames.
+   */
+  RttBw bw;
+};
+
+/**
+ * RTT results.
+ */
+struct RttResult {
+  /**
+   * Peer device mac address.
+   */
+  MacAddress addr;
+  /**
+   * Burst number in a multi-burst request.
+   */
+  uint32_t burstNum;
+  /**
+   * Total RTT measurement frames attempted.
+   */
+  uint32_t measurementNumber;
+  /**
+   * Total successful RTT measurement frames.
+   */
+  uint32_t successNumber;
+  /**
+   * Maximum number of "FTM frames per burst" supported by
+   * the responder STA. Applies to 2-sided RTT only.
+   * If reponder overrides with larger value:
+   * - for single-burst request initiator will truncate the
+   * larger value and send a TMR_STOP after receiving as
+   * many frames as originally requested.
+   * - for multi-burst request, initiator will return
+   * failure right away.
+   */
+  uint8_t numberPerBurstPeer;
+  /**
+   * Ranging status.
+   */
+  RttStatus status;
+  /**
+   * When status == RTT_STATUS_FAIL_BUSY_TRY_LATER,
+   * this will be the time provided by the responder as to
+   * when the request can be tried again. Applies to 2-sided
+   * RTT only. In sec, 1-31sec.
+   */
+  uint8_t retryAfterDuration;
+  /**
+   * RTT type.
+   */
+  RttType type;
+  /**
+   * Average rssi in 0.5 dB steps e.g. 143 implies -71.5 dB.
+   */
+  Rssi rssi;
+  /**
+   * Rssi spread in 0.5 dB steps e.g. 5 implies 2.5 dB spread (optional).
+   */
+  Rssi rssiSpread;
+  /**
+   * 1-sided RTT: TX rate of RTT frame.
+   * 2-sided RTT: TX rate of initiator's Ack in response to FTM frame.
+   */
+  WifiRateInfo txRate;
+  /**
+   * 1-sided RTT: TX rate of Ack from other side.
+   * 2-sided RTT: TX rate of FTM frame coming from responder.
+   */
+  WifiRateInfo rxRate;
+  /**
+   * Round trip time in picoseconds
+   */
+  TimeSpanInPs rtt;
+  /**
+   * Rtt standard deviation in picoseconds.
+   */
+  TimeSpanInPs rttSd;
+  /**
+   * Difference between max and min rtt times recorded in picoseconds.
+   */
+  TimeSpanInPs rttSpread;
+  /**
+   * Distance in mm (optional).
+   */
+  int32_t distanceInMm;
+  /**
+   * Standard deviation in mm (optional).
+   */
+  int32_t distanceSdInMm;
+  /**
+   * Difference between max and min distance recorded in mm (optional).
+   */
+  int32_t distanceSpreadInMm;
+  /**
+   * Time of the measurement (in microseconds since boot).
+   */
+  TimeStampInUs timeStampInUs;
+  /**
+   * in ms, actual time taken by the FW to finish one burst
+   * measurement. Applies to 1-sided and 2-sided RTT.
+   */
+  uint32_t burstDurationInMs;
+  /**
+   * Number of bursts allowed by the responder. Applies
+   * to 2-sided RTT only.
+   */
+  uint32_t negotiatedBurstNum;
+  /**
+   * for 11mc only.
+   */
+  WifiInformationElement lci;
+  /**
+   * for 11mc only.
+   */
+  WifiInformationElement lcr;
+};
+
+/**
+ * NBD ranging channel map.
+ */
+struct RttChannelMap {
+  WifiChannelInMhz[32] availablity;
+};
+
+/**
+ * RTT Capabilities.
+ */
+struct RttCapabilities {
+  /**
+   * if 1-sided rtt data collection is supported.
+   */
+  bool rttOneSidedSupported;
+  /**
+   * if ftm rtt data collection is supported.
+   */
+  bool rttFtmSupported;
+  /**
+   * if initiator supports LCI request. Applies to 2-sided RTT.
+   */
+  bool lciSupported;
+  /**
+   * if initiator supports LCR request. Applies to 2-sided RTT.
+   */
+  bool lcrSupported;
+  /**
+   * if 11mc responder mode is supported.
+   */
+  bool responderSupported;
+  /**
+   * bit mask indicates what preamble is supported by initiator.
+   */
+  uint8_t preambleSupport;
+  /**
+   * bit mask indicates what BW is supported by initiator.
+   */
+  uint8_t bwSupport;
+  /**
+   * Draft 11mc spec version supported by chip.
+   * For instance, version 4.0 must be 40 and version 4.3 must be 43 etc.
+   */
+  uint8_t mcVersion;
+};
+
+/**
+ * Debugging definitions.
+ */
+enum RttDebugType : uint32_t {
+  DISABLE,
+  LOG,
+  PROTO,
+  BURST,
+  ACCURACY,
+  LOGDETAIL,
+};
+
+enum RttDebugFormat : uint32_t {
+  TXT,
+  BINARY,
+};
+
+/**
+ * Debug info.
+ */
+struct RttDebugInfo {
+  /**
+   * Version info.
+   */
+  uint32_t version;
+  /**
+   * Debug data type.
+   */
+  RttDebugType type;
+  /**
+   * Debug data format.
+   */
+  RttDebugFormat format;
+  /**
+   * Debug data content.
+   */
+  vec<uint8_t> data;
+};
+
+/**
+ * Structs for setting LCI/LCR information to be provided to a requestor.
+ */
+enum RttMotionPattern : uint32_t {
+  /**
+   * Not expected to change location.
+   */
+  NOT_EXPECTED = 0,
+  /**
+   * Expected to change location.
+   */
+  EXPECTED = 1,
+  /**
+   * Movement pattern unknown.
+   */
+  UNKNOWN = 2,
+};
+
+/**
+ * Movement pattern unknown.
+ */
+struct RttLciInformation {
+  /**
+   * latitude in degrees * 2^25 , 2's complement.
+   */
+  int64_t latitude;
+  /**
+   * longitude in degrees * 2^25 , 2's complement.
+   */
+  int64_t longitude;
+  /**
+   * Altitude in units of 1/256 m.
+   */
+  int32_t altitude;
+  /**
+   * As defined in Section 2.3.2 of IETF RFC 6225.
+   */
+  uint8_t latitudeUnc;
+  /**
+   * As defined in Section 2.3.2 of IETF RFC 6225.
+   */
+  uint8_t longitudeUnc;
+  /**
+   * As defined in Section 2.4.5 from IETF RFC 6225.
+   */
+  uint8_t altitudeUnc;
+  /** Following element for configuring the Z subelement. */
+  /**
+   * Motion pattern type.
+   */
+  RttMotionPattern motionPattern;
+  /**
+   * Floor in units of 1/16th of floor. 0x80000000 if unknown.
+   */
+  int32_t floor;
+  /**
+   * in units of 1/64 m.
+   */
+  int32_t heightAboveFloor;
+  /**
+   * in units of 1/64 m. 0 if unknown
+   */
+  int32_t heightUnc;
+};
+
+struct RttLcrInformation {
+  /**
+   * Country code symbol.
+   */
+  int8_t[2] countryCode;
+  /**
+   * Civic info to be copied in FTM frame.
+   */
+  string civicInfo;
+};
+
+/***
+ * RTT Responder information
+ */
+struct RttResponder {
+  WifiChannelInfo channel;
+  RttPreamble preamble;
+};