Modifications to support soong builds
diff --git a/Android.bp b/Android.bp
deleted file mode 100644
index aaca436..0000000
--- a/Android.bp
+++ /dev/null
@@ -1,4 +0,0 @@
-optional_subdirs = [
- "interfaces",
- "example-server",
-]
diff --git a/example-server/Android.bp b/example-server/Android.bp
deleted file mode 100644
index 7dc1614..0000000
--- a/example-server/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * The example server is a standalone daemon, however
- * vendor implementations may combine with other hal server daemons.
- */
-cc_binary {
- name: "com.dsi.ant@1.0-example",
- relative_install_path: "hw",
- proprietary: true,
- srcs: [
- "src/Ant.cpp",
- "src/Server.cpp"
- ],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libutils",
- "liblog",
- "com.dsi.ant@1.0",
- ],
- init_rc: [
- "com.dsi.ant@1.0-example.rc",
- ],
-}
diff --git a/example-server/README.txt b/example-server/README.txt
deleted file mode 100644
index 246b9f9..0000000
--- a/example-server/README.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-This folder contains an example implementation of a HAL client for ant.
-
-This example expects to be able to use a unix domain socket located at
-/dev/socket/ant. The sepolicy directory shows example policy to use
-as a starting point for the vendor policy, and vintf contains a fragment
-that should be added to the vendor manifest.xml in order to advertise
-that the service is provided.
-
-Note that the example policy does not currently contain the pieces that
-are needed to actually open and use the socket.
-
diff --git a/example-server/com.dsi.ant@1.0-example.rc b/example-server/com.dsi.ant@1.0-example.rc
deleted file mode 100644
index 8595b8c..0000000
--- a/example-server/com.dsi.ant@1.0-example.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service ant_hal_service /vendor/bin/hw/com.dsi.ant@1.0-example
- class hal
- user system
- group system
diff --git a/example-server/sepolicy/ant_example_server.te b/example-server/sepolicy/ant_example_server.te
deleted file mode 100644
index 31fa595..0000000
--- a/example-server/sepolicy/ant_example_server.te
+++ /dev/null
@@ -1,10 +0,0 @@
-type ant_hidl_example, domain;
-type ant_hidl_example_exec, exec_type, vendor_file_type, file_type;
-
-init_daemon_domain(ant_hidl_example);
-hal_server_domain(ant_hidl_example, hal_dsi_ant);
-
-# Any other permissions needed by the server go here.
-# For example, to allow opening the proper socket/char devices
-# needed to communicate with the hardware
-
diff --git a/example-server/sepolicy/file_contexts b/example-server/sepolicy/file_contexts
deleted file mode 100644
index 0547ba0..0000000
--- a/example-server/sepolicy/file_contexts
+++ /dev/null
@@ -1,2 +0,0 @@
-/vendor/bin/hw/com\.dsi\.ant\@1\.0-example u:object_r:ant_hidl_example_exec:s0
-
diff --git a/example-server/src/Ant.cpp b/example-server/src/Ant.cpp
deleted file mode 100644
index 2c25e97..0000000
--- a/example-server/src/Ant.cpp
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * ANT Android Host Stack
- *
- * Copyright 2018 Dynastream Innovations
- *
- * 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.
- */
-
-#define LOG_TAG "Ant Hidl Example"
-
-#include <cassert>
-#include <cstring>
-
-#include <limits>
-#include <sstream>
-#include <stdexcept>
-
-#include <sys/eventfd.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <poll.h>
-
-#include "log/log.h"
-
-#include "Ant.h"
-
-// NOTE: Code here holds mutex locks while making callbacks. This is fine in this case since
-// all of the callback methods are marked as oneway in the hal and therefore are non-blocking.
-
-namespace com {
-namespace dsi {
-namespace ant {
-namespace V1_0 {
-namespace example {
-
-// Convenience typedef, since we only use one type of mutex.
-typedef std::lock_guard<std::mutex> lock;
-
-// Header for framing ANT messages to go to the chip.
-struct MsgHeader {
- uint8_t channel_id;
- uint8_t payload_len;
-
- static const size_t max_payload = std::numeric_limits<uint8_t>::max();
-};
-
-// Error classes. This implementation uses the upper 16 bits of a status code
-// to indicate a class, and the lower 16 bits as an associated errno value.
-// It assumes that all errno values fit, which is currently the case in the
-// errno.h header used by android.
-// see translateStatus to understand exactly what each error code means.
-enum errors : uint16_t {
- GENERIC_ERR,
- SOCKET_ERR,
- CONNECT_ERR,
- EFD_ERR,
- NOFD_ERR,
- LARGEMSG_ERR,
-};
-
-// Convenience to not need the fully scoped name every time.
-static const Status STATUS_OK = (Status)CommonStatusCodes::OK;
-
-// Example implementation uses an UNIX domain socket, which allows for
-// adb reverse-forwarding to be used.
-static const sockaddr_un socket_addr = {
- AF_UNIX,
- "/dev/socket/ant",
- };
-
-static const int poll_timeout_ms = 1000 * 5;
-
-// Implementation properties are constant.
-static const ImplProps props = {
- "ant.hidl.example.1.0",
- OptionFlags::USE_KEEPALIVE | OptionFlags::USE_ANT_FLOW_CONTROL,
-};
-
-// Bit manipulation for status codes.
-
-static Status makeStatus(uint32_t cls, uint32_t err_code)
-{ return ((cls << 16)|(err_code & 0xffff)); }
-
-static uint16_t getErrClass(Status status)
-{ return (uint16_t)((status >> 16) & 0xffff); }
-
-static uint16_t getErrCode(Status status)
-{ return (uint16_t)(status & 0xffff); }
-
-// Convenience stuff for file descriptors.
-static bool isValidFd(int fd) { return fd >= 0; }
-
-static int invalid_fd = -1;
-
-class MessageReader {
-public:
- MessageReader(int fd) : fd(fd), read_idx(0) {}
- int checkForMessages(const sp<IAntCallbacks> &callbacks);
-
-private:
- int fd;
- uint8_t read_buf[sizeof(MsgHeader) + MsgHeader::max_payload];
- size_t read_idx;
-};
-
-int MessageReader::checkForMessages(const sp<IAntCallbacks> &callbacks) {
-
- // First consume any new data that is available.
- ssize_t read_result = read(
- fd,
- &read_buf[read_idx],
- sizeof(read_buf) - read_idx);
-
- if (read_result < 0) {
- switch(errno) {
- case EAGAIN:
- case EINTR:
- // These errors are okay, act like no data read.
- read_result = 0;
- break;
- default:
- return errno;
- };
- }
-
- read_idx += read_result;
-
- // Now dispatch all read messages.
-
- // Alias the front of the buffer as a message header.
- MsgHeader *header = (MsgHeader*)read_buf;
-
- size_t full_size = header->payload_len + sizeof(MsgHeader);
- while (read_idx >= sizeof(MsgHeader) && read_idx >= full_size) {
-
- assert((header->channel_id == Ant::command_channel_id) ||
- (header->channel_id == Ant::data_channel_id));
-
- if (callbacks != NULL) {
- hidl_vec<uint8_t> msg;
- msg.setToExternal(read_buf + sizeof(MsgHeader), header->payload_len);
- callbacks->onMessageReceived(msg);
- }
-
- if (read_idx > full_size) {
- // There's (part of) another message, move it to the front of the buffer.
- std::memmove(read_buf, read_buf + full_size, read_idx - full_size);
- }
- read_idx -= full_size;
- full_size = header->payload_len + sizeof(MsgHeader);
- }
-
- return STATUS_OK;
-}
-
-Ant::Ant():
- transport_fd(invalid_fd),
- shutdown_fd(invalid_fd),
- stop_polling(true)
- {}
-
-// Methods from IAnt follow.
-Return<void> Ant::getProperties(getProperties_cb _hidl_cb) {
- _hidl_cb(props);
- return Void();
-}
-
-Return<void> Ant::setCallbacks(const sp<IAntCallbacks>& callbacks) {
- // Keep a reference to the old value around until we are outside of the
- // locked scope. See RefBase.h for why this is needed.
- sp<IAntCallbacks> old;
- {
- lock l(state_mtx);
- old = this->callbacks;
- this->callbacks = callbacks;
- }
-
- return Void();
-}
-
-Return<void> Ant::translateStatus(Status status, translateStatus_cb _hidl_cb) {
- std::ostringstream err;
- uint16_t err_class = getErrClass(status);
- uint16_t err_code = getErrCode(status);
-
- switch(err_class) {
- case GENERIC_ERR:
- break;
- case SOCKET_ERR:
- err << "Socket creation failed.";
- break;
- case CONNECT_ERR:
- err << "Socket connect failed.";
- break;
- case EFD_ERR:
- err << "Event fd not created.";
- break;
- case NOFD_ERR:
- err << "Transport not open.";
- break;
- case LARGEMSG_ERR:
- err << "Provided message too big.";
- break;
- default:
- err << "Unknown Error Class (" << err_class << ").";
- break;
- };
-
- if (err_code) {
- // Add a space between class and error string, only if a class string was
- // added (ie. length > 0)
- if (err.tellp() > 0) {
- err << " ";
- }
- err << strerror(err_code);
- }
-
- _hidl_cb(err.str());
- return Void();
-}
-
-Return<Status> Ant::enable() {
- // Early returns are used to bail out here, this is okay in this case though
- // since disable will always be used to recover, and we deal with any inconsistent state there.
-
- ALOGV("Enabling");
-
- lock l(state_mtx);
-
- stop_polling = false;
-
- // Open the local socket that is adb-forwarded somewhere. Actual implementations
- // would maybe open a character device here.
- // The socket is non-blocking since the poll loop waits for data anyways.
- transport_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK, 0);
- if (!isValidFd(transport_fd)) {
- return makeStatus(SOCKET_ERR, errno);
- }
-
- if (connect(transport_fd, (const sockaddr*)&socket_addr, sizeof(socket_addr)) < 0) {
- return makeStatus(CONNECT_ERR, errno);
- }
-
- // Setup the shutdown handle, which is an event-fd that can be used to interrupt
- // the poll thread when it is stuck in a poll().
- shutdown_fd = eventfd(0, EFD_NONBLOCK);
- if (!isValidFd(shutdown_fd)) {
- return makeStatus(EFD_ERR, errno);
- }
-
- // If all state was setup succesfully then the poll thread can be started.
- poll_thread = std::thread(&Ant::pollThreadEntry, this);
-
- return STATUS_OK;
-}
-
-Return<Status> Ant::disable() {
- ALOGV("Disabling");
-
- // Used to capture the value of the poll thread.
- std::thread old_poll;
-
- {
- // Use a scope block, since we need to be unlocked while joining the thread.
- lock l(state_mtx);
-
- std::swap(old_poll, poll_thread);
- if (isValidFd(shutdown_fd)) {
- uint64_t shutdown_evt = 1;
- if (write(shutdown_fd, &shutdown_evt, sizeof(shutdown_evt)) < 0) {
- ALOGW("Shutdown sending signal failed. %s", strerror(errno));
- }
- }
-
- stop_polling = true;
- }
-
- if (old_poll.get_id() != std::thread::id()) {
- // NOTE: if it's possible for the poll thread to get stuck it might
- // be better to do a timed wait on a future<void> set by the threads exit.
- // If a timeout occurs the thread should be detached instead of joined.
- old_poll.join();
- }
-
- // At this point the poll thread should be stopped, meaning it's safe to start
- // cleaning up files. The state lock is still held to make sure we don't close
- // the handles on any message writes in progress.
-
- lock l2(state_mtx);
-
- if (isValidFd(shutdown_fd)) {
- if (close(shutdown_fd) < 0) {
- ALOGW("Could not cleanly close event_fd. %s", strerror(errno));
- }
- }
- shutdown_fd = invalid_fd;
-
- if (isValidFd(transport_fd)) {
- if (close(transport_fd) < 0) {
- ALOGW("Could not cleanly close transport_fd. %s", strerror(errno));
- }
- }
- transport_fd = invalid_fd;
-
- return STATUS_OK;
-}
-
-void Ant::pollThreadEntry() {
- bool should_quit = false;
- MessageReader reader(transport_fd);
- // This remains empty as long as no error occured.
- std::string err_msg;
-
- struct poll_fds_t {
- pollfd transport;
- pollfd shutdown;
- } poll_fds;
-
- // Static setup for poll loop.
- // The only non-error event that matters is the data ready event.
- poll_fds.transport.fd = transport_fd;
- poll_fds.transport.events = POLLIN;
- poll_fds.shutdown.fd = shutdown_fd;
- poll_fds.shutdown.events = POLLIN;
-
- class poll_err : public std::runtime_error {};
-
- // Error cases just bail straight out of the thread
- while(!should_quit) {
- // Clear out previous events.
- poll_fds.transport.revents = 0;
- poll_fds.shutdown.revents = 0;
-
- int poll_result = poll((pollfd*)&poll_fds, sizeof(poll_fds)/sizeof(pollfd), poll_timeout_ms);
-
- // Now that poll is done grab the state lock, the rest should be quick, since all
- // operations are non-blocking.
- lock l(state_mtx);
-
- should_quit = stop_polling;
-
- // Only care to differentiate error case, and ignore EINTR errors.
- if (poll_result < 0 && errno != EINTR) {
- err_msg = std::string("Poll call failed. ") + strerror(errno);
- break;
- }
-
- if (poll_fds.transport.revents) {
- if (poll_fds.transport.revents != POLLIN) {
- std::ostringstream err_bld("Poll error flags on transport file: ");
- err_bld << (int)poll_fds.transport.revents;
- err_msg = err_bld.str();
- break;
- }
-
- int read_result = reader.checkForMessages(callbacks);
- if (read_result != STATUS_OK) {
- err_msg = std::string("Could not read available data") + strerror(read_result);
- break;
- }
- }
-
- if (poll_fds.shutdown.revents) {
- if (poll_fds.shutdown.revents != POLLIN) {
- std::ostringstream err_bld("Poll error flags on shutdown file: ");
- err_bld << (int)poll_fds.shutdown.revents;
- err_msg = err_bld.str();
- break;
- }
-
- // No need to read, the eventfd is only signaled when shutting down.
- should_quit = true;
- }
- }
-
- if (!err_msg.empty()) {
- lock l(state_mtx);
- if (callbacks != NULL) {
- callbacks->onTransportDown(err_msg);
- }
- }
-
- return;
-}
-
-Status Ant::writeMsg(const hidl_vec<uint8_t> &msg, uint8_t channel_id) {
- if (msg.size() > MsgHeader::max_payload) {
- return makeStatus(LARGEMSG_ERR, 0);
- }
-
- // Lock is held for full function to make sure the fd isn't changed on us.
- // This should never take long, higher level flow control should ensure
- // we never block waiting for space in write buffers.
- lock l(state_mtx);
- if (!isValidFd(transport_fd)) {
- return makeStatus(NOFD_ERR, 0);
- }
-
- Status retval = STATUS_OK;
-
- MsgHeader header = {
- channel_id,
- (uint8_t)msg.size(),
- };
-
- iovec vecs[] = {
- { (uint8_t*)&header, sizeof(header) },
- // Cast away the constness of the data.
- // This is okay because we are only sourcing the data for a write,
- // but is required because the struct in the writev api is non-const
- // in order to be shared with readv calls.
- { const_cast<uint8_t*>(msg.data()), msg.size() },
- };
- size_t num_vecs = sizeof(vecs)/sizeof(vecs[0]);
-
- // Continue until the last chunk has been fully written.
- while(vecs[num_vecs - 1].iov_len > 0) {
- ssize_t written = writev(transport_fd, vecs, num_vecs);
-
- if (written < 0) {
- if (errno == EINTR) {
- // EINTR is okay, it means no data was written though.
- written = 0;
- } else {
- retval = makeStatus(GENERIC_ERR, errno);
- // Abort writing the remainder.
- break;
- }
- }
-
- // Adjust write to resume with unwritten portion.
- for (size_t i = 0; i < num_vecs; i++) {
- if ((size_t)written <= vecs[i].iov_len) {
- // Chunk was partially written, pointer adjustment needed.
- vecs[i].iov_len -= written;
- vecs[i].iov_base = ((uint8_t*)vecs[i].iov_base) + written;
- // Remaining chunks are unchanged.
- break;
- }
-
- // Chunk fully written, move onto next.
- vecs[i].iov_len = 0;
- written -= vecs[i].iov_len;
- }
- }
-
- return retval;
-}
-
-} // namespace example
-} // namespace V1_0
-} // namespace ant
-} // namespace dsi
-} // namespace com
diff --git a/example-server/src/Ant.h b/example-server/src/Ant.h
deleted file mode 100644
index 5a36c12..0000000
--- a/example-server/src/Ant.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * ANT Android Host Stack
- *
- * Copyright 2018 Dynastream Innovations
- *
- * 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.
- */
-
-#ifndef COM_DSI_ANT_V1_0_ANT_H
-#define COM_DSI_ANT_V1_0_ANT_H
-
-#include <mutex>
-#include <thread>
-
-#include <com/dsi/ant/1.0/IAnt.h>
-#include <hidl/Status.h>
-
-namespace com {
-namespace dsi {
-namespace ant {
-namespace V1_0 {
-namespace example {
-
-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;
-using ::android::sp;
-
-struct Ant : public IAnt {
-
-public:
-
- // These need to be declared here because they are used in the inline versions
- // of sendData/CommandMessage.
- static const uint8_t command_channel_id = 0x0C;
- static const uint8_t data_channel_id = 0x0E;
-
- // Methods from IAnt follow.
- Return<void> getProperties(getProperties_cb _hidl_cb) override;
- Return<void> setCallbacks(const sp<IAntCallbacks>& callbacks) override;
- Return<void> translateStatus(Status status, translateStatus_cb _hidl_cb) override;
- Return<Status> enable() override;
- Return<Status> disable() override;
-
- Return<Status> sendDataMessage(const hidl_vec<uint8_t>& msg) override
- { return writeMsg(msg, data_channel_id); }
- Return<Status> sendCommandMessage(const hidl_vec<uint8_t>& msg) override
- { return writeMsg(msg, command_channel_id); }
-
- Ant();
-
-private:
-
- sp<IAntCallbacks> callbacks;
- // File handle used for communicating with the ant chip.
- int transport_fd;
- // File handle used to signal the poll thread when shutting down.
- int shutdown_fd;
- std::thread poll_thread;
- // This is set to indicate that the poll thread should exit.
- bool stop_polling;
- // Coarse mutex for all internal state.
- std::mutex state_mtx;
-
- void pollThreadEntry();
- Status writeMsg(const hidl_vec<uint8_t> &msg, uint8_t channel_id);
-};
-
-
-} // namespace example
-} // namespace V1_0
-} // namespace ant
-} // namespace dsi
-} // namespace com
-
-#endif // COM_DSI_ANT_V1_0_ANT_H
diff --git a/example-server/src/Server.cpp b/example-server/src/Server.cpp
deleted file mode 100644
index 9ea376b..0000000
--- a/example-server/src/Server.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * ANT Android Host Stack
- *
- * Copyright 2018 Dynastream Innovations
- *
- * 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.
- */
-
-#define LOG_TAG "Ant Hidl Example"
-
-#include "Ant.h"
-
-#include "log/log.h"
-#include <hidl/HidlTransportSupport.h>
-
-using com::dsi::ant::V1_0::example::Ant;
-using namespace android;
-using namespace android::hardware;
-
-/* Handle 1 data + 1 command + power control. */
-static const uint32_t THREAD_POOL_SIZE = 3;
-
-int main(void) {
- /*
- * This is fairly standard daemon code based on
- * defaultPassthroughServiceImplementation()
- */
- ALOGI("Starting example ANT HIDL daemon");
- configureRpcThreadpool(THREAD_POOL_SIZE, true);
-
- Ant ant;
- status_t status = ant.registerAsService();
- if (status != OK) {
- ALOGE("Unable to register service: %d", status);
- return -1;
- }
-
- joinRpcThreadpool();
-}
-
diff --git a/example-server/vintf/manifest.xml b/example-server/vintf/manifest.xml
deleted file mode 100644
index 12e07cf..0000000
--- a/example-server/vintf/manifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<hal format="hidl">
- <name>com.dsi.ant</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IAnt</name>
- <instance>default</instance>
- </interface>
-</hal>
-
diff --git a/interfaces/Android.bp b/interfaces/Android.bp
deleted file mode 100644
index 7aef46b..0000000
--- a/interfaces/Android.bp
+++ /dev/null
@@ -1,3 +0,0 @@
-subdirs = [
- "*"
-]
diff --git a/interfaces/ant/1.0/.hidl-autogen b/interfaces/ant/1.0/.hidl-autogen
new file mode 100644
index 0000000..2b11d6f
--- /dev/null
+++ b/interfaces/ant/1.0/.hidl-autogen
@@ -0,0 +1,17 @@
+// This file is autogenerated by hidl-gen -Landroidbp.
+
+hidl_interface {
+ name: "com.dsi.ant@1.0",
+ root: "com.dsi.ant",
+ product_specific: true,
+ srcs: [
+ "types.hal",
+ "IAnt.hal",
+ "IAntCallbacks.hal",
+ ],
+ interfaces: [
+ "android.hidl.base@1.0",
+ ],
+ gen_java: true,
+}
+
diff --git a/interfaces/ant/1.0/Android.bp b/interfaces/ant/1.0/Android.bp
index e5ea3d5..18f1cac 100644
--- a/interfaces/ant/1.0/Android.bp
+++ b/interfaces/ant/1.0/Android.bp
@@ -1,96 +1,16 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
+// This file is autogenerated by hidl-gen -Landroidbp.
-filegroup {
- name: "com.dsi.ant@1.0_hal",
+hidl_interface {
+ name: "com.dsi.ant@1.0",
+ root: "com.dsi.ant",
+ system_ext_specific: true,
srcs: [
"types.hal",
"IAnt.hal",
"IAntCallbacks.hal",
],
-}
-
-genrule {
- name: "com.dsi.ant@1.0_genc++",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++-sources -randroid.hidl:system/libhidl/transport -rcom.dsi:external/ant-wireless/hidl/interfaces com.dsi.ant@1.0",
- srcs: [
- ":com.dsi.ant@1.0_hal",
+ interfaces: [
+ "android.hidl.base@1.0",
],
- out: [
- "com/dsi/ant/1.0/types.cpp",
- "com/dsi/ant/1.0/AntAll.cpp",
- "com/dsi/ant/1.0/AntCallbacksAll.cpp",
- ],
-}
-
-genrule {
- name: "com.dsi.ant@1.0_genc++_headers",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++-headers -randroid.hidl:system/libhidl/transport -rcom.dsi:external/ant-wireless/hidl/interfaces com.dsi.ant@1.0",
- srcs: [
- ":com.dsi.ant@1.0_hal",
- ],
- out: [
- "com/dsi/ant/1.0/types.h",
- "com/dsi/ant/1.0/hwtypes.h",
- "com/dsi/ant/1.0/IAnt.h",
- "com/dsi/ant/1.0/IHwAnt.h",
- "com/dsi/ant/1.0/BnHwAnt.h",
- "com/dsi/ant/1.0/BpHwAnt.h",
- "com/dsi/ant/1.0/BsAnt.h",
- "com/dsi/ant/1.0/IAntCallbacks.h",
- "com/dsi/ant/1.0/IHwAntCallbacks.h",
- "com/dsi/ant/1.0/BnHwAntCallbacks.h",
- "com/dsi/ant/1.0/BpHwAntCallbacks.h",
- "com/dsi/ant/1.0/BsAntCallbacks.h",
- ],
-}
-
-cc_library {
- name: "com.dsi.ant@1.0",
- defaults: ["hidl-module-defaults"],
- generated_sources: ["com.dsi.ant@1.0_genc++"],
- generated_headers: ["com.dsi.ant@1.0_genc++_headers"],
- export_generated_headers: ["com.dsi.ant@1.0_genc++_headers"],
- vendor_available: true,
- vndk: {
- enabled: true,
- },
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- ],
-}
-
-cc_library {
- name: "com.dsi.ant@1.0_vendor",
- defaults: ["hidl-module-defaults"],
- generated_sources: ["com.dsi.ant@1.0_genc++"],
- generated_headers: ["com.dsi.ant@1.0_genc++_headers"],
- export_generated_headers: ["com.dsi.ant@1.0_genc++_headers"],
- vendor: true,
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- ],
+ gen_java: true,
}
diff --git a/interfaces/ant/1.0/Android.mk b/interfaces/ant/1.0/Android.mk
deleted file mode 100644
index bf21f0e..0000000
--- a/interfaces/ant/1.0/Android.mk
+++ /dev/null
@@ -1,198 +0,0 @@
-# This file is autogenerated by hidl-gen. Do not edit manually.
-
-LOCAL_PATH := $(call my-dir)
-
-################################################################################
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := com.dsi.ant-V1.0-java
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-intermediates := $(call local-generated-sources-dir, COMMON)
-
-HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
-
-LOCAL_JAVA_LIBRARIES := \
- android.hidl.base-V1.0-java \
-
-
-#
-# Build types.hal (ImplProps)
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/ImplProps.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 \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::types.ImplProps
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (OptionFlags)
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/OptionFlags.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 \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::types.OptionFlags
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IAnt.hal
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/IAnt.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IAnt.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IAntCallbacks.hal
-$(GEN): $(LOCAL_PATH)/IAntCallbacks.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.hidl:system/libhidl/transport \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::IAnt
-
-$(GEN): $(LOCAL_PATH)/IAnt.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IAntCallbacks.hal
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/IAntCallbacks.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IAntCallbacks.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hidl:system/libhidl/transport \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::IAntCallbacks
-
-$(GEN): $(LOCAL_PATH)/IAntCallbacks.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-include $(BUILD_JAVA_LIBRARY)
-
-
-################################################################################
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := com.dsi.ant-V1.0-java-static
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-intermediates := $(call local-generated-sources-dir, COMMON)
-
-HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android.hidl.base-V1.0-java-static \
-
-
-#
-# Build types.hal (ImplProps)
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/ImplProps.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 \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::types.ImplProps
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (OptionFlags)
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/OptionFlags.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 \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::types.OptionFlags
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IAnt.hal
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/IAnt.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IAnt.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IAntCallbacks.hal
-$(GEN): $(LOCAL_PATH)/IAntCallbacks.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.hidl:system/libhidl/transport \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::IAnt
-
-$(GEN): $(LOCAL_PATH)/IAnt.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IAntCallbacks.hal
-#
-GEN := $(intermediates)/com/dsi/ant/V1_0/IAntCallbacks.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IAntCallbacks.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hidl:system/libhidl/transport \
- -rcom.dsi:external/ant-wireless/hidl/interfaces \
- com.dsi.ant@1.0::IAntCallbacks
-
-$(GEN): $(LOCAL_PATH)/IAntCallbacks.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/interfaces/ant/Android.bp b/interfaces/ant/Android.bp
index bbb3e4b..53f0962 100644
--- a/interfaces/ant/Android.bp
+++ b/interfaces/ant/Android.bp
@@ -1,4 +1,9 @@
-// This is an autogenerated file, do not edit.
subdirs = [
- "1.0",
+ "*"
]
+
+hidl_package_root {
+ name: "com.dsi.ant",
+ path: "external/ant-wireless/hidl/interfaces/ant",
+}
+
diff --git a/interfaces/update-makefiles.sh b/interfaces/update-makefiles.sh
deleted file mode 100644
index 06eff1e..0000000
--- a/interfaces/update-makefiles.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-source $ANDROID_BUILD_TOP/system/tools/hidl/update-makefiles-helper.sh
-
-do_makefiles_update \
- "com.dsi:external/ant-wireless/hidl/interfaces" \
- "android.hidl:system/libhidl/transport"
-
diff --git a/sepolicy/README.txt b/sepolicy/README.txt
deleted file mode 100644
index 838de0a..0000000
--- a/sepolicy/README.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-The policy files in this directory must be merged with the platform policy files.
-
-for the public policy this is either system/sepolicy/public or BOARD_PLAT_PUBLIC_SEPOLICY
-for the private policy this is either system/sepolicy/private or BOARD_PLAT_PRIVATE_SEPOLICY
diff --git a/sepolicy/private/hwservice_contexts b/sepolicy/private/hwservice_contexts
deleted file mode 100644
index 5d915dd..0000000
--- a/sepolicy/private/hwservice_contexts
+++ /dev/null
@@ -1 +0,0 @@
-com.dsi.ant::IAnt u:object_r:hal_dsi_ant_hwservice:s0
diff --git a/sepolicy/public/attributes b/sepolicy/public/attributes
deleted file mode 100644
index be962bc..0000000
--- a/sepolicy/public/attributes
+++ /dev/null
@@ -1,6 +0,0 @@
-attribute hal_dsi_ant;
-expandattribute hal_dsi_ant true;
-attribute hal_dsi_ant_client;
-expandattribute hal_dsi_ant_client true;
-attribute hald_dsi_ant_server;
-expandattribute hal_dsi_ant_server false;
diff --git a/sepolicy/public/hal_dsi_ant.te b/sepolicy/public/hal_dsi_ant.te
deleted file mode 100644
index c5f93b0..0000000
--- a/sepolicy/public/hal_dsi_ant.te
+++ /dev/null
@@ -1,9 +0,0 @@
-type hal_dsi_ant_hwservice, hwservice_manager_type;
-
-# Allow interaction with the hwservice manager for the initial bind.
-add_hwservice(hal_dsi_ant_server, hal_dsi_ant_hwservice);
-allow hal_dsi_ant_client hal_dsi_ant_hwservice:hwservice_manager find;
-
-# Binder calls are made in both directions.
-binder_call(hal_dsi_ant_client, hal_dsi_ant_server);
-binder_call(hal_dsi_ant_server, hal_dsi_ant_client);