Merge "Support VTS profiling in passthrough mode."
diff --git a/ArrayType.cpp b/ArrayType.cpp
index 14e375a..e429411 100644
--- a/ArrayType.cpp
+++ b/ArrayType.cpp
@@ -79,6 +79,7 @@
arrayType += ">";
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
return arrayType;
diff --git a/CompoundType.cpp b/CompoundType.cpp
index a07882d..b00f114 100644
--- a/CompoundType.cpp
+++ b/CompoundType.cpp
@@ -75,6 +75,7 @@
specifyNamespaces ? fullName() : partialCppName();
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
return base;
@@ -342,7 +343,7 @@
Scope::emitTypeDeclarations(out);
for (const auto &field : *mFields) {
- out << field->type().getCppStackType()
+ out << field->type().getCppCompoundType()
<< " "
<< field->name()
<< ";\n";
diff --git a/GenericBinder.cpp b/GenericBinder.cpp
index 935da31..8dad4e0 100644
--- a/GenericBinder.cpp
+++ b/GenericBinder.cpp
@@ -40,6 +40,7 @@
+ "IBinder>";
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
case StorageMode_Result:
return base;
diff --git a/HandleType.cpp b/HandleType.cpp
index 3ff0f89..29afb1a 100644
--- a/HandleType.cpp
+++ b/HandleType.cpp
@@ -27,13 +27,19 @@
// do nothing
}
-std::string HandleType::getCppType(StorageMode,
+std::string HandleType::getCppType(StorageMode mode,
bool specifyNamespaces) const {
const std::string base =
std::string(specifyNamespaces ? "::" : "")
+ "native_handle_t";
-
- return "const " + base + "*";
+ if (mode == StorageMode_Compound) {
+ const std::string hidl_pointer_type =
+ std::string(specifyNamespaces ? "::android::hardware::details::hidl_pointer" :
+ "hidl_pointer");
+ return hidl_pointer_type + "<" + base + ">";
+ } else {
+ return "const " + base + "*";
+ }
}
void HandleType::emitReaderWriter(
diff --git a/Interface.cpp b/Interface.cpp
index 9f5351c..35cbce3 100644
--- a/Interface.cpp
+++ b/Interface.cpp
@@ -217,6 +217,7 @@
switch (mode) {
case StorageMode_Stack:
case StorageMode_Result:
+ case StorageMode_Compound:
return base;
case StorageMode_Argument:
diff --git a/PredefinedType.cpp b/PredefinedType.cpp
index fb015a4..c904a7d 100644
--- a/PredefinedType.cpp
+++ b/PredefinedType.cpp
@@ -42,6 +42,7 @@
const std::string base = fullName();
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
return base;
diff --git a/StringType.cpp b/StringType.cpp
index e449369..d729efb 100644
--- a/StringType.cpp
+++ b/StringType.cpp
@@ -33,6 +33,7 @@
+ "hidl_string";
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
return base;
diff --git a/Type.cpp b/Type.cpp
index 47cea08..e139b8e 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -375,6 +375,10 @@
return getCppType(StorageMode_Argument, specifyNamespaces);
}
+std::string Type::getCppCompoundType(bool specifyNamespaces) const {
+ return getCppType(StorageMode_Compound, specifyNamespaces);
+}
+
void Type::emitJavaReaderWriterWithSuffix(
Formatter &out,
const std::string &parcelObj,
diff --git a/Type.h b/Type.h
index 4f90232..e137043 100644
--- a/Type.h
+++ b/Type.h
@@ -52,7 +52,8 @@
enum StorageMode {
StorageMode_Stack,
StorageMode_Argument,
- StorageMode_Result
+ StorageMode_Result,
+ StorageMode_Compound // when stored in a compound type
};
virtual std::string getCppType(
@@ -82,6 +83,8 @@
std::string getCppArgumentType(bool specifyNamespaces = true) const;
+ std::string getCppCompoundType(bool specifyNamespaces = true) const;
+
// For an array type, dimensionality information will be accumulated at the
// end of the returned string.
// if forInitializer == true, actual dimensions are included, i.e. [3][5],
diff --git a/VectorType.cpp b/VectorType.cpp
index da09884..26eac76 100644
--- a/VectorType.cpp
+++ b/VectorType.cpp
@@ -47,6 +47,7 @@
+ ">";
switch (mode) {
+ case StorageMode_Compound:
case StorageMode_Stack:
return base;
diff --git a/c2hal/test/Android.bp b/c2hal/test/Android.bp
index 5b475c0..c993d31 100644
--- a/c2hal/test/Android.bp
+++ b/c2hal/test/Android.bp
@@ -61,7 +61,8 @@
generated_sources: ["c2hal_test_genc++"],
export_generated_headers: ["c2hal_test_genc++_headers"],
shared_libs: [
- "libhidl",
+ "libhidlbase",
+ "libhidltransport",
"libhwbinder",
"libutils",
"libcutils",
diff --git a/main.cpp b/main.cpp
index a4f5dc0..d0be9c2 100644
--- a/main.cpp
+++ b/main.cpp
@@ -721,7 +721,8 @@
<< "shared_libs: [\n";
out.indent();
- out << "\"libhidl\",\n"
+ out << "\"libhidlbase\",\n"
+ << "\"libhidltransport\",\n"
<< "\"libhwbinder\",\n"
<< "\"libutils\",\n"
<< "\"libcutils\",\n";
@@ -734,7 +735,8 @@
out << "export_shared_lib_headers: [\n";
out.indent();
- out << "\"libhidl\",\n"
+ out << "\"libhidlbase\",\n"
+ << "\"libhidltransport\",\n"
<< "\"libhwbinder\",\n"
<< "\"libutils\",\n";
for (const auto &importedPackage : importedPackages) {
@@ -810,7 +812,8 @@
out << "\n";
out << "LOCAL_SHARED_LIBRARIES := \\\n";
out.indent();
- out << "libhidl \\\n"
+ out << "libhidlbase \\\n"
+ << "libhidltransport \\\n"
<< "libhwbinder \\\n"
<< "libutils \\\n"
<< makeLibraryName(packageFQName) << " \\\n";
diff --git a/test/Android.bp b/test/Android.bp
index 96b16c3..aea10c0 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -11,7 +11,8 @@
"libbase",
"liblog",
"libcutils",
- "libhidl",
+ "libhidlbase",
+ "libhidltransport",
"libfootest",
"libhwbinder",
"libnativehelper",
@@ -40,4 +41,14 @@
"-O0",
"-g",
],
+
+ compile_multilib: "both",
+ multilib: {
+ lib32: {
+ suffix: "32",
+ },
+ lib64: {
+ suffix: "64",
+ },
+ },
}
diff --git a/test/data/android/hardware/nfc/1.0/Nfc.vts b/test/data/android/hardware/nfc/1.0/Nfc.vts
deleted file mode 100644
index 1f50698..0000000
--- a/test/data/android/hardware/nfc/1.0/Nfc.vts
+++ /dev/null
@@ -1,86 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "INfc"
-
-package: "android.hardware.nfc"
-
-import: "android.hardware.nfc@1.0::INfcClientCallback"
-import: "android.hardware.nfc@1.0::types"
-
-interface: {
- api: {
- name: "open"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "INfcClientCallback"
- is_callback: true
- }
- }
-
- api: {
- name: "write"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "coreInitialized"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "prediscover"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "close"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "controlGranted"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "powerCycle"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
-}
diff --git a/test/data/android/hardware/nfc/1.0/NfcClientCallback.vts b/test/data/android/hardware/nfc/1.0/NfcClientCallback.vts
deleted file mode 100644
index e39ea7c..0000000
--- a/test/data/android/hardware/nfc/1.0/NfcClientCallback.vts
+++ /dev/null
@@ -1,33 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "INfcClientCallback"
-
-package: "android.hardware.nfc"
-
-import: "android.hardware.nfc@1.0::types"
-
-interface: {
- api: {
- name: "sendEvent"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcEvent"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- }
-
- api: {
- name: "sendData"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/test/data/android/hardware/nfc/1.0/types.vts b/test/data/android/hardware/nfc/1.0/types.vts
deleted file mode 100644
index e43db1e..0000000
--- a/test/data/android/hardware/nfc/1.0/types.vts
+++ /dev/null
@@ -1,73 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.nfc"
-
-
-attribute: {
- name: "::android::hardware::nfc::V1_0::NfcEvent"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OPEN_CPLT"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "CLOSE_CPLT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "POST_INIT_CPLT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PRE_DISCOVER_CPLT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "REQUEST_CONTROL"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "RELEASE_CONTROL"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "ERROR"
- scalar_value: {
- uint32_t: 6
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::nfc::V1_0::NfcStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAILED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ERR_TRANSPORT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "ERR_CMD_TIMEOUT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "REFUSED"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
diff --git a/test/data/android/hardware/tests/expression/1.0/BnExpression.h b/test/data/android/hardware/tests/expression/1.0/BnExpression.h
deleted file mode 100644
index 975be4a..0000000
--- a/test/data/android/hardware/tests/expression/1.0/BnExpression.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef HIDL_GENERATED_android_hardware_tests_expression_V1_0_BnExpression_H_
-#define HIDL_GENERATED_android_hardware_tests_expression_V1_0_BnExpression_H_
-
-#include <android/hardware/tests/expression/1.0/IHwExpression.h>
-
-namespace android {
-namespace hardware {
-namespace tests {
-namespace expression {
-namespace V1_0 {
-
-struct BnExpression : public ::android::hardware::BnInterface<IExpression, IHwExpression>, public ::android::hardware::HidlInstrumentor {
- explicit BnExpression(const ::android::sp<IExpression> &_hidl_impl);
-
- ::android::status_t onTransact(
- uint32_t _hidl_code,
- const ::android::hardware::Parcel &_hidl_data,
- ::android::hardware::Parcel *_hidl_reply,
- uint32_t _hidl_flags = 0,
- TransactCallback _hidl_cb = nullptr) override;
-
- // Methods from IExpression follow.
- inline ::android::hardware::Return<void> foo1(const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>& array) {
- return mImpl->foo1(array);
- };
- inline ::android::hardware::Return<void> foo2(const hidl_array<int32_t, 13 /* (5 + 8) */>& array) {
- return mImpl->foo2(array);
- };
- inline ::android::hardware::Return<void> foo3(const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>& array) {
- return mImpl->foo3(array);
- };
-
-};
-
-} // namespace V1_0
-} // namespace expression
-} // namespace tests
-} // namespace hardware
-} // namespace android
-
-#endif // HIDL_GENERATED_android_hardware_tests_expression_V1_0_BnExpression_H_
diff --git a/test/data/android/hardware/tests/expression/1.0/BpExpression.h b/test/data/android/hardware/tests/expression/1.0/BpExpression.h
deleted file mode 100644
index b447cf3..0000000
--- a/test/data/android/hardware/tests/expression/1.0/BpExpression.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef HIDL_GENERATED_android_hardware_tests_expression_V1_0_BpExpression_H_
-#define HIDL_GENERATED_android_hardware_tests_expression_V1_0_BpExpression_H_
-
-#include <android/hardware/tests/expression/1.0/IHwExpression.h>
-
-namespace android {
-namespace hardware {
-namespace tests {
-namespace expression {
-namespace V1_0 {
-
-struct BpExpression : public ::android::hardware::BpInterface<IHwExpression>, public ::android::hardware::HidlInstrumentor {
- explicit BpExpression(const ::android::sp<::android::hardware::IBinder> &_hidl_impl);
-
- virtual bool isRemote() const { return true; }
-
- // Methods from IExpression follow.
- ::android::hardware::Return<void> foo1(const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>& array) override;
- ::android::hardware::Return<void> foo2(const hidl_array<int32_t, 13 /* (5 + 8) */>& array) override;
- ::android::hardware::Return<void> foo3(const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>& array) override;
-
-};
-
-} // namespace V1_0
-} // namespace expression
-} // namespace tests
-} // namespace hardware
-} // namespace android
-
-#endif // HIDL_GENERATED_android_hardware_tests_expression_V1_0_BpExpression_H_
diff --git a/test/data/android/hardware/tests/expression/1.0/ExpressionAll.cpp b/test/data/android/hardware/tests/expression/1.0/ExpressionAll.cpp
deleted file mode 100644
index b66cfb4..0000000
--- a/test/data/android/hardware/tests/expression/1.0/ExpressionAll.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-#include <android/hardware/tests/expression/1.0//BpExpression.h>
-#include <android/hardware/tests/expression/1.0//BnExpression.h>
-#include <android/hardware/tests/expression/1.0//BsExpression.h>
-
-namespace android {
-namespace hardware {
-namespace tests {
-namespace expression {
-namespace V1_0 {
-
-constexpr hidl_version IExpression::version;
-
-BpExpression::BpExpression(const ::android::sp<::android::hardware::IBinder> &_hidl_impl)
- : BpInterface<IHwExpression>(_hidl_impl),
- HidlInstrumentor("android.hardware.tests.expression@1.0::IExpression") {
-}
-
-::android::hardware::Return<void> BpExpression::foo1(const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>& array) {
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)&array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo1", &_hidl_args);
- }
- }
-
- ::android::hardware::Parcel _hidl_data;
- ::android::hardware::Parcel _hidl_reply;
- ::android::status_t _hidl_err;
- ::android::hardware::Status _hidl_status;
-
- _hidl_err = _hidl_data.writeInterfaceToken(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- size_t _hidl_array_parent;
-
- _hidl_err = _hidl_data.writeBuffer(array.data(), 1 * sizeof(int32_t), &_hidl_array_parent);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = remote()->transact(1 /* foo1 */, _hidl_data, &_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = _hidl_status.readFromParcel(_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- if (!_hidl_status.isOk()) { return _hidl_status; }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_EXIT, "android.hardware.tests.expression", "1.0", "IExpression", "foo1", &_hidl_args);
- }
- }
-
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>();
-
-_hidl_error:
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>(_hidl_status);
-}
-
-::android::hardware::Return<void> BpExpression::foo2(const hidl_array<int32_t, 13 /* (5 + 8) */>& array) {
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)&array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo2", &_hidl_args);
- }
- }
-
- ::android::hardware::Parcel _hidl_data;
- ::android::hardware::Parcel _hidl_reply;
- ::android::status_t _hidl_err;
- ::android::hardware::Status _hidl_status;
-
- _hidl_err = _hidl_data.writeInterfaceToken(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- size_t _hidl_array_parent;
-
- _hidl_err = _hidl_data.writeBuffer(array.data(), 13 * sizeof(int32_t), &_hidl_array_parent);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = remote()->transact(2 /* foo2 */, _hidl_data, &_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = _hidl_status.readFromParcel(_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- if (!_hidl_status.isOk()) { return _hidl_status; }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_EXIT, "android.hardware.tests.expression", "1.0", "IExpression", "foo2", &_hidl_args);
- }
- }
-
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>();
-
-_hidl_error:
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>(_hidl_status);
-}
-
-::android::hardware::Return<void> BpExpression::foo3(const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>& array) {
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)&array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo3", &_hidl_args);
- }
- }
-
- ::android::hardware::Parcel _hidl_data;
- ::android::hardware::Parcel _hidl_reply;
- ::android::status_t _hidl_err;
- ::android::hardware::Status _hidl_status;
-
- _hidl_err = _hidl_data.writeInterfaceToken(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- size_t _hidl_array_parent;
-
- _hidl_err = _hidl_data.writeBuffer(array.data(), 20 * sizeof(int32_t), &_hidl_array_parent);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = remote()->transact(3 /* foo3 */, _hidl_data, &_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- _hidl_err = _hidl_status.readFromParcel(_hidl_reply);
- if (_hidl_err != ::android::OK) { goto _hidl_error; }
-
- if (!_hidl_status.isOk()) { return _hidl_status; }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::CLIENT_API_EXIT, "android.hardware.tests.expression", "1.0", "IExpression", "foo3", &_hidl_args);
- }
- }
-
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>();
-
-_hidl_error:
- _hidl_status.setFromStatusT(_hidl_err);
- return ::android::hardware::Return<void>(_hidl_status);
-}
-
-IMPLEMENT_HWBINDER_META_INTERFACE(Expression, "android.hardware.tests.expression@1.0::IExpression");
-
-BnExpression::BnExpression(const ::android::sp<IExpression> &_hidl_impl)
- : BnInterface<IExpression, IHwExpression>(_hidl_impl),
- HidlInstrumentor("android.hardware.tests.expression@1.0::IExpression") {
-}
-
-::android::status_t BnExpression::onTransact(
- uint32_t _hidl_code,
- const ::android::hardware::Parcel &_hidl_data,
- ::android::hardware::Parcel *_hidl_reply,
- uint32_t _hidl_flags,
- TransactCallback _hidl_cb) {
- ::android::status_t _hidl_err = ::android::OK;
-
- switch (_hidl_code) {
- case 1 /* foo1 */:
- {
- if (!_hidl_data.enforceInterface(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor)) {
- _hidl_err = ::android::BAD_TYPE;
- break;
- }
-
- const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>* array;
-
- size_t _hidl_array_parent;
-
- array = (const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>*)_hidl_data.readBuffer(&_hidl_array_parent);
-
- if (array == nullptr) {
- _hidl_err = ::android::UNKNOWN_ERROR;
- break;
- }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::SERVER_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo1", &_hidl_args);
- }
- }
-
- foo1(*array);
-
- ::android::hardware::Status::ok().writeToParcel(_hidl_reply);
- break;
- }
-
- case 2 /* foo2 */:
- {
- if (!_hidl_data.enforceInterface(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor)) {
- _hidl_err = ::android::BAD_TYPE;
- break;
- }
-
- const hidl_array<int32_t, 13 /* (5 + 8) */>* array;
-
- size_t _hidl_array_parent;
-
- array = (const hidl_array<int32_t, 13 /* (5 + 8) */>*)_hidl_data.readBuffer(&_hidl_array_parent);
-
- if (array == nullptr) {
- _hidl_err = ::android::UNKNOWN_ERROR;
- break;
- }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::SERVER_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo2", &_hidl_args);
- }
- }
-
- foo2(*array);
-
- ::android::hardware::Status::ok().writeToParcel(_hidl_reply);
- break;
- }
-
- case 3 /* foo3 */:
- {
- if (!_hidl_data.enforceInterface(::android::hardware::tests::expression::V1_0::IHwExpression::descriptor)) {
- _hidl_err = ::android::BAD_TYPE;
- break;
- }
-
- const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>* array;
-
- size_t _hidl_array_parent;
-
- array = (const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>*)_hidl_data.readBuffer(&_hidl_array_parent);
-
- if (array == nullptr) {
- _hidl_err = ::android::UNKNOWN_ERROR;
- break;
- }
-
- if (UNLIKELY(mEnableInstrumentation)) {
- std::vector<void *> _hidl_args;
- _hidl_args.push_back((void *)array);
- for (auto callback: mInstrumentationCallbacks) {
- callback(InstrumentationEvent::SERVER_API_ENTRY, "android.hardware.tests.expression", "1.0", "IExpression", "foo3", &_hidl_args);
- }
- }
-
- foo3(*array);
-
- ::android::hardware::Status::ok().writeToParcel(_hidl_reply);
- break;
- }
-
- default:
- {
- return ::android::hardware::BnInterface<IExpression, IHwExpression>::onTransact(
- _hidl_code, _hidl_data, _hidl_reply, _hidl_flags, _hidl_cb);
- }
- }
-
- if (_hidl_err == ::android::UNEXPECTED_NULL) {
- _hidl_err = ::android::hardware::Status::fromExceptionCode(
- ::android::hardware::Status::EX_NULL_POINTER)
- .writeToParcel(_hidl_reply);
- }
-
- return _hidl_err;
-}
-
-BsExpression::BsExpression(const sp<IExpression> impl) : mImpl(impl) {}
-
-IMPLEMENT_REGISTER_AND_GET_SERVICE(Expression, "android.hardware.tests.expression@1.0-impl.so")
-} // namespace V1_0
-} // namespace expression
-} // namespace tests
-} // namespace hardware
-} // namespace android
diff --git a/test/data/android/hardware/tests/expression/1.0/IExpression.h b/test/data/android/hardware/tests/expression/1.0/IExpression.h
deleted file mode 100644
index e7433b8..0000000
--- a/test/data/android/hardware/tests/expression/1.0/IExpression.h
+++ /dev/null
@@ -1,431 +0,0 @@
-#ifndef HIDL_GENERATED_android_hardware_tests_expression_V1_0_IExpression_H_
-#define HIDL_GENERATED_android_hardware_tests_expression_V1_0_IExpression_H_
-
-#include <hidl/HidlSupport.h>
-#include <hidl/IServiceManager.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-#include <utils/NativeHandle.h>
-
-namespace android {
-namespace hardware {
-namespace tests {
-namespace expression {
-namespace V1_0 {
-
-struct IExpression : virtual public RefBase {
- enum class UInt64LiteralTypeGuessing : uint64_t {
- noSuffixDec1 = 0ull, // 0
- noSuffixDec2 = 1ull, // 1
- noSuffixDec3 = 18446744073709551615ull, // (-1)
- noSuffixDec4 = 18446744073709551615ull, // (~0)
- noSuffixDec5 = 2147483647ull, // 2147483647
- noSuffixDec6 = 18446744071562067968ull, // (-2147483648)
- noSuffixDec7 = 2147483648ull, // 2147483648
- noSuffixDec8 = 18446744071562067967ull, // (-2147483649)
- noSuffixDec9 = 0ull, // (~(-1))
- noSuffixHex1 = 2147483647ull, // 0x7fffffff
- noSuffixHex2 = 2147483648ull, // 0x80000000
- noSuffixHex3 = 4294967295ull, // 0xffffffff
- longHex1 = 4294967295ull, // 0xffffffffl
- longHex2 = 68719476735ull, // 0Xfffffffff
- longHex3 = 9223372036854775807ull, // 0x7fffffffffffffff
- longHex4 = 9223372036854775808ull, // 0x8000000000000000
- longHex5 = 18446744073709551615ull, // 0xFFFFFFFFFFFFFFFF
- };
-
- enum class SuffixedLiteralTypeGuessing : int32_t {
- decInt32_1 = 1, // ((~(-1)) == 0)
- decInt32_2 = 1, // ((-(1 << 31)) == (1 << 31))
- decInt64_1 = 1, // ((~(-1l)) == 0)
- decInt64_2 = 1, // ((~4294967295) != 0)
- decInt64_3 = 1, // ((~4294967295l) != 0)
- decInt64_4 = 1, // ((-(1l << 63)) == (1l << 63))
- hexInt32_1 = 1, // ((-0x7fffffff) < 0)
- hexUInt32_1 = 1, // ((-0x80000000) > 0)
- hexUInt32_2 = 1, // ((~0xFFFFFFFF) == 0)
- hexInt64_1 = 1, // ((-0x7FFFFFFFFFFFFFFF) < 0)
- hexUInt64_1 = 1, // ((-0x8000000000000000) > 0)
- };
-
- enum class Int64LiteralTypeGuessing : int64_t {
- noSuffixDec11 = -2147483648ll, // (1 + 0x7fffffff)
- noSuffixDec12 = 2147483647ll, // (0x80000000 - 1)
- };
-
- enum class Int32BitShifting : int32_t {
- int32BitShift1 = -2147483648, // (1 << 31)
- };
-
- enum class UInt32BitShifting : uint32_t {
- uint32BitShift1 = 2147483648u, // (1 << 31)
- };
-
- enum class Int64BitShifting : int64_t {
- int64BitShift1 = (int64_t)(-9223372036854775808ull), // (1l << 63)
- };
-
- enum class UInt64BitShifting : uint64_t {
- uint64BitShift1 = 9223372036854775808ull, // (1l << 63)
- };
-
- enum class Precedence : int32_t {
- literal = 4,
- neg = -4, // (-4)
- literalL = -4, // (-4L)
- hex = -1, // 0xffffffff
- hexLong = -1, // 0xffffffffl
- hexLong2 = -1, // 0xfffffffff
- simpleArithmetic = 5, // (4 + 1)
- simpleArithmetic2 = 1, // ((2 + 3) - 4)
- simpleBoolExpr = 0, // (1 == 4)
- simpleLogical = 1, // (1 && 1)
- simpleComp = 1, // (1 < 2)
- boolExpr1 = 0, // (!(((3 != 4) || (((2 < 3) <= 3) > 4)) >= 0))
- boolExpr = 0, // ((1 == 7) && (!(((3 != 4) || (((2 < 3) <= 3) > 4)) >= 0)))
- simpleBitShift = 4, // (1 << 2)
- simpleBitShift2 = 2, // (4 >> 1)
- simpleBitShiftNeg = 2, // (4 << (-1))
- simpleArithmeticRightShift = -1, // ((1 << 31) >> 31)
- simpleBitExpr = 5, // (1 | (16 >> 2))
- bitExpr = 3, // (((~42) & ((1 << 3) | (16 >> 2))) ^ 7)
- arithmeticExpr = 33, // ((2 + 3) - ((4 * (-7)) / (10 % 3)))
- messyExpr = 2, // (2 + ((-3) & (4 / 7)))
- paranExpr = 2, // (1 + 1)
- ternary = 2, // (1?2:3)
- ternary2 = 3, // ((1 && 2)?3:4)
- complicatedTernary2 = 56, // ((((1 - 1) && (2 + 3)) || 5)?(7 * 8):(-3))
- };
-
- enum class OperatorSanityCheck : int32_t {
- plus = 1, // ((1 + 2) == 3)
- minus = 1, // ((8 - 9) == (-1))
- product = 1, // ((9 * 9) == 81)
- division = 1, // ((29 / 3) == 9)
- mod = 1, // ((29 % 3) == 2)
- bit_or = 1, // ((0xC0010000 | 0xF00D) == 0xC001F00D)
- bit_or2 = 1, // ((10 | 6) == 14)
- bit_and = 1, // ((10 & 6) == 2)
- bit_xor = 1, // ((10 ^ 6) == 12)
- lt1 = 1, // (6 < 10)
- lt2 = 1, // ((10 < 10) == 0)
- gt1 = 1, // ((6 > 10) == 0)
- gt2 = 1, // ((10 > 10) == 0)
- gte1 = 1, // (19 >= 10)
- gte2 = 1, // (10 >= 10)
- lte1 = 1, // (5 <= 10)
- lte2 = 1, // ((19 <= 10) == 0)
- ne1 = 1, // (19 != 10)
- ne2 = 1, // ((10 != 10) == 0)
- lshift = 1, // ((22 << 1) == 44)
- rshift = 1, // ((11 >> 1) == 5)
- logor1 = 1, // ((1 || 0) == 1)
- logor2 = 1, // ((1 || 1) == 1)
- logor3 = 1, // ((0 || 0) == 0)
- logor4 = 1, // ((0 || 1) == 1)
- logand1 = 1, // ((1 && 0) == 0)
- logand2 = 1, // ((1 && 1) == 1)
- logand3 = 1, // ((0 && 0) == 0)
- logand4 = 1, // ((0 && 1) == 0)
- };
-
- enum class Grayscale : int8_t {
- WHITE = 126,
- GRAY = 127,
- DARK_GRAY = -128, // 128
- BLACK = -127, // 129
- };
-
- enum class Color : int8_t {
- WHITE = 126,
- GRAY = 127,
- DARK_GRAY = -128, // 128
- BLACK = -127, // 129
- RED = -126, // 130
- RUBY = 0,
- GREEN = 1,
- BLUE = 5,
- CYAN = 6,
- ORANGE = 7,
- ROSE = 126, // WHITE
- };
-
- enum class Foo1 : int8_t {
- };
-
- enum class Foo2 : int8_t {
- };
-
- enum class Foo3 : int8_t {
- BAR1 = 0,
- BAR2 = 10,
- };
-
- enum class Foo4 : int8_t {
- BAR1 = 0,
- BAR2 = 10,
- BAR3 = 11,
- BAR4 = 21, // (BAR2 + BAR3)
- };
-
- enum class Number : uint8_t {
- MAX = 255,
- MAX_PLUS_1 = 0, // 256
- MAX_PLUS_2 = 1, // 257
- };
-
- enum class Constants : int32_t {
- CONST_FOO = 0,
- CONST_BAR = 70,
- MAX_ARRAY_SIZE = 20,
- MAX_ARRAY_SIZE2 = 21,
- MAX_ARRAY_SIZE3 = 40, // (MAX_ARRAY_SIZE + MAX_ARRAY_SIZE)
- MY_INT32_MAX_MINUS_1 = 2147483646, // 0x7FFFFFFE
- MY_INT32_MAX = 2147483647,
- MY_INT32_MIN = -2147483648,
- MY_INT32_MIN_PLUS_1 = -2147483647,
- };
-
- constexpr static hidl_version version = {1,0};
- virtual const hidl_version& getInterfaceVersion() const {
- return version;
- }
-
- virtual bool isRemote() const { return false; }
-
- // @callflow(key=1 /* (Constants:CONST_FOO + 1) */)
- virtual ::android::hardware::Return<void> foo1(const hidl_array<int32_t, 1 /* (Constants:CONST_FOO + 1) */>& array) = 0;
- virtual ::android::hardware::Return<void> foo2(const hidl_array<int32_t, 13 /* (5 + 8) */>& array) = 0;
- virtual ::android::hardware::Return<void> foo3(const hidl_array<int32_t, 20 /* Constants:MAX_ARRAY_SIZE */>& array) = 0;
- DECLARE_REGISTER_AND_GET_SERVICE(Expression)
-};
-
-inline IExpression::UInt64LiteralTypeGuessing operator|(
- IExpression::UInt64LiteralTypeGuessing lhs, IExpression::UInt64LiteralTypeGuessing rhs) {
- return static_cast<IExpression::UInt64LiteralTypeGuessing>(
- static_cast<uint64_t>(lhs) | static_cast<uint64_t>(rhs));
-}
-
-inline IExpression::UInt64LiteralTypeGuessing & operator|=(
- IExpression::UInt64LiteralTypeGuessing &lhs, IExpression::UInt64LiteralTypeGuessing rhs) {
- lhs = static_cast<IExpression::UInt64LiteralTypeGuessing>(
- static_cast<uint64_t>(lhs) | static_cast<uint64_t>(rhs));
- return lhs;
-}
-
-inline IExpression::SuffixedLiteralTypeGuessing operator|(
- IExpression::SuffixedLiteralTypeGuessing lhs, IExpression::SuffixedLiteralTypeGuessing rhs) {
- return static_cast<IExpression::SuffixedLiteralTypeGuessing>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
-}
-
-inline IExpression::SuffixedLiteralTypeGuessing & operator|=(
- IExpression::SuffixedLiteralTypeGuessing &lhs, IExpression::SuffixedLiteralTypeGuessing rhs) {
- lhs = static_cast<IExpression::SuffixedLiteralTypeGuessing>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Int64LiteralTypeGuessing operator|(
- IExpression::Int64LiteralTypeGuessing lhs, IExpression::Int64LiteralTypeGuessing rhs) {
- return static_cast<IExpression::Int64LiteralTypeGuessing>(
- static_cast<int64_t>(lhs) | static_cast<int64_t>(rhs));
-}
-
-inline IExpression::Int64LiteralTypeGuessing & operator|=(
- IExpression::Int64LiteralTypeGuessing &lhs, IExpression::Int64LiteralTypeGuessing rhs) {
- lhs = static_cast<IExpression::Int64LiteralTypeGuessing>(
- static_cast<int64_t>(lhs) | static_cast<int64_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Int32BitShifting operator|(
- IExpression::Int32BitShifting lhs, IExpression::Int32BitShifting rhs) {
- return static_cast<IExpression::Int32BitShifting>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
-}
-
-inline IExpression::Int32BitShifting & operator|=(
- IExpression::Int32BitShifting &lhs, IExpression::Int32BitShifting rhs) {
- lhs = static_cast<IExpression::Int32BitShifting>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
- return lhs;
-}
-
-inline IExpression::UInt32BitShifting operator|(
- IExpression::UInt32BitShifting lhs, IExpression::UInt32BitShifting rhs) {
- return static_cast<IExpression::UInt32BitShifting>(
- static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs));
-}
-
-inline IExpression::UInt32BitShifting & operator|=(
- IExpression::UInt32BitShifting &lhs, IExpression::UInt32BitShifting rhs) {
- lhs = static_cast<IExpression::UInt32BitShifting>(
- static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Int64BitShifting operator|(
- IExpression::Int64BitShifting lhs, IExpression::Int64BitShifting rhs) {
- return static_cast<IExpression::Int64BitShifting>(
- static_cast<int64_t>(lhs) | static_cast<int64_t>(rhs));
-}
-
-inline IExpression::Int64BitShifting & operator|=(
- IExpression::Int64BitShifting &lhs, IExpression::Int64BitShifting rhs) {
- lhs = static_cast<IExpression::Int64BitShifting>(
- static_cast<int64_t>(lhs) | static_cast<int64_t>(rhs));
- return lhs;
-}
-
-inline IExpression::UInt64BitShifting operator|(
- IExpression::UInt64BitShifting lhs, IExpression::UInt64BitShifting rhs) {
- return static_cast<IExpression::UInt64BitShifting>(
- static_cast<uint64_t>(lhs) | static_cast<uint64_t>(rhs));
-}
-
-inline IExpression::UInt64BitShifting & operator|=(
- IExpression::UInt64BitShifting &lhs, IExpression::UInt64BitShifting rhs) {
- lhs = static_cast<IExpression::UInt64BitShifting>(
- static_cast<uint64_t>(lhs) | static_cast<uint64_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Precedence operator|(
- IExpression::Precedence lhs, IExpression::Precedence rhs) {
- return static_cast<IExpression::Precedence>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
-}
-
-inline IExpression::Precedence & operator|=(
- IExpression::Precedence &lhs, IExpression::Precedence rhs) {
- lhs = static_cast<IExpression::Precedence>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
- return lhs;
-}
-
-inline IExpression::OperatorSanityCheck operator|(
- IExpression::OperatorSanityCheck lhs, IExpression::OperatorSanityCheck rhs) {
- return static_cast<IExpression::OperatorSanityCheck>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
-}
-
-inline IExpression::OperatorSanityCheck & operator|=(
- IExpression::OperatorSanityCheck &lhs, IExpression::OperatorSanityCheck rhs) {
- lhs = static_cast<IExpression::OperatorSanityCheck>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Grayscale operator|(
- IExpression::Grayscale lhs, IExpression::Grayscale rhs) {
- return static_cast<IExpression::Grayscale>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Grayscale & operator|=(
- IExpression::Grayscale &lhs, IExpression::Grayscale rhs) {
- lhs = static_cast<IExpression::Grayscale>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Color operator|(
- IExpression::Color lhs, IExpression::Color rhs) {
- return static_cast<IExpression::Color>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Color & operator|=(
- IExpression::Color &lhs, IExpression::Color rhs) {
- lhs = static_cast<IExpression::Color>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Foo1 operator|(
- IExpression::Foo1 lhs, IExpression::Foo1 rhs) {
- return static_cast<IExpression::Foo1>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Foo1 & operator|=(
- IExpression::Foo1 &lhs, IExpression::Foo1 rhs) {
- lhs = static_cast<IExpression::Foo1>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Foo2 operator|(
- IExpression::Foo2 lhs, IExpression::Foo2 rhs) {
- return static_cast<IExpression::Foo2>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Foo2 & operator|=(
- IExpression::Foo2 &lhs, IExpression::Foo2 rhs) {
- lhs = static_cast<IExpression::Foo2>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Foo3 operator|(
- IExpression::Foo3 lhs, IExpression::Foo3 rhs) {
- return static_cast<IExpression::Foo3>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Foo3 & operator|=(
- IExpression::Foo3 &lhs, IExpression::Foo3 rhs) {
- lhs = static_cast<IExpression::Foo3>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Foo4 operator|(
- IExpression::Foo4 lhs, IExpression::Foo4 rhs) {
- return static_cast<IExpression::Foo4>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
-}
-
-inline IExpression::Foo4 & operator|=(
- IExpression::Foo4 &lhs, IExpression::Foo4 rhs) {
- lhs = static_cast<IExpression::Foo4>(
- static_cast<int8_t>(lhs) | static_cast<int8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Number operator|(
- IExpression::Number lhs, IExpression::Number rhs) {
- return static_cast<IExpression::Number>(
- static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
-}
-
-inline IExpression::Number & operator|=(
- IExpression::Number &lhs, IExpression::Number rhs) {
- lhs = static_cast<IExpression::Number>(
- static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
- return lhs;
-}
-
-inline IExpression::Constants operator|(
- IExpression::Constants lhs, IExpression::Constants rhs) {
- return static_cast<IExpression::Constants>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
-}
-
-inline IExpression::Constants & operator|=(
- IExpression::Constants &lhs, IExpression::Constants rhs) {
- lhs = static_cast<IExpression::Constants>(
- static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
- return lhs;
-}
-
-
-} // namespace V1_0
-} // namespace expression
-} // namespace tests
-} // namespace hardware
-} // namespace android
-
-#endif // HIDL_GENERATED_android_hardware_tests_expression_V1_0_IExpression_H_
diff --git a/test/data/android/hardware/tests/expression/1.0/IExpression.java b/test/data/android/hardware/tests/expression/1.0/IExpression.java
deleted file mode 100644
index ebc0bf9..0000000
--- a/test/data/android/hardware/tests/expression/1.0/IExpression.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package android.hardware.tests.expression.V1_0;
-
-import android.os.IHwBinder;
-import android.os.IHwInterface;
-import android.os.HwBinder;
-import android.os.HwBlob;
-import android.os.HwParcel;
-
-import java.util.Vector;
-
-public interface IExpression extends IHwInterface {
- public static final String kInterfaceName = "android.hardware.tests.expression@1.0::IExpression";
-
- public static IExpression asInterface(IHwBinder binder) {
- if (binder == null) {
- return null;
- }
-
- IHwInterface iface =
- binder.queryLocalInterface(kInterfaceName);
-
- if ((iface != null) && (iface instanceof IExpression)) {
- return (IExpression)iface;
- }
-
- return new IExpression.Proxy(binder);
- }
-
- public IHwBinder asBinder();
-
- public final class UInt64LiteralTypeGuessing {
- public static final long noSuffixDec1 = 0L; // (int32_t)0
- public static final long noSuffixDec2 = 1L; // (int32_t)1
- public static final long noSuffixDec3 = -1L; // (int32_t)(-1)
- public static final long noSuffixDec4 = -1L; // (int32_t)(~0)
- public static final long noSuffixDec5 = 2147483647L; // (int32_t)2147483647
- public static final long noSuffixDec6 = -2147483648L; // (int64_t)(-2147483648)
- public static final long noSuffixDec7 = 2147483648L; // (int64_t)2147483648
- public static final long noSuffixDec8 = -2147483649L; // (int64_t)(-2147483649)
- public static final long noSuffixDec9 = 0L; // (int32_t)(~(-1))
- public static final long noSuffixHex1 = 2147483647L; // (int32_t)0x7fffffff
- public static final long noSuffixHex2 = 2147483648L; // (uint32_t)0x80000000
- public static final long noSuffixHex3 = 4294967295L; // (uint32_t)0xffffffff
- public static final long longHex1 = 4294967295L; // (int64_t)0xffffffffl
- public static final long longHex2 = 68719476735L; // (int64_t)0xfffffffff
- public static final long longHex3 = 9223372036854775807L; // (int64_t)0x7fffffffffffffff
- public static final long longHex4 = -9223372036854775808L; // (uint64_t)0x8000000000000000
- public static final long longHex5 = -1L; // (uint64_t)0xFFFFFFFFFFFFFFFF
- };
-
- public final class SuffixedLiteralTypeGuessing {
- public static final int decInt32_1 = 1; // (bool)((~(-1)) == 0)
- public static final int decInt32_2 = 1; // (bool)((-(1 << 31)) == (1 << 31))
- public static final int decInt64_1 = 1; // (bool)((~(-1l)) == 0)
- public static final int decInt64_2 = 1; // (bool)((~4294967295) != 0)
- public static final int decInt64_3 = 1; // (bool)((~4294967295l) != 0)
- public static final int decInt64_4 = 1; // (bool)((-(1l << 63)) == (1l << 63))
- public static final int hexInt32_1 = 1; // (bool)((-0x7fffffff) < 0)
- public static final int hexUInt32_1 = 1; // (bool)((-0x80000000) > 0)
- public static final int hexUInt32_2 = 1; // (bool)((~0xFFFFFFFF) == 0)
- public static final int hexInt64_1 = 1; // (bool)((-0x7FFFFFFFFFFFFFFF) < 0)
- public static final int hexUInt64_1 = 1; // (bool)((-0x8000000000000000) > 0)
- };
-
- public final class Int64LiteralTypeGuessing {
- public static final long noSuffixDec11 = -2147483648L; // (int32_t)(1 + 0x7fffffff)
- public static final long noSuffixDec12 = 2147483647L; // (uint32_t)(0x80000000 - 1)
- };
-
- public final class Int32BitShifting {
- public static final int int32BitShift1 = -2147483648; // (int32_t)(1 << 31)
- };
-
- public final class UInt32BitShifting {
- public static final int uint32BitShift1 = -2147483648; // (int32_t)(1 << 31)
- };
-
- public final class Int64BitShifting {
- public static final long int64BitShift1 = -9223372036854775808L; // (int64_t)(1l << 63)
- };
-
- public final class UInt64BitShifting {
- public static final long uint64BitShift1 = -9223372036854775808L; // (int64_t)(1l << 63)
- };
-
- public final class Precedence {
- public static final int literal = 4; // (int32_t)4
- public static final int neg = -4; // (int32_t)(-4)
- public static final int literalL = -4; // (int64_t)(-4L)
- public static final int hex = -1; // (uint32_t)0xffffffff
- public static final int hexLong = -1; // (int64_t)0xffffffffl
- public static final int hexLong2 = -1; // (int64_t)0xfffffffff
- public static final int simpleArithmetic = 5; // (int32_t)(4 + 1)
- public static final int simpleArithmetic2 = 1; // (int32_t)((2 + 3) - 4)
- public static final int simpleBoolExpr = 0; // (bool)(1 == 4)
- public static final int simpleLogical = 1; // (bool)(1 && 1)
- public static final int simpleComp = 1; // (bool)(1 < 2)
- public static final int boolExpr1 = 0; // (bool)(!(((3 != 4) || (((2 < 3) <= 3) > 4)) >= 0))
- public static final int boolExpr = 0; // (bool)((1 == 7) && (!(((3 != 4) || (((2 < 3) <= 3) > 4)) >= 0)))
- public static final int simpleBitShift = 4; // (int32_t)(1 << 2)
- public static final int simpleBitShift2 = 2; // (int32_t)(4 >> 1)
- public static final int simpleBitShiftNeg = 2; // (int32_t)(4 << (-1))
- public static final int simpleArithmeticRightShift = -1; // (int32_t)((1 << 31) >> 31)
- public static final int simpleBitExpr = 5; // (int32_t)(1 | (16 >> 2))
- public static final int bitExpr = 3; // (int32_t)(((~42) & ((1 << 3) | (16 >> 2))) ^ 7)
- public static final int arithmeticExpr = 33; // (int32_t)((2 + 3) - ((4 * (-7)) / (10 % 3)))
- public static final int messyExpr = 2; // (int32_t)(2 + ((-3) & (4 / 7)))
- public static final int paranExpr = 2; // (int32_t)(1 + 1)
- public static final int ternary = 2; // (int32_t)(1?2:3)
- public static final int ternary2 = 3; // (int32_t)((1 && 2)?3:4)
- public static final int complicatedTernary2 = 56; // (int32_t)((((1 - 1) && (2 + 3)) || 5)?(7 * 8):(-3))
- };
-
- public final class OperatorSanityCheck {
- public static final int plus = 1; // (bool)((1 + 2) == 3)
- public static final int minus = 1; // (bool)((8 - 9) == (-1))
- public static final int product = 1; // (bool)((9 * 9) == 81)
- public static final int division = 1; // (bool)((29 / 3) == 9)
- public static final int mod = 1; // (bool)((29 % 3) == 2)
- public static final int bit_or = 1; // (bool)((0xC0010000 | 0xF00D) == 0xC001F00D)
- public static final int bit_or2 = 1; // (bool)((10 | 6) == 14)
- public static final int bit_and = 1; // (bool)((10 & 6) == 2)
- public static final int bit_xor = 1; // (bool)((10 ^ 6) == 12)
- public static final int lt1 = 1; // (bool)(6 < 10)
- public static final int lt2 = 1; // (bool)((10 < 10) == 0)
- public static final int gt1 = 1; // (bool)((6 > 10) == 0)
- public static final int gt2 = 1; // (bool)((10 > 10) == 0)
- public static final int gte1 = 1; // (bool)(19 >= 10)
- public static final int gte2 = 1; // (bool)(10 >= 10)
- public static final int lte1 = 1; // (bool)(5 <= 10)
- public static final int lte2 = 1; // (bool)((19 <= 10) == 0)
- public static final int ne1 = 1; // (bool)(19 != 10)
- public static final int ne2 = 1; // (bool)((10 != 10) == 0)
- public static final int lshift = 1; // (bool)((22 << 1) == 44)
- public static final int rshift = 1; // (bool)((11 >> 1) == 5)
- public static final int logor1 = 1; // (bool)((1 || 0) == 1)
- public static final int logor2 = 1; // (bool)((1 || 1) == 1)
- public static final int logor3 = 1; // (bool)((0 || 0) == 0)
- public static final int logor4 = 1; // (bool)((0 || 1) == 1)
- public static final int logand1 = 1; // (bool)((1 && 0) == 0)
- public static final int logand2 = 1; // (bool)((1 && 1) == 1)
- public static final int logand3 = 1; // (bool)((0 && 0) == 0)
- public static final int logand4 = 1; // (bool)((0 && 1) == 0)
- };
-
- public static final int kOpEnd = IHwBinder.FIRST_CALL_TRANSACTION + 0;
-
-
- public static final class Proxy implements IExpression {
- private IHwBinder mRemote;
-
- public Proxy(IHwBinder remote) {
- mRemote = remote;
- }
-
- public IHwBinder asBinder() {
- return mRemote;
- }
-
- // Methods from ::android::hardware::tests::expression::V1_0::IExpression follow.
- }
-
- public static abstract class Stub extends HwBinder implements IExpression {
- public IHwBinder asBinder() {
- return this;
- }
-
- public IHwInterface queryLocalInterface(String descriptor) {
- if (kInterfaceName.equals(descriptor)) {
- return this;
- }
- return null;
- }
-
- public void onTransact(int code, HwParcel request, final HwParcel reply, int flags) {
- switch (code) {
- }
- }
- }
-}
diff --git a/test/data/android/hardware/tests/expression/1.0/IHwExpression.h b/test/data/android/hardware/tests/expression/1.0/IHwExpression.h
deleted file mode 100644
index e5852aa..0000000
--- a/test/data/android/hardware/tests/expression/1.0/IHwExpression.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef HIDL_GENERATED_android_hardware_tests_expression_V1_0_IHwExpression_H_
-#define HIDL_GENERATED_android_hardware_tests_expression_V1_0_IHwExpression_H_
-
-#include <android/hardware/tests/expression/1.0/IExpression.h>
-
-
-#include <hidl/HidlSupport.h>
-#include <hidl/Status.h>
-#include <hwbinder/IBinder.h>
-#include <hwbinder/IInterface.h>
-
-namespace android {
-namespace hardware {
-namespace tests {
-namespace expression {
-namespace V1_0 {
-
-struct IHwExpression : public IExpression, public ::android::hardware::IInterface {
- DECLARE_HWBINDER_META_INTERFACE(Expression);
-
-};
-
-} // namespace V1_0
-} // namespace expression
-} // namespace tests
-} // namespace hardware
-} // namespace android
-
-#endif // HIDL_GENERATED_android_hardware_tests_expression_V1_0_IHwExpression_H_
diff --git a/test/java_test/Android.mk b/test/java_test/Android.mk
index 4641ce0..89e0067 100644
--- a/test/java_test/Android.mk
+++ b/test/java_test/Android.mk
@@ -39,7 +39,8 @@
LOCAL_SHARED_LIBRARIES := \
libbase \
- libhidl \
+ libhidlbase \
+ libhidltransport \
libhwbinder \
libutils \
android.hardware.tests.baz@1.0 \
diff --git a/test/test_output.py b/test/test_output.py
deleted file mode 100644
index b435cf0..0000000
--- a/test/test_output.py
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env python
-#
-# 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.
-
-import filecmp
-import logging
-import os
-import shutil
-import subprocess
-import sys
-import unittest
-
-class Tester(unittest.TestCase):
- """Integration test runner for hidl-gen.
- Runs hidl-gen on a bunch of packages/files and compares the out results with
- canonical ones. Exit code is 0 iff all tests pass.
-
- Usage:
- python test_output.py path_to_hidl_gen canonical_dir output_dir (interface_root)
- If interface_root is not provided, the default package "andorid.hardwre" and
- the path root defined in $TOP will be used.
-
- Attributes:
- _hidl_gen_path: the path to run hidl-gen.
- _canonical_dir: root directory contains canonical files for comparison.
- _output_dir: root directory that stores all output files.
- _interface_root: package:path root for the interface.
- e.g., android.hardware:hardware/interfaces
- _errors: number of errors generates during the test.
- """
- def __init__(self, testName, hidl_gen_path, canonical_dir, output_dir, interface_root=''):
- super(Tester, self).__init__(testName)
- self._hidl_gen_path = hidl_gen_path
- self._canonical_dir = canonical_dir
- self._output_dir = output_dir
- self._interface_root = interface_root
- self._errors = 0
-
- def setUp(self):
- """Removes output dir to prevent interference from previous runs."""
- self.RemoveOutputDir()
-
- def tearDown(self):
- """If successful, removes the output dir for clean-up."""
- if self._errors == 0:
- self.RemoveOutputDir()
-
- def testAll(self):
- """Run all tests. """
- self.TestVtsOutput()
- self.TestCppOutput()
- self.TestJavaOutput()
-
- def TestVtsOutput(self):
- """Runs hidl-gen to generate vts file and verify the output."""
- self.RunTest("vts", "android.hardware.nfc@1.0",
- "android/hardware/nfc/1.0")
- self.assertEqual(self._errors, 0)
-
- def TestCppOutput(self):
- """Runs hidl-gen to generate c++ file and verify the output."""
- # self.RunTest("c++", "android.hardware.nfc@1.0",
- # "android/hardware/nfc/1.0")
- self.RunTest("c++", "android.hardware.tests.expression@1.0",
- "android/hardware/tests/expression/1.0")
- self.assertEqual(self._errors, 0)
-
- def TestJavaOutput(self):
- self.RunTest("java", "android.hardware.tests.expression@1.0",
- "android/hardware/tests/expression/1.0")
- self.assertEqual(self._errors, 0)
-
- def RunTest(self, language, fqname, package_path):
- """Run hidl-gen with given language and fqname, and compare the results.
-
- Args:
- language: the target language for the output code. e.g. c++, vts.
- fqname: fully qualified name of the input files.
- For single file input, follow the format:
- package@version::fileName.
- For directory input, follow the format: package@version.
- example: android.hardware.nfc@1.0::INfc.hal
- package_path: path for the package in fqname.
- example: android/hardware/nfc/1.0
- """
- if self._interface_root != '':
- hidl_gen_cmd = [self._hidl_gen_path, "-o", self._output_dir, "-L",
- language, "-r", self._interface_root, fqname]
- else:
- hidl_gen_cmd = [self._hidl_gen_path, "-o", self._output_dir, "-L",
- language, fqname]
- self.RunCommand(hidl_gen_cmd)
-
- output_dir = os.path.join(self._output_dir, package_path)
- canonical_dir = os.path.join(self._canonical_dir, package_path)
- self.CompareOutput(output_dir, canonical_dir)
-
- def RunCommand(self, command):
- """Runs a unix command and stashes the result."""
- proc = subprocess.Popen(command,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- (stdout, stderr) = proc.communicate()
- if proc.returncode != 0:
- self.Error(("Fail to execute command: %s" % command +
- (" (stdout: %s\n stderr: %s\n)" % (stdout, stderr))))
-
- def CompareOutput(self, output_dir, canonical_dir):
- """Compare the files under output_dir with those under canonical_dir.
-
- Args:
- output_dir: directory that stores output files.
- canonical_dir: directory contains canonical files for comparison.
- """
- for file_name in os.listdir(output_dir):
- logging.info("comparing file: %s" % file)
- self.CompareFile(file_name, output_dir, canonical_dir)
-
- def CompareFile(self, file_name, output_dir, canonical_dir):
- """Compares a given file and the corresponding one under canonical_dir.
-
- Args:
- file_name: name of file for comparison.
- output_dir: directory that stores output files.
- canonical_dir: directory contains canonical files for comparison.
- """
- canonical_file = os.path.join(canonical_dir, file_name)
- output_file = os.path.join(output_dir, file_name)
- if not os.path.isfile(canonical_file):
- self.Error("Generated unexpected file: %s" % output_file)
- else:
- if not filecmp.cmp(output_file, canonical_file):
- self.Error("output file: %s does not match the canonical_file: "
- "%s" % (output_file, canonical_file))
-
- def Error(self, string):
- """Prints an error message and increments error count."""
- logging.error(string)
- self._errors += 1
-
- def RemoveOutputDir(self):
- """Remove the output_dir if it exists."""
- if os.path.exists(self._output_dir):
- shutil.rmtree(self._output_dir)
-
-if __name__ == "__main__":
- if len(sys.argv) != 5 and len(sys.argv) !=4:
- print "Usage: python test_output.py hidl_gen_path canonical_dir " \
- "output_dir (interface_root)"
- sys.exit(1)
- suite = unittest.TestSuite()
- if len(sys.argv) == 5:
- suite.addTest(Tester('testAll', sys.argv[1],sys.argv[2], sys.argv[3], sys.argv[4]))
- else:
- suite.addTest(Tester('testAll', sys.argv[1],sys.argv[2], sys.argv[3]))
- result = unittest.TextTestRunner(verbosity=2).run(suite)
- if not result.wasSuccessful():
- sys.exit(-1)
diff --git a/test/vendor/1.0/Android.bp b/test/vendor/1.0/Android.bp
index e30af12..d72ad8f 100644
--- a/test/vendor/1.0/Android.bp
+++ b/test/vendor/1.0/Android.bp
@@ -34,13 +34,15 @@
generated_headers: ["tests.vendor@1.0_genc++_headers"],
export_generated_headers: ["tests.vendor@1.0_genc++_headers"],
shared_libs: [
- "libhidl",
+ "libhidlbase",
+ "libhidltransport",
"libhwbinder",
"libutils",
"libcutils",
],
export_shared_lib_headers: [
- "libhidl",
+ "libhidlbase",
+ "libhidltransport",
"libhwbinder",
"libutils",
],
diff --git a/utils/StringHelper.cpp b/utils/StringHelper.cpp
index 176d379..2f51c9e 100644
--- a/utils/StringHelper.cpp
+++ b/utils/StringHelper.cpp
@@ -228,7 +228,7 @@
startPos = matchPos + 1;
}
- if (startPos < s.length()) {
+ if (startPos <= s.length()) {
components->push_back(s.substr(startPos));
}
}