Add safe union for cpp-only test.

Bug: 110269925
Test: hidl_test
Change-Id: I18e52f8f41779e57828209882f1191aebc1e6782
This commit is contained in:
Steven Moreland 2018-10-16 18:33:03 -07:00
parent 2267c72423
commit 55cb014dc9
6 changed files with 174 additions and 0 deletions

View file

View file

@ -0,0 +1,14 @@
// This file is autogenerated by hidl-gen -Landroidbp.
hidl_interface {
name: "android.hardware.tests.safeunion.cpp@1.0",
root: "android.hardware",
srcs: [
"ICppSafeUnion.hal",
],
interfaces: [
"android.hidl.base@1.0",
],
gen_java: false,
}

View file

@ -0,0 +1,35 @@
/*
* Copyright (C) 2018 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.tests.safeunion.cpp@1.0;
/**
* Safe union for cpp-only types.
*/
interface ICppSafeUnion {
safe_union PointerFmqSafeUnion {
interface iface;
fmq_sync<uint8_t> fmqSync;
fmq_unsync<uint8_t> fmqUnsync;
};
safe_union FmqSafeUnion {
fmq_sync<uint8_t> fmqSync;
fmq_unsync<uint8_t> fmqUnsync;
};
repeatPointerFmqSafeUnion(PointerFmqSafeUnion fmq) generates (PointerFmqSafeUnion fmq);
repeatFmqSafeUnion(FmqSafeUnion fmq) generates (FmqSafeUnion fmq);
};

View file

@ -0,0 +1,22 @@
cc_library {
name: "android.hardware.tests.safeunion.cpp@1.0-impl",
relative_install_path: "hw",
srcs: [
"CppSafeUnion.cpp",
],
shared_libs: [
"libbase",
"libcutils",
"libhidlbase",
"libhidltransport",
"libhwbinder",
"liblog",
"libutils",
],
// These are static libs only for testing purposes and portability. Shared
// libs should be used on device.
static_libs: [
"android.hardware.tests.safeunion.cpp@1.0",
],
}

View file

@ -0,0 +1,49 @@
/*
* Copyright (C) 2018 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.
*/
#include "CppSafeUnion.h"
namespace android {
namespace hardware {
namespace tests {
namespace safeunion {
namespace cpp {
namespace V1_0 {
namespace implementation {
Return<void> CppSafeUnion::repeatPointerFmqSafeUnion(const ICppSafeUnion::PointerFmqSafeUnion& fmq,
repeatPointerFmqSafeUnion_cb _hidl_cb) {
_hidl_cb(fmq);
return Void();
}
Return<void> CppSafeUnion::repeatFmqSafeUnion(const ICppSafeUnion::FmqSafeUnion& fmq,
repeatFmqSafeUnion_cb _hidl_cb) {
_hidl_cb(fmq);
return Void();
}
ICppSafeUnion* HIDL_FETCH_ICppSafeUnion(const char* /* name */) {
return new CppSafeUnion();
}
} // namespace implementation
} // namespace V1_0
} // namespace cpp
} // namespace safeunion
} // namespace tests
} // namespace hardware
} // namespace android

View file

@ -0,0 +1,54 @@
/*
* Copyright (C) 2018 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.
*/
#pragma once
#include <android/hardware/tests/safeunion/cpp/1.0/ICppSafeUnion.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
namespace android {
namespace hardware {
namespace tests {
namespace safeunion {
namespace cpp {
namespace V1_0 {
namespace implementation {
using ::android::sp;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_memory;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
struct CppSafeUnion : public ICppSafeUnion {
Return<void> repeatPointerFmqSafeUnion(const ICppSafeUnion::PointerFmqSafeUnion& fmq,
repeatPointerFmqSafeUnion_cb _hidl_cb) override;
Return<void> repeatFmqSafeUnion(const ICppSafeUnion::FmqSafeUnion& fmq,
repeatFmqSafeUnion_cb _hidl_cb) override;
};
extern "C" ICppSafeUnion* HIDL_FETCH_ICppSafeUnion(const char* name);
} // namespace implementation
} // namespace V1_0
} // namespace cpp
} // namespace safeunion
} // namespace tests
} // namespace hardware
} // namespace android