Add getReferenceInfo to IBase.

Test: hidl_test

Change-Id: Ib4e3764f9ad37106c91ede18d8c8e6f718b887c4
diff --git a/transport/base/1.0/Android.bp b/transport/base/1.0/Android.bp
index d685da7..c169304 100644
--- a/transport/base/1.0/Android.bp
+++ b/transport/base/1.0/Android.bp
@@ -5,9 +5,11 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hidl:system/libhidl/transport android.hidl.base@1.0",
     srcs: [
+        "types.hal",
         "IBase.hal",
     ],
     out: [
+        "android/hidl/base/1.0/types.cpp",
         "android/hidl/base/1.0/BaseAll.cpp",
     ],
 }
@@ -17,9 +19,11 @@
     tools: ["hidl-gen"],
     cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hidl:system/libhidl/transport android.hidl.base@1.0",
     srcs: [
+        "types.hal",
         "IBase.hal",
     ],
     out: [
+        "android/hidl/base/1.0/types.h",
         "android/hidl/base/1.0/IBase.h",
         "android/hidl/base/1.0/IHwBase.h",
         "android/hidl/base/1.0/BnHwBase.h",
diff --git a/transport/base/1.0/Android.mk b/transport/base/1.0/Android.mk
index 8164c56..cae969c 100644
--- a/transport/base/1.0/Android.mk
+++ b/transport/base/1.0/Android.mk
@@ -13,12 +13,32 @@
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
 #
+# Build types.hal (ReferenceInfo)
+#
+GEN := $(intermediates)/android/hidl/base/V1_0/ReferenceInfo.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.hidl:system/libhidl/transport \
+        android.hidl.base@1.0::types.ReferenceInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IBase.hal
 #
 GEN := $(intermediates)/android/hidl/base/V1_0/IBase.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBase.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) \
@@ -43,12 +63,32 @@
 HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
 
 #
+# Build types.hal (ReferenceInfo)
+#
+GEN := $(intermediates)/android/hidl/base/V1_0/ReferenceInfo.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.hidl:system/libhidl/transport \
+        android.hidl.base@1.0::types.ReferenceInfo
+
+$(GEN): $(LOCAL_PATH)/types.hal
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
 # Build IBase.hal
 #
 GEN := $(intermediates)/android/hidl/base/V1_0/IBase.java
 $(GEN): $(HIDL)
 $(GEN): PRIVATE_HIDL := $(HIDL)
 $(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBase.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) \
diff --git a/transport/base/1.0/IBase.hal b/transport/base/1.0/IBase.hal
index e57759d..643ac6e 100644
--- a/transport/base/1.0/IBase.hal
+++ b/transport/base/1.0/IBase.hal
@@ -93,4 +93,11 @@
      */
     oneway setHALInstrumentation();
 
+    /*
+     * Get debug information on references on this interface.
+     * @return info has the following information:
+     *         - refCount: -1 if not available; or
+     *                     ref count on the stub for remote binderized servers.
+     */
+    getReferenceInfo() generates (ReferenceInfo info);
 };
diff --git a/transport/base/1.0/types.hal b/transport/base/1.0/types.hal
new file mode 100644
index 0000000..0d47184
--- /dev/null
+++ b/transport/base/1.0/types.hal
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 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.hidl.base@1.0;
+
+/*
+ * The returned object for getReferenceInfo.
+ * refCount: strong reference count on the stub object.
+ */
+struct ReferenceInfo {
+    int64_t refCount;
+};