IHidlInterfaceBase is the base class for all interfaces.
IHidlInterfaceBase::descriptor is the descriptor for
HIDL reserved methods.
Test: hidl_test
Bug: 32337854
Change-Id: Ibdeb6f64e779315b9fcdb807b0fbec885471e333
diff --git a/HidlSupport.cpp b/HidlSupport.cpp
index c8a2821..666c606 100644
--- a/HidlSupport.cpp
+++ b/HidlSupport.cpp
@@ -166,6 +166,8 @@
// static
const size_t hidl_string::kOffsetOfBuffer = offsetof(hidl_string, mBuffer);
+const ::android::String16 IHidlInterfaceBase::descriptor(
+ "android.hardware@0.0::IHidlInterfaceBase");
// ----------------------------------------------------------------------
// HidlInstrumentor implementation.
diff --git a/include/hidl/HidlSupport.h b/include/hidl/HidlSupport.h
index b284f57..1324af5 100644
--- a/include/hidl/HidlSupport.h
+++ b/include/hidl/HidlSupport.h
@@ -21,6 +21,7 @@
#include <dirent.h>
#include <dlfcn.h>
#include <cutils/properties.h>
+#include <hidl/Status.h>
#include <hwbinder/Parcel.h>
#include <tuple>
#include <utils/Errors.h>
@@ -75,6 +76,14 @@
status_t writeEmbeddedToParcel(
Parcel *parcel, size_t parentHandle, size_t parentOffset) const;
+ inline bool operator==(const char *s) const {
+ return strcmp(mBuffer, s) == 0;
+ }
+
+ inline bool operator!=(const char *s) const {
+ return !(operator==(s));
+ }
+
// offsetof(hidl_string, mBuffer) exposed since mBuffer is private.
static const size_t kOffsetOfBuffer;
@@ -561,6 +570,15 @@
return hidl_version(major,minor);
}
+struct IHidlInterfaceBase : virtual public RefBase {
+ virtual bool isRemote() const = 0;
+ // HIDL reserved methods follow.
+ virtual ::android::hardware::Return<void> interfaceChain(
+ std::function<void(const hidl_vec<hidl_string>&)> _hidl_cb) = 0;
+ // descriptor for HIDL reserved methods.
+ static const ::android::String16 descriptor;
+};
+
#if defined(__LP64__)
#define HAL_LIBRARY_PATH_SYSTEM "/system/lib64/hw/"
#define HAL_LIBRARY_PATH_VENDOR "/vendor/lib64/hw/"