Merge "Return existing interfaces for repeated getExtension calls"
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..962f6cd
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,50 @@
+# Copyright 2017 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/hw/android.hardware*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/hw/android.hardware*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/hw/android.hardware*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/android.hardware*)
diff --git a/audio/2.0/Android.bp b/audio/2.0/Android.bp
index 007dc8a..69ff791 100644
--- a/audio/2.0/Android.bp
+++ b/audio/2.0/Android.bp
@@ -19,14 +19,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0",
srcs: [
- "types.hal",
- "IDevice.hal",
- "IDevicesFactory.hal",
- "IPrimaryDevice.hal",
- "IStream.hal",
- "IStreamIn.hal",
- "IStreamOut.hal",
- "IStreamOutCallback.hal",
+ ":android.hardware.audio@2.0_hal",
],
out: [
"android/hardware/audio/2.0/types.cpp",
@@ -45,14 +38,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0",
srcs: [
- "types.hal",
- "IDevice.hal",
- "IDevicesFactory.hal",
- "IPrimaryDevice.hal",
- "IStream.hal",
- "IStreamIn.hal",
- "IStreamOut.hal",
- "IStreamOutCallback.hal",
+ ":android.hardware.audio@2.0_hal",
],
out: [
"android/hardware/audio/2.0/types.h",
diff --git a/audio/2.0/Android.mk b/audio/2.0/Android.mk
index f8767ec..e989364 100644
--- a/audio/2.0/Android.mk
+++ b/audio/2.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.audio@2.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/audio/2.0/IStreamIn.hal b/audio/2.0/IStreamIn.hal
index e34c95f..6f1f9df 100644
--- a/audio/2.0/IStreamIn.hal
+++ b/audio/2.0/IStreamIn.hal
@@ -91,7 +91,11 @@
* to the client;
* -- status queue is used for reporting operation status
* (e.g. amount of bytes actually read or error code).
- * The driver operates on a dedicated thread.
+ *
+ * The driver operates on a dedicated thread. The client must ensure that
+ * the thread is given an appropriate priority and assigned to correct
+ * scheduler and cgroup. For this purpose, the method returns identifiers
+ * of the driver thread.
*
* @param frameSize the size of a single frame, in bytes.
* @param framesCount the number of frames in a buffer.
@@ -105,15 +109,15 @@
* specified at the stream opening.
* @return statusMQ a message queue used for passing status from the driver
* using ReadStatus structures.
+ * @return threadInfo identifiers of the driver's dedicated thread.
*/
- prepareForReading(
- uint32_t frameSize, uint32_t framesCount,
- ThreadPriority threadPriority)
+ prepareForReading(uint32_t frameSize, uint32_t framesCount)
generates (
Result retval,
fmq_sync<ReadParameters> commandMQ,
fmq_sync<uint8_t> dataMQ,
- fmq_sync<ReadStatus> statusMQ);
+ fmq_sync<ReadStatus> statusMQ,
+ ThreadInfo threadInfo);
/*
* Return the amount of input frames lost in the audio driver since the last
diff --git a/audio/2.0/IStreamOut.hal b/audio/2.0/IStreamOut.hal
index 2ec080d..9ee32c5 100644
--- a/audio/2.0/IStreamOut.hal
+++ b/audio/2.0/IStreamOut.hal
@@ -85,11 +85,14 @@
* to the driver;
* -- status queue is used for reporting operation status
* (e.g. amount of bytes actually written or error code).
- * The driver operates on a dedicated thread.
+ *
+ * The driver operates on a dedicated thread. The client must ensure that
+ * the thread is given an appropriate priority and assigned to correct
+ * scheduler and cgroup. For this purpose, the method returns identifiers
+ * of the driver thread.
*
* @param frameSize the size of a single frame, in bytes.
* @param framesCount the number of frames in a buffer.
- * @param threadPriority priority of the driver thread.
* @return retval OK if both message queues were created successfully.
* INVALID_STATE if the method was already called.
* INVALID_ARGUMENTS if there was a problem setting up
@@ -99,15 +102,15 @@
* specified at the stream opening.
* @return statusMQ a message queue used for passing status from the driver
* using WriteStatus structures.
+ * @return threadInfo identifiers of the driver's dedicated thread.
*/
- prepareForWriting(
- uint32_t frameSize, uint32_t framesCount,
- ThreadPriority threadPriority)
+ prepareForWriting(uint32_t frameSize, uint32_t framesCount)
generates (
Result retval,
fmq_sync<WriteCommand> commandMQ,
fmq_sync<uint8_t> dataMQ,
- fmq_sync<WriteStatus> statusMQ);
+ fmq_sync<WriteStatus> statusMQ,
+ ThreadInfo threadInfo);
/*
* Return the number of audio frames written by the audio DSP to DAC since
diff --git a/audio/2.0/default/Android.mk b/audio/2.0/default/Android.mk
index eeea92c..9cb56c7 100644
--- a/audio/2.0/default/Android.mk
+++ b/audio/2.0/default/Android.mk
@@ -19,6 +19,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.audio@2.0-impl
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := \
Conversions.cpp \
Device.cpp \
@@ -38,7 +39,6 @@
libhidltransport \
libhwbinder \
liblog \
- libmediautils \
libutils \
android.hardware.audio@2.0 \
android.hardware.audio.common@2.0 \
@@ -56,6 +56,7 @@
LOCAL_MODULE := android.hardware.audio@2.0-service
LOCAL_INIT_RC := android.hardware.audio@2.0-service.rc
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := \
service.cpp
diff --git a/audio/2.0/default/StreamIn.cpp b/audio/2.0/default/StreamIn.cpp
index 9c49170..a8229d3 100644
--- a/audio/2.0/default/StreamIn.cpp
+++ b/audio/2.0/default/StreamIn.cpp
@@ -20,7 +20,6 @@
#include <android/log.h>
#include <hardware/audio.h>
-#include <mediautils/SchedulingPolicyService.h>
#include <utils/Trace.h>
#include "StreamIn.h"
@@ -33,6 +32,8 @@
namespace V2_0 {
namespace implementation {
+using ::android::hardware::audio::common::V2_0::ThreadInfo;
+
namespace {
class ReadThread : public Thread {
@@ -43,8 +44,7 @@
StreamIn::CommandMQ* commandMQ,
StreamIn::DataMQ* dataMQ,
StreamIn::StatusMQ* statusMQ,
- EventFlag* efGroup,
- ThreadPriority threadPriority)
+ EventFlag* efGroup)
: Thread(false /*canCallJava*/),
mStop(stop),
mStream(stream),
@@ -52,13 +52,10 @@
mDataMQ(dataMQ),
mStatusMQ(statusMQ),
mEfGroup(efGroup),
- mThreadPriority(threadPriority),
mBuffer(new uint8_t[dataMQ->getQuantumCount()]) {
}
virtual ~ReadThread() {}
- status_t readyToRun() override;
-
private:
std::atomic<bool>* mStop;
audio_stream_in_t* mStream;
@@ -66,7 +63,6 @@
StreamIn::DataMQ* mDataMQ;
StreamIn::StatusMQ* mStatusMQ;
EventFlag* mEfGroup;
- ThreadPriority mThreadPriority;
std::unique_ptr<uint8_t[]> mBuffer;
IStreamIn::ReadParameters mParameters;
IStreamIn::ReadStatus mStatus;
@@ -77,16 +73,6 @@
void doRead();
};
-status_t ReadThread::readyToRun() {
- if (mThreadPriority != ThreadPriority::NORMAL) {
- int err = requestPriority(
- getpid(), getTid(), static_cast<int>(mThreadPriority), true /*asynchronous*/);
- ALOGW_IF(err, "failed to set priority %d for pid %d tid %d; error %d",
- static_cast<int>(mThreadPriority), getpid(), getTid(), err);
- }
- return OK;
-}
-
void ReadThread::doRead() {
size_t availableToWrite = mDataMQ->availableToWrite();
size_t requestedToRead = mParameters.params.read;
@@ -119,7 +105,7 @@
while(!std::atomic_load_explicit(mStop, std::memory_order_acquire)) {
// TODO: Remove manual event flag handling once blocking MQ is implemented. b/33815422
uint32_t efState = 0;
- mEfGroup->wait(static_cast<uint32_t>(MessageQueueFlagBits::NOT_FULL), &efState, NS_PER_SEC);
+ mEfGroup->wait(static_cast<uint32_t>(MessageQueueFlagBits::NOT_FULL), &efState);
if (!(efState & static_cast<uint32_t>(MessageQueueFlagBits::NOT_FULL))) {
continue; // Nothing to do.
}
@@ -313,14 +299,14 @@
}
Return<void> StreamIn::prepareForReading(
- uint32_t frameSize, uint32_t framesCount, ThreadPriority threadPriority,
- prepareForReading_cb _hidl_cb) {
+ uint32_t frameSize, uint32_t framesCount, prepareForReading_cb _hidl_cb) {
status_t status;
+ ThreadInfo threadInfo = { 0, 0 };
// Create message queues.
if (mDataMQ) {
ALOGE("the client attempts to call prepareForReading twice");
_hidl_cb(Result::INVALID_STATE,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
std::unique_ptr<CommandMQ> tempCommandMQ(new CommandMQ(1));
@@ -332,7 +318,7 @@
ALOGE_IF(!tempDataMQ->isValid(), "data MQ is invalid");
ALOGE_IF(!tempStatusMQ->isValid(), "status MQ is invalid");
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
// TODO: Remove event flag management once blocking MQ is implemented. b/33815422
@@ -340,7 +326,7 @@
if (status != OK || !mEfGroup) {
ALOGE("failed creating event flag for data MQ: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
@@ -351,20 +337,23 @@
tempCommandMQ.get(),
tempDataMQ.get(),
tempStatusMQ.get(),
- mEfGroup,
- threadPriority);
+ mEfGroup);
status = mReadThread->run("reader", PRIORITY_URGENT_AUDIO);
if (status != OK) {
ALOGW("failed to start reader thread: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
mCommandMQ = std::move(tempCommandMQ);
mDataMQ = std::move(tempDataMQ);
mStatusMQ = std::move(tempStatusMQ);
- _hidl_cb(Result::OK, *mCommandMQ->getDesc(), *mDataMQ->getDesc(), *mStatusMQ->getDesc());
+ threadInfo.pid = getpid();
+ threadInfo.tid = mReadThread->getTid();
+ _hidl_cb(Result::OK,
+ *mCommandMQ->getDesc(), *mDataMQ->getDesc(), *mStatusMQ->getDesc(),
+ threadInfo);
return Void();
}
diff --git a/audio/2.0/default/StreamIn.h b/audio/2.0/default/StreamIn.h
index 3566430..b867387 100644
--- a/audio/2.0/default/StreamIn.h
+++ b/audio/2.0/default/StreamIn.h
@@ -44,7 +44,6 @@
using ::android::hardware::audio::V2_0::IStreamIn;
using ::android::hardware::audio::V2_0::ParameterValue;
using ::android::hardware::audio::V2_0::Result;
-using ::android::hardware::audio::V2_0::ThreadPriority;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::hidl_vec;
@@ -89,8 +88,7 @@
Return<void> getAudioSource(getAudioSource_cb _hidl_cb) override;
Return<Result> setGain(float gain) override;
Return<void> prepareForReading(
- uint32_t frameSize, uint32_t framesCount, ThreadPriority threadPriority,
- prepareForReading_cb _hidl_cb) override;
+ uint32_t frameSize, uint32_t framesCount, prepareForReading_cb _hidl_cb) override;
Return<uint32_t> getInputFramesLost() override;
Return<void> getCapturePosition(getCapturePosition_cb _hidl_cb) override;
Return<Result> start() override;
diff --git a/audio/2.0/default/StreamOut.cpp b/audio/2.0/default/StreamOut.cpp
index 6e46db2..6ccdbcd 100644
--- a/audio/2.0/default/StreamOut.cpp
+++ b/audio/2.0/default/StreamOut.cpp
@@ -20,7 +20,6 @@
#include <android/log.h>
#include <hardware/audio.h>
-#include <mediautils/SchedulingPolicyService.h>
#include <utils/Trace.h>
#include "StreamOut.h"
@@ -31,6 +30,8 @@
namespace V2_0 {
namespace implementation {
+using ::android::hardware::audio::common::V2_0::ThreadInfo;
+
namespace {
class WriteThread : public Thread {
@@ -41,8 +42,7 @@
StreamOut::CommandMQ* commandMQ,
StreamOut::DataMQ* dataMQ,
StreamOut::StatusMQ* statusMQ,
- EventFlag* efGroup,
- ThreadPriority threadPriority)
+ EventFlag* efGroup)
: Thread(false /*canCallJava*/),
mStop(stop),
mStream(stream),
@@ -50,13 +50,10 @@
mDataMQ(dataMQ),
mStatusMQ(statusMQ),
mEfGroup(efGroup),
- mThreadPriority(threadPriority),
mBuffer(new uint8_t[dataMQ->getQuantumCount()]) {
}
virtual ~WriteThread() {}
- status_t readyToRun() override;
-
private:
std::atomic<bool>* mStop;
audio_stream_out_t* mStream;
@@ -64,7 +61,6 @@
StreamOut::DataMQ* mDataMQ;
StreamOut::StatusMQ* mStatusMQ;
EventFlag* mEfGroup;
- ThreadPriority mThreadPriority;
std::unique_ptr<uint8_t[]> mBuffer;
IStreamOut::WriteStatus mStatus;
@@ -75,16 +71,6 @@
void doWrite();
};
-status_t WriteThread::readyToRun() {
- if (mThreadPriority != ThreadPriority::NORMAL) {
- int err = requestPriority(
- getpid(), getTid(), static_cast<int>(mThreadPriority), true /*asynchronous*/);
- ALOGW_IF(err, "failed to set priority %d for pid %d tid %d; error %d",
- static_cast<int>(mThreadPriority), getpid(), getTid(), err);
- }
- return OK;
-}
-
void WriteThread::doWrite() {
const size_t availToRead = mDataMQ->availableToRead();
mStatus.retval = Result::OK;
@@ -117,8 +103,7 @@
while(!std::atomic_load_explicit(mStop, std::memory_order_acquire)) {
// TODO: Remove manual event flag handling once blocking MQ is implemented. b/33815422
uint32_t efState = 0;
- mEfGroup->wait(
- static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY), &efState, NS_PER_SEC);
+ mEfGroup->wait(static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY), &efState);
if (!(efState & static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY))) {
continue; // Nothing to do.
}
@@ -297,14 +282,14 @@
}
Return<void> StreamOut::prepareForWriting(
- uint32_t frameSize, uint32_t framesCount, ThreadPriority threadPriority,
- prepareForWriting_cb _hidl_cb) {
+ uint32_t frameSize, uint32_t framesCount, prepareForWriting_cb _hidl_cb) {
status_t status;
+ ThreadInfo threadInfo = { 0, 0 };
// Create message queues.
if (mDataMQ) {
ALOGE("the client attempts to call prepareForWriting twice");
_hidl_cb(Result::INVALID_STATE,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
std::unique_ptr<CommandMQ> tempCommandMQ(new CommandMQ(1));
@@ -316,7 +301,7 @@
ALOGE_IF(!tempDataMQ->isValid(), "data MQ is invalid");
ALOGE_IF(!tempStatusMQ->isValid(), "status MQ is invalid");
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
// TODO: Remove event flag management once blocking MQ is implemented. b/33815422
@@ -324,7 +309,7 @@
if (status != OK || !mEfGroup) {
ALOGE("failed creating event flag for data MQ: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
@@ -335,20 +320,23 @@
tempCommandMQ.get(),
tempDataMQ.get(),
tempStatusMQ.get(),
- mEfGroup,
- threadPriority);
+ mEfGroup);
status = mWriteThread->run("writer", PRIORITY_URGENT_AUDIO);
if (status != OK) {
ALOGW("failed to start writer thread: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor());
+ CommandMQ::Descriptor(), DataMQ::Descriptor(), StatusMQ::Descriptor(), threadInfo);
return Void();
}
mCommandMQ = std::move(tempCommandMQ);
mDataMQ = std::move(tempDataMQ);
mStatusMQ = std::move(tempStatusMQ);
- _hidl_cb(Result::OK, *mCommandMQ->getDesc(), *mDataMQ->getDesc(), *mStatusMQ->getDesc());
+ threadInfo.pid = getpid();
+ threadInfo.tid = mWriteThread->getTid();
+ _hidl_cb(Result::OK,
+ *mCommandMQ->getDesc(), *mDataMQ->getDesc(), *mStatusMQ->getDesc(),
+ threadInfo);
return Void();
}
diff --git a/audio/2.0/default/StreamOut.h b/audio/2.0/default/StreamOut.h
index 6616557..bbe64a1 100644
--- a/audio/2.0/default/StreamOut.h
+++ b/audio/2.0/default/StreamOut.h
@@ -45,7 +45,6 @@
using ::android::hardware::audio::V2_0::IStreamOutCallback;
using ::android::hardware::audio::V2_0::ParameterValue;
using ::android::hardware::audio::V2_0::Result;
-using ::android::hardware::audio::V2_0::ThreadPriority;
using ::android::hardware::audio::V2_0::TimeSpec;
using ::android::hardware::Return;
using ::android::hardware::Void;
@@ -91,8 +90,7 @@
Return<uint32_t> getLatency() override;
Return<Result> setVolume(float left, float right) override;
Return<void> prepareForWriting(
- uint32_t frameSize, uint32_t framesCount, ThreadPriority threadPriority,
- prepareForWriting_cb _hidl_cb) override;
+ uint32_t frameSize, uint32_t framesCount, prepareForWriting_cb _hidl_cb) override;
Return<void> getRenderPosition(getRenderPosition_cb _hidl_cb) override;
Return<void> getNextWriteTimestamp(getNextWriteTimestamp_cb _hidl_cb) override;
Return<Result> setCallback(const sp<IStreamOutCallback>& callback) override;
diff --git a/audio/2.0/default/android.hardware.audio@2.0-service.rc b/audio/2.0/default/android.hardware.audio@2.0-service.rc
index 0a5bfc5..eeaf71b 100644
--- a/audio/2.0/default/android.hardware.audio@2.0-service.rc
+++ b/audio/2.0/default/android.hardware.audio@2.0-service.rc
@@ -1,4 +1,4 @@
-service audio-hal-2-0 /system/bin/hw/android.hardware.audio@2.0-service
+service audio-hal-2-0 /vendor/bin/hw/android.hardware.audio@2.0-service
class hal
user audioserver
# media gid needed for /dev/fm (radio) and for /data/misc/media (tee)
diff --git a/audio/2.0/default/service.cpp b/audio/2.0/default/service.cpp
index 646d898..8b608c8 100644
--- a/audio/2.0/default/service.cpp
+++ b/audio/2.0/default/service.cpp
@@ -33,11 +33,20 @@
using android::hardware::registerPassthroughServiceImplementation;
using android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory;
+using android::OK;
+
int main(int /* argc */, char* /* argv */ []) {
configureRpcThreadpool(16, true /*callerWillJoin*/);
- registerPassthroughServiceImplementation<IDevicesFactory>("audio_devices_factory");
- registerPassthroughServiceImplementation<IEffectsFactory>("audio_effects_factory");
- registerPassthroughServiceImplementation<ISoundTriggerHw>("sound_trigger.primary");
- registerPassthroughServiceImplementation<IBroadcastRadioFactory>("broadcastradio");
+ android::status_t status;
+ status = registerPassthroughServiceImplementation<IDevicesFactory>("audio_devices_factory");
+ LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio service: %d", status);
+ status = registerPassthroughServiceImplementation<IEffectsFactory>("audio_effects_factory");
+ LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio effects service: %d", status);
+ // Soundtrigger and FM radio might be not present.
+ status = registerPassthroughServiceImplementation<ISoundTriggerHw>("sound_trigger.primary");
+ ALOGE_IF(status != OK, "Error while registering soundtrigger service: %d", status);
+ status = registerPassthroughServiceImplementation<IBroadcastRadioFactory>("broadcastradio");
+ ALOGE_IF(status != OK, "Error while registering fm radio service: %d", status);
joinRpcThreadpool();
+ return status;
}
diff --git a/audio/2.0/types.hal b/audio/2.0/types.hal
index 8fc4314..8e9ff14 100644
--- a/audio/2.0/types.hal
+++ b/audio/2.0/types.hal
@@ -98,12 +98,3 @@
NOT_EMPTY = 1 << 0,
NOT_FULL = 1 << 1
};
-
-/*
- * The priority of threads executing reads and writes of audio data.
- */
-enum ThreadPriority : int32_t {
- NORMAL = 0,
- FAST_CAPTURE = 3,
- FAST_MIXER = 3
-};
diff --git a/audio/common/2.0/Android.bp b/audio/common/2.0/Android.bp
index 8c14995..5330086 100644
--- a/audio/common/2.0/Android.bp
+++ b/audio/common/2.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0",
srcs: [
- "types.hal",
+ ":android.hardware.audio.common@2.0_hal",
],
out: [
"android/hardware/audio/common/2.0/types.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.common@2.0",
srcs: [
- "types.hal",
+ ":android.hardware.audio.common@2.0_hal",
],
out: [
"android/hardware/audio/common/2.0/types.h",
diff --git a/audio/common/2.0/Android.mk b/audio/common/2.0/Android.mk
index 423fe35..7d62779 100644
--- a/audio/common/2.0/Android.mk
+++ b/audio/common/2.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.audio.common@2.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/audio/common/2.0/types.hal b/audio/common/2.0/types.hal
index 63d66db..ae7f545 100644
--- a/audio/common/2.0/types.hal
+++ b/audio/common/2.0/types.hal
@@ -933,3 +933,8 @@
AudioPortSessionExt session;
} ext;
};
+
+struct ThreadInfo {
+ int64_t pid;
+ int64_t tid;
+};
diff --git a/audio/common/2.0/vts/types.vts b/audio/common/2.0/vts/types.vts
index 8d1a9db..d790573 100644
--- a/audio/common/2.0/vts/types.vts
+++ b/audio/common/2.0/vts/types.vts
@@ -56,8 +56,8 @@
struct_value: {
name: "node"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -381,10 +381,14 @@
scalar_value: {
uint32_t: 553648128
}
- enumerator: "LDAC"
+ enumerator: "AC4"
scalar_value: {
uint32_t: 570425344
}
+ enumerator: "LDAC"
+ scalar_value: {
+ uint32_t: 587202560
+ }
enumerator: "MAIN_MASK"
scalar_value: {
uint32_t: 4278190080
@@ -811,6 +815,10 @@
scalar_value: {
uint32_t: 48
}
+ enumerator: "IN_6"
+ scalar_value: {
+ uint32_t: 252
+ }
enumerator: "IN_VOICE_UPLINK_MONO"
scalar_value: {
uint32_t: 16400
@@ -1357,13 +1365,17 @@
scalar_value: {
int32_t: 15
}
- enumerator: "CNT"
+ enumerator: "ASSISTANT"
scalar_value: {
int32_t: 16
}
+ enumerator: "CNT"
+ scalar_value: {
+ int32_t: 17
+ }
enumerator: "MAX"
scalar_value: {
- int32_t: 15
+ int32_t: 16
}
}
}
@@ -1545,8 +1557,8 @@
struct_value: {
name: "values"
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "int32_t"
}
@@ -1620,8 +1632,8 @@
struct_value: {
name: "address"
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1785,8 +1797,8 @@
struct_value: {
name: "address"
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1925,3 +1937,18 @@
}
}
+attribute: {
+ name: "::android::hardware::audio::common::V2_0::ThreadInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "pid"
+ type: TYPE_SCALAR
+ scalar_type: "int64_t"
+ }
+ struct_value: {
+ name: "tid"
+ type: TYPE_SCALAR
+ scalar_type: "int64_t"
+ }
+}
+
diff --git a/audio/effect/2.0/Android.bp b/audio/effect/2.0/Android.bp
index 29bc890..83a702a 100644
--- a/audio/effect/2.0/Android.bp
+++ b/audio/effect/2.0/Android.bp
@@ -26,21 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0",
srcs: [
- "types.hal",
- "IAcousticEchoCancelerEffect.hal",
- "IAutomaticGainControlEffect.hal",
- "IBassBoostEffect.hal",
- "IDownmixEffect.hal",
- "IEffect.hal",
- "IEffectBufferProviderCallback.hal",
- "IEffectsFactory.hal",
- "IEnvironmentalReverbEffect.hal",
- "IEqualizerEffect.hal",
- "ILoudnessEnhancerEffect.hal",
- "INoiseSuppressionEffect.hal",
- "IPresetReverbEffect.hal",
- "IVirtualizerEffect.hal",
- "IVisualizerEffect.hal",
+ ":android.hardware.audio.effect@2.0_hal",
],
out: [
"android/hardware/audio/effect/2.0/types.cpp",
@@ -66,21 +52,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0",
srcs: [
- "types.hal",
- "IAcousticEchoCancelerEffect.hal",
- "IAutomaticGainControlEffect.hal",
- "IBassBoostEffect.hal",
- "IDownmixEffect.hal",
- "IEffect.hal",
- "IEffectBufferProviderCallback.hal",
- "IEffectsFactory.hal",
- "IEnvironmentalReverbEffect.hal",
- "IEqualizerEffect.hal",
- "ILoudnessEnhancerEffect.hal",
- "INoiseSuppressionEffect.hal",
- "IPresetReverbEffect.hal",
- "IVirtualizerEffect.hal",
- "IVisualizerEffect.hal",
+ ":android.hardware.audio.effect@2.0_hal",
],
out: [
"android/hardware/audio/effect/2.0/types.h",
diff --git a/audio/effect/2.0/Android.mk b/audio/effect/2.0/Android.mk
index 3383efd..d71255e 100644
--- a/audio/effect/2.0/Android.mk
+++ b/audio/effect/2.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.audio.effect@2.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/audio/effect/2.0/default/Android.mk b/audio/effect/2.0/default/Android.mk
index 18076ed..1541d41 100644
--- a/audio/effect/2.0/default/Android.mk
+++ b/audio/effect/2.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.audio.effect@2.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
AcousticEchoCancelerEffect.cpp \
diff --git a/audio/effect/2.0/default/Effect.cpp b/audio/effect/2.0/default/Effect.cpp
index 0a4aeb7..83c8e09 100644
--- a/audio/effect/2.0/default/Effect.cpp
+++ b/audio/effect/2.0/default/Effect.cpp
@@ -77,10 +77,7 @@
// as the Thread uses mutexes, and this can lead to priority inversion.
while(!std::atomic_load_explicit(mStop, std::memory_order_acquire)) {
uint32_t efState = 0;
- mEfGroup->wait(
- static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_PROCESS_ALL),
- &efState,
- NS_PER_SEC);
+ mEfGroup->wait(static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_PROCESS_ALL), &efState);
if (!(efState & static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_PROCESS_ALL))
|| (efState & static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_QUIT))) {
continue; // Nothing to do or time to quit.
diff --git a/automotive/Android.bp b/automotive/Android.bp
index aa8f74f..1f39e88 100644
--- a/automotive/Android.bp
+++ b/automotive/Android.bp
@@ -1,5 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
- "vehicle",
"vehicle/2.0",
+ "vehicle/2.1",
]
diff --git a/automotive/vehicle/2.0/Android.bp b/automotive/vehicle/2.0/Android.bp
index 3f5b383..e08d3ca 100644
--- a/automotive/vehicle/2.0/Android.bp
+++ b/automotive/vehicle/2.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
srcs: [
- "types.hal",
- "IVehicle.hal",
- "IVehicleCallback.hal",
+ ":android.hardware.automotive.vehicle@2.0_hal",
],
out: [
"android/hardware/automotive/vehicle/2.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
srcs: [
- "types.hal",
- "IVehicle.hal",
- "IVehicleCallback.hal",
+ ":android.hardware.automotive.vehicle@2.0_hal",
],
out: [
"android/hardware/automotive/vehicle/2.0/types.h",
diff --git a/automotive/vehicle/2.0/Android.mk b/automotive/vehicle/2.0/Android.mk
index ca83918..c540027 100644
--- a/automotive/vehicle/2.0/Android.mk
+++ b/automotive/vehicle/2.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.automotive.vehicle@2.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -1189,7 +1189,7 @@
LOCAL_MODULE := android.hardware.automotive.vehicle@2.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/automotive/vehicle/2.0/default/Android.mk b/automotive/vehicle/2.0/default/Android.mk
index e822044..324be51 100644
--- a/automotive/vehicle/2.0/default/Android.mk
+++ b/automotive/vehicle/2.0/default/Android.mk
@@ -14,20 +14,26 @@
LOCAL_PATH := $(call my-dir)
-module_prefix = android.hardware.automotive.vehicle@2.0
+vhal_v2_0 = android.hardware.automotive.vehicle@2.0
###############################################################################
# Vehicle reference implementation lib
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := $(module_prefix)-manager-lib
+LOCAL_MODULE := $(vhal_v2_0)-manager-lib
LOCAL_SRC_FILES := \
- vehicle_hal_manager/AccessControlConfigParser.cpp \
- vehicle_hal_manager/Obd2SensorStore.cpp \
- vehicle_hal_manager/SubscriptionManager.cpp \
- vehicle_hal_manager/VehicleHalManager.cpp \
- vehicle_hal_manager/VehicleObjectPool.cpp \
- vehicle_hal_manager/VehicleUtils.cpp \
+ common/src/AccessControlConfigParser.cpp \
+ common/src/Obd2SensorStore.cpp \
+ common/src/SubscriptionManager.cpp \
+ common/src/VehicleHalManager.cpp \
+ common/src/VehicleObjectPool.cpp \
+ common/src/VehicleUtils.cpp \
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/common/include/vhal_v2_0
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/common/include
LOCAL_SHARED_LIBRARIES := \
libbinder \
@@ -36,7 +42,7 @@
libhwbinder \
liblog \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
include $(BUILD_STATIC_LIBRARY)
@@ -44,11 +50,11 @@
# Vehicle HAL Protobuf library
###############################################################################
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-proto-files-under, impl/proto)
+LOCAL_SRC_FILES := $(call all-proto-files-under, impl/vhal_v2_0/proto)
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-LOCAL_MODULE := $(module_prefix)-libproto-native
+LOCAL_MODULE := $(vhal_v2_0)-libproto-native
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_TAGS := optional
@@ -57,7 +63,7 @@
generated_sources_dir := $(call local-generated-sources-dir)
LOCAL_EXPORT_C_INCLUDE_DIRS := \
- $(generated_sources_dir)/proto/$(LOCAL_PATH)/impl/proto
+ $(generated_sources_dir)/proto/$(LOCAL_PATH)/impl/vhal_v2_0/proto
include $(BUILD_STATIC_LIBRARY)
@@ -67,9 +73,18 @@
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE:= $(module_prefix)-default-impl-lib
+LOCAL_MODULE:= $(vhal_v2_0)-default-impl-lib
LOCAL_SRC_FILES:= \
- impl/DefaultVehicleHal.cpp \
+ impl/vhal_v2_0/DefaultVehicleHal.cpp \
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/impl/vhal_v2_0
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/impl
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
LOCAL_SHARED_LIBRARIES := \
libbinder \
@@ -79,10 +94,10 @@
liblog \
libprotobuf-cpp-lite \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_STATIC_LIBRARIES := \
- $(module_prefix)-libproto-native
+ $(vhal_v2_0)-libproto-native \
include $(BUILD_STATIC_LIBRARY)
@@ -92,9 +107,10 @@
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE:= $(module_prefix)-manager-unit-tests
+LOCAL_MODULE:= $(vhal_v2_0)-manager-unit-tests
-LOCAL_WHOLE_STATIC_LIBRARIES := $(module_prefix)-manager-lib
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
LOCAL_SRC_FILES:= \
tests/AccessControlConfigParser_test.cpp \
@@ -111,7 +127,7 @@
libhwbinder \
liblog \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_CFLAGS += -Wall -Wextra
LOCAL_MODULE_TAGS := tests
@@ -123,17 +139,14 @@
# Vehicle HAL service
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := $(module_prefix)-service
-LOCAL_INIT_RC := $(module_prefix)-service.rc
+LOCAL_MODULE := $(vhal_v2_0)-service
+LOCAL_INIT_RC := $(vhal_v2_0)-service.rc
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
VehicleService.cpp
-LOCAL_WHOLE_STATIC_LIBRARIES := \
- $(module_prefix)-manager-lib \
- $(module_prefix)-default-impl-lib \
-
LOCAL_SHARED_LIBRARIES := \
libbinder \
libhidlbase \
@@ -142,9 +155,11 @@
liblog \
libprotobuf-cpp-lite \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_STATIC_LIBRARIES := \
- $(module_prefix)-libproto-native
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_0)-libproto-native \
include $(BUILD_EXECUTABLE)
diff --git a/automotive/vehicle/2.0/default/VehicleService.cpp b/automotive/vehicle/2.0/default/VehicleService.cpp
index 345dbcc..f88ce7b 100644
--- a/automotive/vehicle/2.0/default/VehicleService.cpp
+++ b/automotive/vehicle/2.0/default/VehicleService.cpp
@@ -20,9 +20,8 @@
#include <iostream>
-
-#include <vehicle_hal_manager/VehicleHalManager.h>
-#include <impl/DefaultVehicleHal.h>
+#include <vhal_v2_0/VehicleHalManager.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
using namespace android;
using namespace android::hardware;
diff --git a/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc b/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc
index 1ee4d47..30e249e 100644
--- a/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc
+++ b/automotive/vehicle/2.0/default/android.hardware.automotive.vehicle@2.0-service.rc
@@ -1,4 +1,4 @@
-service vehicle-hal-2.0 /system/bin/hw/android.hardware.automotive.vehicle@2.0-service
+service vehicle-hal-2.0 /vendor/bin/hw/android.hardware.automotive.vehicle@2.0-service
class hal
user vehicle_network
group system inet
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/AccessControlConfigParser.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/AccessControlConfigParser.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/ConcurrentQueue.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/ConcurrentQueue.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/Obd2SensorStore.h
similarity index 94%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/Obd2SensorStore.h
index cbe9893..fe231be 100644
--- a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
+++ b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/Obd2SensorStore.h
@@ -19,7 +19,7 @@
#include <vector>
-#include <VehicleHal.h>
+#include "VehicleHal.h"
namespace android {
namespace hardware {
@@ -54,6 +54,10 @@
// Returns a vector that contains a bitmask for all stored sensors.
const std::vector<uint8_t>& getSensorsBitmask() const;
+ // Given a stringValue, fill in a VehiclePropValue
+ void fillPropValue(VehiclePropValue *propValue,
+ std::string dtc) const;
+
private:
class BitmaskInVector {
public:
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/SubscriptionManager.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/SubscriptionManager.h
diff --git a/automotive/vehicle/2.0/default/VehicleHal.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
similarity index 98%
rename from automotive/vehicle/2.0/default/VehicleHal.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
index 76df5b8..8203a1e 100644
--- a/automotive/vehicle/2.0/default/VehicleHal.h
+++ b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
@@ -18,8 +18,7 @@
#define android_hardware_automotive_vehicle_V2_0_VehicleHal_H
#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
-#include "vehicle_hal_manager/VehicleObjectPool.h"
-
+#include "VehicleObjectPool.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHalManager.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHalManager.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleObjectPool.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleObjectPool.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehiclePropConfigIndex.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehiclePropConfigIndex.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleUtils.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleUtils.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp b/automotive/vehicle/2.0/default/common/src/AccessControlConfigParser.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
rename to automotive/vehicle/2.0/default/common/src/AccessControlConfigParser.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp b/automotive/vehicle/2.0/default/common/src/Obd2SensorStore.cpp
similarity index 88%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
rename to automotive/vehicle/2.0/default/common/src/Obd2SensorStore.cpp
index 3a252af..4ee0a71 100644
--- a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
+++ b/automotive/vehicle/2.0/default/common/src/Obd2SensorStore.cpp
@@ -16,7 +16,8 @@
#include "Obd2SensorStore.h"
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include <utils/SystemClock.h>
+#include "VehicleUtils.h"
namespace android {
namespace hardware {
@@ -98,6 +99,16 @@
return mSensorsBitmask.getBitmask();
}
+void Obd2SensorStore::fillPropValue(VehiclePropValue *propValue,
+ std::string dtc) const {
+ propValue->timestamp = elapsedRealtimeNano();
+ propValue->value.int32Values = getIntegerSensors();
+ propValue->value.floatValues = getFloatSensors();
+ propValue->value.bytes = getSensorsBitmask();
+ propValue->value.stringValue = dtc;
+}
+
+
} // namespace V2_0
} // namespace vehicle
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp b/automotive/vehicle/2.0/default/common/src/SubscriptionManager.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
rename to automotive/vehicle/2.0/default/common/src/SubscriptionManager.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp b/automotive/vehicle/2.0/default/common/src/VehicleHalManager.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleHalManager.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp b/automotive/vehicle/2.0/default/common/src/VehicleObjectPool.cpp
similarity index 98%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleObjectPool.cpp
index a79c55c..ac1245a 100644
--- a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
+++ b/automotive/vehicle/2.0/default/common/src/VehicleObjectPool.cpp
@@ -129,7 +129,7 @@
if (!check(&o->value)) {
ALOGE("Discarding value for prop 0x%x because it contains "
"data that is not consistent with this pool. "
- "Expected type: %d, vector size: %d",
+ "Expected type: %d, vector size: %zu",
o->prop, mPropType, mVectorSize);
delete o;
} else {
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp b/automotive/vehicle/2.0/default/common/src/VehicleUtils.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleUtils.cpp
diff --git a/automotive/vehicle/2.0/default/impl/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
similarity index 93%
rename from automotive/vehicle/2.0/default/impl/DefaultConfig.h
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
index 270bf8c..ec08a43 100644
--- a/automotive/vehicle/2.0/default/impl/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
@@ -18,7 +18,7 @@
#define android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include <vhal_v2_0/VehicleUtils.h>
namespace android {
namespace hardware {
@@ -174,6 +174,18 @@
.access = VehiclePropertyAccess::READ,
.changeMode = VehiclePropertyChangeMode::ON_CHANGE,
.configArray = {0,0}
+ },
+
+ {
+ .prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME_INFO),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE
+ },
+
+ {
+ .prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME_CLEAR),
+ .access = VehiclePropertyAccess::WRITE,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE
}
};
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp
similarity index 79%
rename from automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp
index 88717a9..d3d77b6 100644
--- a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp
@@ -15,9 +15,9 @@
*/
#define LOG_TAG "DefaultVehicleHal"
+#include <android/log.h>
#include <algorithm>
-#include <android/log.h>
#include <netinet/in.h>
#include <sys/socket.h>
@@ -181,87 +181,113 @@
return nullptr;
}
-void DefaultVehicleHal::initObd2LiveFrame(VehiclePropConfig& obd2LiveFramePropConfig) {
- mObd2SensorStore.reset(new Obd2SensorStore(
- obd2LiveFramePropConfig.configArray[0],
- obd2LiveFramePropConfig.configArray[1]));
- // precalculate OBD2 sensor values
- mObd2SensorStore->setIntegerSensor(
+static std::unique_ptr<Obd2SensorStore> fillDefaultObd2Frame(
+ size_t numVendorIntegerSensors,
+ size_t numVendorFloatSensors) {
+ std::unique_ptr<Obd2SensorStore> sensorStore(new Obd2SensorStore(
+ numVendorIntegerSensors, numVendorFloatSensors));
+
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::FUEL_SYSTEM_STATUS,
toInt(FuelSystemStatus::CLOSED_LOOP));
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON, 0);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::IGNITION_MONITORS_SUPPORTED,
toInt(IgnitionMonitorKind::SPARK));
- mObd2SensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
+ sensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
CommonIgnitionMonitors::COMPONENTS_AVAILABLE |
CommonIgnitionMonitors::MISFIRE_AVAILABLE |
SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE |
SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::INTAKE_AIR_TEMPERATURE, 35);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS,
toInt(SecondaryAirStatus::FROM_OUTSIDE_OR_OFF));
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT, 1);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::RUNTIME_SINCE_ENGINE_START, 500);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON, 0);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED, 51);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED, 365);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE, 30);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::CONTROL_MODULE_VOLTAGE, 12);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::AMBIENT_AIR_TEMPERATURE, 18);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO, 1);
- mObd2SensorStore->setIntegerSensor(
+ sensorStore->setIntegerSensor(
Obd2IntegerSensorIndex::FUEL_TYPE, toInt(FuelType::GASOLINE));
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::CALCULATED_ENGINE_LOAD, 0.153);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1, -0.16);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1, -0.16);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2, -0.16);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2, -0.16);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE, 7.5);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::ENGINE_RPM, 1250.);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::VEHICLE_SPEED, 40.);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::TIMING_ADVANCE, 2.5);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::THROTTLE_POSITION, 19.75);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE, 0.265);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::FUEL_TANK_LEVEL_INPUT, 0.824);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE, -0.373);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1, 190.);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::RELATIVE_THROTTLE_POSITION, 3.);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B, 0.306);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D, 0.188);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E, 0.094);
- mObd2SensorStore->setFloatSensor(
+ sensorStore->setFloatSensor(
Obd2FloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR, 0.024);
+
+ return sensorStore;
+}
+
+void DefaultVehicleHal::initObd2LiveFrame(VehiclePropConfig& propConfig) {
+ auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
+ propConfig.configArray[1]);
+ mLiveObd2Frame = createVehiclePropValue(VehiclePropertyType::COMPLEX, 0);
+ sensorStore->fillPropValue(mLiveObd2Frame.get(), "");
+}
+
+void DefaultVehicleHal::initObd2FreezeFrame(VehiclePropConfig& propConfig) {
+ auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
+ propConfig.configArray[1]);
+
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
+
+ sensorStore->fillPropValue(mFreezeObd2Frames[0].get(), "P0070");
+ sensorStore->fillPropValue(mFreezeObd2Frames[1].get(), "P0102");
+ sensorStore->fillPropValue(mFreezeObd2Frames[2].get(), "P0123");
}
void DefaultVehicleHal::parseRxProtoBuf(std::vector<uint8_t>& msg) {
@@ -598,11 +624,15 @@
switch (propId) {
case toInt(VehicleProperty::OBD2_LIVE_FRAME):
v = pool.obtainComplex();
- status = fillObd2LiveFrame(&v);
+ status = fillObd2LiveFrame(v.get());
break;
case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
v = pool.obtainComplex();
- status = fillObd2FreezeFrame(&v);
+ status = fillObd2FreezeFrame(requestedPropValue, v.get());
+ break;
+ case toInt(VehicleProperty::OBD2_FREEZE_FRAME_INFO):
+ v = pool.obtainComplex();
+ status = fillObd2DtcInfo(v.get());
break;
default:
{
@@ -627,16 +657,24 @@
}
StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
- StatusCode status = updateProperty(propValue);
-
- if (status == StatusCode::OK) {
- // Send property update to emulator
- emulator::EmulatorMessage msg;
- emulator::VehiclePropValue *val = msg.add_value();
- populateProtoVehiclePropValue(val, &propValue);
- msg.set_status(emulator::RESULT_OK);
- msg.set_msg_type(emulator::SET_PROPERTY_ASYNC);
- txMsg(msg);
+ auto propId = propValue.prop;
+ StatusCode status;
+ switch (propId) {
+ case toInt(VehicleProperty::OBD2_FREEZE_FRAME_CLEAR):
+ status = clearObd2FreezeFrames(propValue);
+ break;
+ default:
+ status = updateProperty(propValue);
+ if (status == StatusCode::OK) {
+ // Send property update to emulator
+ emulator::EmulatorMessage msg;
+ emulator::VehiclePropValue *val = msg.add_value();
+ populateProtoVehiclePropValue(val, &propValue);
+ msg.set_status(emulator::RESULT_OK);
+ msg.set_msg_type(emulator::SET_PROPERTY_ASYNC);
+ txMsg(msg);
+ }
+ break;
}
return status;
@@ -680,6 +718,9 @@
case toInt(VehicleProperty::OBD2_LIVE_FRAME):
initObd2LiveFrame(cfg);
break;
+ case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
+ initObd2FreezeFrame(cfg);
+ break;
default:
// Need to handle each complex property separately
break;
@@ -721,21 +762,78 @@
mThread = std::thread(&DefaultVehicleHal::rxThread, this);
}
-StatusCode DefaultVehicleHal::fillObd2LiveFrame(VehiclePropValuePtr* v) {
- (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
- (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
- (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
+StatusCode DefaultVehicleHal::fillObd2LiveFrame(VehiclePropValue* v) {
+ v->prop = toInt(VehicleProperty::OBD2_LIVE_FRAME);
+ v->value.int32Values = mLiveObd2Frame->value.int32Values;
+ v->value.floatValues = mLiveObd2Frame->value.floatValues;
+ v->value.bytes = mLiveObd2Frame->value.bytes;
return StatusCode::OK;
}
-StatusCode DefaultVehicleHal::fillObd2FreezeFrame(VehiclePropValuePtr* v) {
- (*v)->value.int32Values = mObd2SensorStore->getIntegerSensors();
- (*v)->value.floatValues = mObd2SensorStore->getFloatSensors();
- (*v)->value.bytes = mObd2SensorStore->getSensorsBitmask();
- (*v)->value.stringValue = "P0010";
+template<typename Iterable>
+typename Iterable::const_iterator findPropValueAtTimestamp(
+ const Iterable& frames,
+ int64_t timestamp) {
+ return std::find_if(frames.begin(),
+ frames.end(),
+ [timestamp] (const std::unique_ptr<VehiclePropValue>&
+ propValue) -> bool {
+ return propValue->timestamp == timestamp;
+ });
+}
+
+StatusCode DefaultVehicleHal::fillObd2FreezeFrame(
+ const VehiclePropValue& requestedPropValue, VehiclePropValue* v) {
+ if (requestedPropValue.value.int64Values.size() != 1) {
+ ALOGE("asked for OBD2_FREEZE_FRAME without valid timestamp");
+ return StatusCode::INVALID_ARG;
+ }
+ auto timestamp = requestedPropValue.value.int64Values[0];
+ auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
+ timestamp);
+ if(mFreezeObd2Frames.end() == freezeFrameIter) {
+ ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
+ return StatusCode::INVALID_ARG;
+ }
+ const std::unique_ptr<VehiclePropValue>& freezeFrame = *freezeFrameIter;
+ v->prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME);
+ v->value.int32Values = freezeFrame->value.int32Values;
+ v->value.floatValues = freezeFrame->value.floatValues;
+ v->value.bytes = freezeFrame->value.bytes;
+ v->value.stringValue = freezeFrame->value.stringValue;
+ v->timestamp = freezeFrame->timestamp;
return StatusCode::OK;
}
+StatusCode DefaultVehicleHal::clearObd2FreezeFrames(
+ const VehiclePropValue& propValue) {
+ if (propValue.value.int64Values.size() == 0) {
+ mFreezeObd2Frames.clear();
+ return StatusCode::OK;
+ } else {
+ for(int64_t timestamp: propValue.value.int64Values) {
+ auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
+ timestamp);
+ if(mFreezeObd2Frames.end() == freezeFrameIter) {
+ ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
+ return StatusCode::INVALID_ARG;
+ }
+ mFreezeObd2Frames.erase(freezeFrameIter);
+ }
+ }
+ return StatusCode::OK;
+}
+
+StatusCode DefaultVehicleHal::fillObd2DtcInfo(VehiclePropValue* v) {
+ std::vector<int64_t> timestamps;
+ for(const auto& freezeFrame: mFreezeObd2Frames) {
+ timestamps.push_back(freezeFrame->timestamp);
+ }
+ v->value.int64Values = timestamps;
+ return StatusCode::OK;
+}
+
+
} // impl
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
similarity index 85%
rename from automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
index edfc224..51f7ba3 100644
--- a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
@@ -18,15 +18,16 @@
#define android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
#include <memory>
-
-#include <VehicleHal.h>
-#include <impl/DefaultConfig.h>
#include <sys/socket.h>
#include <thread>
-#include <utils/SystemClock.h>
-#include <vehicle_hal_manager/Obd2SensorStore.h>
-#include "VehicleHalProto.pb.h"
+#include <utils/SystemClock.h>
+
+#include <vhal_v2_0/VehicleHal.h>
+#include <vhal_v2_0/Obd2SensorStore.h>
+
+#include "DefaultConfig.h"
+#include "VehicleHalProto.pb.h"
namespace android {
namespace hardware {
@@ -85,7 +86,8 @@
void doGetPropertyAll(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
void doSetProperty(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
VehiclePropValue* getVehiclePropValueLocked(int32_t propId, int32_t areaId);
- void initObd2LiveFrame(VehiclePropConfig& obd2LiveFramePropConfig);
+ void initObd2LiveFrame(VehiclePropConfig& propConfig);
+ void initObd2FreezeFrame(VehiclePropConfig& propConfig);
void parseRxProtoBuf(std::vector<uint8_t>& msg);
void populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
const VehiclePropConfig& cfg);
@@ -96,14 +98,18 @@
void rxThread(void);
void txMsg(emulator::EmulatorMessage& txMsg);
StatusCode updateProperty(const VehiclePropValue& propValue);
- StatusCode fillObd2LiveFrame(VehiclePropValuePtr* v);
- StatusCode fillObd2FreezeFrame(VehiclePropValuePtr* v);
+ StatusCode fillObd2LiveFrame(VehiclePropValue* v);
+ StatusCode fillObd2FreezeFrame(const VehiclePropValue& requestedPropValue,
+ VehiclePropValue* v);
+ StatusCode fillObd2DtcInfo(VehiclePropValue *v);
+ StatusCode clearObd2FreezeFrames(const VehiclePropValue& propValue);
private:
// TODO: Use a hashtable to support indexing props
std::vector<std::unique_ptr<VehiclePropValue>> mProps;
std::atomic<int> mCurSocket;
std::atomic<int> mExit;
- std::unique_ptr<Obd2SensorStore> mObd2SensorStore{nullptr};
+ std::unique_ptr<VehiclePropValue> mLiveObd2Frame {nullptr};
+ std::vector<std::unique_ptr<VehiclePropValue>> mFreezeObd2Frames;
std::mutex mPropsMutex;
int mSocket;
std::mutex mTxMutex;
diff --git a/automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto b/automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/VehicleHalProto.proto
similarity index 100%
rename from automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/VehicleHalProto.proto
diff --git a/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
index 7c9a4d9..d9611c0 100644
--- a/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
@@ -19,8 +19,8 @@
#include <fstream>
#include <unordered_set>
-#include "vehicle_hal_manager/AccessControlConfigParser.h"
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include "vhal_v2_0/AccessControlConfigParser.h"
+#include "vhal_v2_0/VehicleUtils.h"
namespace android {
namespace hardware {
@@ -50,7 +50,7 @@
ASSERT_TRUE(parser->parseFromStream(&file, &aclMap));
- ASSERT_EQ(1, aclMap.size());
+ ASSERT_EQ(1u, aclMap.size());
auto it = aclMap.find(toInt(VehicleProperty::HVAC_FAN_SPEED));
ASSERT_NE(aclMap.end(), it);
ASSERT_EQ(VehiclePropertyAccess::READ_WRITE, it->second.access);
@@ -74,7 +74,7 @@
for (auto it = range.first; it != range.second; ++it) {
auto& acl = it->second;
- ASSERT_EQ(1, expectedUids.count(acl.uid))
+ ASSERT_EQ(1u, expectedUids.count(acl.uid))
<< " uid: " << std::hex << acl.uid;
if (acl.uid == 0xbeef) {
@@ -93,12 +93,12 @@
ASSERT_FALSE(parser->parseFromStream(&file, &aclMap));
- ASSERT_EQ(1, aclMap.size());
+ ASSERT_EQ(1u, aclMap.size());
auto it = aclMap.find(toInt(VehicleProperty::HVAC_FAN_SPEED));
ASSERT_NE(aclMap.end(), it);
ASSERT_EQ(VehiclePropertyAccess::READ, it->second.access);
ASSERT_EQ(toInt(VehicleProperty::HVAC_FAN_SPEED), it->second.propId);
- ASSERT_EQ(0xbeef, it->second.uid);
+ ASSERT_EQ(0xBEEFu, it->second.uid);
}
TEST_F(AccessControlConfigParserTest, badIntegerFormat) {
@@ -106,7 +106,7 @@
file << "S:0x0500 A12 RW " << std::endl;
ASSERT_FALSE(parser->parseFromStream(&file, &aclMap));
- ASSERT_EQ(0, aclMap.size());
+ ASSERT_EQ(0u, aclMap.size());
}
TEST_F(AccessControlConfigParserTest, ignoreNotSupportedProperties) {
@@ -114,7 +114,7 @@
file << "S:0x0666 1000 RW " << std::endl;
ASSERT_FALSE(parser->parseFromStream(&file, &aclMap));
- ASSERT_EQ(0, aclMap.size());
+ ASSERT_EQ(0u, aclMap.size());
}
TEST_F(AccessControlConfigParserTest, multipleCalls) {
@@ -122,12 +122,12 @@
configFile << "S:0x0500 1000 RW" << std::endl;
ASSERT_TRUE(parser->parseFromStream(&configFile, &aclMap));
- ASSERT_EQ(1, aclMap.size());
+ ASSERT_EQ(1u, aclMap.size());
std::stringstream configFile2;
configFile2 << "S:0x0501 1004 RW" << std::endl;
ASSERT_TRUE(parser->parseFromStream(&configFile2, &aclMap));
- ASSERT_EQ(2, aclMap.size());
+ ASSERT_EQ(2u, aclMap.size());
auto it = aclMap.find(toInt(VehicleProperty::HVAC_FAN_SPEED));
ASSERT_NE(aclMap.end(), it);
diff --git a/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp b/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
index 3ebebbd..a01c0f4 100644
--- a/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
@@ -16,8 +16,8 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/Obd2SensorStore.h"
-#include "vehicle_hal_manager/VehicleUtils.h"
+#include "vhal_v2_0/Obd2SensorStore.h"
+#include "vhal_v2_0/VehicleUtils.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
index c6c6add..e13d003 100644
--- a/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
@@ -19,7 +19,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/SubscriptionManager.h"
+#include "vhal_v2_0/SubscriptionManager.h"
#include "VehicleHalTestUtils.h"
diff --git a/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
index 1ca5824..f637344 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
@@ -21,7 +21,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/VehicleHalManager.h"
+#include "vhal_v2_0/VehicleHalManager.h"
#include "VehicleHalTestUtils.h"
@@ -103,13 +103,13 @@
return StatusCode::OK;
}
- StatusCode subscribe(int32_t property,
- int32_t areas,
- float sampleRate) override {
+ StatusCode subscribe(int32_t /* property */,
+ int32_t /* areas */,
+ float /* sampleRate */) override {
return StatusCode::OK;
}
- StatusCode unsubscribe(int32_t property) override {
+ StatusCode unsubscribe(int32_t /* property */) override {
return StatusCode::OK;
}
@@ -323,20 +323,20 @@
ASSERT_EQ(StatusCode::OK, actualStatusCode);
ASSERT_EQ(toInt(VehicleProperty::VEHICLE_MAP_SERVICE), actualValue.prop);
- ASSERT_EQ(3, actualValue.value.bytes.size());
+ ASSERT_EQ(3u, actualValue.value.bytes.size());
ASSERT_EQ(1, actualValue.value.bytes[0]);
ASSERT_EQ(2, actualValue.value.bytes[1]);
ASSERT_EQ(3, actualValue.value.bytes[2]);
- ASSERT_EQ(2, actualValue.value.int32Values.size());
+ ASSERT_EQ(2u, actualValue.value.int32Values.size());
ASSERT_EQ(10, actualValue.value.int32Values[0]);
ASSERT_EQ(20, actualValue.value.int32Values[1]);
- ASSERT_EQ(2, actualValue.value.floatValues.size());
+ ASSERT_EQ(2u, actualValue.value.floatValues.size());
ASSERT_FLOAT_EQ(1.1, actualValue.value.floatValues[0]);
ASSERT_FLOAT_EQ(2.2, actualValue.value.floatValues[1]);
- ASSERT_EQ(2, actualValue.value.int64Values.size());
+ ASSERT_EQ(2u, actualValue.value.int64Values.size());
ASSERT_FLOAT_EQ(30, actualValue.value.int64Values[0]);
ASSERT_FLOAT_EQ(40, actualValue.value.int64Values[1]);
diff --git a/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
index a512fcf..ce1ed7d 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
@@ -18,10 +18,11 @@
#define android_hardware_automotive_vehicle_V2_0_VehicleDebugUtils_H_
#include <android/hardware/automotive/vehicle/2.0/types.h>
-#include <vehicle_hal_manager/VehicleUtils.h>
#include <ios>
#include <sstream>
+#include "vhal_v2_0/VehicleUtils.h"
+
namespace android {
namespace hardware {
namespace automotive {
@@ -131,12 +132,12 @@
mEventCond.notify_one();
return Return<void>();
}
- Return<void> onPropertySet(const VehiclePropValue& value) override {
+ Return<void> onPropertySet(const VehiclePropValue& /* value */) override {
return Return<void>();
}
- Return<void> onPropertySetError(StatusCode errorCode,
- int32_t propId,
- int32_t areaId) override {
+ Return<void> onPropertySetError(StatusCode /* errorCode */,
+ int32_t /* propId */,
+ int32_t /* areaId */) override {
return Return<void>();
}
diff --git a/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
index 0d57284..a291351 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
@@ -20,7 +20,7 @@
#include <utils/SystemClock.h>
-#include "vehicle_hal_manager/VehicleObjectPool.h"
+#include "vhal_v2_0/VehicleObjectPool.h"
namespace android {
namespace hardware {
@@ -85,9 +85,9 @@
// In this test we have T threads that concurrently in C cycles
// obtain and release O VehiclePropValue objects of FLOAT / INT32 types.
- const auto T = 2;
- const auto C = 500;
- const auto O = 100;
+ const int T = 2;
+ const int C = 500;
+ const int O = 100;
auto poolPtr = valuePool.get();
@@ -112,10 +112,10 @@
}
auto finish = elapsedRealtimeNano();
- ASSERT_EQ(T * C * O, stats->Obtained);
- ASSERT_EQ(T * C * O, stats->Recycled);
+ ASSERT_EQ(static_cast<uint32_t>(T * C * O), stats->Obtained);
+ ASSERT_EQ(static_cast<uint32_t>(T * C * O), stats->Recycled);
// Created less than obtained.
- ASSERT_GE(T * O, stats->Created);
+ ASSERT_GE(static_cast<uint32_t>(T * O), stats->Created);
auto elapsedMs = (finish - start) / 1000000;
ASSERT_GE(1000, elapsedMs); // Less a second to access 100K objects.
diff --git a/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
index fad4ab3..0f65820 100644
--- a/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
@@ -16,7 +16,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/VehiclePropConfigIndex.h"
+#include "vhal_v2_0/VehiclePropConfigIndex.h"
#include "VehicleHalTestUtils.h"
diff --git a/automotive/vehicle/2.0/types.hal b/automotive/vehicle/2.0/types.hal
index 05e10be..8da0568 100644
--- a/automotive/vehicle/2.0/types.hal
+++ b/automotive/vehicle/2.0/types.hal
@@ -226,28 +226,6 @@
| VehicleArea:GLOBAL),
/*
- * Reports wheel rotational distance in meters since last wheel tick
- * event
- *
- * The value is a vector each element represents distance for individual
- * wheel in the following order: left front, right front, left rear,
- * right rear. VehiclePropValue.timestamp must be correctly filled in.
- *
- * Vendors must specify wheels that support this sensor in
- * VehiclePropConfig.configFlags. The format of this field is a bitset of
- * values from Wheel enum.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE|VehiclePropertyChangeMode:CONTINUOUS
- * @access VehiclePropertyAccess:READ
- * @unit VehicleUnit:METER
- */
- WHEEL_TICK = (
- 0x0306
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:FLOAT_VEC
- | VehicleArea:GLOBAL),
-
- /*
* Currently selected gear
*
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
@@ -352,9 +330,12 @@
/*
* Fan speed setting
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
- * @allow_out_of_range_value : OFF
*/
HVAC_FAN_SPEED = (
0x0500
@@ -365,10 +346,13 @@
/*
* Fan direction setting
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
* @data_enum VehicleHvacFanDirection
- * @allow_out_of_range_value : OFF
*/
HVAC_FAN_DIRECTION = (
0x0501
@@ -379,6 +363,10 @@
/*
* HVAC current temperature.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -391,9 +379,12 @@
/*
* HVAC, target temperature set.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
- * @allow_out_of_range_value : MIN / MAX / OFF
*/
HVAC_TEMPERATURE_SET = (
0x0503
@@ -404,6 +395,10 @@
/*
* On/off defrost
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -416,6 +411,10 @@
/*
* On/off AC
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
* @config_flags Supported zones
@@ -429,6 +428,10 @@
/*
* On/off max AC
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -441,6 +444,10 @@
/*
* On/off max defrost
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -453,6 +460,10 @@
/*
* On/off re-circulation
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -465,6 +476,10 @@
/*
* On/off dual. This must be defined per each row.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -477,6 +492,10 @@
/*
* On/off automatic mode
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -497,6 +516,10 @@
* min/max range defines the allowable range and number of steps in each
* direction.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -512,8 +535,12 @@
* Increase values denote higher heating levels for side mirrors.
* 0 indicates heating is turned off.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ_WRITE
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ_WRITE
*/
HVAC_SIDE_MIRROR_HEAT = (
0x050C
@@ -529,8 +556,12 @@
* Negative value indicates cooling.
* 0 indicates temperature control is off.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ_WRITE
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ_WRITE
*/
HVAC_STEERING_WHEEL_TEMP = (
0x050D
@@ -545,8 +576,11 @@
* different unit from VehicleUnit enum.
* This parameter affects all HVAC temperatures in the system.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ
+ * IVehicle#get is not guaranteed to work if HVAC unit is off. See
+ * HVAC_POWER_ON property for details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
*/
HVAC_TEMPERATURE_UNITS = (
0x050E
@@ -557,9 +591,11 @@
/**
* Actual fan speed
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ
- * @allow_out_of_range_value : OFF
+ * IVehicle#get is not guaranteed to work if HVAC unit is off. See
+ * HVAC_POWER_ON property for details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
*/
HVAC_ACTUAL_FAN_SPEED_RPM = (
0x050F
@@ -577,9 +613,8 @@
*
* 0x12 = (1 << 1) | (1 << 4)
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
- * @access VEHICLE_PROP_ACCESS_READ
- * @allow_out_of_range_value : OFF
+ * @change_mode VehiclePropertyChangeMode:STATIC
+ * @access VehiclePropertyAccess:READ
*/
HVAC_FAN_DIRECTION_AVAILABLE = (
0x0511
@@ -1764,7 +1799,7 @@
* Its contents are to be interpreted as follows:
* the indices defined in VmsMessageIntegerValuesIndex are to be used to
* read from int32Values;
- * stringValue is a serialized VMS message as defined in the vms protocol
+ * bytes is a serialized VMS message as defined in the vms protocol
* which is opaque to the framework;
*
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
@@ -1829,6 +1864,10 @@
* configArray[1] : number of vendor-specific float-valued sensors
* that can be returned in a frame.
*
+ * A get of this property must take the following form:
+ * int64Values[0]: timestamp of the freeze frame to retrieve.
+ * Valid timestamps are given by OBD2_DTC_INFO.
+ *
* The values are to be interpreted as follows:
* the indices defined in Obd2IntegerSensorIndex are to be used to
* read from int32Values;
@@ -1860,8 +1899,49 @@
| VehiclePropertyType:COMPLEX
| VehicleArea:GLOBAL),
-};
+ /*
+ * OBD2 Freeze Frame Information
+ *
+ * This property describes the current freeze frames stored in vehicle
+ * memory and available for retrieval via OBD2_FREEZE_FRAME.
+ *
+ * The values are to be interpreted as follows:
+ * each element of int64Values is the timestamp at which a a fault code
+ * has been detected and the corresponding freeze frame stored, and each
+ * such element can be used as the key to OBD2_FREEZE_FRAME to retrieve
+ * the corresponding freeze frame.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
+ */
+ OBD2_FREEZE_FRAME_INFO = (
+ 0x0D02
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+ /*
+ * OBD2 Freeze Frame Clear
+ *
+ * This property allows deletion of any of the freeze frames stored in
+ * vehicle memory, as described by OBD2_DTC_INFO.
+ *
+ * A set of this property is to be interpreted as follows:
+ * if int64Values contains no elements, then all DTCs stored will be cleared;
+ * if int64Values contains one or more elements, then DTCs at the timestamps
+ * stored in int64Values will be cleared, and the others not cleared, except
+ * the memory will be compacted so that all remaining DTCs are stored
+ * contiguously.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:WRITE
+ */
+ OBD2_FREEZE_FRAME_CLEAR = (
+ 0x0D03
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+};
/*
* Bit flags for fan direction
*/
@@ -3158,11 +3238,14 @@
*/
enum VmsMessageIntegerValuesIndex : int32_t {
/* The message type as enumerated by VmsMessageType enum. */
- VMS_MESSAGE_TYPE = 1,
+ VMS_MESSAGE_TYPE = 0,
/* The layer ID as defined in the vms protocol. */
- VMS_LAYER_ID = 2,
+ VMS_LAYER_ID = 1,
/* The version of the VMS layer. */
- VMS_LAYER_VERSION = 3,
+ VMS_LAYER_VERSION = 2,
+
+ /* The number of bytes in the payload */
+ VMS_PAYLOAD_SIZE_BYTES = 3,
};
diff --git a/automotive/vehicle/2.0/vts/Vehicle.vts b/automotive/vehicle/2.0/vts/Vehicle.vts
index 535d4b8..aa12f0c 100644
--- a/automotive/vehicle/2.0/vts/Vehicle.vts
+++ b/automotive/vehicle/2.0/vts/Vehicle.vts
@@ -6,6 +6,7 @@
import: "android.hardware.automotive.vehicle@2.0::IVehicleCallback"
import: "android.hardware.automotive.vehicle@2.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -35,8 +36,8 @@
arg: {
type: TYPE_VECTOR
vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
}
}
@@ -77,8 +78,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IVehicleCallback"
- is_callback: true
+ predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
}
arg: {
type: TYPE_VECTOR
@@ -97,12 +97,11 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IVehicleCallback"
- is_callback: true
+ predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
}
arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
}
diff --git a/automotive/vehicle/2.0/vts/VehicleCallback.vts b/automotive/vehicle/2.0/vts/VehicleCallback.vts
index 3589fde..e4815d5 100644
--- a/automotive/vehicle/2.0/vts/VehicleCallback.vts
+++ b/automotive/vehicle/2.0/vts/VehicleCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.automotive.vehicle"
import: "android.hardware.automotive.vehicle@2.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -33,8 +34,8 @@
predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
}
arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
arg: {
type: TYPE_SCALAR
diff --git a/automotive/vehicle/2.0/vts/types.vts b/automotive/vehicle/2.0/vts/types.vts
index b8a9f83..3868c99 100644
--- a/automotive/vehicle/2.0/vts/types.vts
+++ b/automotive/vehicle/2.0/vts/types.vts
@@ -162,6 +162,10 @@
scalar_value: {
int32_t: 291504901
}
+ enumerator: "WHEEL_TICK"
+ scalar_value: {
+ int32_t: 291570438
+ }
enumerator: "GEAR_SELECTION"
scalar_value: {
int32_t: 289408000
@@ -282,10 +286,18 @@
scalar_value: {
int32_t: 289474816
}
+ enumerator: "AUDIO_FOCUS_EXT_SYNC"
+ scalar_value: {
+ int32_t: 289474832
+ }
enumerator: "AUDIO_VOLUME"
scalar_value: {
int32_t: 289474817
}
+ enumerator: "AUDIO_VOLUME_EXT_SYNC"
+ scalar_value: {
+ int32_t: 289474833
+ }
enumerator: "AUDIO_VOLUME_LIMIT"
scalar_value: {
int32_t: 289474818
@@ -302,9 +314,17 @@
scalar_value: {
int32_t: 289474821
}
+ enumerator: "AUDIO_STREAM_STATE"
+ scalar_value: {
+ int32_t: 289474822
+ }
+ enumerator: "AUDIO_PARAMETERS"
+ scalar_value: {
+ int32_t: 286263559
+ }
enumerator: "AP_POWER_STATE"
scalar_value: {
- int32_t: 2560
+ int32_t: 289475072
}
enumerator: "DISPLAY_BRIGHTNESS"
scalar_value: {
@@ -506,6 +526,14 @@
scalar_value: {
int32_t: 299896065
}
+ enumerator: "OBD2_FREEZE_FRAME_INFO"
+ scalar_value: {
+ int32_t: 299896066
+ }
+ enumerator: "OBD2_FREEZE_FRAME_CLEAR"
+ scalar_value: {
+ int32_t: 299896067
+ }
}
}
@@ -1585,8 +1613,8 @@
type: TYPE_STRUCT
struct_value: {
name: "prop"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
struct_value: {
name: "access"
@@ -1685,8 +1713,8 @@
}
struct_value: {
name: "prop"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
struct_value: {
name: "timestamp"
@@ -1793,8 +1821,8 @@
type: TYPE_STRUCT
struct_value: {
name: "propId"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
}
struct_value: {
name: "vehicleAreas"
@@ -2104,6 +2132,35 @@
}
attribute: {
+ name: "::android::hardware::automotive::vehicle::V2_0::Wheel"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "UNKNOWN"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "LEFT_FRONT"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "RIGHT_FRONT"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "LEFT_REAR"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "RIGHT_REAR"
+ scalar_value: {
+ int32_t: 8
+ }
+ }
+}
+
+attribute: {
name: "::android::hardware::automotive::vehicle::V2_0::SecondaryAirStatus"
type: TYPE_ENUM
enum_value: {
@@ -2251,6 +2308,14 @@
scalar_value: {
int32_t: 2
}
+ enumerator: "IGNITION_SPECIFIC_MONITORS"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "INTAKE_AIR_TEMPERATURE"
+ scalar_value: {
+ int32_t: 4
+ }
enumerator: "COMMANDED_SECONDARY_AIR_STATUS"
scalar_value: {
int32_t: 5
@@ -2671,3 +2736,45 @@
}
}
+attribute: {
+ name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "SUBSCRIBE"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "UNSUBSCRIBE"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "DATA"
+ scalar_value: {
+ int32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageIntegerValuesIndex"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "VMS_MESSAGE_TYPE"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "VMS_LAYER_ID"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "VMS_LAYER_VERSION"
+ scalar_value: {
+ int32_t: 3
+ }
+ }
+}
+
diff --git a/automotive/vehicle/2.1/Android.bp b/automotive/vehicle/2.1/Android.bp
new file mode 100644
index 0000000..dcf395c
--- /dev/null
+++ b/automotive/vehicle/2.1/Android.bp
@@ -0,0 +1,62 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.automotive.vehicle@2.1_hal",
+ srcs: [
+ "types.hal",
+ "IVehicle.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.automotive.vehicle@2.1_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1",
+ srcs: [
+ ":android.hardware.automotive.vehicle@2.1_hal",
+ ],
+ out: [
+ "android/hardware/automotive/vehicle/2.1/types.cpp",
+ "android/hardware/automotive/vehicle/2.1/VehicleAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.automotive.vehicle@2.1_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1",
+ srcs: [
+ ":android.hardware.automotive.vehicle@2.1_hal",
+ ],
+ out: [
+ "android/hardware/automotive/vehicle/2.1/types.h",
+ "android/hardware/automotive/vehicle/2.1/IVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/IHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BnHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BpHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BsVehicle.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.automotive.vehicle@2.1",
+ generated_sources: ["android.hardware.automotive.vehicle@2.1_genc++"],
+ generated_headers: ["android.hardware.automotive.vehicle@2.1_genc++_headers"],
+ export_generated_headers: ["android.hardware.automotive.vehicle@2.1_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.automotive.vehicle@2.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.automotive.vehicle@2.0",
+ ],
+}
diff --git a/automotive/vehicle/2.1/Android.mk b/automotive/vehicle/2.1/Android.mk
new file mode 100644
index 0000000..2a8d1dd
--- /dev/null
+++ b/automotive/vehicle/2.1/Android.mk
@@ -0,0 +1,116 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.1-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.hardware.automotive.vehicle@2.0-java \
+ android.hidl.base@1.0-java \
+
+
+#
+# Build types.hal (VehicleProperty)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VehicleProperty.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.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.VehicleProperty
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IVehicle.hal
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IVehicle.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::IVehicle
+
+$(GEN): $(LOCAL_PATH)/IVehicle.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.1-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.hardware.automotive.vehicle@2.0-java-static \
+ android.hidl.base@1.0-java-static \
+
+
+#
+# Build types.hal (VehicleProperty)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VehicleProperty.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.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.VehicleProperty
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IVehicle.hal
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IVehicle.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::IVehicle
+
+$(GEN): $(LOCAL_PATH)/IVehicle.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/automotive/vehicle/2.1/IVehicle.hal b/automotive/vehicle/2.1/IVehicle.hal
new file mode 100644
index 0000000..5b6a23f
--- /dev/null
+++ b/automotive/vehicle/2.1/IVehicle.hal
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.1 (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.1
+ *
+ * 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.automotive.vehicle@2.1;
+
+import android.hardware.automotive.vehicle@2.0;
+
+/*
+ * New revision of IVehicle interface that supports properties defined in
+ * VehicleProperty enum version 2.1.
+ *
+ * NOTE: this HAL interface is under development and shouldn't be used in
+ * production.
+ *
+ * TODO(pavelm): update comment when this interface is ready for prod.
+ */
+interface IVehicle extends @2.0::IVehicle {
+};
diff --git a/automotive/vehicle/2.1/default/Android.mk b/automotive/vehicle/2.1/default/Android.mk
new file mode 100644
index 0000000..1874cb3
--- /dev/null
+++ b/automotive/vehicle/2.1/default/Android.mk
@@ -0,0 +1,84 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+vhal_v2_0 = android.hardware.automotive.vehicle@2.0
+vhal_v2_1 = android.hardware.automotive.vehicle@2.1
+
+###############################################################################
+# Vehicle default VehicleHAL implementation
+###############################################################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= $(vhal_v2_1)-default-impl-lib
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/impl/vhal_v2_1
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/impl
+
+
+# LOCAL_WHOLE_STATIC_LIBRARIES := \
+
+LOCAL_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_0)-libproto-native
+
+LOCAL_SHARED_LIBRARIES := \
+ libbinder \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ libprotobuf-cpp-lite \
+ $(vhal_v2_0) \
+ $(vhal_v2_1) \
+
+include $(BUILD_STATIC_LIBRARY)
+
+###############################################################################
+# Vehicle HAL service
+###############################################################################
+include $(CLEAR_VARS)
+LOCAL_MODULE := $(vhal_v2_1)-service
+LOCAL_INIT_RC := $(vhal_v2_1)-service.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+
+LOCAL_SRC_FILES := \
+ service.cpp
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-libproto-native \
+
+LOCAL_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_1)-default-impl-lib \
+
+LOCAL_SHARED_LIBRARIES := \
+ libbinder \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ libprotobuf-cpp-lite \
+ $(vhal_v2_0) \
+ $(vhal_v2_1) \
+
+include $(BUILD_EXECUTABLE)
diff --git a/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc b/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc
new file mode 100644
index 0000000..0b642d5
--- /dev/null
+++ b/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc
@@ -0,0 +1,4 @@
+service vehicle-hal-2.1 /system/bin/hw/android.hardware.automotive.vehicle@2.1-service
+ class hal
+ user vehicle_network
+ group system inet
diff --git a/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h
new file mode 100644
index 0000000..ab08cec
--- /dev/null
+++ b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
+#define android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
+
+#include <android/hardware/automotive/vehicle/2.1/types.h>
+#include <vhal_v2_0/VehicleUtils.h>
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_1 {
+
+namespace impl {
+
+const V2_0::VehiclePropConfig kVehicleProperties[] = {
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::WHEEL_TICK),
+ .access = V2_0::VehiclePropertyAccess::READ,
+ .changeMode = V2_0::VehiclePropertyChangeMode::CONTINUOUS,
+ }
+};
+
+} // impl
+
+} // namespace V2_1
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+#endif // android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
diff --git a/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h
new file mode 100644
index 0000000..7ccb354
--- /dev/null
+++ b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_1_impl_DefaultVehicleHal_H_
+#define android_hardware_automotive_vehicle_V2_1_impl_DefaultVehicleHal_H_
+
+#include <memory>
+
+#include <utils/SystemClock.h>
+
+#include <vhal_v2_0/VehicleHal.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
+
+#include "DefaultConfig.h"
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_1 {
+
+namespace impl {
+
+using namespace std::placeholders;
+
+class DefaultVehicleHal : public V2_0::VehicleHal {
+public:
+ DefaultVehicleHal(V2_0::VehicleHal* vhal20) : mVehicleHal20(vhal20) {}
+
+ std::vector<V2_0::VehiclePropConfig> listProperties() override {
+ std::vector<V2_0::VehiclePropConfig> propConfigs(mVehicleHal20->listProperties());
+
+ // Join Vehicle Hal 2.0 and 2.1 configs.
+ propConfigs.insert(propConfigs.end(),
+ std::begin(kVehicleProperties),
+ std::end(kVehicleProperties));
+
+ return propConfigs;
+ }
+
+ VehiclePropValuePtr get(const V2_0::VehiclePropValue& requestedPropValue,
+ V2_0::StatusCode* outStatus) override {
+ // TODO(pavelm): put logic related to VHAL 2.1 here (OBD, VMS, etc)
+ return mVehicleHal20->get(requestedPropValue, outStatus);
+ }
+
+ V2_0::StatusCode set(const V2_0::VehiclePropValue& propValue) override {
+ return mVehicleHal20->set(propValue);
+ }
+
+ V2_0::StatusCode subscribe(int32_t property,
+ int32_t areas,
+ float sampleRate) override {
+ return mVehicleHal20->subscribe(property, areas, sampleRate);
+ }
+
+ V2_0::StatusCode unsubscribe(int32_t property) override {
+ return mVehicleHal20->unsubscribe(property);
+ }
+
+ void onCreate() override {
+ mVehicleHal20->init(getValuePool(),
+ std::bind(&DefaultVehicleHal::doHalEvent, this, _1),
+ std::bind(&DefaultVehicleHal::doHalPropertySetError, this, _1, _2, _3));
+ }
+
+private:
+ V2_0::VehicleHal* mVehicleHal20;
+};
+
+} // impl
+
+} // namespace V2_1
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+#endif // android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
diff --git a/automotive/vehicle/2.1/default/service.cpp b/automotive/vehicle/2.1/default/service.cpp
new file mode 100644
index 0000000..aaadf17
--- /dev/null
+++ b/automotive/vehicle/2.1/default/service.cpp
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "automotive.vehicle@2.1-service"
+#include <android/log.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include <iostream>
+
+#include <android/hardware/automotive/vehicle/2.1/IVehicle.h>
+
+#include <vhal_v2_0/VehicleHalManager.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
+
+#include <vhal_v2_1/DefaultVehicleHal.h>
+
+using namespace android;
+using namespace android::hardware;
+
+namespace V2_1 = ::android::hardware::automotive::vehicle::V2_1;
+namespace V2_0 = ::android::hardware::automotive::vehicle::V2_0;
+
+using StatusCode = V2_0::StatusCode;
+using VehiclePropValue = V2_0::VehiclePropValue;
+
+/* Just wrapper that passes all calls to the provided V2_0::IVehicle object */
+struct Vehicle_V2_1 : public V2_1::IVehicle {
+
+ Vehicle_V2_1(V2_0::IVehicle* vehicle20) : mVehicle20(vehicle20) {}
+
+ // Methods derived from IVehicle
+ Return<void> getAllPropConfigs(getAllPropConfigs_cb _hidl_cb) override {
+ return mVehicle20->getAllPropConfigs(_hidl_cb);
+ }
+
+ Return<void> getPropConfigs(const hidl_vec<int32_t>& properties,
+ getPropConfigs_cb _hidl_cb) override {
+ return mVehicle20->getPropConfigs(properties, _hidl_cb);
+ }
+
+ Return<void> get(const V2_0::VehiclePropValue& requestedPropValue,
+ get_cb _hidl_cb) override {
+ return mVehicle20->get(requestedPropValue, _hidl_cb);
+ }
+
+ Return<StatusCode> set(const VehiclePropValue& value) override {
+ return mVehicle20->set(value);
+ }
+
+ Return<StatusCode> subscribe(const sp<V2_0::IVehicleCallback>& callback,
+ const hidl_vec<V2_0::SubscribeOptions>&
+ options) override {
+ return mVehicle20->subscribe(callback, options);
+ }
+
+ Return<StatusCode> unsubscribe(const sp<V2_0::IVehicleCallback>& callback,
+ int32_t propId) override {
+ return mVehicle20->unsubscribe(callback, propId);
+ }
+
+ Return<void> debugDump(debugDump_cb _hidl_cb = nullptr) override {
+ return mVehicle20->debugDump(_hidl_cb);
+ }
+
+private:
+ V2_0::IVehicle* mVehicle20;
+};
+
+int main(int /* argc */, char* /* argv */ []) {
+ auto halImpl20 = std::make_unique<V2_0::impl::DefaultVehicleHal>();
+ auto halImpl21 = std::make_unique<V2_1::impl::DefaultVehicleHal>(halImpl20.get());
+
+ auto vehicleManager = std::make_unique<V2_0::VehicleHalManager>(halImpl21.get());
+
+ Vehicle_V2_1 vehicle21(vehicleManager.get());
+
+ ALOGI("Registering as service...");
+ vehicle21.registerAsService("Vehicle");
+
+ configureRpcThreadpool(1, true /* callerWillJoin */);
+
+ ALOGI("Ready");
+ joinRpcThreadpool();
+}
diff --git a/automotive/vehicle/2.1/types.hal b/automotive/vehicle/2.1/types.hal
new file mode 100644
index 0000000..5df1fbc
--- /dev/null
+++ b/automotive/vehicle/2.1/types.hal
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.1 (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.1
+ *
+ * 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.automotive.vehicle@2.1;
+
+import android.hardware.automotive.vehicle@2.0;
+
+/*
+ * Extension of VehicleProperty enum declared in Vehicle HAL 2.0
+ */
+enum VehicleProperty: @2.0::VehicleProperty {
+ /*
+ * Reports wheel rotational distance in meters since last wheel tick
+ * event
+ *
+ * The value is a vector each element represents distance for individual
+ * wheel in the following order: left front, right front, left rear,
+ * right rear. VehiclePropValue.timestamp must be correctly filled in.
+ *
+ * Vendors must specify wheels that support this sensor in
+ * VehiclePropConfig.configFlags. The format of this field is a bitset of
+ * values from Wheel enum.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE |VehiclePropertyChangeMode:CONTINUOUS
+ * @access VehiclePropertyAccess:READ
+ * @unit VehicleUnit:METER
+ */
+ WHEEL_TICK = (
+ 0x0306
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:FLOAT_VEC
+ | VehicleArea:GLOBAL),
+};
diff --git a/benchmarks/msgq/1.0/Android.bp b/benchmarks/msgq/1.0/Android.bp
index de84e81..7f8ea99 100644
--- a/benchmarks/msgq/1.0/Android.bp
+++ b/benchmarks/msgq/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0",
srcs: [
- "IBenchmarkMsgQ.hal",
+ ":android.hardware.benchmarks.msgq@1.0_hal",
],
out: [
"android/hardware/benchmarks/msgq/1.0/BenchmarkMsgQAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.benchmarks.msgq@1.0",
srcs: [
- "IBenchmarkMsgQ.hal",
+ ":android.hardware.benchmarks.msgq@1.0_hal",
],
out: [
"android/hardware/benchmarks/msgq/1.0/IBenchmarkMsgQ.h",
diff --git a/biometrics/Android.bp b/biometrics/Android.bp
index eea4604..b4681e4 100644
--- a/biometrics/Android.bp
+++ b/biometrics/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"fingerprint/2.1",
+ "fingerprint/2.1/vts/functional"
]
diff --git a/biometrics/fingerprint/2.1/Android.bp b/biometrics/fingerprint/2.1/Android.bp
index f285f16..586e1b3 100644
--- a/biometrics/fingerprint/2.1/Android.bp
+++ b/biometrics/fingerprint/2.1/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1",
srcs: [
- "types.hal",
- "IBiometricsFingerprint.hal",
- "IBiometricsFingerprintClientCallback.hal",
+ ":android.hardware.biometrics.fingerprint@2.1_hal",
],
out: [
"android/hardware/biometrics/fingerprint/2.1/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1",
srcs: [
- "types.hal",
- "IBiometricsFingerprint.hal",
- "IBiometricsFingerprintClientCallback.hal",
+ ":android.hardware.biometrics.fingerprint@2.1_hal",
],
out: [
"android/hardware/biometrics/fingerprint/2.1/types.h",
diff --git a/biometrics/fingerprint/2.1/Android.mk b/biometrics/fingerprint/2.1/Android.mk
index 22da268..567b38a 100644
--- a/biometrics/fingerprint/2.1/Android.mk
+++ b/biometrics/fingerprint/2.1/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.1-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -239,7 +239,7 @@
LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.1-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/biometrics/fingerprint/2.1/default/Android.mk b/biometrics/fingerprint/2.1/default/Android.mk
index e5c79fe..ea20130 100644
--- a/biometrics/fingerprint/2.1/default/Android.mk
+++ b/biometrics/fingerprint/2.1/default/Android.mk
@@ -3,6 +3,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.1-service
LOCAL_INIT_RC := android.hardware.biometrics.fingerprint@2.1-service.rc
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
BiometricsFingerprint.cpp \
diff --git a/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp b/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp
index 7f0d005..b106481 100644
--- a/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp
+++ b/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 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.
diff --git a/biometrics/fingerprint/2.1/default/BiometricsFingerprint.h b/biometrics/fingerprint/2.1/default/BiometricsFingerprint.h
index 652a3e0..5923c84 100644
--- a/biometrics/fingerprint/2.1/default/BiometricsFingerprint.h
+++ b/biometrics/fingerprint/2.1/default/BiometricsFingerprint.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 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.
diff --git a/biometrics/fingerprint/2.1/default/android.hardware.biometrics.fingerprint@2.1-service.rc b/biometrics/fingerprint/2.1/default/android.hardware.biometrics.fingerprint@2.1-service.rc
index 3de52ad..aa767a6 100644
--- a/biometrics/fingerprint/2.1/default/android.hardware.biometrics.fingerprint@2.1-service.rc
+++ b/biometrics/fingerprint/2.1/default/android.hardware.biometrics.fingerprint@2.1-service.rc
@@ -1,4 +1,4 @@
-service fps_hal /system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service
+service fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service
# "class hal" causes a race condition on some devices due to files created
# in /data. As a workaround, postpone startup until later in boot once
# /data is mounted.
diff --git a/biometrics/fingerprint/2.1/default/service.cpp b/biometrics/fingerprint/2.1/default/service.cpp
index 0563acb..d6b91c6 100644
--- a/biometrics/fingerprint/2.1/default/service.cpp
+++ b/biometrics/fingerprint/2.1/default/service.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 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.
diff --git a/biometrics/fingerprint/2.1/types.hal b/biometrics/fingerprint/2.1/types.hal
index f462906..e389773 100644
--- a/biometrics/fingerprint/2.1/types.hal
+++ b/biometrics/fingerprint/2.1/types.hal
@@ -49,6 +49,8 @@
* followed by ERROR_CANCELED.
*/
enum FingerprintError : int32_t {
+ /* Used for testing, no error returned */
+ ERROR_NO_ERROR = 0,
/* The hardware has an error that can't be resolved. */
ERROR_HW_UNAVAILABLE = 1,
/* Bad data; operation can't continue */
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
new file mode 100644
index 0000000..0581da0
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
@@ -0,0 +1,191 @@
+component_class: HAL_HIDL
+component_type_version: 2.1
+component_name: "IBiometricsFingerprint"
+
+package: "android.hardware.biometrics.fingerprint"
+
+import: "android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprintClientCallback"
+import: "android.hardware.biometrics.fingerprint@2.1::types"
+import: "android.hidl.base@1.0::types"
+
+interface: {
+ api: {
+ name: "setNotify"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback"
+ }
+ callflow: {
+ next: "setActiveGroup"
+ }
+ callflow: {
+ entry: true
+ }
+ }
+
+ api: {
+ name: "preEnroll"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ callflow: {
+ next: "enroll"
+ next: "postEnroll"
+ }
+ }
+
+ api: {
+ name: "enroll"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 69
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ callflow: {
+ next: "cancel"
+ next: "enroll"
+ next: "postEnroll"
+ next: "remove"
+ }
+ }
+
+ api: {
+ name: "postEnroll"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ callflow: {
+ next: "authenticate"
+ next: "setActiveGroup"
+ next: "enumerate"
+ next: "remove"
+ }
+ }
+
+ api: {
+ name: "getAuthenticatorId"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ callflow: {
+ next: "authenticate"
+ }
+ }
+
+ api: {
+ name: "cancel"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ callflow: {
+ next: "authenticate"
+ next: "enroll"
+ next: "enumerate"
+ next: "remove"
+ next: "setActiveGroup"
+ }
+ }
+
+ api: {
+ name: "enumerate"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ callflow: {
+ next: "remove"
+ next: "enroll"
+ next: "authenticate"
+ next: "setActiveGroup"
+ }
+ }
+
+ api: {
+ name: "remove"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ callflow: {
+ next: "enumerate"
+ next: "authenticate"
+ next: "cancel"
+ next: "getAuthenticatorId"
+ next: "setActiveGroup"
+ }
+ }
+
+ api: {
+ name: "setActiveGroup"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ callflow: {
+ next: "authenticate"
+ next: "preEnroll"
+ next: "enumerate"
+ next: "remove"
+ }
+ }
+
+ api: {
+ name: "authenticate"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ callflow: {
+ next: "cancel"
+ next: "preEnroll"
+ next: "remove"
+ }
+ }
+
+}
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
new file mode 100644
index 0000000..dedda65
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
@@ -0,0 +1,126 @@
+component_class: HAL_HIDL
+component_type_version: 2.1
+component_name: "IBiometricsFingerprintClientCallback"
+
+package: "android.hardware.biometrics.fingerprint"
+
+import: "android.hardware.biometrics.fingerprint@2.1::types"
+import: "android.hidl.base@1.0::types"
+
+interface: {
+ api: {
+ name: "onEnrollResult"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onAcquired"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ }
+
+ api: {
+ name: "onAuthenticated"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onError"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ }
+
+ api: {
+ name: "onRemoved"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onEnumerate"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+}
diff --git a/biometrics/fingerprint/2.1/vts/functional/Android.bp b/biometrics/fingerprint/2.1/vts/functional/Android.bp
new file mode 100644
index 0000000..25f7cc0
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/functional/Android.bp
@@ -0,0 +1,37 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "fingerprint_hidl_hal_test",
+ gtest: true,
+ srcs: ["fingerprint_hidl_hal_test.cpp"],
+ shared_libs: [
+ "libbase",
+ "libhidltransport",
+ "libhardware",
+ "libhwbinder",
+ "libhidlbase",
+ "liblog",
+ "libutils",
+ "android.hardware.biometrics.fingerprint@2.1",
+ ],
+ static_libs: ["libgtest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ]
+}
+
diff --git a/biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp b/biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp
new file mode 100644
index 0000000..9138000
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "fingerprint_hidl_hal_test"
+
+#include <android-base/logging.h>
+#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
+#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprintClientCallback.h>
+#include <chrono>
+#include <gtest/gtest.h>
+#include <hidl/HidlSupport.h>
+#include <hidl/HidlTransportSupport.h>
+
+using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
+using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
+using android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo;
+using android::hardware::biometrics::fingerprint::V2_1::FingerprintError;
+using android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
+using android::hardware::hidl_vec;
+using android::hardware::Return;
+
+#define SERVICE_NAME "fingerprint_hal"
+
+class FingerprintHidlTest : public ::testing::Test,
+ public IBiometricsFingerprintClientCallback {
+
+protected:
+ android::sp<IBiometricsFingerprint> service;
+ FingerprintError err;
+ // State changes should occur within this threshold, otherwise the
+ // framework' will assume things have broken.
+ std::chrono::seconds threshold;
+
+public:
+ FingerprintHidlTest ():
+ err(FingerprintError::ERROR_NO_ERROR), threshold(1) {}
+
+ virtual void SetUp() override {
+ service = IBiometricsFingerprint::getService(SERVICE_NAME);
+
+ ASSERT_NE(service, nullptr);
+ clearErr();
+
+ // TODO: instantly fail any test that receives a death notification
+ }
+
+ virtual void TearDown() override {}
+
+ // implement methods of IBiometricsFingerprintClientCallback
+ virtual Return<void> onEnrollResult(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ return Return<void>();
+ }
+ virtual Return<void> onAcquired(uint64_t, FingerprintAcquiredInfo, int32_t)
+ override {
+ return Return<void>();
+ }
+
+ virtual Return<void> onAuthenticated(uint64_t, uint32_t, uint32_t, const
+ hidl_vec<uint8_t>&) override {
+ return Return<void>();
+ }
+
+ virtual Return<void> onError(uint64_t, FingerprintError error, int32_t)
+ override {
+ err = error;
+ return Return<void>();
+ }
+
+ virtual Return<void> onRemoved(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ return Return<void>();
+ }
+
+ virtual Return<void> onEnumerate(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ return Return<void>();
+ }
+
+ void clearErr () {
+ err = FingerprintError::ERROR_NO_ERROR;
+ }
+};
+
+class FingerprintHidlEnvironment : public ::testing::Environment {
+public:
+ virtual void SetUp() {}
+ virtual void TearDown() {}
+};
+
+// The service should be reachable.
+TEST_F(FingerprintHidlTest, ConnectTest) {
+ Return<uint64_t> rc = service->setNotify(this);
+ EXPECT_NE(rc, 0UL);
+}
+
+// Cancel should always return ERROR_CANCELED from any starting state including
+// the IDLE state.
+TEST_F(FingerprintHidlTest, CancelTest) {
+ Return<uint64_t> rc = service->setNotify(this);
+ EXPECT_NE(rc, 0UL);
+
+ auto start = std::chrono::system_clock::now();
+ Return<RequestStatus> res = service->cancel();
+ auto end = std::chrono::system_clock::now();
+ auto diff = end - start;
+
+ // check that we were able to make an IPC request successfully
+ EXPECT_EQ(RequestStatus::SYS_OK, res);
+ // check error should be ERROR_CANCELED
+ EXPECT_EQ(FingerprintError::ERROR_CANCELED, err);
+ // check that this did not take longer than a threshold
+ EXPECT_TRUE(diff <= threshold);
+}
+
+// A call to cancel should after any other method call should set the error
+// state to canceled.
+TEST_F(FingerprintHidlTest, AuthTest) {
+ Return<uint64_t> rc = service->setNotify(this);
+ EXPECT_NE(rc, 0UL);
+
+ Return<RequestStatus> res = service->authenticate(0, 0);
+ // check that we were able to make an IPC request successfully
+ EXPECT_EQ(RequestStatus::SYS_OK, res);
+
+ auto start = std::chrono::system_clock::now();
+ res = service->cancel();
+ auto end = std::chrono::system_clock::now();
+ auto diff = end - start;
+
+ // check that we were able to make an IPC request successfully
+ EXPECT_EQ(RequestStatus::SYS_OK, res);
+ // check error should be ERROR_CANCELED
+ EXPECT_EQ(FingerprintError::ERROR_CANCELED, err);
+ // check that this did not take longer than a threshold
+ EXPECT_TRUE(diff <= threshold);
+}
+
+int main(int argc, char **argv) {
+ ::testing::AddGlobalTestEnvironment(new FingerprintHidlEnvironment);
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+ return status;
+}
diff --git a/biometrics/fingerprint/2.1/vts/types.vts b/biometrics/fingerprint/2.1/vts/types.vts
new file mode 100644
index 0000000..9f9fd37
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/types.vts
@@ -0,0 +1,262 @@
+component_class: HAL_HIDL
+component_type_version: 2.1
+component_name: "types"
+
+package: "android.hardware.biometrics.fingerprint"
+
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "SYS_UNKNOWN"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "SYS_OK"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "SYS_ENOENT"
+ scalar_value: {
+ int32_t: -2
+ }
+ enumerator: "SYS_EINTR"
+ scalar_value: {
+ int32_t: -4
+ }
+ enumerator: "SYS_EIO"
+ scalar_value: {
+ int32_t: -5
+ }
+ enumerator: "SYS_EAGAIN"
+ scalar_value: {
+ int32_t: -11
+ }
+ enumerator: "SYS_ENOMEM"
+ scalar_value: {
+ int32_t: -12
+ }
+ enumerator: "SYS_EACCES"
+ scalar_value: {
+ int32_t: -13
+ }
+ enumerator: "SYS_EFAULT"
+ scalar_value: {
+ int32_t: -14
+ }
+ enumerator: "SYS_EBUSY"
+ scalar_value: {
+ int32_t: -16
+ }
+ enumerator: "SYS_EINVAL"
+ scalar_value: {
+ int32_t: -22
+ }
+ enumerator: "SYS_ENOSPC"
+ scalar_value: {
+ int32_t: -28
+ }
+ enumerator: "SYS_ETIMEDOUT"
+ scalar_value: {
+ int32_t: -110
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "ERROR_NO_ERROR"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "ERROR_HW_UNAVAILABLE"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "ERROR_UNABLE_TO_PROCESS"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "ERROR_TIMEOUT"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "ERROR_NO_SPACE"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "ERROR_CANCELED"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "ERROR_UNABLE_TO_REMOVE"
+ scalar_value: {
+ int32_t: 6
+ }
+ enumerator: "ERROR_LOCKOUT"
+ scalar_value: {
+ int32_t: 7
+ }
+ enumerator: "ERROR_VENDOR"
+ scalar_value: {
+ int32_t: 8
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "ACQUIRED_GOOD"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "ACQUIRED_PARTIAL"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "ACQUIRED_INSUFFICIENT"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "ACQUIRED_IMAGER_DIRTY"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "ACQUIRED_TOO_SLOW"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "ACQUIRED_TOO_FAST"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "ACQUIRED_VENDOR"
+ scalar_value: {
+ int32_t: 6
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "gid"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "fid"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintEnroll"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "finger"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+ }
+ struct_value: {
+ name: "samplesRemaining"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "msg"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintIterator"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "finger"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+ }
+ struct_value: {
+ name: "remainingTemplates"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquired"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "acquiredInfo"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAuthenticated"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "finger"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+ }
+ struct_value: {
+ name: "hat"
+ type: TYPE_ARRAY
+ vector_size: 69
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintMsgType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "ERROR"
+ scalar_value: {
+ int32_t: -1
+ }
+ enumerator: "ACQUIRED"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "TEMPLATE_ENROLLING"
+ scalar_value: {
+ int32_t: 3
+ }
+ enumerator: "TEMPLATE_REMOVED"
+ scalar_value: {
+ int32_t: 4
+ }
+ enumerator: "AUTHENTICATED"
+ scalar_value: {
+ int32_t: 5
+ }
+ enumerator: "TEMPLATE_ENUMERATING"
+ scalar_value: {
+ int32_t: 6
+ }
+ }
+}
+
diff --git a/bluetooth/1.0/Android.bp b/bluetooth/1.0/Android.bp
index f2c394b..2373ceb 100644
--- a/bluetooth/1.0/Android.bp
+++ b/bluetooth/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
srcs: [
- "types.hal",
- "IBluetoothHci.hal",
- "IBluetoothHciCallbacks.hal",
+ ":android.hardware.bluetooth@1.0_hal",
],
out: [
"android/hardware/bluetooth/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
srcs: [
- "types.hal",
- "IBluetoothHci.hal",
- "IBluetoothHciCallbacks.hal",
+ ":android.hardware.bluetooth@1.0_hal",
],
out: [
"android/hardware/bluetooth/1.0/types.h",
diff --git a/bluetooth/1.0/Android.mk b/bluetooth/1.0/Android.mk
index 7924cee..d824d5d 100644
--- a/bluetooth/1.0/Android.mk
+++ b/bluetooth/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.bluetooth@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -87,7 +87,7 @@
LOCAL_MODULE := android.hardware.bluetooth@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc
index 7f14e68..7737dd2 100644
--- a/bluetooth/1.0/default/vendor_interface.cc
+++ b/bluetooth/1.0/default/vendor_interface.cc
@@ -414,6 +414,7 @@
hci_packet_.data() + preamble_size_for_type[hci_packet_type_] +
hci_packet_bytes_read_,
hci_packet_bytes_remaining_));
+ CHECK(bytes_read > 0);
hci_packet_bytes_remaining_ -= bytes_read;
hci_packet_bytes_read_ += bytes_read;
if (hci_packet_bytes_remaining_ == 0) {
diff --git a/bluetooth/1.0/vts/BluetoothHci.vts b/bluetooth/1.0/vts/BluetoothHci.vts
index 1112371..348c0ab 100644
--- a/bluetooth/1.0/vts/BluetoothHci.vts
+++ b/bluetooth/1.0/vts/BluetoothHci.vts
@@ -6,18 +6,23 @@
import: "android.hardware.bluetooth@1.0::IBluetoothHciCallbacks"
import: "android.hardware.bluetooth@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
name: "initialize"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::bluetooth::V1_0::Status"
- }
arg: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IBluetoothHciCallbacks"
- is_callback: false
+ predefined_type: "::android::hardware::bluetooth::V1_0::IBluetoothHciCallbacks"
+ }
+ callflow: {
+ entry: true
+ }
+ callflow: {
+ next: "sendHciCommand"
+ next: "sendAclData"
+ next: "sendScoData"
+ next: "close"
}
}
@@ -30,6 +35,12 @@
scalar_type: "uint8_t"
}
}
+ callflow: {
+ next: "sendHciCommand"
+ next: "sendAclData"
+ next: "sendScoData"
+ next: "close"
+ }
}
api: {
@@ -41,6 +52,12 @@
scalar_type: "uint8_t"
}
}
+ callflow: {
+ next: "sendHciCommand"
+ next: "sendAclData"
+ next: "sendScoData"
+ next: "close"
+ }
}
api: {
@@ -52,10 +69,19 @@
scalar_type: "uint8_t"
}
}
+ callflow: {
+ next: "sendHciCommand"
+ next: "sendAclData"
+ next: "sendScoData"
+ next: "close"
+ }
}
api: {
name: "close"
+ callflow: {
+ exit: true
+ }
}
}
diff --git a/bluetooth/1.0/vts/BluetoothHciCallbacks.vts b/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
index f2df5b4..6b3dfd4 100644
--- a/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
+++ b/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
@@ -5,9 +5,18 @@
package: "android.hardware.bluetooth"
import: "android.hardware.bluetooth@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
+ name: "initializationComplete"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::bluetooth::V1_0::Status"
+ }
+ }
+
+ api: {
name: "hciEventReceived"
arg: {
type: TYPE_VECTOR
diff --git a/bluetooth/1.0/vts/functional/Android.bp b/bluetooth/1.0/vts/functional/Android.bp
index 7d04736..2012c20 100644
--- a/bluetooth/1.0/vts/functional/Android.bp
+++ b/bluetooth/1.0/vts/functional/Android.bp
@@ -15,9 +15,9 @@
//
cc_test {
- name: "bluetooth_hidl_hal_test",
+ name: "VtsHalBluetoothV1_0TargetTest",
gtest: true,
- srcs: ["bluetooth_hidl_hal_test.cpp"],
+ srcs: ["VtsHalBluetoothV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
@@ -31,11 +31,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage",
- ],
}
diff --git a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp b/bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
similarity index 99%
rename from bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
rename to bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
index 683029e..eb1cdc1 100644
--- a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
+++ b/bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
@@ -122,9 +122,9 @@
virtual void SetUp() override {
// currently test passthrough mode only
bluetooth = IBluetoothHci::getService();
+ ASSERT_NE(bluetooth, nullptr);
ALOGW("%s: getService() for bluetooth is %s", __func__,
bluetooth->isRemote() ? "remote" : "local");
- ASSERT_NE(bluetooth, nullptr);
bluetooth_cb = new BluetoothHciCallbacks(*this);
ASSERT_NE(bluetooth_cb, nullptr);
diff --git a/boot/1.0/Android.bp b/boot/1.0/Android.bp
index 9dcabc4..7265cc2 100644
--- a/boot/1.0/Android.bp
+++ b/boot/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
srcs: [
- "types.hal",
- "IBootControl.hal",
+ ":android.hardware.boot@1.0_hal",
],
out: [
"android/hardware/boot/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
srcs: [
- "types.hal",
- "IBootControl.hal",
+ ":android.hardware.boot@1.0_hal",
],
out: [
"android/hardware/boot/1.0/types.h",
diff --git a/boot/1.0/Android.mk b/boot/1.0/Android.mk
index 6fa5e4b..b188acb 100644
--- a/boot/1.0/Android.mk
+++ b/boot/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.boot@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -83,7 +83,7 @@
LOCAL_MODULE := android.hardware.boot@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/boot/1.0/default/Android.mk b/boot/1.0/default/Android.mk
index be67779..99a6cf9 100644
--- a/boot/1.0/default/Android.mk
+++ b/boot/1.0/default/Android.mk
@@ -3,6 +3,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.boot@1.0-impl
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := \
BootControl.cpp \
@@ -19,6 +20,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.boot@1.0-service
LOCAL_INIT_RC := android.hardware.boot@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/boot/1.0/default/android.hardware.boot@1.0-service.rc b/boot/1.0/default/android.hardware.boot@1.0-service.rc
index 67d400b..ef5dd91 100644
--- a/boot/1.0/default/android.hardware.boot@1.0-service.rc
+++ b/boot/1.0/default/android.hardware.boot@1.0-service.rc
@@ -1,4 +1,4 @@
-service boot-hal-1-0 /system/bin/hw/android.hardware.boot@1.0-service
+service boot-hal-1-0 /vendor/bin/hw/android.hardware.boot@1.0-service
class hal
user root
group root
diff --git a/boot/1.0/vts/BootControl.vts b/boot/1.0/vts/BootControl.vts
index 384ae50..b400f0e 100644
--- a/boot/1.0/vts/BootControl.vts
+++ b/boot/1.0/vts/BootControl.vts
@@ -5,6 +5,7 @@
package: "android.hardware.boot"
import: "android.hardware.boot@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/boot/1.0/vts/functional/Android.bp b/boot/1.0/vts/functional/Android.bp
index 714a18b..6c28bf1 100644
--- a/boot/1.0/vts/functional/Android.bp
+++ b/boot/1.0/vts/functional/Android.bp
@@ -30,11 +30,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/broadcastradio/1.0/Android.bp b/broadcastradio/1.0/Android.bp
index a58fbe1..3c3a015 100644
--- a/broadcastradio/1.0/Android.bp
+++ b/broadcastradio/1.0/Android.bp
@@ -16,11 +16,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0",
srcs: [
- "types.hal",
- "IBroadcastRadio.hal",
- "IBroadcastRadioFactory.hal",
- "ITuner.hal",
- "ITunerCallback.hal",
+ ":android.hardware.broadcastradio@1.0_hal",
],
out: [
"android/hardware/broadcastradio/1.0/types.cpp",
@@ -36,11 +32,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0",
srcs: [
- "types.hal",
- "IBroadcastRadio.hal",
- "IBroadcastRadioFactory.hal",
- "ITuner.hal",
- "ITunerCallback.hal",
+ ":android.hardware.broadcastradio@1.0_hal",
],
out: [
"android/hardware/broadcastradio/1.0/types.h",
diff --git a/broadcastradio/1.0/default/Android.mk b/broadcastradio/1.0/default/Android.mk
index 734a0e1..569291e 100644
--- a/broadcastradio/1.0/default/Android.mk
+++ b/broadcastradio/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.broadcastradio@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
BroadcastRadio.cpp \
diff --git a/broadcastradio/1.0/default/Tuner.cpp b/broadcastradio/1.0/default/Tuner.cpp
index b564d5a..ff643b8 100644
--- a/broadcastradio/1.0/default/Tuner.cpp
+++ b/broadcastradio/1.0/default/Tuner.cpp
@@ -22,7 +22,7 @@
#include "BroadcastRadio.h"
#include "Tuner.h"
#include "Utils.h"
-#include <system/radio_metadata.h>
+#include <system/RadioMetadataWrapper.h>
namespace android {
namespace hardware {
@@ -167,6 +167,7 @@
Return<void> Tuner::getProgramInformation(getProgramInformation_cb _hidl_cb) {
int rc;
radio_program_info_t halInfo;
+ RadioMetadataWrapper metadataWrapper(&halInfo.metadata);
ProgramInfo info;
ALOGV("%s", __FUNCTION__);
@@ -175,12 +176,10 @@
goto exit;
}
- radio_metadata_allocate(&halInfo.metadata, 0, 0);
rc = mHalTuner->get_program_information(mHalTuner, &halInfo);
if (rc == 0) {
Utils::convertProgramInfoFromHal(&info, &halInfo);
}
- radio_metadata_deallocate(halInfo.metadata);
exit:
_hidl_cb(Utils::convertHalResult(rc), info);
diff --git a/camera/common/1.0/Android.bp b/camera/common/1.0/Android.bp
index 9717963..aea6e76 100644
--- a/camera/common/1.0/Android.bp
+++ b/camera/common/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.camera.common@1.0_hal",
],
out: [
"android/hardware/camera/common/1.0/types.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.common@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.camera.common@1.0_hal",
],
out: [
"android/hardware/camera/common/1.0/types.h",
diff --git a/camera/common/1.0/Android.mk b/camera/common/1.0/Android.mk
index 2e68dc0..9e05172 100644
--- a/camera/common/1.0/Android.mk
+++ b/camera/common/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.camera.common@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -191,7 +191,7 @@
LOCAL_MODULE := android.hardware.camera.common@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0/Android.bp
index b285ee0..b8560c7 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0/Android.bp
@@ -15,10 +15,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0",
srcs: [
- "types.hal",
- "ICameraDevice.hal",
- "ICameraDeviceCallback.hal",
- "ICameraDevicePreviewCallback.hal",
+ ":android.hardware.camera.device@1.0_hal",
],
out: [
"android/hardware/camera/device/1.0/types.cpp",
@@ -33,10 +30,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0",
srcs: [
- "types.hal",
- "ICameraDevice.hal",
- "ICameraDeviceCallback.hal",
- "ICameraDevicePreviewCallback.hal",
+ ":android.hardware.camera.device@1.0_hal",
],
out: [
"android/hardware/camera/device/1.0/types.h",
diff --git a/camera/device/3.2/Android.bp b/camera/device/3.2/Android.bp
index 1bc11ed..a3ac721 100644
--- a/camera/device/3.2/Android.bp
+++ b/camera/device/3.2/Android.bp
@@ -15,10 +15,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2",
srcs: [
- "types.hal",
- "ICameraDevice.hal",
- "ICameraDeviceCallback.hal",
- "ICameraDeviceSession.hal",
+ ":android.hardware.camera.device@3.2_hal",
],
out: [
"android/hardware/camera/device/3.2/types.cpp",
@@ -33,10 +30,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2",
srcs: [
- "types.hal",
- "ICameraDevice.hal",
- "ICameraDeviceCallback.hal",
- "ICameraDeviceSession.hal",
+ ":android.hardware.camera.device@3.2_hal",
],
out: [
"android/hardware/camera/device/3.2/types.h",
diff --git a/camera/device/3.2/default/CameraDeviceSession.cpp b/camera/device/3.2/default/CameraDeviceSession.cpp
index b47a220..0f3d97b 100644
--- a/camera/device/3.2/default/CameraDeviceSession.cpp
+++ b/camera/device/3.2/default/CameraDeviceSession.cpp
@@ -194,9 +194,9 @@
mRelease(mDevice, handle);
} else {
mModule->unregisterBuffer(mModule, handle);
- native_handle_close(handle);
- native_handle_delete(const_cast<native_handle_t*>(handle));
}
+ native_handle_close(handle);
+ native_handle_delete(const_cast<native_handle_t*>(handle));
}
// gralloc1
@@ -399,48 +399,53 @@
return Void();
}
+ if (status != Status::OK) {
+ _hidl_cb(status, outStreams);
+ return Void();
+ }
+ camera3_stream_configuration_t stream_list;
+ hidl_vec<camera3_stream_t*> streams;
- if (status == Status::OK) {
- camera3_stream_configuration_t stream_list;
- hidl_vec<camera3_stream_t*> streams;
+ stream_list.operation_mode = (uint32_t) requestedConfiguration.operationMode;
+ stream_list.num_streams = requestedConfiguration.streams.size();
+ streams.resize(stream_list.num_streams);
+ stream_list.streams = streams.data();
- stream_list.operation_mode = (uint32_t) requestedConfiguration.operationMode;
- stream_list.num_streams = requestedConfiguration.streams.size();
- streams.resize(stream_list.num_streams);
- stream_list.streams = streams.data();
+ for (uint32_t i = 0; i < stream_list.num_streams; i++) {
+ int id = requestedConfiguration.streams[i].id;
- for (uint32_t i = 0; i < stream_list.num_streams; i++) {
- int id = requestedConfiguration.streams[i].id;
-
- if (mStreamMap.count(id) == 0) {
- Camera3Stream stream;
- convertFromHidl(requestedConfiguration.streams[i], &stream);
- mStreamMap[id] = stream;
- mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{});
- } else {
- // width/height/format must not change, but usage/rotation might need to change
- if (mStreamMap[id].stream_type !=
- (int) requestedConfiguration.streams[i].streamType ||
- mStreamMap[id].width != requestedConfiguration.streams[i].width ||
- mStreamMap[id].height != requestedConfiguration.streams[i].height ||
- mStreamMap[id].format != (int) requestedConfiguration.streams[i].format ||
- mStreamMap[id].data_space != (android_dataspace_t)
- requestedConfiguration.streams[i].dataSpace) {
- ALOGE("%s: stream %d configuration changed!", __FUNCTION__, id);
- _hidl_cb(Status::INTERNAL_ERROR, outStreams);
- return Void();
- }
- mStreamMap[id].rotation = (int) requestedConfiguration.streams[i].rotation;
- mStreamMap[id].usage = (uint32_t) requestedConfiguration.streams[i].usage;
+ if (mStreamMap.count(id) == 0) {
+ Camera3Stream stream;
+ convertFromHidl(requestedConfiguration.streams[i], &stream);
+ mStreamMap[id] = stream;
+ mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{});
+ } else {
+ // width/height/format must not change, but usage/rotation might need to change
+ if (mStreamMap[id].stream_type !=
+ (int) requestedConfiguration.streams[i].streamType ||
+ mStreamMap[id].width != requestedConfiguration.streams[i].width ||
+ mStreamMap[id].height != requestedConfiguration.streams[i].height ||
+ mStreamMap[id].format != (int) requestedConfiguration.streams[i].format ||
+ mStreamMap[id].data_space != (android_dataspace_t)
+ requestedConfiguration.streams[i].dataSpace) {
+ ALOGE("%s: stream %d configuration changed!", __FUNCTION__, id);
+ _hidl_cb(Status::INTERNAL_ERROR, outStreams);
+ return Void();
}
- streams[i] = &mStreamMap[id];
+ mStreamMap[id].rotation = (int) requestedConfiguration.streams[i].rotation;
+ mStreamMap[id].usage = (uint32_t) requestedConfiguration.streams[i].usage;
}
+ streams[i] = &mStreamMap[id];
+ }
- ATRACE_BEGIN("camera3->configure_streams");
- status_t ret = mDevice->ops->configure_streams(mDevice, &stream_list);
- ATRACE_END();
+ ATRACE_BEGIN("camera3->configure_streams");
+ status_t ret = mDevice->ops->configure_streams(mDevice, &stream_list);
+ ATRACE_END();
+ // In case Hal returns error most likely it was not able to release
+ // the corresponding resources of the deleted streams.
+ if (ret == OK) {
// delete unused streams, note we do this after adding new streams to ensure new stream
// will not have the same address as deleted stream, and HAL has a chance to reference
// the to be deleted stream in configure_streams call
@@ -455,30 +460,37 @@
}
if (!found) {
// Unmap all buffers of deleted stream
- for (auto& pair : mCirculatingBuffers.at(id)) {
- sHandleImporter.freeBuffer(pair.second);
- }
- mCirculatingBuffers[id].clear();
- mCirculatingBuffers.erase(id);
+ // in case the configuration call succeeds and HAL
+ // is able to release the corresponding resources too.
+ cleanupBuffersLocked(id);
it = mStreamMap.erase(it);
} else {
++it;
}
}
-
- if (ret == -EINVAL) {
- status = Status::ILLEGAL_ARGUMENT;
- } else if (ret != OK) {
- status = Status::INTERNAL_ERROR;
- } else {
- convertToHidl(stream_list, &outStreams);
- }
-
}
+
+ if (ret == -EINVAL) {
+ status = Status::ILLEGAL_ARGUMENT;
+ } else if (ret != OK) {
+ status = Status::INTERNAL_ERROR;
+ } else {
+ convertToHidl(stream_list, &outStreams);
+ }
+
_hidl_cb(status, outStreams);
return Void();
}
+// Needs to get called after acquiring 'mInflightLock'
+void CameraDeviceSession::cleanupBuffersLocked(int id) {
+ for (auto& pair : mCirculatingBuffers.at(id)) {
+ sHandleImporter.freeBuffer(pair.second);
+ }
+ mCirculatingBuffers[id].clear();
+ mCirculatingBuffers.erase(id);
+}
+
Return<Status> CameraDeviceSession::processCaptureRequest(const CaptureRequest& request) {
Status status = initStatus();
if (status != Status::OK) {
diff --git a/camera/device/3.2/default/CameraDeviceSession.h b/camera/device/3.2/default/CameraDeviceSession.h
index ca9d24d..f8689d3 100644
--- a/camera/device/3.2/default/CameraDeviceSession.h
+++ b/camera/device/3.2/default/CameraDeviceSession.h
@@ -123,6 +123,8 @@
static void cleanupInflightFences(
hidl_vec<int>& allFences, size_t numFences);
+ void cleanupBuffersLocked(int id);
+
/**
* Static callback forwarding methods from HAL to instance
*/
diff --git a/camera/metadata/3.2/Android.bp b/camera/metadata/3.2/Android.bp
index fa319e9..1e464d6 100644
--- a/camera/metadata/3.2/Android.bp
+++ b/camera/metadata/3.2/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2",
srcs: [
- "types.hal",
+ ":android.hardware.camera.metadata@3.2_hal",
],
out: [
"android/hardware/camera/metadata/3.2/types.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.metadata@3.2",
srcs: [
- "types.hal",
+ ":android.hardware.camera.metadata@3.2_hal",
],
out: [
"android/hardware/camera/metadata/3.2/types.h",
diff --git a/camera/metadata/3.2/Android.mk b/camera/metadata/3.2/Android.mk
index 6604ccd..86cee91 100644
--- a/camera/metadata/3.2/Android.mk
+++ b/camera/metadata/3.2/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.camera.metadata@3.2-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -1236,7 +1236,7 @@
LOCAL_MODULE := android.hardware.camera.metadata@3.2-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/camera/provider/2.4/Android.bp b/camera/provider/2.4/Android.bp
index 1874cd5..3369a3c 100644
--- a/camera/provider/2.4/Android.bp
+++ b/camera/provider/2.4/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4",
srcs: [
- "ICameraProvider.hal",
- "ICameraProviderCallback.hal",
+ ":android.hardware.camera.provider@2.4_hal",
],
out: [
"android/hardware/camera/provider/2.4/CameraProviderAll.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4",
srcs: [
- "ICameraProvider.hal",
- "ICameraProviderCallback.hal",
+ ":android.hardware.camera.provider@2.4_hal",
],
out: [
"android/hardware/camera/provider/2.4/ICameraProvider.h",
diff --git a/camera/provider/2.4/default/Android.bp b/camera/provider/2.4/default/Android.bp
index e29f62c..e0ae12f 100644
--- a/camera/provider/2.4/default/Android.bp
+++ b/camera/provider/2.4/default/Android.bp
@@ -1,5 +1,6 @@
cc_library_shared {
name: "android.hardware.camera.provider@2.4-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["CameraProvider.cpp"],
shared_libs: [
@@ -24,6 +25,7 @@
cc_binary {
name: "android.hardware.camera.provider@2.4-service",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["service.cpp"],
compile_multilib: "32",
diff --git a/camera/provider/2.4/default/CameraProvider.cpp b/camera/provider/2.4/default/CameraProvider.cpp
index f1a66a8..5714f83 100644
--- a/camera/provider/2.4/default/CameraProvider.cpp
+++ b/camera/provider/2.4/default/CameraProvider.cpp
@@ -51,8 +51,7 @@
const struct camera_module_callbacks* callbacks,
int camera_id,
int new_status) {
- ALOGI("%s++", __FUNCTION__);
- sp<CameraProvider> cp = const_cast<CameraProvider*>(
+ CameraProvider* cp = const_cast<CameraProvider*>(
static_cast<const CameraProvider*>(callbacks));
if (cp == nullptr) {
@@ -60,7 +59,7 @@
return;
}
- ALOGI("%s resolved provider %p", __FUNCTION__, cp.get());
+ ALOGI("%s resolved provider %p", __FUNCTION__, cp);
Mutex::Autolock _l(cp->mCbLock);
char cameraId[kMaxCameraIdLen];
@@ -76,15 +75,13 @@
}
}
}
- ALOGI("%s--", __FUNCTION__);
}
void CameraProvider::sTorchModeStatusChange(
const struct camera_module_callbacks* callbacks,
const char* camera_id,
int new_status) {
- ALOGI("%s++", __FUNCTION__);
- sp<CameraProvider> cp = const_cast<CameraProvider*>(
+ CameraProvider* cp = const_cast<CameraProvider*>(
static_cast<const CameraProvider*>(callbacks));
if (cp == nullptr) {
@@ -92,7 +89,7 @@
return;
}
- ALOGI("%s resolved provider %p", __FUNCTION__, cp.get());
+ ALOGI("%s resolved provider %p", __FUNCTION__, cp);
Mutex::Autolock _l(cp->mCbLock);
if (cp->mCallbacks != nullptr) {
@@ -105,7 +102,6 @@
}
}
}
- ALOGI("%s--", __FUNCTION__);
}
Status CameraProvider::getHidlStatus(int status) {
@@ -234,8 +230,10 @@
// Setup vendor tags here so HAL can setup vendor keys in camera characteristics
VendorTagDescriptor::clearGlobalVendorTagDescriptor();
- bool setupSucceed = setUpVendorTags();
- return !setupSucceed; // return flag here is mInitFailed
+ if (!setUpVendorTags()) {
+ ALOGE("%s: Vendor tag setup failed, will not be available.", __FUNCTION__);
+ }
+ return false; // mInitFailed
}
bool CameraProvider::setUpVendorTags() {
@@ -245,7 +243,7 @@
// Check if vendor operations have been implemented
if (!mModule->isVendorTagDefined()) {
ALOGI("%s: No vendor tags defined for this device.", __FUNCTION__);
- return false;
+ return true;
}
mModule->getVendorTagOps(&vOps);
diff --git a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
index 31f0810..192870b 100644
--- a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
+++ b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
@@ -1,4 +1,4 @@
-service camera-provider-2-4 /system/bin/hw/android.hardware.camera.provider@2.4-service
+service camera-provider-2-4 /vendor/bin/hw/android.hardware.camera.provider@2.4-service
class hal
user cameraserver
group audio camera input drmrpc
diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp
index 5b3242e..c2cd54a 100644
--- a/configstore/1.0/Android.bp
+++ b/configstore/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0",
srcs: [
- "types.hal",
- "ISurfaceFlingerConfigs.hal",
+ ":android.hardware.configstore@1.0_hal",
],
out: [
"android/hardware/configstore/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0",
srcs: [
- "types.hal",
- "ISurfaceFlingerConfigs.hal",
+ ":android.hardware.configstore@1.0_hal",
],
out: [
"android/hardware/configstore/1.0/types.h",
diff --git a/configstore/1.0/Android.mk b/configstore/1.0/Android.mk
index fd2718e..010d509 100644
--- a/configstore/1.0/Android.mk
+++ b/configstore/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.configstore@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -159,7 +159,7 @@
LOCAL_MODULE := android.hardware.configstore@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/configstore/1.0/ISurfaceFlingerConfigs.hal b/configstore/1.0/ISurfaceFlingerConfigs.hal
index 97dc915..4403a90 100644
--- a/configstore/1.0/ISurfaceFlingerConfigs.hal
+++ b/configstore/1.0/ISurfaceFlingerConfigs.hal
@@ -17,4 +17,5 @@
interface ISurfaceFlingerConfigs {
vsyncEventPhaseOffsetNs() generates (OptionalInt64 value);
+ useTripleFramebuffer() generates (OptionalBool value);
};
diff --git a/configstore/1.0/default/Android.mk b/configstore/1.0/default/Android.mk
index 5de3451..116126d 100644
--- a/configstore/1.0/default/Android.mk
+++ b/configstore/1.0/default/Android.mk
@@ -3,6 +3,7 @@
################################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.configstore@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_RELATIVE_PATH := hw
@@ -22,6 +23,7 @@
################################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.configstore@1.0-service
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_INIT_RC := android.hardware.configstore@1.0-service.rc
diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.cpp b/configstore/1.0/default/SurfaceFlingerConfigs.cpp
index fc75182..5d62b15 100644
--- a/configstore/1.0/default/SurfaceFlingerConfigs.cpp
+++ b/configstore/1.0/default/SurfaceFlingerConfigs.cpp
@@ -19,6 +19,15 @@
return Void();
}
+Return<void> SurfaceFlingerConfigs::useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) {
+ bool value = false;
+#ifdef USE_TRIPLE_FRAMEBUFFER
+ value = true;
+#endif
+ _hidl_cb({true, value});
+ LOG(INFO) << "SurfaceFlinger FrameBuffer: " << (value ? "triple" : "double");
+ return Void();
+}
// Methods from ::android::hidl::base::V1_0::IBase follow.
diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.h b/configstore/1.0/default/SurfaceFlingerConfigs.h
index 5c754a0..c9652fc 100644
--- a/configstore/1.0/default/SurfaceFlingerConfigs.h
+++ b/configstore/1.0/default/SurfaceFlingerConfigs.h
@@ -25,6 +25,7 @@
struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs {
// Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow.
Return<void> vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) override;
+ Return<void> useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) override;
// Methods from ::android::hidl::base::V1_0::IBase follow.
diff --git a/configstore/1.0/default/android.hardware.configstore@1.0-service.rc b/configstore/1.0/default/android.hardware.configstore@1.0-service.rc
index 2e303b0..8741bdd 100644
--- a/configstore/1.0/default/android.hardware.configstore@1.0-service.rc
+++ b/configstore/1.0/default/android.hardware.configstore@1.0-service.rc
@@ -1,4 +1,4 @@
-service configstore-hal-1-0 /system/bin/hw/android.hardware.configstore@1.0-service
+service configstore-hal-1-0 /vendor/bin/hw/android.hardware.configstore@1.0-service
class hal
user system
group system
diff --git a/configstore/1.0/default/surfaceflinger.mk b/configstore/1.0/default/surfaceflinger.mk
index 42fa191..5a946f4 100644
--- a/configstore/1.0/default/surfaceflinger.mk
+++ b/configstore/1.0/default/surfaceflinger.mk
@@ -4,3 +4,7 @@
ifneq ($(VSYNC_EVENT_PHASE_OFFSET_NS),)
LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=$(VSYNC_EVENT_PHASE_OFFSET_NS)
endif
+
+ifeq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),3)
+ LOCAL_CFLAGS += -DUSE_TRIPLE_FRAMEBUFFER
+endif
diff --git a/configstore/Android.bp b/configstore/Android.bp
index bbb3e4b..79b63f6 100644
--- a/configstore/Android.bp
+++ b/configstore/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "utils",
]
diff --git a/configstore/utils/Android.bp b/configstore/utils/Android.bp
new file mode 100644
index 0000000..32053a7
--- /dev/null
+++ b/configstore/utils/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_library_static {
+ name: "android.hardware.configstore-utils",
+ export_include_dirs: ["include"],
+ srcs: [],
+ shared_libs: [
+ "android.hardware.configstore@1.0",
+ ],
+ export_shared_lib_headers: [
+ "android.hardware.configstore@1.0",
+ ],
+}
+
diff --git a/configstore/utils/include/configstore/Utils.h b/configstore/utils/include/configstore/Utils.h
new file mode 100644
index 0000000..98ccae9
--- /dev/null
+++ b/configstore/utils/include/configstore/Utils.h
@@ -0,0 +1,94 @@
+//
+// Copyright (C) 2017 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.
+//
+
+#ifndef ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
+#define ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
+
+#include <hidl/Status.h>
+#include <stdatomic.h>
+
+namespace android {
+namespace hardware {
+namespace configstore {
+// arguments V: type for the value (i.e., OptionalXXX)
+// I: interface class name
+// func: member function pointer
+using namespace V1_0;
+
+template<typename V, typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const V&)>)>
+decltype(V::value) get(const decltype(V::value) &defValue) {
+ auto getHelper = []()->V {
+ V ret;
+ sp<I> configs = I::getService();
+
+ if (!configs.get()) {
+ // fallback to the default value
+ ret.specified = false;
+ } else {
+ (*configs.*func)([&ret](V v) {
+ ret = v;
+ });
+ }
+
+ return ret;
+ };
+ static V cachedValue = getHelper();
+
+ return cachedValue.specified ? cachedValue.value : defValue;
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalBool&)>)>
+bool getBool(const bool defValue) {
+ return get<OptionalBool, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalInt32&)>)>
+int32_t getInt32(const int32_t defValue) {
+ return get<OptionalInt32, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalUInt32&)>)>
+uint32_t getUInt32(const uint32_t defValue) {
+ return get<OptionalUInt32, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalInt64&)>)>
+int64_t getInt64(const int64_t defValue) {
+ return get<OptionalInt64, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalUInt64&)>)>
+uint64_t getUInt64(const uint64_t defValue) {
+ return get<OptionalUInt64, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalString&)>)>
+std::string getString(const std::string &defValue) {
+ return get<OptionalString, I, func>(defValue);
+}
+
+} // namespace configstore
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
diff --git a/contexthub/1.0/Android.bp b/contexthub/1.0/Android.bp
index 556894d..8cd4acb 100644
--- a/contexthub/1.0/Android.bp
+++ b/contexthub/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0",
srcs: [
- "types.hal",
- "IContexthub.hal",
- "IContexthubCallback.hal",
+ ":android.hardware.contexthub@1.0_hal",
],
out: [
"android/hardware/contexthub/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0",
srcs: [
- "types.hal",
- "IContexthub.hal",
- "IContexthubCallback.hal",
+ ":android.hardware.contexthub@1.0_hal",
],
out: [
"android/hardware/contexthub/1.0/types.h",
diff --git a/contexthub/1.0/Android.mk b/contexthub/1.0/Android.mk
index c73c5c4..a053986 100644
--- a/contexthub/1.0/Android.mk
+++ b/contexthub/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.contexthub@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -334,7 +334,7 @@
LOCAL_MODULE := android.hardware.contexthub@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/contexthub/1.0/default/Android.bp b/contexthub/1.0/default/Android.bp
index 7c5f79d..0e1dc77 100644
--- a/contexthub/1.0/default/Android.bp
+++ b/contexthub/1.0/default/Android.bp
@@ -16,6 +16,7 @@
cc_library_shared {
name: "android.hardware.contexthub@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Contexthub.cpp"],
shared_libs: [
diff --git a/contexthub/1.0/default/Android.mk b/contexthub/1.0/default/Android.mk
index ad40878..cc36b7f 100644
--- a/contexthub/1.0/default/Android.mk
+++ b/contexthub/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.contexthub@1.0-service
LOCAL_INIT_RC := android.hardware.contexthub@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/contexthub/1.0/default/android.hardware.contexthub@1.0-service.rc b/contexthub/1.0/default/android.hardware.contexthub@1.0-service.rc
index 8dba85f..5677ec2 100644
--- a/contexthub/1.0/default/android.hardware.contexthub@1.0-service.rc
+++ b/contexthub/1.0/default/android.hardware.contexthub@1.0-service.rc
@@ -1,4 +1,4 @@
-service contexthub-hal-1-0 /system/bin/hw/android.hardware.contexthub@1.0-service
+service contexthub-hal-1-0 /vendor/bin/hw/android.hardware.contexthub@1.0-service
class hal
user system
group system
diff --git a/contexthub/1.0/vts/Contexthub.vts b/contexthub/1.0/vts/Contexthub.vts
index b06efe6..a5cdc81 100644
--- a/contexthub/1.0/vts/Contexthub.vts
+++ b/contexthub/1.0/vts/Contexthub.vts
@@ -9,491 +9,6 @@
import: "android.hidl.base@1.0::types"
interface: {
- attribute: {
- name: "::android::hardware::contexthub::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "UNKNOWN_FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BAD_PARAMS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NOT_INIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "TRANSACTION_FAILED"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "TRANSACTION_PENDING"
- scalar_value: {
- uint32_t: 5
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SIGNED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ENCRYPTED"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppBinary"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "appVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- }
- struct_value: {
- name: "targetChreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "targetChreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "customBinary"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::SensorType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESERVED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ACCELEROMETER"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "GYROSCOPE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "MAGNETOMETER"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "BAROMETER"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PROXIMITY_SENSOR"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "AMBIENT_LIGHT_SENSOR"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "STATIONARY_DETECT"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "INSTANT_MOTION_DETECT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "GPS"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "WIFI"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "AUDIO"
- scalar_value: {
- uint32_t: 768
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "BLE"
- scalar_value: {
- uint32_t: 1280
- }
- enumerator: "WWAN"
- scalar_value: {
- uint32_t: 1536
- }
- enumerator: "PRIVATE_SENSOR_BASE"
- scalar_value: {
- uint32_t: 65536
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- type: TYPE_STRUCT
- struct_value: {
- name: "sensorType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::SensorType"
- }
- struct_value: {
- name: "type"
- type: TYPE_STRING
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoReservedCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoMaxCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "minDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "maxDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "peakPowerMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHub"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "toolchain"
- type: TYPE_STRING
- }
- struct_value: {
- name: "platformVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "toolchainVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "hubId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "peakMips"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "stoppedPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "sleepPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "peakPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "connectedSensors"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- }
- }
- struct_value: {
- name: "maxSupportedMsgLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "chrePlatformId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "chreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chrePatchVersion"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HostEndPoint"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "BROADCAST"
- scalar_value: {
- uint16_t: 65535
- }
- enumerator: "UNSPECIFIED"
- scalar_value: {
- uint16_t: 65534
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHubMsg"
- type: TYPE_STRUCT
- struct_value: {
- name: "appName"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "hostEndPoint"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "msgType"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "msg"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "MAIN"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "SECONDARY"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TCM"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "READ"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WRITE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "EXEC"
- scalar_value: {
- uint32_t: 4
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::MemRange"
- type: TYPE_STRUCT
- struct_value: {
- name: "totalBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "freeBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryType"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::AsyncEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESTARTED"
- scalar_value: {
- uint32_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::TransactionResult"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAILURE"
- scalar_value: {
- int32_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubAppInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "memUsage"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::MemRange"
- }
- }
- struct_value: {
- name: "enabled"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- attribute: {
- name: "::android::hidl::base::V1_0::DebugInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "pid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ptr"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
-
api: {
name: "getHubs"
return_type_hidl: {
diff --git a/contexthub/1.0/vts/ContexthubCallback.vts b/contexthub/1.0/vts/ContexthubCallback.vts
index 7897a83..59ff2fe 100644
--- a/contexthub/1.0/vts/ContexthubCallback.vts
+++ b/contexthub/1.0/vts/ContexthubCallback.vts
@@ -8,491 +8,6 @@
import: "android.hidl.base@1.0::types"
interface: {
- attribute: {
- name: "::android::hardware::contexthub::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "UNKNOWN_FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BAD_PARAMS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NOT_INIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "TRANSACTION_FAILED"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "TRANSACTION_PENDING"
- scalar_value: {
- uint32_t: 5
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SIGNED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ENCRYPTED"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppBinary"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "appVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- }
- struct_value: {
- name: "targetChreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "targetChreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "customBinary"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::SensorType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESERVED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ACCELEROMETER"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "GYROSCOPE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "MAGNETOMETER"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "BAROMETER"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PROXIMITY_SENSOR"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "AMBIENT_LIGHT_SENSOR"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "STATIONARY_DETECT"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "INSTANT_MOTION_DETECT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "GPS"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "WIFI"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "AUDIO"
- scalar_value: {
- uint32_t: 768
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "BLE"
- scalar_value: {
- uint32_t: 1280
- }
- enumerator: "WWAN"
- scalar_value: {
- uint32_t: 1536
- }
- enumerator: "PRIVATE_SENSOR_BASE"
- scalar_value: {
- uint32_t: 65536
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- type: TYPE_STRUCT
- struct_value: {
- name: "sensorType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::SensorType"
- }
- struct_value: {
- name: "type"
- type: TYPE_STRING
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoReservedCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoMaxCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "minDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "maxDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "peakPowerMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHub"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "toolchain"
- type: TYPE_STRING
- }
- struct_value: {
- name: "platformVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "toolchainVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "hubId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "peakMips"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "stoppedPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "sleepPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "peakPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "connectedSensors"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- }
- }
- struct_value: {
- name: "maxSupportedMsgLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "chrePlatformId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "chreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chrePatchVersion"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HostEndPoint"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "BROADCAST"
- scalar_value: {
- uint16_t: 65535
- }
- enumerator: "UNSPECIFIED"
- scalar_value: {
- uint16_t: 65534
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHubMsg"
- type: TYPE_STRUCT
- struct_value: {
- name: "appName"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "hostEndPoint"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "msgType"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "msg"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "MAIN"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "SECONDARY"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TCM"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "READ"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WRITE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "EXEC"
- scalar_value: {
- uint32_t: 4
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::MemRange"
- type: TYPE_STRUCT
- struct_value: {
- name: "totalBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "freeBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryType"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::AsyncEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESTARTED"
- scalar_value: {
- uint32_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::TransactionResult"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAILURE"
- scalar_value: {
- int32_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::contexthub::V1_0::HubAppInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "memUsage"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::MemRange"
- }
- }
- struct_value: {
- name: "enabled"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- attribute: {
- name: "::android::hidl::base::V1_0::DebugInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "pid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ptr"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
-
api: {
name: "handleClientMsg"
arg: {
diff --git a/contexthub/1.0/vts/functional/Android.bp b/contexthub/1.0/vts/functional/Android.bp
index e78898e..1c011a0 100644
--- a/contexthub/1.0/vts/functional/Android.bp
+++ b/contexthub/1.0/vts/functional/Android.bp
@@ -27,12 +27,8 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/drm/1.0/Android.bp b/drm/1.0/Android.bp
index d96ba14..0241984 100644
--- a/drm/1.0/Android.bp
+++ b/drm/1.0/Android.bp
@@ -17,12 +17,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
srcs: [
- "types.hal",
- "ICryptoFactory.hal",
- "ICryptoPlugin.hal",
- "IDrmFactory.hal",
- "IDrmPlugin.hal",
- "IDrmPluginListener.hal",
+ ":android.hardware.drm@1.0_hal",
],
out: [
"android/hardware/drm/1.0/types.cpp",
@@ -39,12 +34,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
srcs: [
- "types.hal",
- "ICryptoFactory.hal",
- "ICryptoPlugin.hal",
- "IDrmFactory.hal",
- "IDrmPlugin.hal",
- "IDrmPluginListener.hal",
+ ":android.hardware.drm@1.0_hal",
],
out: [
"android/hardware/drm/1.0/types.h",
diff --git a/drm/1.0/ICryptoPlugin.hal b/drm/1.0/ICryptoPlugin.hal
index d66151e..ca8fa50 100644
--- a/drm/1.0/ICryptoPlugin.hal
+++ b/drm/1.0/ICryptoPlugin.hal
@@ -62,8 +62,16 @@
* After the shared buffer base is established, the decrypt() method
* receives SharedBuffer instances which specify the buffer address range
* for decrypt source and destination addresses.
+ *
+ * There can be multiple shared buffers per crypto plugin. The buffers
+ * are distinguished by the bufferId.
+ *
+ * @param base the base IMemory of the memory buffer identified by
+ * bufferId
+ * @param bufferId identifies the specific shared buffer for which
+ * the base is being set.
*/
- setSharedBufferBase(memory base);
+ setSharedBufferBase(memory base, uint32_t bufferId);
/**
* Decrypt an array of subsamples from the source memory buffer to the
diff --git a/drm/1.0/default/Android.mk b/drm/1.0/default/Android.mk
index ac5b90a..ea6cca0 100644
--- a/drm/1.0/default/Android.mk
+++ b/drm/1.0/default/Android.mk
@@ -21,6 +21,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.drm@1.0-service
LOCAL_INIT_RC := android.hardware.drm@1.0-service.rc
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
service.cpp \
@@ -48,6 +49,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.drm@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
DrmFactory.cpp \
diff --git a/drm/1.0/default/CryptoFactory.cpp b/drm/1.0/default/CryptoFactory.cpp
index 13cad67..e46233d 100644
--- a/drm/1.0/default/CryptoFactory.cpp
+++ b/drm/1.0/default/CryptoFactory.cpp
@@ -15,11 +15,10 @@
*/
#define LOG_TAG "android.hardware.drm@1.0-impl"
-#include <utils/Log.h>
-
#include "CryptoFactory.h"
#include "CryptoPlugin.h"
#include "TypeConvert.h"
+#include <utils/Log.h>
namespace android {
namespace hardware {
@@ -27,63 +26,45 @@
namespace V1_0 {
namespace implementation {
-CryptoFactory::CryptoFactory() :
- trebleLoader("/vendor/lib/hw", "createCryptoFactory"),
- legacyLoader("/vendor/lib/mediadrm", "createCryptoFactory") {
-}
-
-// Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
-Return<bool> CryptoFactory::isCryptoSchemeSupported(
- const hidl_array<uint8_t, 16>& uuid) {
- return isCryptoSchemeSupported(trebleLoader, uuid) ||
- isCryptoSchemeSupported(legacyLoader, uuid);
-}
-
-Return<void> CryptoFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_vec<uint8_t>& initData, createPlugin_cb _hidl_cb) {
- sp<ICryptoPlugin> plugin = createTreblePlugin(uuid, initData);
- if (plugin == nullptr) {
- plugin = createLegacyPlugin(uuid, initData);
+ CryptoFactory::CryptoFactory() :
+ loader("/vendor/lib/mediadrm", "createCryptoFactory") {
}
- _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin);
- return Void();
-}
-sp<ICryptoPlugin> CryptoFactory::createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_vec<uint8_t>& initData) {
- sp<ICryptoPlugin> plugin;
- for (size_t i = 0; i < trebleLoader.factoryCount(); i++) {
- Return<void> hResult = trebleLoader.getFactory(i)->createPlugin(uuid, initData,
- [&](Status status, const sp<ICryptoPlugin>& hPlugin) {
- if (status == Status::OK) {
- plugin = hPlugin;
- }
+ // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
+ Return<bool> CryptoFactory::isCryptoSchemeSupported(
+ const hidl_array<uint8_t, 16>& uuid) {
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ Return<void> CryptoFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
+ const hidl_vec<uint8_t>& initData, createPlugin_cb _hidl_cb) {
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+ android::CryptoPlugin *legacyPlugin = NULL;
+ status_t status = loader.getFactory(i)->createPlugin(uuid.data(),
+ initData.data(), initData.size(), &legacyPlugin);
+ CryptoPlugin *newPlugin = NULL;
+ if (legacyPlugin == NULL) {
+ ALOGE("Crypto legacy HAL: failed to create crypto plugin");
+ } else {
+ newPlugin = new CryptoPlugin(legacyPlugin);
}
- );
- if (plugin != nullptr) {
- return plugin;
+ _hidl_cb(toStatus(status), newPlugin);
+ return Void();
+ }
}
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL);
+ return Void();
}
- return nullptr;
-}
-sp<ICryptoPlugin> CryptoFactory::createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_vec<uint8_t>& initData) {
- android::CryptoPlugin *legacyPlugin = nullptr;
- for (size_t i = 0; i < legacyLoader.factoryCount(); i++) {
- legacyLoader.getFactory(i)->createPlugin(uuid.data(),
- initData.data(), initData.size(), &legacyPlugin);
- if (legacyPlugin) {
- return new CryptoPlugin(legacyPlugin);
- }
+ ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) {
+ return new CryptoFactory();
}
- return nullptr;
-}
-
-
-ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) {
- return new CryptoFactory();
-}
} // namespace implementation
} // namespace V1_0
diff --git a/drm/1.0/default/CryptoFactory.h b/drm/1.0/default/CryptoFactory.h
index d774406..412b557 100644
--- a/drm/1.0/default/CryptoFactory.h
+++ b/drm/1.0/default/CryptoFactory.h
@@ -41,7 +41,8 @@
CryptoFactory();
virtual ~CryptoFactory() {}
- // Methods from ::android::hardware::drmn::V1_0::ICryptoFactory follow.
+ // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
+
Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
override;
@@ -50,27 +51,7 @@
override;
private:
- template <typename L> Return<bool> isCryptoSchemeSupported(
- const L& loader, const hidl_array<uint8_t, 16>& uuid) {
- for (size_t i = 0; i < loader.factoryCount(); i++) {
- if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
- return true;
- }
- }
- return false;
- }
-
- sp<ICryptoPlugin> createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_vec<uint8_t>& initData);
-
- sp<ICryptoPlugin> createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_vec<uint8_t>& initData);
-
- typedef android::PluginLoader<ICryptoFactory> PluginLoader;
- PluginLoader trebleLoader;
-
- typedef android::PluginLoader<android::CryptoFactory> LegacyLoader;
- LegacyLoader legacyLoader;
+ android::PluginLoader<android::CryptoFactory> loader;
CryptoFactory(const CryptoFactory &) = delete;
void operator=(const CryptoFactory &) = delete;
diff --git a/drm/1.0/default/CryptoPlugin.cpp b/drm/1.0/default/CryptoPlugin.cpp
index fb61ede..4a4171b 100644
--- a/drm/1.0/default/CryptoPlugin.cpp
+++ b/drm/1.0/default/CryptoPlugin.cpp
@@ -49,8 +49,9 @@
return toStatus(mLegacyPlugin->setMediaDrmSession(toVector(sessionId)));
}
- Return<void> CryptoPlugin::setSharedBufferBase(const hidl_memory& base) {
- mSharedBufferBase = mapMemory(base);
+ Return<void> CryptoPlugin::setSharedBufferBase(const hidl_memory& base,
+ uint32_t bufferId) {
+ mSharedBufferMap[bufferId] = mapMemory(base);
return Void();
}
@@ -62,11 +63,19 @@
const DestinationBuffer& destination,
decrypt_cb _hidl_cb) {
- if (mSharedBufferBase == NULL) {
- _hidl_cb(Status::BAD_VALUE, 0, "decrypt buffer base not set");
+ if (mSharedBufferMap.find(source.bufferId) == mSharedBufferMap.end()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "source decrypt buffer base not set");
return Void();
}
+ if (destination.type == BufferType::SHARED_MEMORY) {
+ const SharedBuffer& dest = destination.nonsecureMemory;
+ if (mSharedBufferMap.find(dest.bufferId) == mSharedBufferMap.end()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "destination decrypt buffer base not set");
+ return Void();
+ }
+ }
+
android::CryptoPlugin::Mode legacyMode;
switch(mode) {
case Mode::UNENCRYPTED:
@@ -97,20 +106,22 @@
}
AString detailMessage;
+ sp<IMemory> sourceBase = mSharedBufferMap[source.bufferId];
- if (source.offset + offset + source.size > mSharedBufferBase->getSize()) {
+ if (source.offset + offset + source.size > sourceBase->getSize()) {
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
return Void();
}
uint8_t *base = static_cast<uint8_t *>
- (static_cast<void *>(mSharedBufferBase->getPointer()));
+ (static_cast<void *>(sourceBase->getPointer()));
void *srcPtr = static_cast<void *>(base + source.offset + offset);
void *destPtr = NULL;
if (destination.type == BufferType::SHARED_MEMORY) {
const SharedBuffer& destBuffer = destination.nonsecureMemory;
- if (destBuffer.offset + destBuffer.size > mSharedBufferBase->getSize()) {
+ sp<IMemory> destBase = mSharedBufferMap[destBuffer.bufferId];
+ if (destBuffer.offset + destBuffer.size > destBase->getSize()) {
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
return Void();
}
diff --git a/drm/1.0/default/CryptoPlugin.h b/drm/1.0/default/CryptoPlugin.h
index f805f09..11cc2aa 100644
--- a/drm/1.0/default/CryptoPlugin.h
+++ b/drm/1.0/default/CryptoPlugin.h
@@ -57,8 +57,8 @@
Return<Status> setMediaDrmSession(const hidl_vec<uint8_t>& sessionId)
override;
- Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base)
- override;
+ Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base,
+ uint32_t bufferId) override;
Return<void> decrypt(bool secure, const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode, const Pattern& pattern,
@@ -68,7 +68,7 @@
private:
android::CryptoPlugin *mLegacyPlugin;
- sp<IMemory> mSharedBufferBase;
+ std::map<uint32_t, sp<IMemory> > mSharedBufferMap;
CryptoPlugin() = delete;
CryptoPlugin(const CryptoPlugin &) = delete;
diff --git a/drm/1.0/default/DrmFactory.cpp b/drm/1.0/default/DrmFactory.cpp
index c98c1da..92f54f1 100644
--- a/drm/1.0/default/DrmFactory.cpp
+++ b/drm/1.0/default/DrmFactory.cpp
@@ -15,11 +15,10 @@
*/
#define LOG_TAG "android.hardware.drm@1.0-impl"
-#include <utils/Log.h>
-
#include "DrmFactory.h"
#include "DrmPlugin.h"
#include "TypeConvert.h"
+#include <utils/Log.h>
namespace android {
namespace hardware {
@@ -27,66 +26,56 @@
namespace V1_0 {
namespace implementation {
-DrmFactory::DrmFactory() :
- trebleLoader("/vendor/lib/hw", "createDrmFactory"),
- legacyLoader("/vendor/lib/mediadrm", "createDrmFactory") {
-}
+ DrmFactory::DrmFactory() :
+ loader("/vendor/lib/mediadrm", "createDrmFactory") {
+ }
-// Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
-Return<bool> DrmFactory::isCryptoSchemeSupported(
- const hidl_array<uint8_t, 16>& uuid) {
- return isCryptoSchemeSupported(trebleLoader, uuid) ||
- isCryptoSchemeSupported(legacyLoader, uuid);
-}
+ // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
+ Return<bool> DrmFactory::isCryptoSchemeSupported (
+ const hidl_array<uint8_t, 16>& uuid) {
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+ return true;
+ }
+ }
+ return false;
+ }
-Return<bool> DrmFactory::isContentTypeSupported (
- const hidl_string& mimeType) {
- return isContentTypeSupported<PluginLoader, hidl_string>(trebleLoader, mimeType) ||
- isContentTypeSupported<LegacyLoader, String8>(legacyLoader, mimeType);
-}
+ Return<bool> DrmFactory::isContentTypeSupported (
+ const hidl_string& mimeType) {
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isContentTypeSupported(String8(mimeType.c_str()))) {
+ return true;
+ }
+ }
+ return false;
+ }
Return<void> DrmFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
const hidl_string& appPackageName, createPlugin_cb _hidl_cb) {
- sp<IDrmPlugin> plugin = createTreblePlugin(uuid, appPackageName);
- if (plugin == nullptr) {
- plugin = createLegacyPlugin(uuid);
- }
- _hidl_cb(plugin != nullptr ? Status::OK : Status::ERROR_DRM_CANNOT_HANDLE, plugin);
- return Void();
-}
-sp<IDrmPlugin> DrmFactory::createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_string& appPackageName) {
- sp<IDrmPlugin> plugin;
- for (size_t i = 0; i < trebleLoader.factoryCount(); i++) {
- Return<void> hResult = trebleLoader.getFactory(i)->createPlugin(uuid,
- appPackageName, [&](Status status, const sp<IDrmPlugin>& hPlugin) {
- if (status == Status::OK) {
- plugin = hPlugin;
- }
+ for (size_t i = 0; i < loader.factoryCount(); i++) {
+ if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
+ android::DrmPlugin *legacyPlugin = NULL;
+ status_t status = loader.getFactory(i)->createDrmPlugin(
+ uuid.data(), &legacyPlugin);
+ DrmPlugin *newPlugin = NULL;
+ if (legacyPlugin == NULL) {
+ ALOGE("Drm legacy HAL: failed to create drm plugin");
+ } else {
+ newPlugin = new DrmPlugin(legacyPlugin);
}
- );
- if (plugin != nullptr) {
- return plugin;
+ _hidl_cb(toStatus(status), newPlugin);
+ return Void();
+ }
}
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, NULL);
+ return Void();
}
- return nullptr;
-}
-sp<IDrmPlugin> DrmFactory::createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid) {
- android::DrmPlugin *legacyPlugin = nullptr;
- for (size_t i = 0; i < legacyLoader.factoryCount(); i++) {
- legacyLoader.getFactory(i)->createDrmPlugin(uuid.data(), &legacyPlugin);
- if (legacyPlugin) {
- return new DrmPlugin(legacyPlugin);
- }
+ IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) {
+ return new DrmFactory();
}
- return nullptr;
-}
-
-IDrmFactory* HIDL_FETCH_IDrmFactory(const char* /* name */) {
- return new DrmFactory();
-}
} // namespace implementation
} // namespace V1_0
diff --git a/drm/1.0/default/DrmFactory.h b/drm/1.0/default/DrmFactory.h
index 2e71624..a008844 100644
--- a/drm/1.0/default/DrmFactory.h
+++ b/drm/1.0/default/DrmFactory.h
@@ -42,45 +42,18 @@
virtual ~DrmFactory() {}
// Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
+
Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
override;
- Return<bool> isContentTypeSupported(const hidl_string& mimeType)
+ Return<bool> isContentTypeSupported(const hidl_string &mimeType)
override;
Return<void> createPlugin(const hidl_array<uint8_t, 16>& uuid,
const hidl_string& appPackageName, createPlugin_cb _hidl_cb) override;
private:
- template <typename L> Return<bool> isCryptoSchemeSupported(
- const L& loader, const hidl_array<uint8_t, 16>& uuid) {
- for (size_t i = 0; i < loader.factoryCount(); i++) {
- if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
- return true;
- }
- }
- return false;
- }
-
- template <typename L, typename S> Return<bool> isContentTypeSupported(
- const L& loader, const hidl_string& mimeType) {
- for (size_t i = 0; i < loader.factoryCount(); i++) {
- if (loader.getFactory(i)->isContentTypeSupported(S(mimeType))) {
- return true;
- }
- }
- return false;
- }
-
- sp<IDrmPlugin> createTreblePlugin(const hidl_array<uint8_t, 16>& uuid,
- const hidl_string& appPackageName);
- sp<IDrmPlugin> createLegacyPlugin(const hidl_array<uint8_t, 16>& uuid);
-
- typedef android::PluginLoader<IDrmFactory> PluginLoader;
- PluginLoader trebleLoader;
-
- typedef android::PluginLoader<android::DrmFactory> LegacyLoader;
- LegacyLoader legacyLoader;
+ android::PluginLoader<android::DrmFactory> loader;
DrmFactory(const DrmFactory &) = delete;
void operator=(const DrmFactory &) = delete;
diff --git a/drm/1.0/default/android.hardware.drm@1.0-service.rc b/drm/1.0/default/android.hardware.drm@1.0-service.rc
index 281dc4b..e7beca3 100644
--- a/drm/1.0/default/android.hardware.drm@1.0-service.rc
+++ b/drm/1.0/default/android.hardware.drm@1.0-service.rc
@@ -1,4 +1,4 @@
-service drm-hal-1-0 /system/bin/hw/android.hardware.drm@1.0-service
+service drm-hal-1-0 /vendor/bin/hw/android.hardware.drm@1.0-service
class hal
user media
group mediadrm drmrpc
diff --git a/drm/1.0/types.hal b/drm/1.0/types.hal
index 33bbf9a..5273044 100644
--- a/drm/1.0/types.hal
+++ b/drm/1.0/types.hal
@@ -293,12 +293,18 @@
};
/**
- * A SharedBuffer describes a decrypt buffer which is defined by an offset and
- * a size. The offset is relative to the shared memory base which is established
- * using setSharedMemoryBase().
+ * SharedBuffer describes a decrypt buffer which is defined by a bufferId, an
+ * offset and a size. The offset is relative to the shared memory base for the
+ * memory region identified by bufferId, which is established by
+ * setSharedMemoryBase().
*/
struct SharedBuffer {
/**
+ * The unique buffer identifier
+ */
+ uint32_t bufferId;
+
+ /**
* The offset from the shared memory base
*/
uint64_t offset;
diff --git a/dumpstate/1.0/Android.bp b/dumpstate/1.0/Android.bp
index 127b22a..1b473bc 100644
--- a/dumpstate/1.0/Android.bp
+++ b/dumpstate/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0",
srcs: [
- "IDumpstateDevice.hal",
+ ":android.hardware.dumpstate@1.0_hal",
],
out: [
"android/hardware/dumpstate/1.0/DumpstateDeviceAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0",
srcs: [
- "IDumpstateDevice.hal",
+ ":android.hardware.dumpstate@1.0_hal",
],
out: [
"android/hardware/dumpstate/1.0/IDumpstateDevice.h",
diff --git a/dumpstate/1.0/default/Android.mk b/dumpstate/1.0/default/Android.mk
index 0b15184..ed9ef97 100644
--- a/dumpstate/1.0/default/Android.mk
+++ b/dumpstate/1.0/default/Android.mk
@@ -4,6 +4,7 @@
LOCAL_MODULE := android.hardware.dumpstate@1.0-service
LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.rc
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := \
DumpstateDevice.cpp \
service.cpp
diff --git a/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc b/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc
index 99b968e..0f27248 100644
--- a/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc
+++ b/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc
@@ -1,4 +1,4 @@
-service dumpstate-1-0 /system/bin/hw/android.hardware.dumpstate@1.0-service
+service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service
class hal
user system
group system
diff --git a/evs/1.0/Android.bp b/evs/1.0/Android.bp
index 7c23996..89bac10 100644
--- a/evs/1.0/Android.bp
+++ b/evs/1.0/Android.bp
@@ -16,11 +16,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.evs@1.0",
srcs: [
- "types.hal",
- "IEvsCamera.hal",
- "IEvsCameraStream.hal",
- "IEvsDisplay.hal",
- "IEvsEnumerator.hal",
+ ":android.hardware.evs@1.0_hal",
],
out: [
"android/hardware/evs/1.0/types.cpp",
@@ -36,11 +32,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.evs@1.0",
srcs: [
- "types.hal",
- "IEvsCamera.hal",
- "IEvsCameraStream.hal",
- "IEvsDisplay.hal",
- "IEvsEnumerator.hal",
+ ":android.hardware.evs@1.0_hal",
],
out: [
"android/hardware/evs/1.0/types.h",
diff --git a/evs/1.0/default/Android.bp b/evs/1.0/default/Android.bp
index e3bff25..7be365a 100644
--- a/evs/1.0/default/Android.bp
+++ b/evs/1.0/default/Android.bp
@@ -1,5 +1,6 @@
cc_binary {
name: "android.hardware.evs@1.0-service",
+ proprietary: true,
relative_install_path: "hw",
srcs: [
"service.cpp",
diff --git a/evs/1.0/default/android.hardware.evs@1.0-service.rc b/evs/1.0/default/android.hardware.evs@1.0-service.rc
index be7c9f9..bb38668 100644
--- a/evs/1.0/default/android.hardware.evs@1.0-service.rc
+++ b/evs/1.0/default/android.hardware.evs@1.0-service.rc
@@ -1,4 +1,4 @@
-service evs-hal-1-0 /system/bin/hw/android.hardware.evs@1.0-service
+service evs-hal-1-0 /vendor/bin/hw/android.hardware.evs@1.0-service
class hal
user cameraserver
group camera
diff --git a/example/Android.bp b/example/Android.bp
deleted file mode 100644
index ea6dbb5..0000000
--- a/example/Android.bp
+++ /dev/null
@@ -1,4 +0,0 @@
-// This is an autogenerated file, do not edit.
-subdirs = [
- "extension/light/2.0",
-]
diff --git a/example/extension/light/2.0/Android.bp b/example/extension/light/2.0/Android.bp
deleted file mode 100644
index a658356..0000000
--- a/example/extension/light/2.0/Android.bp
+++ /dev/null
@@ -1,64 +0,0 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
-
-filegroup {
- name: "android.hardware.example.extension.light@2.0_hal",
- srcs: [
- "types.hal",
- "IExtLight.hal",
- ],
-}
-
-genrule {
- name: "android.hardware.example.extension.light@2.0_genc++",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0",
- srcs: [
- "types.hal",
- "IExtLight.hal",
- ],
- out: [
- "android/hardware/example/extension/light/2.0/types.cpp",
- "android/hardware/example/extension/light/2.0/ExtLightAll.cpp",
- ],
-}
-
-genrule {
- name: "android.hardware.example.extension.light@2.0_genc++_headers",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0",
- srcs: [
- "types.hal",
- "IExtLight.hal",
- ],
- out: [
- "android/hardware/example/extension/light/2.0/types.h",
- "android/hardware/example/extension/light/2.0/IExtLight.h",
- "android/hardware/example/extension/light/2.0/IHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BnHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BpHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BsExtLight.h",
- ],
-}
-
-cc_library_shared {
- name: "android.hardware.example.extension.light@2.0",
- generated_sources: ["android.hardware.example.extension.light@2.0_genc++"],
- generated_headers: ["android.hardware.example.extension.light@2.0_genc++_headers"],
- export_generated_headers: ["android.hardware.example.extension.light@2.0_genc++_headers"],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- "android.hardware.light@2.0",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- "android.hardware.light@2.0",
- ],
-}
diff --git a/example/extension/light/2.0/default/Android.mk b/example/extension/light/2.0/default/Android.mk
deleted file mode 100644
index 55c21b9..0000000
--- a/example/extension/light/2.0/default/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-service
-LOCAL_INIT_RC := android.hardware.example.extension.light@2.0-service.rc
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- Light.cpp \
-
-LOCAL_SHARED_LIBRARIES := \
- libhidlbase \
- libhidltransport \
- libhwbinder \
- libutils \
- android.hardware.light@2.0 \
- android.hardware.example.extension.light@2.0 \
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc b/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc
deleted file mode 100644
index 8a90d81..0000000
--- a/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service light-ext-2-0 /system/bin/hw/android.hardware.example.extension.light@2.0-service
- class hal
- user system
- group system readproc
\ No newline at end of file
diff --git a/gatekeeper/1.0/Android.bp b/gatekeeper/1.0/Android.bp
index 89e2f39..2697e4c 100644
--- a/gatekeeper/1.0/Android.bp
+++ b/gatekeeper/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0",
srcs: [
- "types.hal",
- "IGatekeeper.hal",
+ ":android.hardware.gatekeeper@1.0_hal",
],
out: [
"android/hardware/gatekeeper/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0",
srcs: [
- "types.hal",
- "IGatekeeper.hal",
+ ":android.hardware.gatekeeper@1.0_hal",
],
out: [
"android/hardware/gatekeeper/1.0/types.h",
diff --git a/gatekeeper/1.0/Android.mk b/gatekeeper/1.0/Android.mk
index 5d66b45..70206ff 100644
--- a/gatekeeper/1.0/Android.mk
+++ b/gatekeeper/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.gatekeeper@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -83,7 +83,7 @@
LOCAL_MODULE := android.hardware.gatekeeper@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/gatekeeper/1.0/default/Android.mk b/gatekeeper/1.0/default/Android.mk
index e3b7d10..94dc1ea 100644
--- a/gatekeeper/1.0/default/Android.mk
+++ b/gatekeeper/1.0/default/Android.mk
@@ -3,6 +3,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.gatekeeper@1.0-impl
LOCAL_SRC_FILES := \
@@ -22,6 +23,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.gatekeeper@1.0-service
LOCAL_INIT_RC := android.hardware.gatekeeper@1.0-service.rc
diff --git a/gatekeeper/1.0/default/android.hardware.gatekeeper@1.0-service.rc b/gatekeeper/1.0/default/android.hardware.gatekeeper@1.0-service.rc
index ac15e23..d3f5e9d 100644
--- a/gatekeeper/1.0/default/android.hardware.gatekeeper@1.0-service.rc
+++ b/gatekeeper/1.0/default/android.hardware.gatekeeper@1.0-service.rc
@@ -1,4 +1,4 @@
-service gatekeeper-1-0 /system/bin/hw/android.hardware.gatekeeper@1.0-service
+service gatekeeper-1-0 /vendor/bin/hw/android.hardware.gatekeeper@1.0-service
class hal
user system
group system
diff --git a/gatekeeper/1.0/vts/Gatekeeper.vts b/gatekeeper/1.0/vts/Gatekeeper.vts
index 25dc32f..9e63488 100644
--- a/gatekeeper/1.0/vts/Gatekeeper.vts
+++ b/gatekeeper/1.0/vts/Gatekeeper.vts
@@ -5,6 +5,7 @@
package: "android.hardware.gatekeeper"
import: "android.hardware.gatekeeper@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/gatekeeper/1.0/vts/functional/Android.bp b/gatekeeper/1.0/vts/functional/Android.bp
index e79e40e..70a85c6 100644
--- a/gatekeeper/1.0/vts/functional/Android.bp
+++ b/gatekeeper/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/gnss/1.0/Android.bp b/gnss/1.0/Android.bp
index b76b4c5..16895b6 100644
--- a/gnss/1.0/Android.bp
+++ b/gnss/1.0/Android.bp
@@ -32,27 +32,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0",
srcs: [
- "types.hal",
- "IAGnss.hal",
- "IAGnssCallback.hal",
- "IAGnssRil.hal",
- "IAGnssRilCallback.hal",
- "IGnss.hal",
- "IGnssBatching.hal",
- "IGnssBatchingCallback.hal",
- "IGnssCallback.hal",
- "IGnssConfiguration.hal",
- "IGnssDebug.hal",
- "IGnssGeofenceCallback.hal",
- "IGnssGeofencing.hal",
- "IGnssMeasurement.hal",
- "IGnssMeasurementCallback.hal",
- "IGnssNavigationMessage.hal",
- "IGnssNavigationMessageCallback.hal",
- "IGnssNi.hal",
- "IGnssNiCallback.hal",
- "IGnssXtra.hal",
- "IGnssXtraCallback.hal",
+ ":android.hardware.gnss@1.0_hal",
],
out: [
"android/hardware/gnss/1.0/types.cpp",
@@ -84,27 +64,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0",
srcs: [
- "types.hal",
- "IAGnss.hal",
- "IAGnssCallback.hal",
- "IAGnssRil.hal",
- "IAGnssRilCallback.hal",
- "IGnss.hal",
- "IGnssBatching.hal",
- "IGnssBatchingCallback.hal",
- "IGnssCallback.hal",
- "IGnssConfiguration.hal",
- "IGnssDebug.hal",
- "IGnssGeofenceCallback.hal",
- "IGnssGeofencing.hal",
- "IGnssMeasurement.hal",
- "IGnssMeasurementCallback.hal",
- "IGnssNavigationMessage.hal",
- "IGnssNavigationMessageCallback.hal",
- "IGnssNi.hal",
- "IGnssNiCallback.hal",
- "IGnssXtra.hal",
- "IGnssXtraCallback.hal",
+ ":android.hardware.gnss@1.0_hal",
],
out: [
"android/hardware/gnss/1.0/types.h",
diff --git a/gnss/1.0/Android.mk b/gnss/1.0/Android.mk
index 98c547c..5985c87 100644
--- a/gnss/1.0/Android.mk
+++ b/gnss/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.gnss@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -530,7 +530,7 @@
LOCAL_MODULE := android.hardware.gnss@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -1052,7 +1052,7 @@
LOCAL_MODULE := android.hardware.gnss@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/gnss/1.0/default/Android.mk b/gnss/1.0/default/Android.mk
index a6f73f2..b4ef9a8 100644
--- a/gnss/1.0/default/Android.mk
+++ b/gnss/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
ThreadCreationWrapper.cpp \
@@ -27,10 +28,13 @@
android.hardware.gnss@1.0 \
libhardware
+LOCAL_CFLAGS += -Werror
+
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.gnss@1.0-service
LOCAL_INIT_RC := android.hardware.gnss@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/gnss/1.0/default/GnssBatching.cpp b/gnss/1.0/default/GnssBatching.cpp
index 42f1473..02b38cb 100644
--- a/gnss/1.0/default/GnssBatching.cpp
+++ b/gnss/1.0/default/GnssBatching.cpp
@@ -118,7 +118,7 @@
}
// this can just return success, because threads are now set up on demand in the jni layer
-int32_t GnssBatching::setThreadEventCb(ThreadEvent event) {
+int32_t GnssBatching::setThreadEventCb(ThreadEvent /*event*/) {
return FLP_RESULT_SUCCESS;
}
diff --git a/gnss/1.0/default/android.hardware.gnss@1.0-service.rc b/gnss/1.0/default/android.hardware.gnss@1.0-service.rc
index eeb2e43..cf44944 100644
--- a/gnss/1.0/default/android.hardware.gnss@1.0-service.rc
+++ b/gnss/1.0/default/android.hardware.gnss@1.0-service.rc
@@ -1,4 +1,4 @@
-service gnss_service /system/bin/hw/android.hardware.gnss@1.0-service
+service gnss_service /vendor/bin/hw/android.hardware.gnss@1.0-service
class main
user system
group system
diff --git a/graphics/allocator/2.0/Android.bp b/graphics/allocator/2.0/Android.bp
index b481fde..69ddd9b 100644
--- a/graphics/allocator/2.0/Android.bp
+++ b/graphics/allocator/2.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0",
srcs: [
- "types.hal",
- "IAllocator.hal",
- "IAllocatorClient.hal",
+ ":android.hardware.graphics.allocator@2.0_hal",
],
out: [
"android/hardware/graphics/allocator/2.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0",
srcs: [
- "types.hal",
- "IAllocator.hal",
- "IAllocatorClient.hal",
+ ":android.hardware.graphics.allocator@2.0_hal",
],
out: [
"android/hardware/graphics/allocator/2.0/types.h",
diff --git a/graphics/allocator/2.0/default/Android.bp b/graphics/allocator/2.0/default/Android.bp
index f0c736c..315893f 100644
--- a/graphics/allocator/2.0/default/Android.bp
+++ b/graphics/allocator/2.0/default/Android.bp
@@ -1,5 +1,6 @@
cc_library_shared {
name: "android.hardware.graphics.allocator@2.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Gralloc.cpp"],
cppflags: ["-Wall", "-Wextra"],
@@ -18,6 +19,7 @@
cc_binary {
name: "android.hardware.graphics.allocator@2.0-service",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["service.cpp"],
init_rc: ["android.hardware.graphics.allocator@2.0-service.rc"],
diff --git a/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc b/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc
index 8bb0d85..c4715cd 100644
--- a/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc
+++ b/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc
@@ -1,4 +1,4 @@
-service gralloc-2-0 /system/bin/hw/android.hardware.graphics.allocator@2.0-service
+service gralloc-2-0 /vendor/bin/hw/android.hardware.graphics.allocator@2.0-service
class hal
user system
group graphics drmrpc readproc
diff --git a/graphics/allocator/2.0/vts/Allocator.vts b/graphics/allocator/2.0/vts/Allocator.vts
index e767cbd..b26876d 100644
--- a/graphics/allocator/2.0/vts/Allocator.vts
+++ b/graphics/allocator/2.0/vts/Allocator.vts
@@ -6,6 +6,8 @@
import: "android.hardware.graphics.allocator@2.0::IAllocatorClient"
import: "android.hardware.graphics.allocator@2.0::types"
+import: "android.hardware.graphics.common@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -73,8 +75,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IAllocatorClient"
- is_callback: false
+ predefined_type: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient"
}
callflow: {
entry: true
diff --git a/graphics/allocator/2.0/vts/AllocatorClient.vts b/graphics/allocator/2.0/vts/AllocatorClient.vts
index 2ab19f7..585c36c 100644
--- a/graphics/allocator/2.0/vts/AllocatorClient.vts
+++ b/graphics/allocator/2.0/vts/AllocatorClient.vts
@@ -6,475 +6,10 @@
import: "android.hardware.graphics.allocator@2.0::types"
import: "android.hardware.graphics.common@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
- name: "::android::hardware::graphics::common::V1_0::PixelFormat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "RGBA_8888"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RGBX_8888"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RGB_888"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "RGB_565"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "BGRA_8888"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "RGBA_FP16"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "YV12"
- scalar_value: {
- int32_t: 842094169
- }
- enumerator: "Y8"
- scalar_value: {
- int32_t: 538982489
- }
- enumerator: "Y16"
- scalar_value: {
- int32_t: 540422489
- }
- enumerator: "RAW16"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "RAW10"
- scalar_value: {
- int32_t: 37
- }
- enumerator: "RAW12"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "RAW_OPAQUE"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "BLOB"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "IMPLEMENTATION_DEFINED"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "YCBCR_420_888"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "YCBCR_422_888"
- scalar_value: {
- int32_t: 39
- }
- enumerator: "YCBCR_444_888"
- scalar_value: {
- int32_t: 40
- }
- enumerator: "FLEX_RGB_888"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "FLEX_RGBA_8888"
- scalar_value: {
- int32_t: 42
- }
- enumerator: "YCBCR_422_SP"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "YCRCB_420_SP"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "YCBCR_422_I"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "JPEG"
- scalar_value: {
- int32_t: 256
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::common::V1_0::Transform"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FLIP_H"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FLIP_V"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ROT_90"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ROT_180"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ROT_270"
- scalar_value: {
- int32_t: 7
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::common::V1_0::Dataspace"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ARBITRARY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STANDARD_SHIFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "STANDARD_MASK"
- scalar_value: {
- int32_t: 4128768
- }
- enumerator: "STANDARD_UNSPECIFIED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STANDARD_BT709"
- scalar_value: {
- int32_t: 65536
- }
- enumerator: "STANDARD_BT601_625"
- scalar_value: {
- int32_t: 131072
- }
- enumerator: "STANDARD_BT601_625_UNADJUSTED"
- scalar_value: {
- int32_t: 196608
- }
- enumerator: "STANDARD_BT601_525"
- scalar_value: {
- int32_t: 262144
- }
- enumerator: "STANDARD_BT601_525_UNADJUSTED"
- scalar_value: {
- int32_t: 327680
- }
- enumerator: "STANDARD_BT2020"
- scalar_value: {
- int32_t: 393216
- }
- enumerator: "STANDARD_BT2020_CONSTANT_LUMINANCE"
- scalar_value: {
- int32_t: 458752
- }
- enumerator: "STANDARD_BT470M"
- scalar_value: {
- int32_t: 524288
- }
- enumerator: "STANDARD_FILM"
- scalar_value: {
- int32_t: 589824
- }
- enumerator: "STANDARD_DCI_P3"
- scalar_value: {
- int32_t: 655360
- }
- enumerator: "STANDARD_ADOBE_RGB"
- scalar_value: {
- int32_t: 720896
- }
- enumerator: "TRANSFER_SHIFT"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "TRANSFER_MASK"
- scalar_value: {
- int32_t: 130023424
- }
- enumerator: "TRANSFER_UNSPECIFIED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TRANSFER_LINEAR"
- scalar_value: {
- int32_t: 4194304
- }
- enumerator: "TRANSFER_SRGB"
- scalar_value: {
- int32_t: 8388608
- }
- enumerator: "TRANSFER_SMPTE_170M"
- scalar_value: {
- int32_t: 12582912
- }
- enumerator: "TRANSFER_GAMMA2_2"
- scalar_value: {
- int32_t: 16777216
- }
- enumerator: "TRANSFER_GAMMA2_6"
- scalar_value: {
- int32_t: 20971520
- }
- enumerator: "TRANSFER_GAMMA2_8"
- scalar_value: {
- int32_t: 25165824
- }
- enumerator: "TRANSFER_ST2084"
- scalar_value: {
- int32_t: 29360128
- }
- enumerator: "TRANSFER_HLG"
- scalar_value: {
- int32_t: 33554432
- }
- enumerator: "RANGE_SHIFT"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "RANGE_MASK"
- scalar_value: {
- int32_t: 939524096
- }
- enumerator: "RANGE_UNSPECIFIED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RANGE_FULL"
- scalar_value: {
- int32_t: 134217728
- }
- enumerator: "RANGE_LIMITED"
- scalar_value: {
- int32_t: 268435456
- }
- enumerator: "RANGE_EXTENDED"
- scalar_value: {
- int32_t: 402653184
- }
- enumerator: "SRGB_LINEAR"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "V0_SRGB_LINEAR"
- scalar_value: {
- int32_t: 138477568
- }
- enumerator: "V0_SCRGB_LINEAR"
- scalar_value: {
- int32_t: 406913024
- }
- enumerator: "SRGB"
- scalar_value: {
- int32_t: 513
- }
- enumerator: "V0_SRGB"
- scalar_value: {
- int32_t: 142671872
- }
- enumerator: "V0_SCRGB"
- scalar_value: {
- int32_t: 411107328
- }
- enumerator: "JFIF"
- scalar_value: {
- int32_t: 257
- }
- enumerator: "V0_JFIF"
- scalar_value: {
- int32_t: 146931712
- }
- enumerator: "BT601_625"
- scalar_value: {
- int32_t: 258
- }
- enumerator: "V0_BT601_625"
- scalar_value: {
- int32_t: 281149440
- }
- enumerator: "BT601_525"
- scalar_value: {
- int32_t: 259
- }
- enumerator: "V0_BT601_525"
- scalar_value: {
- int32_t: 281280512
- }
- enumerator: "BT709"
- scalar_value: {
- int32_t: 260
- }
- enumerator: "V0_BT709"
- scalar_value: {
- int32_t: 281083904
- }
- enumerator: "DCI_P3_LINEAR"
- scalar_value: {
- int32_t: 139067392
- }
- enumerator: "DCI_P3"
- scalar_value: {
- int32_t: 155844608
- }
- enumerator: "DISPLAY_P3_LINEAR"
- scalar_value: {
- int32_t: 139067392
- }
- enumerator: "DISPLAY_P3"
- scalar_value: {
- int32_t: 143261696
- }
- enumerator: "ADOBE_RGB"
- scalar_value: {
- int32_t: 151715840
- }
- enumerator: "BT2020_LINEAR"
- scalar_value: {
- int32_t: 138805248
- }
- enumerator: "BT2020"
- scalar_value: {
- int32_t: 147193856
- }
- enumerator: "DEPTH"
- scalar_value: {
- int32_t: 4096
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::common::V1_0::ColorMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NATIVE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STANDARD_BT601_625"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STANDARD_BT601_625_UNADJUSTED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STANDARD_BT601_525"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "STANDARD_BT601_525_UNADJUSTED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "STANDARD_BT709"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "DCI_P3"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "SRGB"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "ADOBE_RGB"
- scalar_value: {
- int32_t: 8
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::common::V1_0::ColorTransform"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "IDENTITY"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ARBITRARY_MATRIX"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VALUE_INVERSE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "GRAYSCALE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CORRECT_PROTANOPIA"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CORRECT_DEUTERANOPIA"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "CORRECT_TRITANOPIA"
- scalar_value: {
- int32_t: 6
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::common::V1_0::Hdr"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DOLBY_VISION"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HDR10"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "HLG"
- scalar_value: {
- int32_t: 3
- }
- }
- }
-
- attribute: {
name: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient::BufferDescriptorInfo"
type: TYPE_STRUCT
struct_value: {
diff --git a/graphics/allocator/2.0/vts/functional/Android.bp b/graphics/allocator/2.0/vts/functional/Android.bp
index 194b228..2f58836 100644
--- a/graphics/allocator/2.0/vts/functional/Android.bp
+++ b/graphics/allocator/2.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/graphics/allocator/2.0/vts/types.vts b/graphics/allocator/2.0/vts/types.vts
index 2b7e47a..4a8376c 100644
--- a/graphics/allocator/2.0/vts/types.vts
+++ b/graphics/allocator/2.0/vts/types.vts
@@ -84,6 +84,10 @@
scalar_value: {
uint64_t: 4194304
}
+ enumerator: "SENSOR_DIRECT_DATA"
+ scalar_value: {
+ uint64_t: 8388608
+ }
}
}
@@ -129,6 +133,10 @@
scalar_value: {
uint64_t: 1048576
}
+ enumerator: "GPU_DATA_BUFFER"
+ scalar_value: {
+ uint64_t: 8388608
+ }
}
}
diff --git a/graphics/common/1.0/Android.bp b/graphics/common/1.0/Android.bp
index 4524e3a..99370e8 100644
--- a/graphics/common/1.0/Android.bp
+++ b/graphics/common/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.graphics.common@1.0_hal",
],
out: [
"android/hardware/graphics/common/1.0/types.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.graphics.common@1.0_hal",
],
out: [
"android/hardware/graphics/common/1.0/types.h",
diff --git a/graphics/common/1.0/Android.mk b/graphics/common/1.0/Android.mk
index 0fa6dcc..c08053d 100644
--- a/graphics/common/1.0/Android.mk
+++ b/graphics/common/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.graphics.common@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -134,7 +134,7 @@
LOCAL_MODULE := android.hardware.graphics.common@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -260,7 +260,7 @@
LOCAL_MODULE := android.hardware.graphics.common@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/graphics/composer/2.1/Android.bp b/graphics/composer/2.1/Android.bp
index 9cd753a..f309439 100644
--- a/graphics/composer/2.1/Android.bp
+++ b/graphics/composer/2.1/Android.bp
@@ -15,10 +15,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1",
srcs: [
- "types.hal",
- "IComposer.hal",
- "IComposerCallback.hal",
- "IComposerClient.hal",
+ ":android.hardware.graphics.composer@2.1_hal",
],
out: [
"android/hardware/graphics/composer/2.1/types.cpp",
@@ -33,10 +30,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1",
srcs: [
- "types.hal",
- "IComposer.hal",
- "IComposerCallback.hal",
- "IComposerClient.hal",
+ ":android.hardware.graphics.composer@2.1_hal",
],
out: [
"android/hardware/graphics/composer/2.1/types.h",
diff --git a/graphics/composer/2.1/default/Android.bp b/graphics/composer/2.1/default/Android.bp
index 46cd0c4..4a5c70d 100644
--- a/graphics/composer/2.1/default/Android.bp
+++ b/graphics/composer/2.1/default/Android.bp
@@ -20,6 +20,7 @@
cc_library_shared {
name: "android.hardware.graphics.composer@2.1-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Hwc.cpp"],
static_libs: ["libhwcomposer-client"],
@@ -41,6 +42,7 @@
cc_binary {
name: "android.hardware.graphics.composer@2.1-service",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["service.cpp"],
init_rc: ["android.hardware.graphics.composer@2.1-service.rc"],
diff --git a/graphics/composer/2.1/default/ComposerClient.cpp b/graphics/composer/2.1/default/ComposerClient.cpp
index 7a2cb25..72ba8f8 100644
--- a/graphics/composer/2.1/default/ComposerClient.cpp
+++ b/graphics/composer/2.1/default/ComposerClient.cpp
@@ -230,6 +230,8 @@
ComposerClient::~ComposerClient()
{
+ ALOGD("client destroyed");
+
mHal.enableCallback(false);
mHal.removeClient();
@@ -275,17 +277,23 @@
}
}
- mCallback->onHotplug(display, connected);
+ auto ret = mCallback->onHotplug(display, connected);
+ ALOGE_IF(!ret.isOk(), "failed to send onHotplug: %s",
+ ret.description().c_str());
}
void ComposerClient::onRefresh(Display display)
{
- mCallback->onRefresh(display);
+ auto ret = mCallback->onRefresh(display);
+ ALOGE_IF(!ret.isOk(), "failed to send onRefresh: %s",
+ ret.description().c_str());
}
void ComposerClient::onVsync(Display display, int64_t timestamp)
{
- mCallback->onVsync(display, timestamp);
+ auto ret = mCallback->onVsync(display, timestamp);
+ ALOGE_IF(!ret.isOk(), "failed to send onVsync: %s",
+ ret.description().c_str());
}
Return<void> ComposerClient::registerCallback(
diff --git a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
index fc21d59..4f01bd9 100644
--- a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
+++ b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
@@ -1,5 +1,6 @@
-service hwcomposer-2-1 /system/bin/hw/android.hardware.graphics.composer@2.1-service
+service hwcomposer-2-1 /vendor/bin/hw/android.hardware.graphics.composer@2.1-service
class hal
user system
group graphics drmrpc readproc
+ capabilities SYS_NICE
onrestart restart surfaceflinger
diff --git a/graphics/composer/2.1/default/service.cpp b/graphics/composer/2.1/default/service.cpp
index a31decd..656673e 100644
--- a/graphics/composer/2.1/default/service.cpp
+++ b/graphics/composer/2.1/default/service.cpp
@@ -16,6 +16,8 @@
#define LOG_TAG "android.hardware.graphics.composer@2.1-service"
+#include <sched.h>
+
#include <android/hardware/graphics/composer/2.1/IComposer.h>
#include <binder/ProcessState.h>
@@ -29,5 +31,13 @@
android::ProcessState::self()->setThreadPoolMaxThreadCount(4);
android::ProcessState::self()->startThreadPool();
+ // same as SF main thread
+ struct sched_param param = {0};
+ param.sched_priority = 2;
+ if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK,
+ ¶m) != 0) {
+ ALOGE("Couldn't set SCHED_FIFO: %d", errno);
+ }
+
return defaultPassthroughServiceImplementation<IComposer>("hwcomposer");
}
diff --git a/graphics/composer/2.1/vts/Composer.vts b/graphics/composer/2.1/vts/Composer.vts
index ee5c650..e60e39c 100644
--- a/graphics/composer/2.1/vts/Composer.vts
+++ b/graphics/composer/2.1/vts/Composer.vts
@@ -4,8 +4,11 @@
package: "android.hardware.graphics.composer"
+import: "android.hardware.graphics.common@1.0::types"
+import: "android.hardware.graphics.composer@2.1::IComposerCallback"
import: "android.hardware.graphics.composer@2.1::IComposerClient"
import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -73,8 +76,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IComposerClient"
- is_callback: false
+ predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient"
}
callflow: {
entry: true
diff --git a/graphics/composer/2.1/vts/ComposerCallback.vts b/graphics/composer/2.1/vts/ComposerCallback.vts
index a5a2aa9..b83cf94 100644
--- a/graphics/composer/2.1/vts/ComposerCallback.vts
+++ b/graphics/composer/2.1/vts/ComposerCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.graphics.composer"
import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
diff --git a/graphics/composer/2.1/vts/ComposerClient.vts b/graphics/composer/2.1/vts/ComposerClient.vts
index db6b1ff..ac1d7fb 100644
--- a/graphics/composer/2.1/vts/ComposerClient.vts
+++ b/graphics/composer/2.1/vts/ComposerClient.vts
@@ -7,6 +7,7 @@
import: "android.hardware.graphics.common@1.0::types"
import: "android.hardware.graphics.composer@2.1::IComposerCallback"
import: "android.hardware.graphics.composer@2.1::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -422,8 +423,7 @@
name: "registerCallback"
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IComposerCallback"
- is_callback: true
+ predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerCallback"
}
callflow: {
entry: true
@@ -849,6 +849,11 @@
predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
}
arg: {
+ type: TYPE_FMQ_SYNC
+ fmq_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
}
callflow: {
next: "*"
@@ -862,6 +867,11 @@
predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
}
return_type_hidl: {
+ type: TYPE_FMQ_SYNC
+ fmq_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
}
callflow: {
next: "*"
diff --git a/graphics/composer/2.1/vts/functional/Android.bp b/graphics/composer/2.1/vts/functional/Android.bp
index c3f7636..aa2eae3 100644
--- a/graphics/composer/2.1/vts/functional/Android.bp
+++ b/graphics/composer/2.1/vts/functional/Android.bp
@@ -35,11 +35,7 @@
],
static_libs: ["libgtest", "libhwcomposer-command-buffer"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/graphics/mapper/2.0/Android.bp b/graphics/mapper/2.0/Android.bp
index f53759c..b835b4a 100644
--- a/graphics/mapper/2.0/Android.bp
+++ b/graphics/mapper/2.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0",
srcs: [
- "types.hal",
- "IMapper.hal",
+ ":android.hardware.graphics.mapper@2.0_hal",
],
out: [
"android/hardware/graphics/mapper/2.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0",
srcs: [
- "types.hal",
- "IMapper.hal",
+ ":android.hardware.graphics.mapper@2.0_hal",
],
out: [
"android/hardware/graphics/mapper/2.0/types.h",
diff --git a/graphics/mapper/2.0/default/Android.bp b/graphics/mapper/2.0/default/Android.bp
index c3d2281..ca15961 100644
--- a/graphics/mapper/2.0/default/Android.bp
+++ b/graphics/mapper/2.0/default/Android.bp
@@ -15,6 +15,7 @@
cc_library_shared {
name: "android.hardware.graphics.mapper@2.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["GrallocMapper.cpp"],
cppflags: ["-Wall", "-Wextra"],
diff --git a/graphics/mapper/2.0/vts/Mapper.vts b/graphics/mapper/2.0/vts/Mapper.vts
index 26e049f..baf95dc 100644
--- a/graphics/mapper/2.0/vts/Mapper.vts
+++ b/graphics/mapper/2.0/vts/Mapper.vts
@@ -7,6 +7,7 @@
import: "android.hardware.graphics.allocator@2.0::types"
import: "android.hardware.graphics.common@1.0::types"
import: "android.hardware.graphics.mapper@2.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
diff --git a/graphics/mapper/2.0/vts/functional/Android.bp b/graphics/mapper/2.0/vts/functional/Android.bp
index 27ea350..efb868b 100644
--- a/graphics/mapper/2.0/vts/functional/Android.bp
+++ b/graphics/mapper/2.0/vts/functional/Android.bp
@@ -34,11 +34,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/health/1.0/Android.bp b/health/1.0/Android.bp
index 189cb3d..a428c7d 100644
--- a/health/1.0/Android.bp
+++ b/health/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0",
srcs: [
- "types.hal",
- "IHealth.hal",
+ ":android.hardware.health@1.0_hal",
],
out: [
"android/hardware/health/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0",
srcs: [
- "types.hal",
- "IHealth.hal",
+ ":android.hardware.health@1.0_hal",
],
out: [
"android/hardware/health/1.0/types.h",
diff --git a/health/1.0/Android.mk b/health/1.0/Android.mk
index f05d227..ebb89a7 100644
--- a/health/1.0/Android.mk
+++ b/health/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.health@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -140,7 +140,7 @@
LOCAL_MODULE := android.hardware.health@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -272,7 +272,7 @@
LOCAL_MODULE := android.hardware.health@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/health/1.0/default/Android.mk b/health/1.0/default/Android.mk
index 89d28cb..3c97185 100644
--- a/health/1.0/default/Android.mk
+++ b/health/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.health@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_C_INCLUDES := system/core/healthd/include system/core/base/include
LOCAL_SRC_FILES := \
@@ -37,6 +38,7 @@
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_MODULE := android.hardware.health@1.0-service
LOCAL_INIT_RC := android.hardware.health@1.0-service.rc
diff --git a/health/1.0/default/android.hardware.health@1.0-service.rc b/health/1.0/default/android.hardware.health@1.0-service.rc
index a0d6a56..13cd7a5 100644
--- a/health/1.0/default/android.hardware.health@1.0-service.rc
+++ b/health/1.0/default/android.hardware.health@1.0-service.rc
@@ -1,4 +1,4 @@
-service health-hal-1-0 /system/bin/hw/android.hardware.health@1.0-service
+service health-hal-1-0 /vendor/bin/hw/android.hardware.health@1.0-service
class hal
user system
group system
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index 5628952..da49579 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
srcs: [
- "types.hal",
- "IConsumerIr.hal",
+ ":android.hardware.ir@1.0_hal",
],
out: [
"android/hardware/ir/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
srcs: [
- "types.hal",
- "IConsumerIr.hal",
+ ":android.hardware.ir@1.0_hal",
],
out: [
"android/hardware/ir/1.0/types.h",
diff --git a/ir/1.0/Android.mk b/ir/1.0/Android.mk
index 660b32b..d43286c 100644
--- a/ir/1.0/Android.mk
+++ b/ir/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.ir@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -64,7 +64,7 @@
LOCAL_MODULE := android.hardware.ir@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/ir/1.0/default/Android.bp b/ir/1.0/default/Android.bp
index 7c441da..ed0b807 100644
--- a/ir/1.0/default/Android.bp
+++ b/ir/1.0/default/Android.bp
@@ -15,6 +15,7 @@
cc_library_shared {
name: "android.hardware.ir@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: ["ConsumerIr.cpp"],
shared_libs: [
"libhidlbase",
@@ -30,6 +31,7 @@
cc_binary {
relative_install_path: "hw",
name: "android.hardware.ir@1.0-service",
+ proprietary: true,
init_rc: ["android.hardware.ir@1.0-service.rc"],
srcs: ["service.cpp"],
diff --git a/ir/1.0/default/android.hardware.ir@1.0-service.rc b/ir/1.0/default/android.hardware.ir@1.0-service.rc
index 5b05ba2..47f34fe 100644
--- a/ir/1.0/default/android.hardware.ir@1.0-service.rc
+++ b/ir/1.0/default/android.hardware.ir@1.0-service.rc
@@ -1,4 +1,4 @@
-service ir-hal-1-0 /system/bin/hw/android.hardware.ir@1.0-service
+service ir-hal-1-0 /vendor/bin/hw/android.hardware.ir@1.0-service
class hal
user system
group system
\ No newline at end of file
diff --git a/ir/1.0/vts/ConsumerIr.vts b/ir/1.0/vts/ConsumerIr.vts
index bebc6cf..c31331e 100644
--- a/ir/1.0/vts/ConsumerIr.vts
+++ b/ir/1.0/vts/ConsumerIr.vts
@@ -5,6 +5,7 @@
package: "android.hardware.ir"
import: "android.hardware.ir@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/ir/1.0/vts/functional/Android.bp b/ir/1.0/vts/functional/Android.bp
index c5265de..5689474 100644
--- a/ir/1.0/vts/functional/Android.bp
+++ b/ir/1.0/vts/functional/Android.bp
@@ -15,9 +15,9 @@
//
cc_test {
- name: "ir_hidl_hal_test",
+ name: "VtsHalIrV1_0TargetTest",
gtest: true,
- srcs: ["ir_hidl_hal_test.cpp"],
+ srcs: ["VtsHalIrV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
@@ -30,11 +30,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage"
- ]
}
diff --git a/ir/1.0/vts/functional/ir_hidl_hal_test.cpp b/ir/1.0/vts/functional/VtsHalIrV1_0TargetTest.cpp
similarity index 100%
rename from ir/1.0/vts/functional/ir_hidl_hal_test.cpp
rename to ir/1.0/vts/functional/VtsHalIrV1_0TargetTest.cpp
diff --git a/ir/1.0/vts/types.vts b/ir/1.0/vts/types.vts
index d308b1f..f1e9cbe 100644
--- a/ir/1.0/vts/types.vts
+++ b/ir/1.0/vts/types.vts
@@ -18,4 +18,5 @@
type: TYPE_SCALAR
scalar_type: "uint32_t"
}
-}
\ No newline at end of file
+}
+
diff --git a/keymaster/3.0/Android.bp b/keymaster/3.0/Android.bp
index ec56292..074bb68 100644
--- a/keymaster/3.0/Android.bp
+++ b/keymaster/3.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0",
srcs: [
- "types.hal",
- "IKeymasterDevice.hal",
+ ":android.hardware.keymaster@3.0_hal",
],
out: [
"android/hardware/keymaster/3.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0",
srcs: [
- "types.hal",
- "IKeymasterDevice.hal",
+ ":android.hardware.keymaster@3.0_hal",
],
out: [
"android/hardware/keymaster/3.0/types.h",
diff --git a/keymaster/3.0/default/Android.mk b/keymaster/3.0/default/Android.mk
index 36d8890..87a8a05 100644
--- a/keymaster/3.0/default/Android.mk
+++ b/keymaster/3.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.keymaster@3.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
KeymasterDevice.cpp \
@@ -22,6 +23,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.keymaster@3.0-service
LOCAL_INIT_RC := android.hardware.keymaster@3.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp
index 563ff84..24cf53a 100644
--- a/keymaster/3.0/default/KeymasterDevice.cpp
+++ b/keymaster/3.0/default/KeymasterDevice.cpp
@@ -375,6 +375,7 @@
}
Return<ErrorCode> KeymasterDevice::addRngEntropy(const hidl_vec<uint8_t>& data) {
+ if (!data.size()) return ErrorCode::OK;
return legacy_enum_conversion(
keymaster_device_->add_rng_entropy(keymaster_device_, &data[0], data.size()));
}
diff --git a/keymaster/3.0/default/android.hardware.keymaster@3.0-service.rc b/keymaster/3.0/default/android.hardware.keymaster@3.0-service.rc
index 86ed1e7..fd43178 100644
--- a/keymaster/3.0/default/android.hardware.keymaster@3.0-service.rc
+++ b/keymaster/3.0/default/android.hardware.keymaster@3.0-service.rc
@@ -1,4 +1,4 @@
-service keymaster-3-0 /system/bin/hw/android.hardware.keymaster@3.0-service
+service keymaster-3-0 /vendor/bin/hw/android.hardware.keymaster@3.0-service
class hal
user system
group system drmrpc
diff --git a/light/2.0/Android.bp b/light/2.0/Android.bp
index 74c8e50..093a9f3 100644
--- a/light/2.0/Android.bp
+++ b/light/2.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0",
srcs: [
- "types.hal",
- "ILight.hal",
+ ":android.hardware.light@2.0_hal",
],
out: [
"android/hardware/light/2.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0",
srcs: [
- "types.hal",
- "ILight.hal",
+ ":android.hardware.light@2.0_hal",
],
out: [
"android/hardware/light/2.0/types.h",
diff --git a/light/2.0/Android.mk b/light/2.0/Android.mk
index ef19bad..7bb4293 100644
--- a/light/2.0/Android.mk
+++ b/light/2.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.light@2.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -140,7 +140,7 @@
LOCAL_MODULE := android.hardware.light@2.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/light/2.0/default/Android.mk b/light/2.0/default/Android.mk
index d14d7c0..7bd096c 100644
--- a/light/2.0/default/Android.mk
+++ b/light/2.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.light@2.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
Light.cpp \
@@ -22,6 +23,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.light@2.0-service
LOCAL_INIT_RC := android.hardware.light@2.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/light/2.0/default/android.hardware.light@2.0-service.rc b/light/2.0/default/android.hardware.light@2.0-service.rc
index 3ba97d8..c3284c6 100644
--- a/light/2.0/default/android.hardware.light@2.0-service.rc
+++ b/light/2.0/default/android.hardware.light@2.0-service.rc
@@ -1,4 +1,4 @@
-service light-hal-2-0 /system/bin/hw/android.hardware.light@2.0-service
+service light-hal-2-0 /vendor/bin/hw/android.hardware.light@2.0-service
class hal
user system
group system
\ No newline at end of file
diff --git a/light/2.0/vts/Light.vts b/light/2.0/vts/Light.vts
index 5d49822..163405f 100644
--- a/light/2.0/vts/Light.vts
+++ b/light/2.0/vts/Light.vts
@@ -5,6 +5,7 @@
package: "android.hardware.light"
import: "android.hardware.light@2.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/light/2.0/vts/functional/Android.bp b/light/2.0/vts/functional/Android.bp
index 889457f..53f5d7f 100644
--- a/light/2.0/vts/functional/Android.bp
+++ b/light/2.0/vts/functional/Android.bp
@@ -27,12 +27,8 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/media/1.0/Android.bp b/media/1.0/Android.bp
index 36e9eff..7518eb3 100644
--- a/media/1.0/Android.bp
+++ b/media/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.media@1.0_hal",
],
out: [
"android/hardware/media/1.0/types.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media@1.0",
srcs: [
- "types.hal",
+ ":android.hardware.media@1.0_hal",
],
out: [
"android/hardware/media/1.0/types.h",
diff --git a/media/omx/1.0/Android.bp b/media/omx/1.0/Android.bp
index e042e5d..85d15ae 100644
--- a/media/omx/1.0/Android.bp
+++ b/media/omx/1.0/Android.bp
@@ -19,14 +19,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0",
srcs: [
- "types.hal",
- "IGraphicBufferSource.hal",
- "IOmx.hal",
- "IOmxBufferProducer.hal",
- "IOmxBufferSource.hal",
- "IOmxNode.hal",
- "IOmxObserver.hal",
- "IOmxProducerListener.hal",
+ ":android.hardware.media.omx@1.0_hal",
],
out: [
"android/hardware/media/omx/1.0/types.cpp",
@@ -45,14 +38,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0",
srcs: [
- "types.hal",
- "IGraphicBufferSource.hal",
- "IOmx.hal",
- "IOmxBufferProducer.hal",
- "IOmxBufferSource.hal",
- "IOmxNode.hal",
- "IOmxObserver.hal",
- "IOmxProducerListener.hal",
+ ":android.hardware.media.omx@1.0_hal",
],
out: [
"android/hardware/media/omx/1.0/types.h",
diff --git a/media/omx/1.0/IGraphicBufferSource.hal b/media/omx/1.0/IGraphicBufferSource.hal
index 9b3ab0c..4dbfd32 100644
--- a/media/omx/1.0/IGraphicBufferSource.hal
+++ b/media/omx/1.0/IGraphicBufferSource.hal
@@ -31,7 +31,7 @@
configure(IOmxNode omxNode, Dataspace dataspace);
- setSuspend(bool suspend);
+ setSuspend(bool suspend, int64_t timeUs);
setRepeatPreviousFrameDelayUs(int64_t repeatAfterUs);
@@ -41,6 +41,8 @@
setStartTimeUs(int64_t startTimeUs);
+ setStopTimeUs(int64_t stopTimeUs);
+
setColorAspects(ColorAspects aspects);
setTimeOffsetUs(int64_t timeOffsetUs);
diff --git a/media/omx/1.0/IOmxBufferProducer.hal b/media/omx/1.0/IOmxBufferProducer.hal
index d4cf5f7..7e2172b 100644
--- a/media/omx/1.0/IOmxBufferProducer.hal
+++ b/media/omx/1.0/IOmxBufferProducer.hal
@@ -72,12 +72,27 @@
};
/**
+ * Ref: frameworks/native/include/gui/FrameTimestamp.h: CompositorTiming
+ *
+ * The most recent compositor timing info sent from consumer to producer
+ * through a HIDL interface.
+ */
+ struct CompositorTiming {
+ int64_t deadlineNs;
+ int64_t intervalNs;
+ int64_t presentLatencyNs;
+ };
+
+ /**
* Ref: frameworks/native/include/gui/FrameTimestamp.h: FrameEventHistoryDelta
*
* A collection of updates from consumer to producer that can be sent
* through a HIDL interface.
*/
- typedef vec<FrameEventsDelta> FrameEventHistoryDelta;
+ struct FrameEventHistoryDelta {
+ vec<FrameEventsDelta> deltas;
+ CompositorTiming compositorTiming;
+ };
/**
* Modes for disconnection.
diff --git a/memtrack/1.0/Android.bp b/memtrack/1.0/Android.bp
index 9a1b84a..9f4c7f6 100644
--- a/memtrack/1.0/Android.bp
+++ b/memtrack/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0",
srcs: [
- "types.hal",
- "IMemtrack.hal",
+ ":android.hardware.memtrack@1.0_hal",
],
out: [
"android/hardware/memtrack/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0",
srcs: [
- "types.hal",
- "IMemtrack.hal",
+ ":android.hardware.memtrack@1.0_hal",
],
out: [
"android/hardware/memtrack/1.0/types.h",
diff --git a/memtrack/1.0/Android.mk b/memtrack/1.0/Android.mk
index eeb67f6..62bee97 100644
--- a/memtrack/1.0/Android.mk
+++ b/memtrack/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.memtrack@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -121,7 +121,7 @@
LOCAL_MODULE := android.hardware.memtrack@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/memtrack/1.0/default/Android.bp b/memtrack/1.0/default/Android.bp
index 91fa1ea..b43a159 100644
--- a/memtrack/1.0/default/Android.bp
+++ b/memtrack/1.0/default/Android.bp
@@ -14,6 +14,7 @@
cc_library_shared {
name: "android.hardware.memtrack@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Memtrack.cpp"],
@@ -32,6 +33,7 @@
cc_binary {
relative_install_path: "hw",
+ proprietary: true,
name: "android.hardware.memtrack@1.0-service",
init_rc: ["android.hardware.memtrack@1.0-service.rc"],
srcs: ["service.cpp"],
diff --git a/memtrack/1.0/default/android.hardware.memtrack@1.0-service.rc b/memtrack/1.0/default/android.hardware.memtrack@1.0-service.rc
index 14e7d00..c975a18 100644
--- a/memtrack/1.0/default/android.hardware.memtrack@1.0-service.rc
+++ b/memtrack/1.0/default/android.hardware.memtrack@1.0-service.rc
@@ -1,4 +1,4 @@
-service memtrack-hal-1-0 /system/bin/hw/android.hardware.memtrack@1.0-service
+service memtrack-hal-1-0 /vendor/bin/hw/android.hardware.memtrack@1.0-service
class hal
user system
group system
diff --git a/memtrack/1.0/vts/Memtrack.vts b/memtrack/1.0/vts/Memtrack.vts
index 9fce2a0..42a422e 100644
--- a/memtrack/1.0/vts/Memtrack.vts
+++ b/memtrack/1.0/vts/Memtrack.vts
@@ -5,6 +5,7 @@
package: "android.hardware.memtrack"
import: "android.hardware.memtrack@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/memtrack/1.0/vts/functional/Android.bp b/memtrack/1.0/vts/functional/Android.bp
index b3e560a..0f57adc 100644
--- a/memtrack/1.0/vts/functional/Android.bp
+++ b/memtrack/1.0/vts/functional/Android.bp
@@ -30,11 +30,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/nfc/1.0/Android.bp b/nfc/1.0/Android.bp
index 7f228a7..e7305b4 100644
--- a/nfc/1.0/Android.bp
+++ b/nfc/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
srcs: [
- "types.hal",
- "INfc.hal",
- "INfcClientCallback.hal",
+ ":android.hardware.nfc@1.0_hal",
],
out: [
"android/hardware/nfc/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
srcs: [
- "types.hal",
- "INfc.hal",
- "INfcClientCallback.hal",
+ ":android.hardware.nfc@1.0_hal",
],
out: [
"android/hardware/nfc/1.0/types.h",
diff --git a/nfc/1.0/Android.mk b/nfc/1.0/Android.mk
index 823bde5..6f09764 100644
--- a/nfc/1.0/Android.mk
+++ b/nfc/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.nfc@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -106,7 +106,7 @@
LOCAL_MODULE := android.hardware.nfc@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -204,7 +204,7 @@
LOCAL_MODULE := android.hardware.nfc@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/nfc/1.0/default/Android.bp b/nfc/1.0/default/Android.bp
index b484ba6..02f5664 100644
--- a/nfc/1.0/default/Android.bp
+++ b/nfc/1.0/default/Android.bp
@@ -1,6 +1,7 @@
cc_library_shared {
name: "android.hardware.nfc@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: ["Nfc.cpp"],
shared_libs: [
"liblog",
diff --git a/nfc/1.0/default/Android.mk b/nfc/1.0/default/Android.mk
index a6c7d5c..fbb340f 100644
--- a/nfc/1.0/default/Android.mk
+++ b/nfc/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.nfc@1.0-service
LOCAL_INIT_RC := android.hardware.nfc@1.0-service.rc
LOCAL_SRC_FILES := \
@@ -22,4 +23,5 @@
libhidltransport \
android.hardware.nfc@1.0 \
+
include $(BUILD_EXECUTABLE)
diff --git a/nfc/1.0/default/android.hardware.nfc@1.0-service.rc b/nfc/1.0/default/android.hardware.nfc@1.0-service.rc
index 7b67577..c9b8014 100644
--- a/nfc/1.0/default/android.hardware.nfc@1.0-service.rc
+++ b/nfc/1.0/default/android.hardware.nfc@1.0-service.rc
@@ -1,4 +1,4 @@
-service nfc_hal_service /system/bin/hw/android.hardware.nfc@1.0-service
+service nfc_hal_service /vendor/bin/hw/android.hardware.nfc@1.0-service
class hal
user nfc
group nfc
diff --git a/nfc/1.0/vts/Nfc.vts b/nfc/1.0/vts/Nfc.vts
index 9261a60..48b2750 100644
--- a/nfc/1.0/vts/Nfc.vts
+++ b/nfc/1.0/vts/Nfc.vts
@@ -6,6 +6,7 @@
import: "android.hardware.nfc@1.0::INfcClientCallback"
import: "android.hardware.nfc@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -16,8 +17,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "INfcClientCallback"
- is_callback: true
+ predefined_type: "::android::hardware::nfc::V1_0::INfcClientCallback"
}
callflow: {
entry: true
@@ -87,13 +87,6 @@
next: "powerCycle"
next: "controlGranted"
}
- callflow: {
- next: "write"
- next: "close"
- next: "coreInitialized"
- next: "powerCycle"
- next: "controlGranted"
- }
}
api: {
@@ -105,9 +98,6 @@
callflow: {
exit: true
}
- callflow: {
- exit: true
- }
}
api: {
@@ -123,13 +113,6 @@
next: "coreInitialized"
next: "powerCycle"
}
- callflow: {
- next: "write"
- next: "close"
- next: "prediscover"
- next: "coreInitialized"
- next: "powerCycle"
- }
}
api: {
@@ -145,13 +128,6 @@
next: "controlGranted"
next: "close"
}
- callflow: {
- next: "write"
- next: "coreInitialized"
- next: "prediscover"
- next: "controlGranted"
- next: "close"
- }
}
}
diff --git a/nfc/1.0/vts/NfcClientCallback.vts b/nfc/1.0/vts/NfcClientCallback.vts
index e39ea7c..b06f12b 100644
--- a/nfc/1.0/vts/NfcClientCallback.vts
+++ b/nfc/1.0/vts/NfcClientCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.nfc"
import: "android.hardware.nfc@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/nfc/1.0/vts/functional/Android.bp b/nfc/1.0/vts/functional/Android.bp
index 021f7c1..080887f 100644
--- a/nfc/1.0/vts/functional/Android.bp
+++ b/nfc/1.0/vts/functional/Android.bp
@@ -15,9 +15,9 @@
//
cc_test {
- name: "nfc_hidl_hal_test",
+ name: "VtsHalNfcV1_0TargetTest",
gtest: true,
- srcs: ["nfc_hidl_hal_test.cpp"],
+ srcs: ["VtsHalNfcV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
@@ -31,11 +31,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage"
- ]
}
diff --git a/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
similarity index 100%
rename from nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
rename to nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
diff --git a/power/1.0/Android.bp b/power/1.0/Android.bp
index 62e03ea..453d525 100644
--- a/power/1.0/Android.bp
+++ b/power/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0",
srcs: [
- "types.hal",
- "IPower.hal",
+ ":android.hardware.power@1.0_hal",
],
out: [
"android/hardware/power/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0",
srcs: [
- "types.hal",
- "IPower.hal",
+ ":android.hardware.power@1.0_hal",
],
out: [
"android/hardware/power/1.0/types.h",
diff --git a/power/1.0/Android.mk b/power/1.0/Android.mk
index 4e11867..98d95a8 100644
--- a/power/1.0/Android.mk
+++ b/power/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.power@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -140,7 +140,7 @@
LOCAL_MODULE := android.hardware.power@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/power/1.0/default/Android.bp b/power/1.0/default/Android.bp
index 1a5a897..71daaeb 100644
--- a/power/1.0/default/Android.bp
+++ b/power/1.0/default/Android.bp
@@ -14,9 +14,15 @@
cc_library_shared {
name: "android.hardware.power@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Power.cpp"],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+
shared_libs: [
"liblog",
"libhardware",
@@ -30,11 +36,17 @@
}
cc_binary {
+ proprietary: true,
relative_install_path: "hw",
name: "android.hardware.power@1.0-service",
init_rc: ["android.hardware.power@1.0-service.rc"],
srcs: ["service.cpp"],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+
shared_libs: [
"liblog",
"libdl",
diff --git a/power/1.0/default/Power.cpp b/power/1.0/default/Power.cpp
index 2ddac0a..6ea9167 100644
--- a/power/1.0/default/Power.cpp
+++ b/power/1.0/default/Power.cpp
@@ -81,7 +81,7 @@
number_platform_modes = mModule->get_number_of_platform_modes(mModule);
if (number_platform_modes)
{
- if (SIZE_MAX / sizeof(size_t) <= number_platform_modes) // overflow
+ if ((ssize_t) (SIZE_MAX / sizeof(size_t)) <= number_platform_modes) // overflow
goto done;
voters = new (std::nothrow) size_t [number_platform_modes];
if (voters == nullptr)
@@ -91,7 +91,7 @@
if (ret != 0)
goto done;
- if (SIZE_MAX / sizeof(power_state_platform_sleep_state_t)
+ if ((ssize_t) (SIZE_MAX / sizeof(power_state_platform_sleep_state_t))
<= number_platform_modes) // overflow
goto done;
legacy_states = new (std::nothrow)
diff --git a/power/1.0/default/android.hardware.power@1.0-service.rc b/power/1.0/default/android.hardware.power@1.0-service.rc
index 6063541..1777e90 100644
--- a/power/1.0/default/android.hardware.power@1.0-service.rc
+++ b/power/1.0/default/android.hardware.power@1.0-service.rc
@@ -1,4 +1,4 @@
-service power-hal-1-0 /system/bin/hw/android.hardware.power@1.0-service
+service power-hal-1-0 /vendor/bin/hw/android.hardware.power@1.0-service
class hal
user system
group system
diff --git a/power/1.0/vts/Power.vts b/power/1.0/vts/Power.vts
index 1711290..4d3d4ff 100644
--- a/power/1.0/vts/Power.vts
+++ b/power/1.0/vts/Power.vts
@@ -5,6 +5,7 @@
package: "android.hardware.power"
import: "android.hardware.power@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/power/1.0/vts/functional/Android.bp b/power/1.0/vts/functional/Android.bp
index 81dc316..7aa2611 100644
--- a/power/1.0/vts/functional/Android.bp
+++ b/power/1.0/vts/functional/Android.bp
@@ -31,11 +31,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/radio/1.0/Android.bp b/radio/1.0/Android.bp
index d9df910..f59cf66 100644
--- a/radio/1.0/Android.bp
+++ b/radio/1.0/Android.bp
@@ -17,12 +17,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
srcs: [
- "types.hal",
- "IRadio.hal",
- "IRadioIndication.hal",
- "IRadioResponse.hal",
- "ISap.hal",
- "ISapCallback.hal",
+ ":android.hardware.radio@1.0_hal",
],
out: [
"android/hardware/radio/1.0/types.cpp",
@@ -39,12 +34,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
srcs: [
- "types.hal",
- "IRadio.hal",
- "IRadioIndication.hal",
- "IRadioResponse.hal",
- "ISap.hal",
- "ISapCallback.hal",
+ ":android.hardware.radio@1.0_hal",
],
out: [
"android/hardware/radio/1.0/types.h",
diff --git a/radio/1.0/Android.mk b/radio/1.0/Android.mk
index 704ea08..7f4c7d4 100644
--- a/radio/1.0/Android.mk
+++ b/radio/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.radio@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -3023,7 +3023,7 @@
LOCAL_MODULE := android.hardware.radio@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/radio/1.0/IRadio.hal b/radio/1.0/IRadio.hal
index 04d93db..bda7d65 100644
--- a/radio/1.0/IRadio.hal
+++ b/radio/1.0/IRadio.hal
@@ -1572,6 +1572,20 @@
oneway setIndicationFilter(int32_t serial, bitfield<IndicationFilter> indicationFilter);
/*
+ * Set SIM card power state.
+ * Request is equivalent to inserting or removing the card.
+ *
+ * The radio modem must generate IRadioIndication.simStatusChanged() as if the SIM had been
+ * inserted or removed.
+ *
+ * @param serial Serial number of request
+ * @param powerUp True if powering up the sim card
+ *
+ * Response callback is IRadioResponse.setSimCardPowerResponse()
+ */
+ oneway setSimCardPower(int32_t serial, bool powerUp);
+
+ /*
* When response type received from a radio indication or radio response is
* RadioIndicationType:UNSOLICITED_ACK_EXP or RadioResponseType:SOLICITED_ACK_EXP respectively,
* acknowledge the receipt of those messages by sending responseAcknowledgement().
diff --git a/radio/1.0/IRadioResponse.hal b/radio/1.0/IRadioResponse.hal
index 538c06d..637f697 100644
--- a/radio/1.0/IRadioResponse.hal
+++ b/radio/1.0/IRadioResponse.hal
@@ -1562,6 +1562,16 @@
/*
* @param info Response info struct containing response type, serial no. and error
+ *
+ * Valid errors returned:
+ * RadioError:NONE
+ * RadioError:RADIO_NOT_AVAILABLE
+ * RadioError:GENERIC_FAILURE
+ */
+ oneway reportStkServiceIsRunningResponse(RadioResponseInfo info);
+
+ /*
+ * @param info Response info struct containing response type, serial no. and error
* @param source CDMA subscription source
*
* Valid errors returned:
@@ -1958,6 +1968,18 @@
oneway setIndicationFilterResponse(RadioResponseInfo info);
/*
+ * @param info Response info struct containing response type, serial no. and error
+ *
+ * Valid errors returned:
+ * RadioError:NONE
+ * RadioError:RADIO_NOT_AVAILABLE
+ * RadioError:REQUEST_NOT_SUPPORTED
+ * RadioError:SIM_ABSENT
+ * RadioError:INVALID_ARGUMENTS
+ */
+ oneway setSimCardPowerResponse(RadioResponseInfo info);
+
+ /*
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
* radio request which take long time to respond.
* For more details, refer https://source.android.com/devices/tech/connect/ril.html
diff --git a/radio/1.0/vts/Radio.vts b/radio/1.0/vts/Radio.vts
index 05fa462..68cf620 100644
--- a/radio/1.0/vts/Radio.vts
+++ b/radio/1.0/vts/Radio.vts
@@ -7,19 +7,18 @@
import: "android.hardware.radio@1.0::IRadioIndication"
import: "android.hardware.radio@1.0::IRadioResponse"
import: "android.hardware.radio@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
name: "setResponseFunctions"
arg: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IRadioResponse"
- is_callback: false
+ predefined_type: "::android::hardware::radio::V1_0::IRadioResponse"
}
arg: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IRadioIndication"
- is_callback: false
+ predefined_type: "::android::hardware::radio::V1_0::IRadioIndication"
}
}
@@ -1504,6 +1503,18 @@
}
api: {
+ name: "setSimCardPower"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
name: "responseAcknowledgement"
}
diff --git a/radio/1.0/vts/RadioIndication.vts b/radio/1.0/vts/RadioIndication.vts
index 74a52c6..cce8ada 100644
--- a/radio/1.0/vts/RadioIndication.vts
+++ b/radio/1.0/vts/RadioIndication.vts
@@ -5,6 +5,7 @@
package: "android.hardware.radio"
import: "android.hardware.radio@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/radio/1.0/vts/RadioResponse.vts b/radio/1.0/vts/RadioResponse.vts
index 9aed63e..a6c5223 100644
--- a/radio/1.0/vts/RadioResponse.vts
+++ b/radio/1.0/vts/RadioResponse.vts
@@ -5,6 +5,7 @@
package: "android.hardware.radio"
import: "android.hardware.radio@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -1013,6 +1014,14 @@
}
api: {
+ name: "reportStkServiceIsRunningResponse"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
+ }
+ }
+
+ api: {
name: "getCdmaSubscriptionSourceResponse"
arg: {
type: TYPE_STRUCT
@@ -1388,6 +1397,14 @@
}
api: {
+ name: "setSimCardPowerResponse"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
+ }
+ }
+
+ api: {
name: "acknowledgeRequest"
arg: {
type: TYPE_SCALAR
diff --git a/radio/1.0/vts/Sap.vts b/radio/1.0/vts/Sap.vts
index 23205d0..b4983da 100644
--- a/radio/1.0/vts/Sap.vts
+++ b/radio/1.0/vts/Sap.vts
@@ -6,14 +6,14 @@
import: "android.hardware.radio@1.0::ISapCallback"
import: "android.hardware.radio@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
name: "setCallback"
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISapCallback"
- is_callback: true
+ predefined_type: "::android::hardware::radio::V1_0::ISapCallback"
}
}
diff --git a/radio/1.0/vts/SapCallback.vts b/radio/1.0/vts/SapCallback.vts
index 2e61ce6..3a33dba 100644
--- a/radio/1.0/vts/SapCallback.vts
+++ b/radio/1.0/vts/SapCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.radio"
import: "android.hardware.radio@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/radio/1.0/vts/functional/Android.bp b/radio/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..6615f03
--- /dev/null
+++ b/radio/1.0/vts/functional/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "VtsHalRadioV1_0TargetTest",
+ gtest: true,
+ srcs: ["radio_hidl_hal_test.cpp",
+ "radio_response.cpp",
+ "radio_hidl_hal_icc.cpp",
+ "VtsHalRadioV1_0TargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "liblog",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libnativehelper",
+ "libutils",
+ "android.hardware.radio@1.0",
+ ],
+ static_libs: ["libgtest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ],
+}
\ No newline at end of file
diff --git a/radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp b/radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp
new file mode 100644
index 0000000..d01adf2
--- /dev/null
+++ b/radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2017 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<radio_hidl_hal_utils.h>
+
+int main(int argc, char** argv) {
+ ::testing::AddGlobalTestEnvironment(new RadioHidlEnvironment);
+ ::testing::InitGoogleTest(&argc, argv);
+
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+
+ return status;
+}
\ No newline at end of file
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp
new file mode 100644
index 0000000..9b540e8
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2017 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<radio_hidl_hal_utils.h>
+
+/*
+ * Test IRadio.getIccCardStatus() for the response returned.
+ */
+TEST_F(RadioHidlTest, getIccCardStatus) {
+ radio->getIccCardStatus(1);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(1, radioRsp->rspInfo.serial);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
+
+ EXPECT_LE(radioRsp->cardStatus.applications.size(), (unsigned int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(radioRsp->cardStatus.gsmUmtsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(radioRsp->cardStatus.cdmaSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(radioRsp->cardStatus.imsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+}
+
+/*
+ * Test IRadio.supplyIccPinForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPinForApp) {
+ radio->supplyIccPinForApp(2, hidl_string("test1"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(2, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
+
+/*
+ * Test IRadio.supplyIccPukForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPukForApp) {
+ radio->supplyIccPukForApp(3, hidl_string("test1"), hidl_string("test2"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(3, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
+
+/*
+ * Test IRadio.supplyIccPin2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPin2ForApp) {
+ radio->supplyIccPin2ForApp(4, hidl_string("test1"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(4, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
+
+/*
+ * Test IRadio.supplyIccPuk2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPuk2ForApp) {
+ radio->supplyIccPuk2ForApp(5, hidl_string("test1"), hidl_string("test2"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(5, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
+
+/*
+ * Test IRadio.changeIccPinForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, changeIccPinForApp) {
+ radio->changeIccPinForApp(6, hidl_string("test1"), hidl_string("test2"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(6, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
+
+/*
+ * Test IRadio.changeIccPin2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, changeIccPin2ForApp) {
+ radio->changeIccPin2ForApp(7, hidl_string("test1"), hidl_string("test2"), hidl_string());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(7, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT);
+}
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_test.cpp b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp
new file mode 100644
index 0000000..2a67954
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 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<radio_hidl_hal_utils.h>
+
+void RadioHidlTest::SetUp() {
+ radio = IRadio::getService(hidl_string("rild"));
+ ASSERT_NE(radio, nullptr);
+
+ radioRsp = new RadioResponse(*this);
+ ASSERT_NE(radioRsp, nullptr);
+
+ count = 0;
+
+ radioInd = NULL;
+ radio->setResponseFunctions(radioRsp, radioInd);
+}
+
+void RadioHidlTest::TearDown() {
+}
+
+void RadioHidlTest::notify() {
+ std::unique_lock<std::mutex> lock(mtx);
+ count++;
+ cv.notify_one();
+}
+
+std::cv_status RadioHidlTest::wait() {
+ std::unique_lock<std::mutex> lock(mtx);
+
+ std::cv_status status = std::cv_status::no_timeout;
+ auto now = std::chrono::system_clock::now();
+ while (count == 0) {
+ status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
+ if (status == std::cv_status::timeout) {
+ return status;
+ }
+ }
+ count--;
+ return status;
+}
+
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_utils.h b/radio/1.0/vts/functional/radio_hidl_hal_utils.h
new file mode 100644
index 0000000..23b6ffa
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_utils.h
@@ -0,0 +1,453 @@
+/*
+ * Copyright (C) 2017 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 <android-base/logging.h>
+
+#include <gtest/gtest.h>
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+#include <android/hardware/radio/1.0/IRadio.h>
+#include <android/hardware/radio/1.0/IRadioResponse.h>
+#include <android/hardware/radio/1.0/IRadioIndication.h>
+#include <android/hardware/radio/1.0/types.h>
+
+using ::android::hardware::radio::V1_0::ActivityStatsInfo;
+using ::android::hardware::radio::V1_0::CardStatus;
+using ::android::hardware::radio::V1_0::Call;
+using ::android::hardware::radio::V1_0::CallForwardInfo;
+using ::android::hardware::radio::V1_0::CarrierRestrictions;
+using ::android::hardware::radio::V1_0::CdmaRoamingType;
+using ::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo;
+using ::android::hardware::radio::V1_0::CdmaSubscriptionSource;
+using ::android::hardware::radio::V1_0::CellInfo;
+using ::android::hardware::radio::V1_0::ClipStatus;
+using ::android::hardware::radio::V1_0::DataRegStateResult;
+using ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo;
+using ::android::hardware::radio::V1_0::HardwareConfig;
+using ::android::hardware::radio::V1_0::IccIoResult;
+using ::android::hardware::radio::V1_0::IRadio;
+using ::android::hardware::radio::V1_0::IRadioResponse;
+using ::android::hardware::radio::V1_0::IRadioIndication;
+using ::android::hardware::radio::V1_0::RadioConst;
+using ::android::hardware::radio::V1_0::RadioError;
+using ::android::hardware::radio::V1_0::RadioResponseInfo;
+using ::android::hardware::radio::V1_0::LastCallFailCauseInfo;
+using ::android::hardware::radio::V1_0::LceDataInfo;
+using ::android::hardware::radio::V1_0::LceStatusInfo;
+using ::android::hardware::radio::V1_0::NeighboringCell;
+using ::android::hardware::radio::V1_0::OperatorInfo;
+using ::android::hardware::radio::V1_0::PreferredNetworkType;
+using ::android::hardware::radio::V1_0::RadioBandMode;
+using ::android::hardware::radio::V1_0::RadioCapability;
+using ::android::hardware::radio::V1_0::RadioResponseType;
+using ::android::hardware::radio::V1_0::RadioTechnology;
+using ::android::hardware::radio::V1_0::RadioTechnologyFamily;
+using ::android::hardware::radio::V1_0::SendSmsResult;
+using ::android::hardware::radio::V1_0::SetupDataCallResult;
+using ::android::hardware::radio::V1_0::SignalStrength;
+using ::android::hardware::radio::V1_0::TtyMode;
+using ::android::hardware::radio::V1_0::VoiceRegStateResult;
+
+using ::android::hardware::hidl_string;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+#define TIMEOUT_PERIOD 20
+
+class RadioHidlTest;
+
+/* Callback class for radio response */
+class RadioResponse : public IRadioResponse {
+private:
+ RadioHidlTest& parent;
+
+public:
+ RadioResponseInfo rspInfo;
+ CardStatus cardStatus;
+
+ RadioResponse(RadioHidlTest& parent);
+
+ virtual ~RadioResponse() = default;
+
+ Return<void> getIccCardStatusResponse(const RadioResponseInfo& info,
+ const CardStatus& cardStatus);
+
+ Return<void> supplyIccPinForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPukForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPin2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPuk2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> changeIccPinForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> changeIccPin2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyNetworkDepersonalizationResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries);
+
+ Return<void> getCurrentCallsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<Call>& calls);
+
+ Return<void> dialResponse(const RadioResponseInfo& info);
+
+ Return<void> getIMSIForAppResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& imsi);
+
+ Return<void> hangupConnectionResponse(const RadioResponseInfo& info);
+
+ Return<void> hangupWaitingOrBackgroundResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> hangupForegroundResumeBackgroundResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> switchWaitingOrHoldingAndActiveResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> conferenceResponse(const RadioResponseInfo& info);
+
+ Return<void> rejectCallResponse(const RadioResponseInfo& info);
+
+ Return<void> getLastCallFailCauseResponse(const RadioResponseInfo& info,
+ const LastCallFailCauseInfo& failCauseInfo);
+
+ Return<void> getSignalStrengthResponse(const RadioResponseInfo& info,
+ const SignalStrength& sigStrength);
+
+ Return<void> getVoiceRegistrationStateResponse(const RadioResponseInfo& info,
+ const VoiceRegStateResult& voiceRegResponse);
+
+ Return<void> getDataRegistrationStateResponse(const RadioResponseInfo& info,
+ const DataRegStateResult& dataRegResponse);
+
+ Return<void> getOperatorResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& longName,
+ const ::android::hardware::hidl_string& shortName,
+ const ::android::hardware::hidl_string& numeric);
+
+ Return<void> setRadioPowerResponse(const RadioResponseInfo& info);
+
+ Return<void> sendDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> sendSmsResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> sendSMSExpectMoreResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> setupDataCallResponse(const RadioResponseInfo& info,
+ const SetupDataCallResult& dcResponse);
+
+ Return<void> iccIOForAppResponse(const RadioResponseInfo& info,
+ const IccIoResult& iccIo);
+
+ Return<void> sendUssdResponse(const RadioResponseInfo& info);
+
+ Return<void> cancelPendingUssdResponse(const RadioResponseInfo& info);
+
+ Return<void> getClirResponse(const RadioResponseInfo& info, int32_t n, int32_t m);
+
+ Return<void> setClirResponse(const RadioResponseInfo& info);
+
+ Return<void> getCallForwardStatusResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CallForwardInfo>& call_forwardInfos);
+
+ Return<void> setCallForwardResponse(const RadioResponseInfo& info);
+
+ Return<void> getCallWaitingResponse(const RadioResponseInfo& info,
+ bool enable, int32_t serviceClass);
+
+ Return<void> setCallWaitingResponse(const RadioResponseInfo& info);
+
+ Return<void> acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& info);
+
+ Return<void> acceptCallResponse(const RadioResponseInfo& info);
+
+ Return<void> deactivateDataCallResponse(const RadioResponseInfo& info);
+
+ Return<void> getFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t response);
+
+ Return<void> setFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t retry);
+
+ Return<void> setBarringPasswordResponse(const RadioResponseInfo& info);
+
+ Return<void> getNetworkSelectionModeResponse(const RadioResponseInfo& info,bool manual);
+
+ Return<void> setNetworkSelectionModeAutomaticResponse(const RadioResponseInfo& info);
+
+ Return<void> setNetworkSelectionModeManualResponse(const RadioResponseInfo& info);
+
+ Return<void> getAvailableNetworksResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<OperatorInfo>& networkInfos);
+
+ Return<void> startDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> stopDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> getBasebandVersionResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& version);
+
+ Return<void> separateConnectionResponse(const RadioResponseInfo& info);
+
+ Return<void> setMuteResponse(const RadioResponseInfo& info);
+
+ Return<void> getMuteResponse(const RadioResponseInfo& info, bool enable);
+
+ Return<void> getClipResponse(const RadioResponseInfo& info,ClipStatus status);
+
+ Return<void> getDataCallListResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<SetupDataCallResult>& dcResponse);
+
+ Return<void> sendOemRilRequestRawResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<uint8_t>& data);
+
+ Return<void> sendOemRilRequestStringsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& data);
+
+ Return<void> sendScreenStateResponse(const RadioResponseInfo& info);
+
+ Return<void> setSuppServiceNotificationsResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> writeSmsToSimResponse(const RadioResponseInfo& info,int32_t index);
+
+ Return<void> deleteSmsOnSimResponse(const RadioResponseInfo& info);
+
+ Return<void> setBandModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getAvailableBandModesResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<RadioBandMode>& bandModes);
+
+ Return<void> sendEnvelopeResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& commandResponse);
+
+ Return<void> sendTerminalResponseToSimResponse(const RadioResponseInfo& info);
+
+ Return<void> handleStkCallSetupRequestFromSimResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> explicitCallTransferResponse(const RadioResponseInfo& info);
+
+ Return<void> setPreferredNetworkTypeResponse(const RadioResponseInfo& info);
+
+ Return<void> getPreferredNetworkTypeResponse(const RadioResponseInfo& info,
+ PreferredNetworkType nwType);
+
+ Return<void> getNeighboringCidsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<NeighboringCell>& cells);
+
+ Return<void> setLocationUpdatesResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaSubscriptionSourceResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaRoamingPreferenceResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaRoamingPreferenceResponse(const RadioResponseInfo& info,
+ CdmaRoamingType type);
+
+ Return<void> setTTYModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getTTYModeResponse(const RadioResponseInfo& info, TtyMode mode);
+
+ Return<void> setPreferredVoicePrivacyResponse(const RadioResponseInfo& info);
+
+ Return<void> getPreferredVoicePrivacyResponse(const RadioResponseInfo& info, bool enable);
+
+ Return<void> sendCDMAFeatureCodeResponse(const RadioResponseInfo& info);
+
+ Return<void> sendBurstDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> sendCdmaSmsResponse(const RadioResponseInfo& info, const SendSmsResult& sms);
+
+ Return<void> acknowledgeLastIncomingCdmaSmsResponse(const RadioResponseInfo& info);
+
+ Return<void> getGsmBroadcastConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<GsmBroadcastSmsConfigInfo>& configs);
+
+ Return<void> setGsmBroadcastConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setGsmBroadcastActivationResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaBroadcastConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CdmaBroadcastSmsConfigInfo>& configs);
+
+ Return<void> setCdmaBroadcastConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaBroadcastActivationResponse(const RadioResponseInfo& info);
+
+ Return<void> getCDMASubscriptionResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& mdn,
+ const ::android::hardware::hidl_string& hSid,
+ const ::android::hardware::hidl_string& hNid,
+ const ::android::hardware::hidl_string& min,
+ const ::android::hardware::hidl_string& prl);
+
+ Return<void> writeSmsToRuimResponse(const RadioResponseInfo& info, uint32_t index);
+
+ Return<void> deleteSmsOnRuimResponse(const RadioResponseInfo& info);
+
+ Return<void> getDeviceIdentityResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& imei,
+ const ::android::hardware::hidl_string& imeisv,
+ const ::android::hardware::hidl_string& esn,
+ const ::android::hardware::hidl_string& meid);
+
+ Return<void> exitEmergencyCallbackModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getSmscAddressResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& smsc);
+
+ Return<void> setSmscAddressResponse(const RadioResponseInfo& info);
+
+ Return<void> reportSmsMemoryStatusResponse(const RadioResponseInfo& info);
+
+ Return<void> reportStkServiceIsRunningResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaSubscriptionSourceResponse(const RadioResponseInfo& info,
+ CdmaSubscriptionSource source);
+
+ Return<void> requestIsimAuthenticationResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& response);
+
+ Return<void> acknowledgeIncomingGsmSmsWithPduResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> sendEnvelopeWithStatusResponse(const RadioResponseInfo& info,
+ const IccIoResult& iccIo);
+
+ Return<void> getVoiceRadioTechnologyResponse(const RadioResponseInfo& info,
+ RadioTechnology rat);
+
+ Return<void> getCellInfoListResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CellInfo>& cellInfo);
+
+ Return<void> setCellInfoListRateResponse(const RadioResponseInfo& info);
+
+ Return<void> setInitialAttachApnResponse(const RadioResponseInfo& info);
+
+ Return<void> getImsRegistrationStateResponse(const RadioResponseInfo& info,
+ bool isRegistered, RadioTechnologyFamily ratFamily);
+
+ Return<void> sendImsSmsResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> iccTransmitApduBasicChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> iccOpenLogicalChannelResponse(const RadioResponseInfo& info,
+ int32_t channelId, const ::android::hardware::hidl_vec<int8_t>& selectResponse);
+
+ Return<void> iccCloseLogicalChannelResponse(const RadioResponseInfo& info);
+
+ Return<void> iccTransmitApduLogicalChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> nvReadItemResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& result);
+
+ Return<void> nvWriteItemResponse(const RadioResponseInfo& info);
+
+ Return<void> nvWriteCdmaPrlResponse(const RadioResponseInfo& info);
+
+ Return<void> nvResetConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setUiccSubscriptionResponse(const RadioResponseInfo& info);
+
+ Return<void> setDataAllowedResponse(const RadioResponseInfo& info);
+
+ Return<void> getHardwareConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<HardwareConfig>& config);
+
+ Return<void> requestIccSimAuthenticationResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> setDataProfileResponse(const RadioResponseInfo& info);
+
+ Return<void> requestShutdownResponse(const RadioResponseInfo& info);
+
+ Return<void> getRadioCapabilityResponse(const RadioResponseInfo& info,
+ const RadioCapability& rc);
+
+ Return<void> setRadioCapabilityResponse(const RadioResponseInfo& info,
+ const RadioCapability& rc);
+
+ Return<void> startLceServiceResponse(const RadioResponseInfo& info,
+ const LceStatusInfo& statusInfo);
+
+ Return<void> stopLceServiceResponse(const RadioResponseInfo& info,
+ const LceStatusInfo& statusInfo);
+
+ Return<void> pullLceDataResponse(const RadioResponseInfo& info,
+ const LceDataInfo& lceInfo);
+
+ Return<void> getModemActivityInfoResponse(const RadioResponseInfo& info,
+ const ActivityStatsInfo& activityInfo);
+
+ Return<void> setAllowedCarriersResponse(const RadioResponseInfo& info,
+ int32_t numAllowed);
+
+ Return<void> getAllowedCarriersResponse(const RadioResponseInfo& info,
+ bool allAllowed, const CarrierRestrictions& carriers);
+
+ Return<void> sendDeviceStateResponse(const RadioResponseInfo& info);
+
+ Return<void> setIndicationFilterResponse(const RadioResponseInfo& info);
+
+ Return<void> setSimCardPowerResponse(const RadioResponseInfo& info);
+
+ Return<void> acknowledgeRequest(int32_t serial);
+};
+
+// The main test class for Radio HIDL.
+class RadioHidlTest : public ::testing::Test {
+private:
+ std::mutex mtx;
+ std::condition_variable cv;
+ int count;
+
+public:
+ virtual void SetUp() override;
+
+ virtual void TearDown() override;
+
+ /* Used as a mechanism to inform the test about data/event callback */
+ void notify();
+
+ /* Test code calls this function to wait for response */
+ std::cv_status wait();
+
+ sp<IRadio> radio;
+ sp<RadioResponse> radioRsp;
+ sp<IRadioIndication> radioInd;
+};
+
+// A class for test environment setup
+class RadioHidlEnvironment : public ::testing::Environment {
+public:
+ virtual void SetUp() {}
+ virtual void TearDown() {}
+};
diff --git a/radio/1.0/vts/functional/radio_response.cpp b/radio/1.0/vts/functional/radio_response.cpp
new file mode 100644
index 0000000..b2a74f4
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_response.cpp
@@ -0,0 +1,665 @@
+/*
+ * Copyright (C) 2017 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<radio_hidl_hal_utils.h>
+
+RadioResponse::RadioResponse(RadioHidlTest& parent) : parent(parent) {
+}
+
+Return<void> RadioResponse::getIccCardStatusResponse(
+ const RadioResponseInfo& info, const CardStatus& card_status) {
+ rspInfo = info;
+ cardStatus = card_status;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPinForAppResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPukForAppResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPin2ForAppResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPuk2ForAppResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::changeIccPinForAppResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::changeIccPin2ForAppResponse(
+ const RadioResponseInfo& info, int32_t remaining_retries) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyNetworkDepersonalizationResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCurrentCallsResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_vec<Call>& calls) {
+ return Void();
+}
+
+Return<void> RadioResponse::dialResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getIMSIForAppResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& imsi) {
+ return Void();
+}
+
+Return<void> RadioResponse::hangupConnectionResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::hangupWaitingOrBackgroundResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::hangupForegroundResumeBackgroundResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::switchWaitingOrHoldingAndActiveResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::conferenceResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::rejectCallResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getLastCallFailCauseResponse(
+ const RadioResponseInfo& info, const LastCallFailCauseInfo& failCauseInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::getSignalStrengthResponse(
+ const RadioResponseInfo& info, const SignalStrength& sig_strength) {
+ return Void();
+}
+
+Return<void> RadioResponse::getVoiceRegistrationStateResponse(
+ const RadioResponseInfo& info, const VoiceRegStateResult& voiceRegResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDataRegistrationStateResponse(
+ const RadioResponseInfo& info, const DataRegStateResult& dataRegResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::getOperatorResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& longName,
+ const ::android::hardware::hidl_string& shortName,
+ const ::android::hardware::hidl_string& numeric) {
+ return Void();
+}
+
+Return<void> RadioResponse::setRadioPowerResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendDtmfResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendSmsResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendSMSExpectMoreResponse(
+ const RadioResponseInfo& info, const SendSmsResult& sms) {
+ return Void();
+}
+
+Return<void> RadioResponse::setupDataCallResponse(
+ const RadioResponseInfo& info, const SetupDataCallResult& dcResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccIOForAppResponse(
+ const RadioResponseInfo& info, const IccIoResult& iccIo) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendUssdResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::cancelPendingUssdResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getClirResponse(const RadioResponseInfo& info, int32_t n, int32_t m) {
+ return Void();
+}
+
+Return<void> RadioResponse::setClirResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCallForwardStatusResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_vec<CallForwardInfo>&
+ callForwardInfos) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCallForwardResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCallWaitingResponse(
+ const RadioResponseInfo& info, bool enable, int32_t serviceClass) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCallWaitingResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::acceptCallResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::deactivateDataCallResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getFacilityLockForAppResponse(const RadioResponseInfo& info,
+ int32_t response) {
+ return Void();
+}
+
+Return<void> RadioResponse::setFacilityLockForAppResponse(const RadioResponseInfo& info,
+ int32_t retry) {
+ return Void();
+}
+
+Return<void> RadioResponse::setBarringPasswordResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getNetworkSelectionModeResponse(
+ const RadioResponseInfo& info, bool manual) {
+ return Void();
+}
+
+Return<void> RadioResponse::setNetworkSelectionModeAutomaticResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setNetworkSelectionModeManualResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAvailableNetworksResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<OperatorInfo>& networkInfos) {
+ return Void();
+}
+
+Return<void> RadioResponse::startDtmfResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::stopDtmfResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getBasebandVersionResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& version) {
+ return Void();
+}
+
+Return<void> RadioResponse::separateConnectionResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setMuteResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getMuteResponse(const RadioResponseInfo& info, bool enable) {
+ return Void();
+}
+
+Return<void> RadioResponse::getClipResponse(const RadioResponseInfo& info, ClipStatus status) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDataCallListResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<SetupDataCallResult>& dcResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendOemRilRequestRawResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<uint8_t>& data) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendOemRilRequestStringsResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& data) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendScreenStateResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSuppServiceNotificationsResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::writeSmsToSimResponse(
+ const RadioResponseInfo& info, int32_t index) {
+ return Void();
+}
+
+Return<void> RadioResponse::deleteSmsOnSimResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setBandModeResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAvailableBandModesResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<RadioBandMode>& bandModes) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendEnvelopeResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& commandResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendTerminalResponseToSimResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::handleStkCallSetupRequestFromSimResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::explicitCallTransferResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setPreferredNetworkTypeResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getPreferredNetworkTypeResponse(
+ const RadioResponseInfo& info, PreferredNetworkType nw_type) {
+ return Void();
+}
+
+Return<void> RadioResponse::getNeighboringCidsResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<NeighboringCell>& cells) {
+ return Void();
+}
+
+Return<void> RadioResponse::setLocationUpdatesResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaSubscriptionSourceResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaRoamingPreferenceResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaRoamingPreferenceResponse(
+ const RadioResponseInfo& info, CdmaRoamingType type) {
+ return Void();
+}
+
+Return<void> RadioResponse::setTTYModeResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getTTYModeResponse(const RadioResponseInfo& info, TtyMode mode) {
+ return Void();
+}
+
+Return<void> RadioResponse::setPreferredVoicePrivacyResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getPreferredVoicePrivacyResponse(
+ const RadioResponseInfo& info, bool enable) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendCDMAFeatureCodeResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendBurstDtmfResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendCdmaSmsResponse(
+ const RadioResponseInfo& info, const SendSmsResult& sms) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeLastIncomingCdmaSmsResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getGsmBroadcastConfigResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<GsmBroadcastSmsConfigInfo>& configs) {
+ return Void();
+}
+
+Return<void> RadioResponse::setGsmBroadcastConfigResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setGsmBroadcastActivationResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaBroadcastConfigResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CdmaBroadcastSmsConfigInfo>& configs) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaBroadcastConfigResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaBroadcastActivationResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCDMASubscriptionResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& mdn,
+ const ::android::hardware::hidl_string& hSid, const ::android::hardware::hidl_string& hNid,
+ const ::android::hardware::hidl_string& min,
+ const ::android::hardware::hidl_string& prl) {
+ return Void();
+}
+
+Return<void> RadioResponse::writeSmsToRuimResponse(
+ const RadioResponseInfo& info, uint32_t index) {
+ return Void();
+}
+
+Return<void> RadioResponse::deleteSmsOnRuimResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDeviceIdentityResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& imei,
+ const ::android::hardware::hidl_string& imeisv, const ::android::hardware::hidl_string& esn,
+ const ::android::hardware::hidl_string& meid) {
+ return Void();
+}
+
+Return<void> RadioResponse::exitEmergencyCallbackModeResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getSmscAddressResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& smsc) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSmscAddressResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::reportSmsMemoryStatusResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::reportStkServiceIsRunningResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaSubscriptionSourceResponse(
+ const RadioResponseInfo& info, CdmaSubscriptionSource source) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestIsimAuthenticationResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& response) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeIncomingGsmSmsWithPduResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendEnvelopeWithStatusResponse(
+ const RadioResponseInfo& info, const IccIoResult& iccIo) {
+ return Void();
+}
+
+Return<void> RadioResponse::getVoiceRadioTechnologyResponse(
+ const RadioResponseInfo& info, RadioTechnology rat) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCellInfoListResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_vec<CellInfo>& cellInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCellInfoListRateResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setInitialAttachApnResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getImsRegistrationStateResponse(
+ const RadioResponseInfo& info, bool isRegistered, RadioTechnologyFamily ratFamily) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendImsSmsResponse(
+ const RadioResponseInfo& info, const SendSmsResult& sms) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccTransmitApduBasicChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccOpenLogicalChannelResponse(
+ const RadioResponseInfo& info, int32_t channelId,
+ const ::android::hardware::hidl_vec<int8_t>& selectResponse) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccCloseLogicalChannelResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccTransmitApduLogicalChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvReadItemResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& result) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvWriteItemResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvWriteCdmaPrlResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvResetConfigResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setUiccSubscriptionResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setDataAllowedResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getHardwareConfigResponse(
+ const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<HardwareConfig>& config) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestIccSimAuthenticationResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ return Void();
+}
+
+Return<void> RadioResponse::setDataProfileResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestShutdownResponse(const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::getRadioCapabilityResponse(
+ const RadioResponseInfo& info, const RadioCapability& rc) {
+ return Void();
+}
+
+Return<void> RadioResponse::setRadioCapabilityResponse(
+ const RadioResponseInfo& info, const RadioCapability& rc) {
+ return Void();
+}
+
+Return<void> RadioResponse::startLceServiceResponse(
+ const RadioResponseInfo& info, const LceStatusInfo& statusInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::stopLceServiceResponse(
+ const RadioResponseInfo& info, const LceStatusInfo& statusInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::pullLceDataResponse(
+ const RadioResponseInfo& info, const LceDataInfo& lceInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::getModemActivityInfoResponse(
+ const RadioResponseInfo& info, const ActivityStatsInfo& activityInfo) {
+ return Void();
+}
+
+Return<void> RadioResponse::setAllowedCarriersResponse(
+ const RadioResponseInfo& info, int32_t numAllowed) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAllowedCarriersResponse(
+ const RadioResponseInfo& info, bool allAllowed, const CarrierRestrictions& carriers) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendDeviceStateResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setIndicationFilterResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSimCardPowerResponse(
+ const RadioResponseInfo& info) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeRequest(int32_t serial) {
+ return Void();
+}
diff --git a/radio/Android.bp b/radio/Android.bp
index bbb3e4b..33f70eb 100644
--- a/radio/Android.bp
+++ b/radio/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "1.0/vts/functional",
]
diff --git a/renderscript/1.0/Android.bp b/renderscript/1.0/Android.bp
new file mode 100644
index 0000000..5ae7027
--- /dev/null
+++ b/renderscript/1.0/Android.bp
@@ -0,0 +1,175 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+genrule {
+ name: "android.hardware.renderscript@1.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.cpp",
+ "android/hardware/renderscript/1.0/ContextAll.cpp",
+ "android/hardware/renderscript/1.0/DeviceAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript@1.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.h",
+ "android/hardware/renderscript/1.0/IContext.h",
+ "android/hardware/renderscript/1.0/IHwContext.h",
+ "android/hardware/renderscript/1.0/BnHwContext.h",
+ "android/hardware/renderscript/1.0/BpHwContext.h",
+ "android/hardware/renderscript/1.0/BsContext.h",
+ "android/hardware/renderscript/1.0/IDevice.h",
+ "android/hardware/renderscript/1.0/IHwDevice.h",
+ "android/hardware/renderscript/1.0/BnHwDevice.h",
+ "android/hardware/renderscript/1.0/BpHwDevice.h",
+ "android/hardware/renderscript/1.0/BsDevice.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.renderscript@1.0",
+ generated_sources: ["android.hardware.renderscript@1.0_genc++"],
+ generated_headers: ["android.hardware.renderscript@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.renderscript@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript.vts.driver@1.0_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/renderscript/1.0/ $(genDir)/android/hardware/renderscript/1.0/",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.vts.cpp",
+ "android/hardware/renderscript/1.0/Context.vts.cpp",
+ "android/hardware/renderscript/1.0/Device.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript.vts.driver@1.0_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/renderscript/1.0/ $(genDir)/android/hardware/renderscript/1.0/",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.vts.h",
+ "android/hardware/renderscript/1.0/Context.vts.h",
+ "android/hardware/renderscript/1.0/Device.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.renderscript.vts.driver@1.0",
+ generated_sources: ["android.hardware.renderscript.vts.driver@1.0_genc++"],
+ generated_headers: ["android.hardware.renderscript.vts.driver@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.renderscript.vts.driver@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "libvts_common",
+ "libvts_datatype",
+ "libvts_measurement",
+ "libvts_multidevice_proto",
+ "libcamera_metadata",
+ "libprotobuf-cpp-full",
+ "android.hidl.base@1.0",
+ "android.hardware.renderscript@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript@1.0-vts.profiler_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/renderscript/1.0/ $(genDir)/android/hardware/renderscript/1.0/",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.vts.cpp",
+ "android/hardware/renderscript/1.0/Context.vts.cpp",
+ "android/hardware/renderscript/1.0/Device.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript@1.0-vts.profiler_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/renderscript/1.0/ $(genDir)/android/hardware/renderscript/1.0/",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.vts.h",
+ "android/hardware/renderscript/1.0/Context.vts.h",
+ "android/hardware/renderscript/1.0/Device.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.renderscript@1.0-vts.profiler",
+ generated_sources: ["android.hardware.renderscript@1.0-vts.profiler_genc++"],
+ generated_headers: ["android.hardware.renderscript@1.0-vts.profiler_genc++_headers"],
+ export_generated_headers: ["android.hardware.renderscript@1.0-vts.profiler_genc++_headers"],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libvts_profiling",
+ "libvts_multidevice_proto",
+ "libprotobuf-cpp-full",
+ "android.hidl.base@1.0",
+ "android.hardware.renderscript@1.0",
+ ],
+}
diff --git a/renderscript/1.0/Android.mk b/renderscript/1.0/Android.mk
new file mode 100644
index 0000000..3a7babd
--- /dev/null
+++ b/renderscript/1.0/Android.mk
@@ -0,0 +1,41 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.renderscript@1.0-java-constants
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(local-generated-sources-dir)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+#
+GEN := $(intermediates)/android/hardware/renderscript/V1_0/Constants.java
+$(GEN): $(HIDL)
+$(GEN): $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/IContext.hal
+$(GEN): $(LOCAL_PATH)/IDevice.hal
+
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava-constants \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.renderscript@1.0
+
+$(GEN):
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+# Avoid dependency cycle of framework.jar -> this-library -> framework.jar
+LOCAL_NO_STANDARD_LIBRARIES := true
+LOCAL_JAVA_LIBRARIES := core-oj
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/renderscript/1.0/IContext.hal b/renderscript/1.0/IContext.hal
new file mode 100644
index 0000000..2e386d2
--- /dev/null
+++ b/renderscript/1.0/IContext.hal
@@ -0,0 +1,1177 @@
+/*
+ * Copyright (C) 2017 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.renderscript@1.0;
+
+import android.hardware.renderscript@1.0::types;
+
+// TODO: is there any way to keep this documentation in sync with the
+// corresponding Java doc?
+//
+// TODO: Some of the documentation was taken from Java docs, whereas others were
+// undocumented. Because of this, there's somewhat two different styles of
+// comments. Look into having a consistent convention.
+//
+// TODO: There was some confusion as to why some paramters use vec<> and others
+// use Ptr/Size. The convention is that vec<> is used whenever the paramter is
+// only an input parameter. HIDL is not supposed to include any output
+// parameters, so a more explicit Ptr/Size is used.
+
+interface IContext {
+
+ /*
+ * TODO: Do we need to define "selectors"? It may be a property of the
+ * "adapted allocation" that's returned.
+ *
+ * Creates an arbitrary window into the base allocation. The type describes
+ * the shape of the window. Any dimensions present in the type must be
+ * equal to or smaller than the dimensions in the source allocation. A
+ * dimension present in the allocation that is not present in the type must
+ * be constrained away with the selectors. If a dimension is present in
+ * both the type and allocation, one of two things must happen. If the type
+ * is smaller than the allocation, a window must be created, the selected
+ * value in the adapter for that dimension must act as the base address,
+ * and the type must describe the size of the view starting at that point.
+ * If the type and allocation dimension are of the same size, then setting
+ * the selector for the dimension must be an error.
+ *
+ * @param type Type describing data layout
+ * @param baseAlloc Allocation
+ * @return subAlloc AllocationAdapter
+ */
+ @callflow(next={"*"})
+ allocationAdapterCreate(Type type, Allocation baseAlloc)
+ generates (AllocationAdapter subAlloc);
+
+ /*
+ * TODO: Need to relate "offset" back to the terminology in
+ * allocationAdapterCreate() -- the latter uses the terms "selector" and
+ * "selected value". Can we use consistent terminology? Are "offset" and
+ * "selector" actually two different things?
+ *
+ * TODO: Explain the flattened layout in the offsets vec
+ *
+ * Sets the offsets for an Allocation Adapter.
+ *
+ * @param alloc AllocationAdapter
+ * @param offsets Collection of offsets
+ */
+ @callflow(next={"*"})
+ allocationAdapterOffset(AllocationAdapter alloc, vec<uint32_t> offsets);
+
+ /*
+ * TODO: add more explanation here.
+ *
+ * Returns the Type of the Allocation.
+ *
+ * @param allocation Allocation
+ * @return type Allocation's Type
+ */
+ @callflow(next={"*"})
+ allocationGetType(Allocation allocation) generates (Type type);
+
+ /*
+ * TODO: more clarification needed describing if the pointer can be aliased
+ * or if the data can outlive the allocation.
+ *
+ * Creates an Allocation for use by scripts with a given Type and a backing
+ * pointer. For use with ALLOCATION_USAGE_SHARED.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior for
+ * the allocation
+ * @param usage Bit field specifying how the Allocation is utilized
+ * @param ptr Pointer to client-side data
+ * @return allocation Created Allocation
+ */
+ @callflow(next={"*"})
+ allocationCreateTyped(Type type, AllocationMipmapControl mips,
+ bitfield<AllocationUsageType> usage, Ptr ptr)
+ generates (Allocation allocation);
+
+ /*
+ * Creates an Allocation from a Bitmap.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior for
+ * the allocation
+ * @param bitmap Bitmap source for the allocation data
+ * @param usage Bit field specifying how the Allocation is utilized
+ * @return allocation Created Allocation containing bitmap data
+ */
+ @callflow(next={"*"})
+ allocationCreateFromBitmap(Type type, AllocationMipmapControl mips,
+ vec<uint8_t> bitmap,
+ bitfield<AllocationUsageType> usage)
+ generates (Allocation allocation);
+
+ /*
+ * Creates a Cubemapped Allocation from a Bitmap.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior
+ * for the allocation
+ * @param bitmap Bitmap with cubemap faces layed out in the following
+ * format: right, left, top, bottom, front, back
+ * @param usage Bit field specifying how the Allocation is used
+ * @return allocation Created Allocation containing cubemap data
+ */
+ @callflow(next={"*"})
+ allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl mips,
+ vec<uint8_t> bitmap,
+ bitfield<AllocationUsageType> usage)
+ generates (Allocation allocation);
+
+ /*
+ * Returns the handle to a raw buffer that is being managed by the screen
+ * compositor. This operation is only valid for Allocations with
+ * USAGE_IO_INPUT.
+ *
+ * @param allocation Allocation
+ * @return nativeWindow NativeWindow object associated with allocation
+ */
+ @callflow(next={"*"})
+ allocationGetNativeWindow(Allocation allocation)
+ generates (NativeWindow nativeWindow);
+
+ /*
+ * TODO: more clarification needed
+ *
+ * Sets the NativeWindow of an Allocation. This operation is only valid
+ * for Allocations with USAGE_IO_INPUT.
+ *
+ * @param allocation Allocation to be modified
+ * @pram nativeWindow NativeWindow to associate with allocation
+ */
+ @callflow(next={"*"})
+ allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow);
+
+ /*
+ * Initialize BufferQueue with specified max number of buffers.
+ *
+ * @param alloc Allocation
+ * @param numBuffer Maximum number of buffers
+ */
+ @callflow(next={"*"})
+ allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer);
+
+ /*
+ * TODO: clearly define baseAlloc vs subAlloc
+ *
+ * Shares the BufferQueue with another Allocation. Both must be
+ * USAGE_IO_INPUT Allocations.
+ *
+ * @param baseAlloc Base Allocation
+ * @param subAlloc Allocation to use the same buffer queue as the Base
+ * Allocation
+ */
+ @callflow(next={"*"})
+ allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc);
+
+ /*
+ * Copies from the Allocation into a Bitmap. The bitmap must match the
+ * dimensions of the Allocation.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes);
+
+ /*
+ * TODO: should we consolidate all [123]DWrite functions or [123]DRead
+ * functions into the same API call? Our current plan is to be very similar
+ * to the dispatch table API. How much should we deviate from the original
+ * API?
+ * TODO: better description on Vec3/Vec4 and padding.
+ *
+ * Copies data into a 1D region of this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: count * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param offset The offset of the first element to be copied
+ * @param lod Selected mipmap level of detail
+ * @param count Number of elements to be copied
+ * @param data Source data to be copied to Allocation
+ */
+ @callflow(next={"*"})
+ allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod,
+ uint32_t count, vec<uint8_t> data);
+
+ /*
+ * Copies a value into a single sub-Element of this Allocation.
+ *
+ * @param allocation Allocation to be updated
+ * @param x X position of the first element in the Allocation to be updated
+ * @param y Y position of the first element in the Allocation to be
+ * updated; for a 1D Allocation, this value must be 0
+ * @param z Z position of the first element in the Allocation to be
+ * updated; for a 1D or 2D Allocation, this value must be 0
+ * @param lod Selected mipmap level of detail
+ * @param data Data to be copied from
+ * @param compIdx Component number to identify which sub-Element is updated
+ */
+ @callflow(next={"*"})
+ allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y,
+ uint32_t z, uint32_t lod, vec<uint8_t> data,
+ Size compIdx);
+
+ /*
+ * Copies from an array into a rectangular region in this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: w * h * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param lod Selected mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data Data to be placed into the Allocation
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t lod, AllocationCubemapFace face, uint32_t w,
+ uint32_t h, vec<uint8_t> data, Size stride);
+
+ /*
+ * Copies from an array into a 3D region in this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: w * h * d * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param zoff Z offset of the region to update in this Allocation
+ * @param lod Selected mipmap level of detail
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param d Depth of the region to update
+ * @param data Data to be placed in the Allocation
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h,
+ uint32_t d, vec<uint8_t> data, Size stride);
+
+ /*
+ * Generates a mipmap chain. This is only valid if the Type of the
+ * Allocation includes mipmaps.
+ *
+ * This function generates a complete set of mipmaps from the top level
+ * LOD.
+ *
+ * If the Allocation is also using other memory spaces, a call to
+ * allocationSyncAll(context, allocation, usage) is required.
+ *
+ * @param allocation Allocation which has its top LOD read and lower LOD
+ * written to
+ */
+ @callflow(next={"*"})
+ allocationGenerateMipmaps(Allocation allocation);
+
+ /*
+ * Copies all of an Allocation's data into an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocationRead(Allocation allocation, Ptr data, Size sizeBytes);
+
+ /*
+ * Copies a 1D region of this Allocation into an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: count * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the first element to be copied
+ * @param lod Mipmap level of detail
+ * @param count The number of elements to be copied
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod,
+ uint32_t count, Ptr data, Size sizeBytes);
+
+ /*
+ * Returns the value of a single sub-Element of this Allocation.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param x X position of the first element in the Allocation to be read
+ * @param y Y position of the first element in the Allocation to be read
+ * @param z Z position of the first element in the Allocation to be read
+ * @param lod Mipmap level of detail
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param compIdx Component number to identify which sub-Element is updated
+ */
+ @callflow(next={"*"})
+ allocationElementRead(Allocation allocation, uint32_t x, uint32_t y,
+ uint32_t z, uint32_t lod, Ptr data, Size sizeBytes,
+ Size compIdx);
+
+ /*
+ * Copies from a rectangular region in this Allocation to an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: w * h * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the region to copy in this array
+ * @param yoff Y offset of the region to copy in this array
+ * @param lod Mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param w Width of the region to copy
+ * @param h Height of the region to copy
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t lod, AllocationCubemapFace face, uint32_t w,
+ uint32_t h, Ptr data, Size sizeBytes, Size stride);
+
+ /*
+ * Copies from a rectangular cuboid region in this Allocation to an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: w * h * d * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the region to copy in this array
+ * @param yoff Y offset of the region to copy in this array
+ * @param zoff Z offset of the region to copy in this array
+ * @param lod Mipmap level of detail
+ * @param w Width of the region to copy
+ * @param h Height of the region to copy
+ * @param d Depth of the region to copy
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h,
+ uint32_t d, Ptr data, Size sizeBytes, Size stride);
+
+ /*
+ * Propagates changes from one usage of the Allocation to the other usages
+ * of the Allocation.
+ *
+ * @param allocation First usage of the Allocation
+ * @param usageType Allocation usage type
+ */
+ @callflow(next={"*"})
+ allocationSyncAll(Allocation allocation, AllocationUsageType usageType);
+
+ /*
+ * TODO: describe the functionality of resize1D better
+ * TODO: original Java Doc description seems to contradict itself ("with
+ * null contents and the region is otherwise undefined")
+ * TODO: should "new elements" be "new cells"?
+ * TODO: what does "objects are created" mean?
+ * TODO: what does "new dimension" mean? IS the type of the resized
+ * allocation different than the type before resizing?
+ *
+ * Resizes a 1D allocation. The contents of the allocation are preserved.
+ * If new elements are allocated, objects are created with null contents
+ * and the new region is otherwise undefined.
+ *
+ * If the new region is smaller, the references of any object outside the
+ * new region must be released.
+ *
+ * A new type must be created with the new dimension.
+ *
+ * @param allocation Allocation to be resized
+ * @param dimX New size along the x dimension of the Allocation
+ */
+ @callflow(next={"*"})
+ allocationResize1D(Allocation allocation, uint32_t dimX);
+
+ /*
+ * TODO: There are allocationCopy2DRange and 3DRange, but no 1DRange. Should
+ * the interface be cleaned up more?
+ *
+ * Copies a rectangular region from an Allocation into a rectangular region
+ * in this Allocation.
+ *
+ * @param dstAlloc Allocation to be updated
+ * @param dstXoff X offset of the region to update
+ * @param dstYoff Y offset of the region to update
+ * @param dstMip Selected mipmap level of the Allocation to update
+ * @param dstFace Destination AllocationCubemapFace
+ * @param width Width of the region to update
+ * @param height Height of the region to update
+ * @param srcAlloc Source Allocation, to be read
+ * @param srcXoff X offset of the region in the source Allocation
+ * @param srcYoff Y offset of the region in the source Allocation
+ * @param srcMip Selected mipmap level of the source Allocation
+ * @param srcFace Source AllocationCubemapFace
+ */
+ @callflow(next={"*"})
+ allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff,
+ uint32_t dstYoff, uint32_t dstMip,
+ AllocationCubemapFace dstFace, uint32_t width,
+ uint32_t height, Allocation srcAlloc,
+ uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip,
+ AllocationCubemapFace srcFace);
+
+ /*
+ * Copies a rectangular cuboid region into the allocation from another
+ * Allocation.
+ *
+ * @param dstAlloc Allocation to be updated
+ * @param dstXoff X offset of the region to update
+ * @param dstYoff Y offset of the region to update
+ * @param dstZoff Z offset of the region to update
+ * @param dstMip Selected mipmap level of the Allocation to update
+ * @param width Width of the region to update
+ * @param height Height of the region to update
+ * @param depth Depth of the region to update
+ * @param srcAlloc Source Allocation, to be read
+ * @param srcXoff Source X offset of the region in the source Allocation
+ * @param srcYoff Source Y offset of the region in the source Allocation
+ * @param srcZoff Source Z offset of the region in the souce Allocation
+ * @param srcMip Selected mipmap level of the Allocation to read
+ */
+ @callflow(next={"*"})
+ allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff,
+ uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip,
+ uint32_t width, uint32_t height, uint32_t depth,
+ Allocation srcAlloc, uint32_t srcXoff,
+ uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip);
+
+ /*
+ * TODO: define buffer and output stream
+ *
+ * Sends a buffer to the output stream. The contents of the Allocation may
+ * be undefined after this operation. This operation is only valid if
+ * USAGE_IO_OUTPUT is set on the Allocation.
+ *
+ * @param allocation Allocation to be sent
+ */
+ @callflow(next={"*"})
+ allocationIoSend(Allocation allocation);
+
+ /*
+ * Receives the latest input into the Allocation. This operation is only
+ * valid if USAGE_IO_INPUT is set on the Allocation, otherwise an error
+ * must be reported and no operations may be executed.
+ *
+ * @param allocation Allocation to be updated
+ */
+ @callflow(next={"*"})
+ allocationIoReceive(Allocation allocation);
+
+ /*
+ * TODO: describe default values for lod, face, and z better.
+ * TODO: what cases can invalidate the pointer? Resize? It should be
+ * clarified that this method should always return a valid pointer, but the
+ * returned pointer might become invalid later.
+ *
+ * Retrieves the pointer to the actual data an Allocation contains as well
+ * as the data's stride.
+ *
+ * If Allocation lacks the corresponding dimension for lod, face, or z, an
+ * error message must be sent to the message queue and nullptr must be
+ * returned for dataPtr and 0 for stride. All missing values must be 0 or
+ * NONE in the corresponding enum.
+ *
+ * @param allocation Allocation
+ * @param lod Mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param z Z position
+ * @return pointer Pointer to the server-side data; if this points to an
+ * invalid location in memory (because the buffer was
+ * freed), this may result in undefined behavior
+ * @return stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocationGetPointer(Allocation allocation, uint32_t lod,
+ AllocationCubemapFace face, uint32_t z)
+ generates (Ptr dataPtr, Size stride);
+
+ /*
+ * Retrieves an Element's metadata from native code.
+ *
+ * @param element Element to be read
+ * @return elemData Element data
+ */
+ @callflow(next={"*"})
+ elementGetNativeMetadata(Element element)
+ generates (vec<uint32_t> elemData);
+
+ /*
+ * TODO: define Sub-Element handles better.
+ *
+ * Retrieves an Element's sub Elements, specifically their identifiers,
+ * names, and sizes.
+ *
+ * @param element Element to be read
+ * @param numSubElem Number of sub-Elements
+ * @return ids Sub-Element handles
+ * @return names Sub-Element Names
+ * @return arraySizes Sizes of sub-Element arrays
+ */
+ @callflow(next={"*"})
+ elementGetSubElements(Element element, Size numSubElem)
+ generates (vec<Element> ids, vec<string> names,
+ vec<Size> arraySizes);
+
+ /*
+ * TODO: can normalization flag be removed?
+ *
+ * Creates an Element.
+ *
+ * @param dt Data type
+ * @param dk Data kind
+ * @param norm Flag for normalization
+ * @param size Vector length, with scalar = 1
+ * @return element Created Element
+ */
+ @callflow(next={"*"})
+ elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size)
+ generates (Element element);
+
+ /*
+ * Creates a complex Element.
+ *
+ * @param einsPtr Container of input Elements
+ * @param namesPtr Container of input names
+ * @param arraySizesPtr Container of array sizes
+ * @return element Created Element
+ */
+ @callflow(next={"*"})
+ elementComplexCreate(vec<Element> einsPtr, vec<string> names,
+ vec<Size> arraySizesPtr)
+ generates (Element element);
+
+ /*
+ * Retrives a Type's metadata from native code.
+ *
+ * @param type Type describing data layout
+ * @return metadata Type's native metadata
+ */
+ @callflow(next={"*"})
+ typeGetNativeMetadata(Type type) generates (vec<OpaqueHandle> metadata);
+
+ /*
+ * Creates a new Type.
+ *
+ * If Type is 1D, Y and Z must be 0. If Type is 2D, Z must be 0.
+ *
+ * @param element Element of the Type
+ * @param dimX X dimension
+ * @param dimY Y dimension
+ * @param dimZ Z dimension
+ * @param mipmaps Flag indicating whether Type has mipmaps
+ * @param faces Flag indicating whether Type has faces
+ * @param yuv Enumeration specifying which type of YUV format, if any, Type
+ * uses
+ * @return type Created Type
+ */
+ @callflow(next={"*"})
+ typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ,
+ bool mipmaps, bool faces, YuvFormat yuv)
+ generates (Type type);
+
+ /*
+ * Destroys provided RenderScript context, including all objects created in
+ * this context.
+ */
+ @exit
+ contextDestroy();
+
+ /*
+ * TODO: provide overview of messaging model and figure out if this should
+ * be part of HAL or not.
+ * TODO: what is the "client" for purposes of this interface?
+ * TODO: consider using send/receive to be more similar to other calls
+ * TODO: define the purpose of size more
+ *
+ * Fills the provided buffer with message data. "size" should be at least
+ * as large as the message size. Returns the MessageType and size of the
+ * message are returned.
+ *
+ * @param data A pointer to a buffer to be filled with a message
+ * @param size Size in bytes of the buffer pointed to by "data"
+ * @return messageType Type of message sent to the client
+ * @return receiveLen Length of the message in bytes
+ */
+ @callflow(next={"*"})
+ contextGetMessage(Ptr data, Size size)
+ generates (MessageToClientType messageType, Size receiveLen);
+
+ /*
+ * TODO: define subID better.
+ *
+ * Gets the metadata of a message to ensure entire message can be properly
+ * received. Can be used to determine size of data to allocate when calling
+ * contextGetMessage.
+ *
+ * @return messageType Type of message sent to the client
+ * @return receiveLen Length of message
+ * @return subID Message sub identifier
+ */
+ @callflow(next={"*"})
+ contextPeekMessage()
+ generates (MessageToClientType messageType, Size receiveLen,
+ uint32_t subID);
+
+ /*
+ * TODO: Define "previous commands" better
+ * TODO: Is the message identifier the same as subID?
+ *
+ * Places a message into the message queue to be sent back to the message
+ * handler once all previous commands have been executed. The message data
+ * is copied into the queue and can be discarded by the client after this
+ * call.
+ *
+ * @param id Message identifier
+ * @param data Message data
+ */
+ @callflow(next={"*"})
+ contextSendMessage(uint32_t id, vec<uint8_t> data);
+
+ /*
+ * TODO: Can this be done automatically as part of context creation? What
+ * happens if we perform message operations before doing this?
+ *
+ * Initializes the messaging thread, so that the front-end API can receive
+ * messages from the driver. This call also waits for the messaging FIFO to
+ * start up.
+ */
+ @callflow(next={"*"})
+ contextInitToClient();
+
+ /*
+ * TODO: Why doesn't this happen automatically as part of context
+ * destruction? What happens if the FIFO is not empty?
+ *
+ * Deinitializes a the messaging thread. Shuts down the FIFO.
+ */
+ @callflow(next={"*"})
+ contextDeinitToClient();
+
+ /*
+ * TODO: do we need to mark asynchronous operations in this interface
+ * definition?
+ *
+ * Waits for any pending asynchronous operations (such as copies to a RS
+ * allocation or RS script executions) to complete.
+ */
+ @callflow(next={"*"})
+ contextFinish();
+
+ /*
+ * Prints the currently available debugging information about the state of
+ * the RS context to the logcat.
+ */
+ @callflow(next={"*"})
+ contextLog();
+
+ /*
+ * TODO: full path? relative path? Investigate further.
+ *
+ * Sets the cache directory of the context.
+ *
+ * @param cacheDir Name of the application's cache directory
+ */
+ @callflow(next={"*"})
+ contextSetCacheDir(string cacheDir);
+
+ /*
+ * TODO: does this apply to the GPU as well?
+ *
+ * Changes the priority of the cpu worker threads for this context.
+ *
+ * @param priority Priority of the thread
+ */
+ @callflow(next={"*"})
+ contextSetPriority(ThreadPriorities priority);
+
+ /*
+ * TODO: does this need to be part of the HAL? What if the object already
+ * has a name?
+ *
+ * Assigns a name to a base object.
+ *
+ * @param obj Object to be named
+ * @param name Assigned name
+ */
+ @callflow(next={"*"})
+ assignName(ObjectBase obj, string name);
+
+ /*
+ * TODO: what if the object has no name?
+ *
+ * Returns the name of an object.
+ *
+ * @param obj Object to be read
+ * @return name Name of the object
+ */
+ @callflow(next={"*"})
+ getName(ObjectBase obj) generates (string name);
+
+ /*
+ * TODO: starting here we have a set of interfaces for use with
+ * ScriptGroups. At the very least we should indicate for each one that's
+ * what it's for. Should we include ScriptGroup in the interface names?
+ * TODO: sweep whole file and remove prefix "v" from all parameter names
+ * TODO: there are some places where we use Size for size, and others where
+ * we use int32_t. Is there a reason it's int32_t? In some cases, it
+ * requires a negative value.
+ *
+ * Creates a Closure which represents a function call to a ForEach Kernel
+ * combined with arguments and values for global variables.
+ *
+ * @param kernelID Kernel identifier
+ * @param returnValue Allocation used in output of Closure
+ * @param fieldIDS Collection of Script's Field identifiers
+ * @param values Collection of Script's data values
+ * @param sizes Collection of Script's data sizes
+ * @param depClosures Collection of Closures
+ * @param depFieldIDS Collection of Script's dependent Field identifiers
+ * @return closure Created Closure
+ */
+ @callflow(next={"*"})
+ closureCreate(ScriptKernelID kernelID, Allocation returnValue,
+ vec<ScriptFieldID> fieldIDS, vec<int64_t> values,
+ vec<int32_t> sizes, vec<Closure> depClosures,
+ vec<ScriptFieldID> depFieldIDS)
+ generates (Closure closure);
+
+ /*
+ * Creates a Closure which represents a function call to a invocable
+ * function, combined with arguments and values for global variables.
+ *
+ * @param invokeID Invokable function identifier
+ * @param params Collection of Invoke script parameters
+ * @param fieldIDS Collection of Script Field identifiers
+ * @param values Collection of values
+ * @param sizes Collection of sizes
+ * @return closure Created Closure
+ */
+ @callflow(next={"*"})
+ invokeClosureCreate(ScriptInvokeID invokeID, vec<uint8_t> params,
+ vec<ScriptFieldID> fieldIDS, vec<int64_t> values,
+ vec<int32_t> sizes)
+ generates (Closure closure);
+
+ /*
+ * Sets the argument of a Closure at specified index and size to provided
+ * value.
+ *
+ * @param closure Closure to be modified
+ * @param index Index
+ * @param value Value
+ * @param size Size
+ */
+ @callflow(next={"*"})
+ closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size);
+
+ /*
+ * Sets a global variable in a Closure.
+ *
+ * @param closure Closure
+ * @param fieldID Global's Field identifier
+ * @param value Value
+ * @param size Size
+ */
+ @callflow(next={"*"})
+ closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value,
+ int32_t size);
+
+ /*
+ * TODO: should slot be unsigned? (applies to other two ID interfaces, too)
+ *
+ * Creates a Script Kernel ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @param sig Bitfield describing Kernel signature and operation
+ * @return scriptKernelID Script's Kernel identifier
+ */
+ @callflow(next={"*"})
+ scriptKernelIDCreate(Script script, int32_t slot,
+ bitfield<MetadataSignatureBitval> sig)
+ generates (ScriptKernelID scriptKernelID);
+
+ /*
+ * Creates a Script Invoke ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @return scriptInvokeID Invoke Script's identifier
+ */
+ @callflow(next={"*"})
+ scriptInvokeIDCreate(Script script, int32_t slot)
+ generates (ScriptInvokeID scriptInvokeID);
+
+ /*
+ * TODO: describe the return value better. What is it?
+ *
+ * Creates a Script Field ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @return scriptFieldID Script's Field identifier
+ */
+ @callflow(next={"*"})
+ scriptFieldIDCreate(Script script, int32_t slot)
+ generates (ScriptFieldID scriptFieldID);
+
+ /*
+ * TODO: add more description
+ *
+ * Creates a Script Group.
+ *
+ * @param kernels Collection of Scripts' Kernel identifiers
+ * @param srcK Source Kernel identifiers
+ * @param dstK Destination Kernel identifiers
+ * @param dstF Destination Script Field identifiers
+ * @param types Collection of Types describing data layout
+ * @return scriptGroup Created Script Group
+ */
+ @callflow(next={"*"})
+ scriptGroupCreate(vec<ScriptKernelID> kernels, vec<ScriptKernelID> srcK,
+ vec<ScriptKernelID> dstK, vec<ScriptFieldID> dstF,
+ vec<Type> types)
+ generates (ScriptGroup scriptGroup);
+
+ /*
+ * Creates a Script Group.
+ *
+ * @param name Name
+ * @param cacheDir Cache directory
+ * @param closures Collection of Closures
+ * @return scriptGroup2 Created Script Group
+ */
+ @callflow(next={"*"})
+ scriptGroup2Create(string name, string cacheDir, vec<Closure> closures)
+ generates (ScriptGroup2 scriptGroup2);
+
+ /*
+ * TODO: if SetInput/Output corresponds to the Java API setInput() and
+ * setOutput(), which are documented as deprecated in API 23, do we need to
+ * support them? Or can we fallback to the CPU when they're used? Or can't
+ * we tell whether they're used early enough to do fallback?
+ *
+ * Sets an output of the ScriptGroup. This specifies an Allocation to be
+ * used for the kernels that require an output Allocation visible after the
+ * ScriptGroup is executed.
+ *
+ * @param sg Script Group
+ * @param kid Script's Kernel identifier to be changed
+ * @param alloc Allocation to be filled by output
+ */
+ @callflow(next={"*"})
+ scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc);
+
+ /*
+ * Sets an input of the Script Group. This specifies an Allocation to be
+ * used for kernels that require an input Allocation provided from outside
+ * of the Script Group.
+ *
+ * @param sg Script Group
+ * @param kid Script's Kernel identifier to be changed
+ * @param alloc Allocation to be read as input
+ */
+ @callflow(next={"*"})
+ scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc);
+
+ /*
+ * Executes a Script Group.
+ *
+ * @param sg Script Group to be executed.
+ */
+ @callflow(next={"*"})
+ scriptGroupExecute( ScriptGroup sg);
+
+ /*
+ * Frees any native resources associated with this object. The primary use
+ * is to force immediate cleanup of resources when it is believed the GC
+ * may not respond quickly enough.
+ *
+ * @param handle Opaque handle to the server-side object to be destroyed
+ */
+ @callflow(next={"*"})
+ objDestroy(ObjectBase obj);
+
+ /*
+ * Creates a Sampler.
+ *
+ * @param magFilter Magnification value for the filter
+ * @param minFilter Minification value for the filter
+ * @param wrapS S wrapping mode for the sampler
+ * @param wrapT T wrapping mode for the sampler
+ * @param wrapR R wrapping mode for the sampler
+ * @param aniso Anisotropy setting for the sampler
+ * @return sampler Created Sampler
+ */
+ @callflow(next={"*"})
+ samplerCreate(SamplerValue magFilter, SamplerValue minFilter,
+ SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR,
+ float aniso)
+ generates (Sampler sampler);
+
+ /*
+ * Binds an Allocation to a global pointer in the Script.
+ *
+ * @param script Script to be bound to
+ * @param allocation Allocation to be bound
+ * @param slot Slot of a global variable
+ */
+ @callflow(next={"*"})
+ scriptBindAllocation(Script script, Allocation allocation, uint32_t slot);
+
+ /*
+ * TODO: is this necessary?
+ *
+ * Sets the timezone of a Script.
+ *
+ * @param script Script to be altered
+ * @param timeZone Time Zone value as text
+ */
+ @callflow(next={"*"})
+ scriptSetTimeZone(Script script, string timeZone);
+
+ /*
+ * TODO: can scriptInvoke be combined with scriptInvokeV?
+ *
+ * Launches an invokable function.
+ *
+ * @param vs Script to be invoked
+ * @param slot Slot of invokable function
+ */
+ @callflow(next={"*"})
+ scriptInvoke(Script vs, uint32_t slot);
+
+ /*
+ * Invokes a Script with values.
+ *
+ * @param vs Script to be invoked
+ * @param slot Slot
+ * @param data Data buffer of packed arguments
+ */
+ @callflow(next={"*"})
+ scriptInvokeV(Script vs, uint32_t slot, vec<uint8_t> data);
+
+ /*
+ * TODO: add documentation for params
+ * TODO: Should we rename "ScriptCall" to "LaunchOptions"?
+ *
+ * Launches a ForEach kernel.
+ *
+ * @param vs Script
+ * @param slot Slot of ForEach Kernel
+ * @param vains Collection of input Allocations or null
+ * @param vaout Output Allocation or null
+ * @param params Collection of parameters
+ * @param sc Pointer to a ScriptCall, nullptr if unused
+ */
+ @callflow(next={"*"})
+ scriptForEach(Script vs, uint32_t slot, vec<Allocation> vains,
+ Allocation vaout, vec<uint8_t> params, Ptr sc);
+
+ /*
+ * Launches a Reduction kernel.
+ *
+ * @param vs Script
+ * @param slot Slot of Reduction Kernel
+ * @param vains Collection of input Allocations
+ * @param vaout Output Allocation
+ * @param sc Pointer to a ScriptCall, nullptr if unused
+ */
+ @callflow(next={"*"})
+ scriptReduce(Script vs, uint32_t slot, vec<Allocation> vains,
+ Allocation vaout, Ptr sc);
+
+ /*
+ * Sets a Script's integer variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarI(Script vs, uint32_t slot, int32_t value);
+
+ /*
+ * Sets a Script's Object variable to a value
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param obj ObjectBase
+ */
+ @callflow(next={"*"})
+ scriptSetVarObj( Script vs, uint32_t slot, ObjectBase obj);
+
+ /*
+ * Sets a Script's long variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarJ(Script vs, uint32_t slot, int64_t value);
+
+ /*
+ * Sets a Script's float variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarF(Script vs, uint32_t slot, float value);
+
+ /*
+ * Sets a Script's double variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarD(Script vs, uint32_t slot, double value);
+
+ /*
+ * Sets a Script's struct variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param data Data to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarV(Script vs, uint32_t slot, vec<uint8_t> data);
+
+ /*
+ * TODO: Why do we have typed setters but only untyped getter?
+ *
+ * Retrieves the value from a global variable in a script.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be read
+ * @param len Size of data to be filled
+ * @return data Data to be updated
+ */
+ @callflow(next={"*"})
+ scriptGetVarV(Script vs, uint32_t slot, Size len)
+ generates (vec<uint8_t> data);
+
+ /*
+ * TODO: Is this a value to be replicated for each member of the array? Or
+ * is there a representation for each separate member?
+ *
+ * Sets the value of a global array of structs, given the Element and
+ * dimension.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param data Data
+ * @param ve Element
+ * @param dims Collection of dimensions
+ */
+ @callflow(next={"*"})
+ scriptSetVarVE(Script vs, uint32_t slot, vec<uint8_t> data, Element ve,
+ vec<uint32_t> dims);
+
+ /*
+ * TODO: is cacheDir redundant with createCache() function? Can we remove
+ * it?
+ * TODO: define resName more clearly
+ *
+ * Creates a RenderScript C99 kernel script.
+ *
+ * @param resName Resource name of the bitcode
+ * @param cacheDir Cache directory name
+ * @param text The kernel's bitcode as a uint8_t vector
+ * @return script Created Script
+ */
+ @callflow(next={"*"})
+ scriptCCreate(string resName, string cacheDir, vec<uint8_t> text)
+ generates (Script script);
+
+ /*
+ * Creates a RenderScript Intrinsic script.
+ *
+ * @param id Intrinsic Script identifier
+ * @param elem Element
+ * @return script Created Script
+ */
+ @callflow(next={"*"})
+ scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem)
+ generates (Script script);
+
+};
diff --git a/renderscript/1.0/IDevice.hal b/renderscript/1.0/IDevice.hal
new file mode 100644
index 0000000..7b1b866
--- /dev/null
+++ b/renderscript/1.0/IDevice.hal
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 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.renderscript@1.0;
+
+import android.hardware.renderscript@1.0::types;
+import IContext;
+
+interface IDevice {
+
+ /*
+ * Creates a RenderScript context.
+ *
+ * @param sdkVersion Target RS API level
+ * @param ct Context type
+ * @param flags Optional flags for this context
+ * @return context Created context
+ */
+ @entry
+ @callflow(next={"*"})
+ contextCreate(uint32_t sdkVersion, ContextType ct,
+ bitfield<ContextFlags> flags)
+ generates (IContext context);
+
+};
diff --git a/renderscript/1.0/default/Android.bp b/renderscript/1.0/default/Android.bp
new file mode 100644
index 0000000..348f6af
--- /dev/null
+++ b/renderscript/1.0/default/Android.bp
@@ -0,0 +1,22 @@
+cc_library_shared {
+ name: "android.hardware.renderscript@1.0-impl",
+ relative_install_path: "hw",
+ proprietary: true,
+ srcs: [
+ "Context.cpp",
+ "Device.cpp",
+ ],
+ include_dirs: [
+ "frameworks/rs",
+ ],
+ shared_libs: [
+ "libdl",
+ "liblog",
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.renderscript@1.0",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/renderscript/1.0/default/Context.cpp b/renderscript/1.0/default/Context.cpp
new file mode 100644
index 0000000..4e0964e
--- /dev/null
+++ b/renderscript/1.0/default/Context.cpp
@@ -0,0 +1,757 @@
+#define LOG_TAG "android.hardware.renderscript@1.0-impl"
+
+#include "Context.h"
+#include "Device.h"
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+
+Context::Context(uint32_t sdkVersion, ContextType ct, int32_t flags) {
+ RsDevice _dev = nullptr;
+ uint32_t _version = 0;
+ uint32_t _sdkVersion = sdkVersion;
+ RsContextType _ct = static_cast<RsContextType>(ct);
+ int32_t _flags = flags;
+ mContext = Device::getHal().ContextCreate(_dev, _version, _sdkVersion, _ct, _flags);
+}
+
+
+// Helper functions
+template<typename ReturnType>
+static ReturnType hidl_to_rs(OpaqueHandle src) {
+ return reinterpret_cast<ReturnType>(static_cast<uintptr_t>(src));
+}
+
+template<typename ReturnType, typename SourceType>
+static ReturnType hidl_to_rs(SourceType* src) {
+ return reinterpret_cast<ReturnType>(src);
+}
+
+template<typename RsType, typename HidlType, typename Operation>
+static std::vector<RsType> hidl_to_rs(const hidl_vec<HidlType>& src, Operation operation) {
+ std::vector<RsType> dst(src.size());
+ std::transform(src.begin(), src.end(), dst.begin(), operation);
+ return dst;
+}
+
+template<typename ReturnType, typename SourceType>
+static ReturnType rs_to_hidl(SourceType* src) {
+ return static_cast<ReturnType>(reinterpret_cast<uintptr_t>(src));
+}
+
+template<typename HidlType, typename RsType, typename Operation>
+static hidl_vec<HidlType> rs_to_hidl(const std::vector<RsType>& src, Operation operation) {
+ std::vector<HidlType> dst(src.size());
+ std::transform(src.begin(), src.end(), dst.begin(), operation);
+ return dst;
+}
+
+
+// Methods from ::android::hardware::renderscript::V1_0::IContext follow.
+
+Return<Allocation> Context::allocationAdapterCreate(Type type, Allocation baseAlloc) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
+ RsAllocation _subAlloc = Device::getHal().AllocationAdapterCreate(mContext, _type, _baseAlloc);
+ return rs_to_hidl<Allocation>(_subAlloc);
+}
+
+Return<void> Context::allocationAdapterOffset(Allocation alloc, const hidl_vec<uint32_t>& offsets) {
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ const hidl_vec<uint32_t>& _offsets = offsets;
+ Device::getHal().AllocationAdapterOffset(mContext, _alloc, _offsets.data(), _offsets.size());
+ return Void();
+}
+
+Return<Type> Context::allocationGetType(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ const void* _type = Device::getHal().AllocationGetType(mContext, _allocation);
+ return rs_to_hidl<Type>(_type);
+}
+
+Return<Allocation> Context::allocationCreateTyped(Type type, AllocationMipmapControl amips, int32_t usage, Ptr ptr) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ uint32_t _usage = usage;
+ uintptr_t _ptr = hidl_to_rs<uintptr_t>(ptr);
+ RsAllocation _allocation = Device::getHal().AllocationCreateTyped(mContext, _type, _amips, _usage, _ptr);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<Allocation> Context::allocationCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ const hidl_vec<uint8_t>& _bitmap = bitmap;
+ uint32_t _usage = usage;
+ RsAllocation _allocation = Device::getHal().AllocationCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<Allocation> Context::allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ const hidl_vec<uint8_t>& _bitmap = bitmap;
+ uint32_t _usage = usage;
+ RsAllocation _allocation = Device::getHal().AllocationCubeCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<NativeWindow> Context::allocationGetNativeWindow(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsNativeWindow _nativeWindow = Device::getHal().AllocationGetSurface(mContext, _allocation);
+ return rs_to_hidl<NativeWindow>(_nativeWindow);
+}
+
+Return<void> Context::allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsNativeWindow _nativewindow = hidl_to_rs<RsNativeWindow>(nativewindow);
+ Device::getHal().AllocationSetSurface(mContext, _allocation, _nativewindow);
+ return Void();
+}
+
+Return<void> Context::allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer) {
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ uint32_t _numBuffer = numBuffer;
+ Device::getHal().AllocationSetupBufferQueue(mContext, _alloc, _numBuffer);
+ return Void();
+}
+
+Return<void> Context::allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc) {
+ RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
+ RsAllocation _subAlloc = hidl_to_rs<RsAllocation>(subAlloc);
+ Device::getHal().AllocationShareBufferQueue(mContext, _baseAlloc, _subAlloc);
+ return Void();
+}
+
+Return<void> Context::allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().AllocationCopyToBitmap(mContext, _allocation, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod, uint32_t count, const hidl_vec<uint8_t>& data) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _offset = offset;
+ uint32_t _lod = lod;
+ uint32_t _count = count;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ Device::getHal().Allocation1DData(mContext, _allocation, _offset, _lod, _count, _dataPtr, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const hidl_vec<uint8_t>& data, Size compIdx) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _x = x;
+ uint32_t _y = y;
+ uint32_t _z = z;
+ uint32_t _lod = lod;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _compIdx = static_cast<size_t>(compIdx);
+ Device::getHal().AllocationElementData(mContext, _allocation, _x, _y, _z, _lod, _dataPtr, _sizeBytes, _compIdx);
+ return Void();
+}
+
+Return<void> Context::allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, const hidl_vec<uint8_t>& data, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _w = w;
+ uint32_t _h = h;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation2DData(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const hidl_vec<uint8_t>& data, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _zoff = zoff;
+ uint32_t _lod = lod;
+ uint32_t _w = w;
+ uint32_t _h = h;
+ uint32_t _d = d;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation3DData(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocationGenerateMipmaps(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationGenerateMipmaps(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationRead(Allocation allocation, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().AllocationRead(mContext, _allocation, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod, uint32_t count, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _lod = lod;
+ uint32_t _count = count;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().Allocation1DRead(mContext, _allocation, _xoff, _lod, _count, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocationElementRead(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, Ptr data, Size sizeBytes, Size compIdx) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _x = x;
+ uint32_t _y = y;
+ uint32_t _z = z;
+ uint32_t _lod = lod;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _compIdx = static_cast<size_t>(compIdx);
+ Device::getHal().AllocationElementRead(mContext, _allocation, _x, _y, _z, _lod, _data, _sizeBytes, _compIdx);
+ return Void();
+}
+
+Return<void> Context::allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, Ptr data, Size sizeBytes, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _w = w;
+ uint32_t _h = h;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation2DRead(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _data, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, Ptr data, Size sizeBytes, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _zoff = zoff;
+ uint32_t _lod = lod;
+ uint32_t _w = w;
+ uint32_t _h = h;
+ uint32_t _d = d;
+ void* _dataPtr = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation3DRead(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocationSyncAll(Allocation allocation, AllocationUsageType usageType) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsAllocationUsageType _usageType = static_cast<RsAllocationUsageType>(usageType);
+ Device::getHal().AllocationSyncAll(mContext, _allocation, _usageType);
+ return Void();
+}
+
+Return<void> Context::allocationResize1D(Allocation allocation, uint32_t dimX) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _dimX = dimX;
+ Device::getHal().AllocationResize1D(mContext, _allocation, _dimX);
+ return Void();
+}
+
+Return<void> Context::allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, AllocationCubemapFace dstFace, uint32_t width, uint32_t height, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, AllocationCubemapFace srcFace) {
+ RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
+ uint32_t _dstXoff = dstXoff;
+ uint32_t _dstYoff = dstYoff;
+ uint32_t _dstMip = dstMip;
+ RsAllocationCubemapFace _dstFace = static_cast<RsAllocationCubemapFace>(dstFace);
+ uint32_t _width = width;
+ uint32_t _height = height;
+ RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
+ uint32_t _srcXoff = srcXoff;
+ uint32_t _srcYoff = srcYoff;
+ uint32_t _srcMip = srcMip;
+ RsAllocationCubemapFace _srcFace = static_cast<RsAllocationCubemapFace>(srcFace);
+ Device::getHal().AllocationCopy2DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstMip, _dstFace, _width, _height, _srcAlloc, _srcXoff, _srcYoff, _srcMip, _srcFace);
+ return Void();
+}
+
+Return<void> Context::allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip, uint32_t width, uint32_t height, uint32_t depth, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip) {
+ RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
+ uint32_t _dstXoff = dstXoff;
+ uint32_t _dstYoff = dstYoff;
+ uint32_t _dstZoff = dstZoff;
+ uint32_t _dstMip = dstMip;
+ uint32_t _width = width;
+ uint32_t _height = height;
+ uint32_t _depth = depth;
+ RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
+ uint32_t _srcXoff = srcXoff;
+ uint32_t _srcYoff = srcYoff;
+ uint32_t _srcZoff = srcZoff;
+ uint32_t _srcMip = srcMip;
+ Device::getHal().AllocationCopy3DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstZoff, _dstMip, _width, _height, _depth, _srcAlloc, _srcXoff, _srcYoff, _srcZoff, _srcMip);
+ return Void();
+}
+
+Return<void> Context::allocationIoSend(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationIoSend(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationIoReceive(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationIoReceive(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationGetPointer(Allocation allocation, uint32_t lod, AllocationCubemapFace face, uint32_t z, allocationGetPointer_cb _hidl_cb) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _z = z;
+ uint32_t _array = 0;
+ size_t _stride = 0;
+ void* _dataPtr = Device::getHal().AllocationGetPointer(mContext, _allocation, _lod, _face, _z, _array, &_stride, sizeof(size_t));
+ Ptr dataPtr = reinterpret_cast<Ptr>(_dataPtr);
+ Size stride = static_cast<Size>(_stride);
+ _hidl_cb(dataPtr, stride);
+ return Void();
+}
+
+Return<void> Context::elementGetNativeMetadata(Element element, elementGetNativeMetadata_cb _hidl_cb) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ std::vector<uint32_t> _elemData(5);
+ Device::getHal().ElementGetNativeData(mContext, _element, _elemData.data(), _elemData.size());
+ hidl_vec<uint32_t> elemData = _elemData;
+ _hidl_cb(elemData);
+ return Void();
+}
+
+Return<void> Context::elementGetSubElements(Element element, Size numSubElem, elementGetSubElements_cb _hidl_cb) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ uint32_t _numSubElem = static_cast<uint32_t>(numSubElem);
+ std::vector<uintptr_t> _ids(_numSubElem);
+ std::vector<const char*> _names(_numSubElem);
+ std::vector<size_t> _arraySizes(_numSubElem);
+ Device::getHal().ElementGetSubElements(mContext, _element, _ids.data(), _names.data(), _arraySizes.data(), _numSubElem);
+ hidl_vec<Element> ids = rs_to_hidl<Element>(_ids, [](uintptr_t val) { return static_cast<Element>(val); });
+ hidl_vec<hidl_string> names = rs_to_hidl<hidl_string>(_names, [](const char* val) { return val; });
+ hidl_vec<Size> arraySizes = rs_to_hidl<Size>(_arraySizes, [](size_t val) { return static_cast<Size>(val); });
+ _hidl_cb(ids, names, arraySizes);
+ return Void();
+}
+
+Return<Element> Context::elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size) {
+ RsDataType _dt = static_cast<RsDataType>(dt);
+ RsDataKind _dk = static_cast<RsDataKind>(dk);
+ bool _norm = norm;
+ uint32_t _size = size;
+ RsElement _element = Device::getHal().ElementCreate(mContext, _dt, _dk, _norm, _size);
+ return rs_to_hidl<Element>(_element);
+}
+
+Return<Element> Context::elementComplexCreate(const hidl_vec<Element>& eins, const hidl_vec<hidl_string>& names, const hidl_vec<Size>& arraySizes) {
+ std::vector<RsElement> _eins = hidl_to_rs<RsElement>(eins, [](Element val) { return hidl_to_rs<RsElement>(val); });
+ std::vector<const char*> _namesPtr = hidl_to_rs<const char*>(names, [](const hidl_string& val) { return val.c_str(); });
+ std::vector<size_t> _nameLengthsPtr = hidl_to_rs<size_t>(names, [](const hidl_string& val) { return val.size(); });
+ std::vector<uint32_t> _arraySizes = hidl_to_rs<uint32_t>(arraySizes, [](Size val) { return static_cast<uint32_t>(val); });
+ RsElement _element = Device::getHal().ElementCreate2(mContext, _eins.data(), _eins.size(), _namesPtr.data(), _namesPtr.size(), _nameLengthsPtr.data(), _arraySizes.data(), _arraySizes.size());
+ return rs_to_hidl<Element>(_element);
+}
+
+Return<void> Context::typeGetNativeMetadata(Type type, typeGetNativeMetadata_cb _hidl_cb) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ std::vector<uintptr_t> _metadata(6);
+ Device::getHal().TypeGetNativeData(mContext, _type, _metadata.data(), _metadata.size());
+ hidl_vec<OpaqueHandle> metadata = rs_to_hidl<OpaqueHandle>(_metadata, [](uintptr_t val) { return static_cast<OpaqueHandle>(val); });
+ _hidl_cb(metadata);
+ return Void();
+}
+
+Return<Type> Context::typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, YuvFormat yuv) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ uint32_t _dimX = dimX;
+ uint32_t _dimY = dimY;
+ uint32_t _dimZ = dimZ;
+ bool _mipmaps = mipmaps;
+ bool _faces = faces;
+ RsYuvFormat _yuv = static_cast<RsYuvFormat>(yuv);
+ RsType _type = Device::getHal().TypeCreate(mContext, _element, _dimX, _dimY, _dimZ, _mipmaps, _faces, _yuv);
+ return rs_to_hidl<Type>(_type);
+}
+
+Return<void> Context::contextDestroy() {
+ Device::getHal().ContextDestroy(mContext);
+ mContext = nullptr;
+ return Void();
+}
+
+Return<void> Context::contextGetMessage(Ptr data, Size size, contextGetMessage_cb _hidl_cb) {
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _size = static_cast<size_t>(size);
+ size_t _receiveLen = 0;
+ uint32_t _subID = 0;
+ RsMessageToClientType _messageType = Device::getHal().ContextGetMessage(mContext, _data, _size, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
+ MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
+ Size receiveLen = static_cast<Size>(_receiveLen);
+ _hidl_cb(messageType, receiveLen);
+ return Void();
+}
+
+Return<void> Context::contextPeekMessage(contextPeekMessage_cb _hidl_cb) {
+ size_t _receiveLen = 0;
+ uint32_t _subID = 0;
+ RsMessageToClientType _messageType = Device::getHal().ContextPeekMessage(mContext, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
+ MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
+ Size receiveLen = static_cast<Size>(_receiveLen);
+ uint32_t subID = _subID;
+ _hidl_cb(messageType, receiveLen, subID);
+ return Void();
+}
+
+Return<void> Context::contextSendMessage(uint32_t id, const hidl_vec<uint8_t>& data) {
+ uint32_t _id = id;
+ const uint8_t* _dataPtr = data.data();
+ size_t _dataSize = data.size();
+ Device::getHal().ContextSendMessage(mContext, _id, _dataPtr, _dataSize);
+ return Void();
+}
+
+Return<void> Context::contextInitToClient() {
+ Device::getHal().ContextInitToClient(mContext);
+ return Void();
+}
+
+Return<void> Context::contextDeinitToClient() {
+ Device::getHal().ContextDeinitToClient(mContext);
+ return Void();
+}
+
+Return<void> Context::contextFinish() {
+ Device::getHal().ContextFinish(mContext);
+ return Void();
+}
+
+Return<void> Context::contextLog() {
+ uint32_t _bits = 0;
+ Device::getHal().ContextDump(mContext, _bits);
+ return Void();
+}
+
+Return<void> Context::contextSetPriority(ThreadPriorities priority) {
+ RsThreadPriorities _priority = static_cast<RsThreadPriorities>(priority);
+ Device::getHal().ContextSetPriority(mContext, _priority);
+ return Void();
+}
+
+Return<void> Context::contextSetCacheDir(const hidl_string& cacheDir) {
+ Device::getHal().ContextSetCacheDir(mContext, cacheDir.c_str(), cacheDir.size());
+ return Void();
+}
+
+Return<void> Context::assignName(ObjectBase obj, const hidl_string& name) {
+ RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
+ const hidl_string& _name = name;
+ Device::getHal().AssignName(mContext, _obj, _name.c_str(), _name.size());
+ return Void();
+}
+
+Return<void> Context::getName(ObjectBase obj, getName_cb _hidl_cb) {
+ void* _obj = hidl_to_rs<void*>(obj);
+ const char* _name = nullptr;
+ Device::getHal().GetName(mContext, _obj, &_name);
+ hidl_string name = _name;
+ _hidl_cb(name);
+ return Void();
+}
+
+Return<Closure> Context::closureCreate(ScriptKernelID kernelID, Allocation returnValue, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes, const hidl_vec<Closure>& depClosures, const hidl_vec<ScriptFieldID>& depFieldIDS) {
+ RsScriptKernelID _kernelID = hidl_to_rs<RsScriptKernelID>(kernelID);
+ RsAllocation _returnValue = hidl_to_rs<RsAllocation>(returnValue);
+ std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ int64_t* _valuesPtr = const_cast<int64_t*>(values.data());
+ size_t _valuesLength = values.size();
+ std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
+ std::vector<RsClosure> _depClosures = hidl_to_rs<RsClosure>(depClosures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
+ std::vector<RsScriptFieldID> _depFieldIDS = hidl_to_rs<RsScriptFieldID>(depFieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ RsClosure _closure = Device::getHal().ClosureCreate(mContext, _kernelID, _returnValue, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size(), _depClosures.data(), _depClosures.size(), _depFieldIDS.data(), _depFieldIDS.size());
+ return rs_to_hidl<Closure>(_closure);
+}
+
+Return<Closure> Context::invokeClosureCreate(ScriptInvokeID invokeID, const hidl_vec<uint8_t>& params, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes) {
+ RsScriptInvokeID _invokeID = hidl_to_rs<RsScriptInvokeID>(invokeID);
+ const void* _paramsPtr = params.data();
+ size_t _paramsSize = params.size();
+ std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ const int64_t* _valuesPtr = values.data();
+ size_t _valuesLength = values.size();
+ std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
+ RsClosure _closure = Device::getHal().InvokeClosureCreate(mContext, _invokeID, _paramsPtr, _paramsSize, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size());
+ return rs_to_hidl<Closure>(_closure);
+}
+
+Return<void> Context::closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size) {
+ RsClosure _closure = hidl_to_rs<RsClosure>(closure);
+ uint32_t _index = index;
+ uintptr_t _value = hidl_to_rs<uintptr_t>(value);
+ int _size = static_cast<int>(size);
+ Device::getHal().ClosureSetArg(mContext, _closure, _index, _value, _size);
+ return Void();
+}
+
+Return<void> Context::closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value, int32_t size) {
+ RsClosure _closure = hidl_to_rs<RsClosure>(closure);
+ RsScriptFieldID _fieldID = hidl_to_rs<RsScriptFieldID>(fieldID);
+ int64_t _value = value;
+ int _size = static_cast<int>(size);
+ Device::getHal().ClosureSetGlobal(mContext, _closure, _fieldID, _value, _size);
+ return Void();
+}
+
+Return<ScriptKernelID> Context::scriptKernelIDCreate(Script script, int32_t slot, int32_t sig) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ int _sig = static_cast<int>(sig);
+ RsScriptKernelID _scriptKernelID = Device::getHal().ScriptKernelIDCreate(mContext, _script, _slot, _sig);
+ return rs_to_hidl<ScriptKernelID>(_scriptKernelID);
+}
+
+Return<ScriptInvokeID> Context::scriptInvokeIDCreate(Script script, int32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ RsScriptInvokeID _scriptInvokeID = Device::getHal().ScriptInvokeIDCreate(mContext, _script, _slot);
+ return rs_to_hidl<ScriptInvokeID>(_scriptInvokeID);
+}
+
+Return<ScriptFieldID> Context::scriptFieldIDCreate(Script script, int32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ RsScriptFieldID _scriptFieldID = Device::getHal().ScriptFieldIDCreate(mContext, _script, _slot);
+ return rs_to_hidl<ScriptFieldID>(_scriptFieldID);
+}
+
+Return<ScriptGroup> Context::scriptGroupCreate(const hidl_vec<ScriptKernelID>& kernels, const hidl_vec<ScriptKernelID>& srcK, const hidl_vec<ScriptKernelID>& dstK, const hidl_vec<ScriptFieldID>& dstF, const hidl_vec<Type>& types) {
+ std::vector<RsScriptKernelID> _kernels = hidl_to_rs<RsScriptKernelID>(kernels, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptKernelID> _srcK = hidl_to_rs<RsScriptKernelID>(srcK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptKernelID> _dstK = hidl_to_rs<RsScriptKernelID>(dstK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptFieldID> _dstF = hidl_to_rs<RsScriptFieldID>(dstF, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ std::vector<RsType> _types = hidl_to_rs<RsType>(types, [](Type val) { return hidl_to_rs<RsType>(val); });
+ RsScriptGroup _scriptGroup = Device::getHal().ScriptGroupCreate(mContext, _kernels.data(), _kernels.size(), _srcK.data(), _srcK.size(), _dstK.data(), _dstK.size(), _dstF.data(), _dstF.size(), _types.data(), _types.size());
+ return rs_to_hidl<ScriptGroup>(_scriptGroup);
+}
+
+Return<ScriptGroup2> Context::scriptGroup2Create(const hidl_string& name, const hidl_string& cacheDir, const hidl_vec<Closure>& closures) {
+ const hidl_string& _name = name;
+ const hidl_string& _cacheDir = cacheDir;
+ std::vector<RsClosure> _closures = hidl_to_rs<RsClosure>(closures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
+ RsScriptGroup2 _scriptGroup2 = Device::getHal().ScriptGroup2Create(mContext, _name.c_str(), _name.size(), _cacheDir.c_str(), _cacheDir.size(), _closures.data(), _closures.size());
+ return rs_to_hidl<ScriptGroup2>(_scriptGroup2);
+}
+
+Return<void> Context::scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ Device::getHal().ScriptGroupSetOutput(mContext, _sg, _kid, _alloc);
+ return Void();
+}
+
+Return<void> Context::scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ Device::getHal().ScriptGroupSetInput(mContext, _sg, _kid, _alloc);
+ return Void();
+}
+
+Return<void> Context::scriptGroupExecute(ScriptGroup sg) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ Device::getHal().ScriptGroupExecute(mContext, _sg);
+ return Void();
+}
+
+Return<void> Context::objDestroy(ObjectBase obj) {
+ RsAsyncVoidPtr _obj = hidl_to_rs<RsAsyncVoidPtr>(obj);
+ Device::getHal().ObjDestroy(mContext, _obj);
+ return Void();
+}
+
+Return<Sampler> Context::samplerCreate(SamplerValue magFilter, SamplerValue minFilter, SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR, float aniso) {
+ RsSamplerValue _magFilter = static_cast<RsSamplerValue>(magFilter);
+ RsSamplerValue _minFilter = static_cast<RsSamplerValue>(minFilter);
+ RsSamplerValue _wrapS = static_cast<RsSamplerValue>(wrapS);
+ RsSamplerValue _wrapT = static_cast<RsSamplerValue>(wrapT);
+ RsSamplerValue _wrapR = static_cast<RsSamplerValue>(wrapR);
+ float _aniso = static_cast<float>(aniso);
+ RsSampler _sampler = Device::getHal().SamplerCreate(mContext, _magFilter, _minFilter, _wrapS, _wrapT, _wrapR, _aniso);
+ return rs_to_hidl<Sampler>(_sampler);
+}
+
+Return<void> Context::scriptBindAllocation(Script script, Allocation allocation, uint32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _slot = slot;
+ Device::getHal().ScriptBindAllocation(mContext, _script, _allocation, _slot);
+ return Void();
+}
+
+Return<void> Context::scriptSetTimeZone(Script script, const hidl_string& timeZone) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ const hidl_string& _timeZone = timeZone;
+ Device::getHal().ScriptSetTimeZone(mContext, _script, _timeZone.c_str(), _timeZone.size());
+ return Void();
+}
+
+Return<void> Context::scriptInvoke(Script vs, uint32_t slot) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ Device::getHal().ScriptInvoke(mContext, _vs, _slot);
+ return Void();
+}
+
+Return<void> Context::scriptInvokeV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ Device::getHal().ScriptInvokeV(mContext, _vs, _slot, _dataPtr, _len);
+ return Void();
+}
+
+Return<void> Context::scriptForEach(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, const hidl_vec<uint8_t>& params, Ptr sc) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
+ RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
+ const void* _paramsPtr = hidl_to_rs<const void*>(params.data());
+ size_t _paramLen = params.size();
+ const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
+ size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
+ Device::getHal().ScriptForEachMulti(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _paramsPtr, _paramLen, _sc, _scLen);
+ return Void();
+}
+
+Return<void> Context::scriptReduce(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, Ptr sc) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
+ RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
+ const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
+ size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
+ Device::getHal().ScriptReduce(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _sc, _scLen);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarI(Script vs, uint32_t slot, int32_t value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ int _value = static_cast<int>(value);
+ Device::getHal().ScriptSetVarI(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarObj(Script vs, uint32_t slot, ObjectBase obj) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
+ Device::getHal().ScriptSetVarObj(mContext, _vs, _slot, _obj);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarJ(Script vs, uint32_t slot, int64_t value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ int64_t _value = static_cast<int64_t>(value);
+ Device::getHal().ScriptSetVarJ(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarF(Script vs, uint32_t slot, float value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ float _value = value;
+ Device::getHal().ScriptSetVarF(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarD(Script vs, uint32_t slot, double value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ double _value = value;
+ Device::getHal().ScriptSetVarD(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ Device::getHal().ScriptSetVarV(mContext, _vs, _slot, _dataPtr, _len);
+ return Void();
+}
+
+Return<void> Context::scriptGetVarV(Script vs, uint32_t slot, Size len, scriptGetVarV_cb _hidl_cb) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ size_t _len = static_cast<size_t>(len);
+ std::vector<uint8_t> _data(static_cast<size_t>(len));
+ Device::getHal().ScriptGetVarV(mContext, _vs, _slot, _data.data(), _data.size());
+ hidl_vec<uint8_t> data = _data;
+ _hidl_cb(data);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarVE(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data, Element ve, const hidl_vec<uint32_t>& dims) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ RsElement _ve = hidl_to_rs<RsElement>(ve);
+ const uint32_t* _dimsPtr = dims.data();
+ size_t _dimLen = dims.size();
+ Device::getHal().ScriptSetVarVE(mContext, _vs, _slot, _dataPtr, _len, _ve, _dimsPtr, _dimLen);
+ return Void();
+}
+
+Return<Script> Context::scriptCCreate(const hidl_string& resName, const hidl_string& cacheDir, const hidl_vec<uint8_t>& text) {
+ const hidl_string& _resName = resName;
+ const hidl_string& _cacheDir = cacheDir;
+ const char* _textPtr = hidl_to_rs<const char*>(text.data());
+ size_t _textSize = text.size();
+ RsScript _script = Device::getHal().ScriptCCreate(mContext, _resName.c_str(), _resName.size(), _cacheDir.c_str(), _cacheDir.size(), _textPtr, _textSize);
+ return rs_to_hidl<Script>(_script);
+}
+
+Return<Script> Context::scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem) {
+ RsScriptIntrinsicID _id = static_cast<RsScriptIntrinsicID>(id);
+ RsElement _elem = hidl_to_rs<RsElement>(elem);
+ RsScript _script = Device::getHal().ScriptIntrinsicCreate(mContext, _id, _elem);
+ return rs_to_hidl<Script>(_script);
+}
+
+
+// Methods from ::android::hidl::base::V1_0::IBase follow.
+
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
diff --git a/renderscript/1.0/default/Context.h b/renderscript/1.0/default/Context.h
new file mode 100644
index 0000000..d8bfe4f
--- /dev/null
+++ b/renderscript/1.0/default/Context.h
@@ -0,0 +1,129 @@
+#ifndef ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
+#define ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
+
+#include "cpp/rsDispatch.h"
+#include "dlfcn.h"
+#include <android/hardware/renderscript/1.0/IContext.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::renderscript::V1_0::AllocationCubemapFace;
+using ::android::hardware::renderscript::V1_0::AllocationMipmapControl;
+using ::android::hardware::renderscript::V1_0::AllocationUsageType;
+using ::android::hardware::renderscript::V1_0::ContextType;
+using ::android::hardware::renderscript::V1_0::DataKind;
+using ::android::hardware::renderscript::V1_0::DataType;
+using ::android::hardware::renderscript::V1_0::IContext;
+using ::android::hardware::renderscript::V1_0::MessageToClientType;
+using ::android::hardware::renderscript::V1_0::SamplerValue;
+using ::android::hardware::renderscript::V1_0::ScriptCall;
+using ::android::hardware::renderscript::V1_0::ScriptIntrinsicID;
+using ::android::hardware::renderscript::V1_0::ThreadPriorities;
+using ::android::hardware::renderscript::V1_0::YuvFormat;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+struct Context : public IContext {
+ Context(uint32_t sdkVersion, ContextType ct, int32_t flags);
+
+ // Methods from ::android::hardware::renderscript::V1_0::IContext follow.
+ Return<Allocation> allocationAdapterCreate(Type type, Allocation baseAlloc) override;
+ Return<void> allocationAdapterOffset(Allocation alloc, const hidl_vec<uint32_t>& offsets) override;
+ Return<Type> allocationGetType(Allocation allocation) override;
+ Return<Allocation> allocationCreateTyped(Type type, AllocationMipmapControl amips, int32_t usage, Ptr ptr) override;
+ Return<Allocation> allocationCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) override;
+ Return<Allocation> allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) override;
+ Return<NativeWindow> allocationGetNativeWindow(Allocation allocation) override;
+ Return<void> allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow) override;
+ Return<void> allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer) override;
+ Return<void> allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc) override;
+ Return<void> allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes) override;
+ Return<void> allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod, uint32_t count, const hidl_vec<uint8_t>& data) override;
+ Return<void> allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const hidl_vec<uint8_t>& data, Size compIdx) override;
+ Return<void> allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, const hidl_vec<uint8_t>& data, Size stride) override;
+ Return<void> allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const hidl_vec<uint8_t>& data, Size stride) override;
+ Return<void> allocationGenerateMipmaps(Allocation allocation) override;
+ Return<void> allocationRead(Allocation allocation, Ptr data, Size sizeBytes) override;
+ Return<void> allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod, uint32_t count, Ptr data, Size sizeBytes) override;
+ Return<void> allocationElementRead(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, Ptr data, Size sizeBytes, Size compIdx) override;
+ Return<void> allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, Ptr data, Size sizeBytes, Size stride) override;
+ Return<void> allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, Ptr data, Size sizeBytes, Size stride) override;
+ Return<void> allocationSyncAll(Allocation allocation, AllocationUsageType usageType) override;
+ Return<void> allocationResize1D(Allocation allocation, uint32_t dimX) override;
+ Return<void> allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, AllocationCubemapFace dstFace, uint32_t width, uint32_t height, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, AllocationCubemapFace srcFace) override;
+ Return<void> allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip, uint32_t width, uint32_t height, uint32_t depth, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip) override;
+ Return<void> allocationIoSend(Allocation allocation) override;
+ Return<void> allocationIoReceive(Allocation allocation) override;
+ Return<void> allocationGetPointer(Allocation allocation, uint32_t lod, AllocationCubemapFace face, uint32_t z, allocationGetPointer_cb _hidl_cb) override;
+ Return<void> elementGetNativeMetadata(Element element, elementGetNativeMetadata_cb _hidl_cb) override;
+ Return<void> elementGetSubElements(Element element, Size numSubElem, elementGetSubElements_cb _hidl_cb) override;
+ Return<Element> elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size) override;
+ Return<Element> elementComplexCreate(const hidl_vec<Element>& eins, const hidl_vec<hidl_string>& names, const hidl_vec<Size>& arraySizes) override;
+ Return<void> typeGetNativeMetadata(Type type, typeGetNativeMetadata_cb _hidl_cb) override;
+ Return<Type> typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, YuvFormat yuv) override;
+ Return<void> contextDestroy() override;
+ Return<void> contextGetMessage(Ptr data, Size size, contextGetMessage_cb _hidl_cb) override;
+ Return<void> contextPeekMessage(contextPeekMessage_cb _hidl_cb) override;
+ Return<void> contextSendMessage(uint32_t id, const hidl_vec<uint8_t>& data) override;
+ Return<void> contextInitToClient() override;
+ Return<void> contextDeinitToClient() override;
+ Return<void> contextFinish() override;
+ Return<void> contextLog() override;
+ Return<void> contextSetPriority(ThreadPriorities priority) override;
+ Return<void> contextSetCacheDir(const hidl_string& cacheDir) override;
+ Return<void> assignName(ObjectBase obj, const hidl_string& name) override;
+ Return<void> getName(ObjectBase obj, getName_cb _hidl_cb) override;
+ Return<Closure> closureCreate(ScriptKernelID kernelID, Allocation returnValue, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes, const hidl_vec<Closure>& depClosures, const hidl_vec<ScriptFieldID>& depFieldIDS) override;
+ Return<Closure> invokeClosureCreate(ScriptInvokeID invokeID, const hidl_vec<uint8_t>& params, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes) override;
+ Return<void> closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size) override;
+ Return<void> closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value, int32_t size) override;
+ Return<ScriptKernelID> scriptKernelIDCreate(Script script, int32_t slot, int32_t sig) override;
+ Return<ScriptInvokeID> scriptInvokeIDCreate(Script script, int32_t slot) override;
+ Return<ScriptFieldID> scriptFieldIDCreate(Script script, int32_t slot) override;
+ Return<ScriptGroup> scriptGroupCreate(const hidl_vec<ScriptKernelID>& kernels, const hidl_vec<ScriptKernelID>& srcK, const hidl_vec<ScriptKernelID>& dstK, const hidl_vec<ScriptFieldID>& dstF, const hidl_vec<Type>& types) override;
+ Return<ScriptGroup2> scriptGroup2Create(const hidl_string& name, const hidl_string& cacheDir, const hidl_vec<Closure>& closures) override;
+ Return<void> scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) override;
+ Return<void> scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) override;
+ Return<void> scriptGroupExecute(ScriptGroup sg) override;
+ Return<void> objDestroy(ObjectBase obj) override;
+ Return<Sampler> samplerCreate(SamplerValue magFilter, SamplerValue minFilter, SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR, float aniso) override;
+ Return<void> scriptBindAllocation(Script script, Allocation allocation, uint32_t slot) override;
+ Return<void> scriptSetTimeZone(Script script, const hidl_string& timeZone) override;
+ Return<void> scriptInvoke(Script vs, uint32_t slot) override;
+ Return<void> scriptInvokeV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) override;
+ Return<void> scriptForEach(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, const hidl_vec<uint8_t>& params, Ptr sc) override;
+ Return<void> scriptReduce(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, Ptr sc) override;
+ Return<void> scriptSetVarI(Script vs, uint32_t slot, int32_t value) override;
+ Return<void> scriptSetVarObj(Script vs, uint32_t slot, ObjectBase obj) override;
+ Return<void> scriptSetVarJ(Script vs, uint32_t slot, int64_t value) override;
+ Return<void> scriptSetVarF(Script vs, uint32_t slot, float value) override;
+ Return<void> scriptSetVarD(Script vs, uint32_t slot, double value) override;
+ Return<void> scriptSetVarV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) override;
+ Return<void> scriptGetVarV(Script vs, uint32_t slot, Size len, scriptGetVarV_cb _hidl_cb) override;
+ Return<void> scriptSetVarVE(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data, Element ve, const hidl_vec<uint32_t>& dims) override;
+ Return<Script> scriptCCreate(const hidl_string& resName, const hidl_string& cacheDir, const hidl_vec<uint8_t>& text) override;
+ Return<Script> scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem) override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+
+ private:
+ RsContext mContext;
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
diff --git a/renderscript/1.0/default/Device.cpp b/renderscript/1.0/default/Device.cpp
new file mode 100644
index 0000000..86cf8eb
--- /dev/null
+++ b/renderscript/1.0/default/Device.cpp
@@ -0,0 +1,139 @@
+#include "Context.h"
+#include "Device.h"
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+
+static dispatchTable loadHAL();
+dispatchTable Device::mDispatchHal = loadHAL();
+
+Device::Device() {
+}
+
+dispatchTable& Device::getHal() {
+ return mDispatchHal;
+}
+
+
+// Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
+
+Return<sp<IContext>> Device::contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) {
+ return new Context(sdkVersion, ct, flags);
+}
+
+
+// Methods from ::android::hidl::base::V1_0::IBase follow.
+
+IDevice* HIDL_FETCH_IDevice(const char* /* name */) {
+ return new Device();
+}
+
+// Helper function
+dispatchTable loadHAL() {
+
+ static_assert(sizeof(void*) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(void*) > sizeof(uint64_t)");
+ static_assert(sizeof(size_t) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(size_t) > sizeof(uint64_t)");
+
+ const char* filename = "libRS_internal.so";
+ void* handle = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+
+ dispatchTable dispatchHal = {
+ .SetNativeLibDir = (SetNativeLibDirFnPtr)nullptr,
+
+ .Allocation1DData = (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData"),
+ .Allocation1DElementData = (Allocation1DElementDataFnPtr)nullptr,
+ .Allocation1DRead = (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead"),
+ .Allocation2DData = (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData"),
+ .Allocation2DRead = (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead"),
+ .Allocation3DData = (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData"),
+ .Allocation3DRead = (Allocation3DReadFnPtr)dlsym(handle, "rsAllocation3DRead"),
+ .AllocationAdapterCreate = (AllocationAdapterCreateFnPtr)dlsym(handle, "rsAllocationAdapterCreate"),
+ .AllocationAdapterOffset = (AllocationAdapterOffsetFnPtr)dlsym(handle, "rsAllocationAdapterOffset"),
+ .AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(handle, "rsAllocationCopy2DRange"),
+ .AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(handle, "rsAllocationCopy3DRange"),
+ .AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(handle, "rsAllocationCopyToBitmap"),
+ .AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCreateFromBitmap"),
+ .AllocationCreateStrided = (AllocationCreateStridedFnPtr)dlsym(handle, "rsAllocationCreateStrided"),
+ .AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(handle, "rsAllocationCreateTyped"),
+ .AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCubeCreateFromBitmap"),
+ .AllocationElementData = (AllocationElementDataFnPtr)dlsym(handle, "rsAllocationElementData"),
+ .AllocationElementRead = (AllocationElementReadFnPtr)dlsym(handle, "rsAllocationElementRead"),
+ .AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(handle, "rsAllocationGenerateMipmaps"),
+ .AllocationGetPointer = (AllocationGetPointerFnPtr)dlsym(handle, "rsAllocationGetPointer"),
+ .AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface"),
+ .AllocationGetType = (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType"),
+ .AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive"),
+ .AllocationIoSend = (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend"),
+ .AllocationRead = (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead"),
+ .AllocationResize1D = (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D"),
+ .AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface"),
+ .AllocationSetupBufferQueue = (AllocationSetupBufferQueueFnPtr)dlsym(handle, "rsAllocationSetupBufferQueue"),
+ .AllocationShareBufferQueue = (AllocationShareBufferQueueFnPtr)dlsym(handle, "rsAllocationShareBufferQueue"),
+ .AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll"),
+ .AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName"),
+ .ClosureCreate = (ClosureCreateFnPtr)dlsym(handle, "rsClosureCreate"),
+ .ClosureSetArg = (ClosureSetArgFnPtr)dlsym(handle, "rsClosureSetArg"),
+ .ClosureSetGlobal = (ClosureSetGlobalFnPtr)dlsym(handle, "rsClosureSetGlobal"),
+ .ContextCreate = (ContextCreateFnPtr)dlsym(handle, "rsContextCreate"),
+ .ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(handle, "rsContextDeinitToClient"),
+ .ContextDestroy = (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy"),
+ .ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump"),
+ .ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish"),
+ .ContextGetMessage = (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage"),
+ .ContextInitToClient = (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient"),
+ .ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage"),
+ .ContextSendMessage = (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage"),
+ .ContextSetCacheDir = (ContextSetCacheDirFnPtr)dlsym(handle, "rsContextSetCacheDir"),
+ .ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority"),
+ .DeviceCreate = (DeviceCreateFnPtr)nullptr,
+ .DeviceDestroy = (DeviceDestroyFnPtr)nullptr,
+ .DeviceSetConfig = (DeviceSetConfigFnPtr)nullptr,
+ .ElementCreate2 = (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2"),
+ .ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate"),
+ .ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData"),
+ .ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(handle, "rsaElementGetSubElements"),
+ .GetName = (GetNameFnPtr)dlsym(handle, "rsaGetName"),
+ .InvokeClosureCreate = (InvokeClosureCreateFnPtr)dlsym(handle, "rsInvokeClosureCreate"),
+ .ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy"),
+ .SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate"),
+ .ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation"),
+ .ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate"),
+ .ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate"),
+ .ScriptForEach = (ScriptForEachFnPtr)nullptr,
+ .ScriptForEachMulti = (ScriptForEachMultiFnPtr)dlsym(handle, "rsScriptForEachMulti"),
+ .ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV"),
+ .ScriptGroup2Create = (ScriptGroup2CreateFnPtr)dlsym(handle, "rsScriptGroup2Create"),
+ .ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate"),
+ .ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute"),
+ .ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput"),
+ .ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput"),
+ .ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(handle, "rsScriptIntrinsicCreate"),
+ .ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke"),
+ .ScriptInvokeIDCreate = (ScriptInvokeIDCreateFnPtr)dlsym(handle, "rsScriptInvokeIDCreate"),
+ .ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV"),
+ .ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate"),
+ .ScriptReduce = (ScriptReduceFnPtr)dlsym(handle, "rsScriptReduce"),
+ .ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone"),
+ .ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD"),
+ .ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF"),
+ .ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI"),
+ .ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ"),
+ .ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj"),
+ .ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE"),
+ .ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV"),
+ .TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate"),
+ .TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData"),
+ };
+
+ return dispatchHal;
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
diff --git a/renderscript/1.0/default/Device.h b/renderscript/1.0/default/Device.h
new file mode 100644
index 0000000..f5bda37
--- /dev/null
+++ b/renderscript/1.0/default/Device.h
@@ -0,0 +1,44 @@
+#ifndef ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
+#define ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
+
+#include "cpp/rsDispatch.h"
+#include "dlfcn.h"
+#include <android/hardware/renderscript/1.0/IDevice.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::renderscript::V1_0::ContextType;
+using ::android::hardware::renderscript::V1_0::IContext;
+using ::android::hardware::renderscript::V1_0::IDevice;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::Return;
+using ::android::sp;
+
+struct Device : public IDevice {
+ Device();
+ static dispatchTable& getHal();
+
+ // Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
+ Return<sp<IContext>> contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+
+ private:
+ static dispatchTable mDispatchHal;
+};
+
+extern "C" IDevice* HIDL_FETCH_IDevice(const char* name);
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
diff --git a/renderscript/1.0/types.hal b/renderscript/1.0/types.hal
new file mode 100644
index 0000000..7c32188
--- /dev/null
+++ b/renderscript/1.0/types.hal
@@ -0,0 +1,253 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+// TODO: Currently, most of the types are simply typedefs of uint64_t, so
+// misusing one type as another won't be caught by the compiler. Should we wrap
+// each type in a unique class to have stronger type guarantees?
+// TODO: is there an enum for intrinsics?
+
+package android.hardware.renderscript@1.0;
+
+// OpaqueHandle is an object that is used entirely in the driver but still needs
+// to be identified by the framework.
+typedef uint64_t OpaqueHandle;
+
+// A pointer is an actual local pointer that can be accessed by both the
+// framework and the driver. This is possible because RenderScript is always
+// running in Passthrough mode.
+typedef pointer Ptr;
+
+// This is an abstraction of size_t because it is not supported in HIDL.
+typedef uint64_t Size;
+
+// In RenderScript code, these are all defined as void*, but act only as
+// handles.
+typedef OpaqueHandle Allocation;
+typedef OpaqueHandle AllocationAdapter;
+typedef OpaqueHandle Closure;
+typedef OpaqueHandle Element;
+typedef OpaqueHandle NativeWindow;
+typedef OpaqueHandle ObjectBase;
+typedef OpaqueHandle Sampler;
+typedef OpaqueHandle Script;
+typedef OpaqueHandle ScriptFieldID;
+typedef OpaqueHandle ScriptGroup;
+typedef OpaqueHandle ScriptGroup2;
+typedef OpaqueHandle ScriptInvokeID;
+typedef OpaqueHandle ScriptKernelID;
+typedef OpaqueHandle Type;
+
+// types below are same as those in frameworks/rs/rsDefines.h
+
+@export(name="RsContextType", value_prefix="RS_CONTEXT_TYPE_")
+enum ContextType : int32_t {
+ NORMAL,
+ DEBUG,
+ PROFILE,
+};
+
+@export(name="RsAllocationUsageType", value_prefix="RS_ALLOCATION_USAGE_")
+enum AllocationUsageType : int32_t {
+ SCRIPT = 0x0001,
+ GRAPHICS_TEXTURE = 0x0002,
+ GRAPHICS_VERTEX = 0x0004,
+ GRAPHICS_CONSTANTS = 0x0008,
+ GRAPHICS_RENDER_TARGET = 0x0010,
+ IO_INPUT = 0x0020,
+ IO_OUTPUT = 0x0040,
+ SHARED = 0x0080,
+ OEM = 0x8000,
+ ALL = 0x80FF,
+};
+
+@export(name="RsAllocationMipmapControl", value_prefix="RS_ALLOCATION_MIPMAP_")
+enum AllocationMipmapControl : int32_t {
+ NONE = 0,
+ FULL = 1,
+ ON_SYNC_TO_TEXTURE = 2,
+};
+
+@export(name="RsAllocationCubemapFace",
+ value_prefix="RS_ALLOCATION_CUBEMAP_FACE_")
+enum AllocationCubemapFace : int32_t {
+ POSITIVE_X = 0,
+ NEGATIVE_X = 1,
+ POSITIVE_Y = 2,
+ NEGATIVE_Y = 3,
+ POSITIVE_Z = 4,
+ NEGATIVE_Z = 5,
+};
+
+@export(name="RsDataType", value_prefix="RS_TYPE_")
+enum DataType : int32_t {
+ NONE = 0,
+ FLOAT_16,
+ FLOAT_32,
+ FLOAT_64,
+ SIGNED_8,
+ SIGNED_16,
+ SIGNED_32,
+ SIGNED_64,
+ UNSIGNED_8,
+ UNSIGNED_16,
+ UNSIGNED_32,
+ UNSIGNED_64,
+ BOOLEAN,
+ UNSIGNED_5_6_5,
+ UNSIGNED_5_5_5_1,
+ UNSIGNED_4_4_4_4,
+ MATRIX_4X4,
+ MATRIX_3X3,
+ MATRIX_2X2,
+ ELEMENT = 1000,
+ TYPE,
+ ALLOCATION,
+ SAMPLER,
+ SCRIPT,
+ MESH,
+ PROGRAM_FRAGMENT,
+ PROGRAM_VERTEX,
+ PROGRAM_RASTER,
+ PROGRAM_STORE,
+ FONT,
+ INVALID = 10000,
+};
+
+@export(name="RsDataKind", value_prefix="RS_KIND_")
+enum DataKind : int32_t {
+ USER,
+ PIXEL_L = 7,
+ PIXEL_A,
+ PIXEL_LA,
+ PIXEL_RGB,
+ PIXEL_RGBA,
+ PIXEL_DEPTH,
+ PIXEL_YUV,
+ INVALID = 100,
+};
+
+@export(name="RsYuvFormat", value_prefix="RS_")
+enum YuvFormat : int32_t {
+ YUV_NONE = 0,
+ YUV_YV12 = 0x32315659, // HAL_PIXEL_FORMAT_YV12 in system/graphics.h
+ YUV_NV21 = 0x11, // HAL_PIXEL_FORMAT_YCrCb_420_SP
+ YUV_420_888 = 0x23, // HAL_PIXEL_FORMAT_YCbCr_420_888
+};
+
+@export(name="RsSamplerValue", value_prefix="RS_SAMPLER_")
+enum SamplerValue : int32_t {
+ NEAREST,
+ LINEAR,
+ LINEAR_MIP_LINEAR,
+ WRAP,
+ CLAMP,
+ LINEAR_MIP_NEAREST,
+ MIRRORED_REPEAT,
+ INVALID = 100,
+};
+
+@export(name="RsForEachStrategy", value_prefix="RS_FOR_EACH_STRATEGY_")
+enum ForEachStrategy : int32_t {
+ SERIAL = 0,
+ DONT_CARE = 1,
+ DST_LINEAR = 2,
+ TILE_SMALL = 3,
+ TILE_MEDIUM = 4,
+ TILE_LARGE = 5,
+};
+
+// Script to Script
+@export(name="RsScriptCall")
+struct ScriptCall {
+ ForEachStrategy strategy;
+ uint32_t xStart;
+ uint32_t xEnd;
+ uint32_t yStart;
+ uint32_t yEnd;
+ uint32_t zStart;
+ uint32_t zEnd;
+ uint32_t arrayStart;
+ uint32_t arrayEnd;
+ uint32_t array2Start;
+ uint32_t array2End;
+ uint32_t array3Start;
+ uint32_t array3End;
+ uint32_t array4Start;
+ uint32_t array4End;
+};
+
+@export(name="RsContextFlags", value_prefix="RS_CONTEXT_")
+enum ContextFlags : int32_t {
+ SYNCHRONOUS = 1<<0,
+ LOW_LATENCY = 1<<1,
+ LOW_POWER = 1<<2,
+ WAIT_FOR_ATTACH = 1<<3,
+};
+
+// types below are same as those in frameworks/rs/rsInternalDefines.h
+
+@export(name="RsMessageToClientType", value_prefix="RS_MESSAGE_TO_CLIENT_")
+enum MessageToClientType : int32_t {
+ NONE = 0,
+ EXCEPTION = 1,
+ RESIZE = 2,
+ ERROR = 3,
+ USER = 4,
+ NEW_BUFFER = 5,
+};
+
+@export(name="RsScriptIntrinsicID", value_prefix="RS_SCRIPT_INTRINSIC_")
+enum ScriptIntrinsicID : int32_t {
+ ID_UNDEFINED = 0,
+ ID_CONVOLVE_3X3 = 1,
+ ID_COLOR_MATRIX = 2,
+ ID_LUT = 3,
+ ID_CONVOLVE_5X5 = 4,
+ ID_BLUR = 5,
+ ID_YUV_TO_RGB = 6,
+ ID_BLEND = 7,
+ ID_3DLUT = 8,
+ ID_HISTOGRAM = 9,
+ // unused 10, 11
+ ID_RESIZE = 12,
+ ID_BLAS = 13,
+ ID_EXTBLAS = 14,
+ ID_OEM_START = 0x10000000,
+};
+
+@export(name="RsThreadPriorities", value_prefix="RS_THREAD_PRIORITY_")
+enum ThreadPriorities : int32_t {
+ LOW = 15,
+ NORMAL_GRAPHICS = -8,
+ NORMAL = -1,
+ LOW_LATENCY = -4,
+};
+
+// types below are same as those in
+// frameworks/compile/libbcc/include/bcinfo/MetadataExtractor.h
+
+@export(name="", value_prefix="RS_MD_")
+enum MetadataSignatureBitval : int32_t {
+ SIG_None = 0,
+ SIG_In = 1<<0,
+ SIG_Out = 1<<1,
+ SIG_Usr = 1<<2,
+ SIG_X = 1<<3,
+ SIG_Y = 1<<4,
+ SIG_Kernel = 1<<5,
+ SIG_Z = 1<<6,
+ SIG_Ctxt = 1<<7,
+};
diff --git a/automotive/vehicle/Android.bp b/renderscript/Android.bp
similarity index 66%
rename from automotive/vehicle/Android.bp
rename to renderscript/Android.bp
index c12cd4f..ba90f2c 100644
--- a/automotive/vehicle/Android.bp
+++ b/renderscript/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
- "2.0",
+ "1.0",
+ "1.0/default",
]
diff --git a/sensors/1.0/Android.bp b/sensors/1.0/Android.bp
index 1ddb50c..8357dbe 100644
--- a/sensors/1.0/Android.bp
+++ b/sensors/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0",
srcs: [
- "types.hal",
- "ISensors.hal",
+ ":android.hardware.sensors@1.0_hal",
],
out: [
"android/hardware/sensors/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0",
srcs: [
- "types.hal",
- "ISensors.hal",
+ ":android.hardware.sensors@1.0_hal",
],
out: [
"android/hardware/sensors/1.0/types.h",
diff --git a/sensors/1.0/Android.mk b/sensors/1.0/Android.mk
index 5784916..29f7c7e 100644
--- a/sensors/1.0/Android.mk
+++ b/sensors/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.sensors@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/sensors/1.0/default/Android.bp b/sensors/1.0/default/Android.bp
index 994febe..3930504 100644
--- a/sensors/1.0/default/Android.bp
+++ b/sensors/1.0/default/Android.bp
@@ -1,5 +1,6 @@
cc_library_shared {
name: "android.hardware.sensors@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Sensors.cpp"],
shared_libs: [
diff --git a/sensors/1.0/default/Android.mk b/sensors/1.0/default/Android.mk
index f37c3cb..6a1aab4 100644
--- a/sensors/1.0/default/Android.mk
+++ b/sensors/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.sensors@1.0-service
LOCAL_INIT_RC := android.hardware.sensors@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/sensors/1.0/default/android.hardware.sensors@1.0-service.rc b/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
index 2cba0fc..2360863 100644
--- a/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
+++ b/sensors/1.0/default/android.hardware.sensors@1.0-service.rc
@@ -1,4 +1,4 @@
-service sensors-hal-1-0 /system/bin/hw/android.hardware.sensors@1.0-service
+service sensors-hal-1-0 /vendor/bin/hw/android.hardware.sensors@1.0-service
class main
user system
group system readproc
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index acff6ca..748a963 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -25,8 +25,8 @@
namespace implementation {
void convertFromSensor(const sensor_t &src, SensorInfo *dst) {
- dst->name = src.name;
- dst->vendor = src.vendor;
+ dst->name = src.name == nullptr ? "" : src.name;
+ dst->vendor = src.vendor == nullptr ? "" : src.vendor;
dst->version = src.version;
dst->sensorHandle = src.handle;
dst->type = (SensorType)src.type;
@@ -36,8 +36,8 @@
dst->minDelay = src.minDelay;
dst->fifoReservedEventCount = src.fifoReservedEventCount;
dst->fifoMaxEventCount = src.fifoMaxEventCount;
- dst->typeAsString = src.stringType;
- dst->requiredPermission = src.requiredPermission;
+ dst->typeAsString = src.stringType == nullptr ? "" : src.stringType;
+ dst->requiredPermission = src.requiredPermission == nullptr ? "" : src.requiredPermission;
dst->maxDelay = src.maxDelay;
dst->flags = src.flags;
}
@@ -75,6 +75,10 @@
case SensorType::META_DATA:
{
dst->u.meta.what = (MetaDataEventType)src.meta_data.what;
+ // Legacy HALs contain the handle reference in the meta data field.
+ // Copy that over to the handle of the event. In legacy HALs this
+ // field was expected to be 0.
+ dst->sensorHandle = src.meta_data.sensor;
break;
}
@@ -212,8 +216,12 @@
switch (src.sensorType) {
case SensorType::META_DATA:
{
+ // Legacy HALs expect the handle reference in the meta data field.
+ // Copy it over from the handle of the event.
dst->meta_data.what = (int32_t)src.u.meta.what;
- dst->meta_data.sensor = dst->sensor;
+ dst->meta_data.sensor = src.sensorHandle;
+ // Set the sensor handle to 0 to maintain compatibility.
+ dst->sensor = 0;
break;
}
diff --git a/sensors/1.0/default/service.cpp b/sensors/1.0/default/service.cpp
index 5bcfe4b..65f6d81 100644
--- a/sensors/1.0/default/service.cpp
+++ b/sensors/1.0/default/service.cpp
@@ -23,5 +23,9 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<ISensors>();
+ /* Sensors framework service needs at least two threads.
+ * One thread blocks on a "poll"
+ * The second thread is needed for all other HAL methods.
+ */
+ return defaultPassthroughServiceImplementation<ISensors>(2);
}
diff --git a/sensors/1.0/vts/Sensors.vts b/sensors/1.0/vts/Sensors.vts
index 9e90755..558c36d 100644
--- a/sensors/1.0/vts/Sensors.vts
+++ b/sensors/1.0/vts/Sensors.vts
@@ -5,6 +5,7 @@
package: "android.hardware.sensors"
import: "android.hardware.sensors@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/sensors/1.0/vts/types.vts b/sensors/1.0/vts/types.vts
index 1b48916..bc87823 100644
--- a/sensors/1.0/vts/types.vts
+++ b/sensors/1.0/vts/types.vts
@@ -374,6 +374,7 @@
struct_value: {
name: "flags"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
}
}
@@ -546,8 +547,8 @@
struct_value: {
name: "uuid"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -652,8 +653,8 @@
union_value: {
name: "data_int32"
type: TYPE_ARRAY
+ vector_size: 14
vector_value: {
- vector_size: 14
type: TYPE_SCALAR
scalar_type: "int32_t"
}
@@ -661,8 +662,8 @@
union_value: {
name: "data_float"
type: TYPE_ARRAY
+ vector_size: 14
vector_value: {
- vector_size: 14
type: TYPE_SCALAR
scalar_type: "float_t"
}
@@ -726,8 +727,8 @@
union_value: {
name: "pose6DOF"
type: TYPE_ARRAY
+ vector_size: 15
vector_value: {
- vector_size: 15
type: TYPE_SCALAR
scalar_type: "float_t"
}
@@ -745,8 +746,8 @@
union_value: {
name: "data"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "float_t"
}
diff --git a/soundtrigger/2.0/Android.bp b/soundtrigger/2.0/Android.bp
index 1473776..4d2bb1a 100644
--- a/soundtrigger/2.0/Android.bp
+++ b/soundtrigger/2.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0",
srcs: [
- "types.hal",
- "ISoundTriggerHw.hal",
- "ISoundTriggerHwCallback.hal",
+ ":android.hardware.soundtrigger@2.0_hal",
],
out: [
"android/hardware/soundtrigger/2.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0",
srcs: [
- "types.hal",
- "ISoundTriggerHw.hal",
- "ISoundTriggerHwCallback.hal",
+ ":android.hardware.soundtrigger@2.0_hal",
],
out: [
"android/hardware/soundtrigger/2.0/types.h",
diff --git a/soundtrigger/2.0/default/Android.mk b/soundtrigger/2.0/default/Android.mk
index 498c54f..70c78e0 100644
--- a/soundtrigger/2.0/default/Android.mk
+++ b/soundtrigger/2.0/default/Android.mk
@@ -18,6 +18,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.soundtrigger@2.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
SoundTriggerHalImpl.cpp
diff --git a/tests/Android.bp b/tests/Android.bp
index 8b3e8b1..040a6fb 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -4,6 +4,7 @@
"bar/1.0/default",
"baz/1.0",
"expression/1.0",
+ "extension/light/2.0",
"foo/1.0",
"foo/1.0/default",
"foo/1.0/default/lib",
@@ -17,4 +18,7 @@
"pointer/1.0",
"pointer/1.0/default",
"pointer/1.0/default/lib",
+ "versioning/1.0",
+ "versioning/2.2",
+ "versioning/2.3",
]
diff --git a/tests/bar/1.0/Android.bp b/tests/bar/1.0/Android.bp
index 924b3ab..694804c 100644
--- a/tests/bar/1.0/Android.bp
+++ b/tests/bar/1.0/Android.bp
@@ -17,12 +17,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
srcs: [
- "types.hal",
- "IBar.hal",
- "IComplicated.hal",
- "IFooCallback.hal",
- "IImportRules.hal",
- "IImportTypes.hal",
+ ":android.hardware.tests.bar@1.0_hal",
],
out: [
"android/hardware/tests/bar/1.0/types.cpp",
@@ -39,12 +34,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
srcs: [
- "types.hal",
- "IBar.hal",
- "IComplicated.hal",
- "IFooCallback.hal",
- "IImportRules.hal",
- "IImportTypes.hal",
+ ":android.hardware.tests.bar@1.0_hal",
],
out: [
"android/hardware/tests/bar/1.0/types.h",
diff --git a/tests/bar/1.0/default/Android.bp b/tests/bar/1.0/default/Android.bp
index 7e349c2..2c79357 100644
--- a/tests/bar/1.0/default/Android.bp
+++ b/tests/bar/1.0/default/Android.bp
@@ -3,6 +3,7 @@
cc_library_shared {
name: "android.hardware.tests.bar@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: [
"Bar.cpp",
"ImportTypes.cpp",
diff --git a/tests/baz/1.0/Android.bp b/tests/baz/1.0/Android.bp
index 1cf71b6..7939444 100644
--- a/tests/baz/1.0/Android.bp
+++ b/tests/baz/1.0/Android.bp
@@ -15,10 +15,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
srcs: [
- "types.hal",
- "IBase.hal",
- "IBaz.hal",
- "IBazCallback.hal",
+ ":android.hardware.tests.baz@1.0_hal",
],
out: [
"android/hardware/tests/baz/1.0/types.cpp",
@@ -33,10 +30,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
srcs: [
- "types.hal",
- "IBase.hal",
- "IBaz.hal",
- "IBazCallback.hal",
+ ":android.hardware.tests.baz@1.0_hal",
],
out: [
"android/hardware/tests/baz/1.0/types.h",
diff --git a/tests/baz/1.0/Android.mk b/tests/baz/1.0/Android.mk
index 82ba3cb..40026ec 100644
--- a/tests/baz/1.0/Android.mk
+++ b/tests/baz/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.baz@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -85,7 +85,7 @@
LOCAL_MODULE := android.hardware.tests.baz@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/expression/1.0/Android.bp b/tests/expression/1.0/Android.bp
index 1730aba..5279503 100644
--- a/tests/expression/1.0/Android.bp
+++ b/tests/expression/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
srcs: [
- "IExpression.hal",
- "IExpressionExt.hal",
+ ":android.hardware.tests.expression@1.0_hal",
],
out: [
"android/hardware/tests/expression/1.0/ExpressionAll.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
srcs: [
- "IExpression.hal",
- "IExpressionExt.hal",
+ ":android.hardware.tests.expression@1.0_hal",
],
out: [
"android/hardware/tests/expression/1.0/IExpression.h",
diff --git a/tests/expression/1.0/Android.mk b/tests/expression/1.0/Android.mk
index 1c7da4b..6bc9390 100644
--- a/tests/expression/1.0/Android.mk
+++ b/tests/expression/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.expression@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -64,7 +64,7 @@
LOCAL_MODULE := android.hardware.tests.expression@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/extension/light/2.0/Android.bp b/tests/extension/light/2.0/Android.bp
new file mode 100644
index 0000000..5203da6
--- /dev/null
+++ b/tests/extension/light/2.0/Android.bp
@@ -0,0 +1,62 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.tests.extension.light@2.0_hal",
+ srcs: [
+ "types.hal",
+ "IExtLight.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.extension.light@2.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+ srcs: [
+ ":android.hardware.tests.extension.light@2.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/extension/light/2.0/types.cpp",
+ "android/hardware/tests/extension/light/2.0/ExtLightAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.extension.light@2.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+ srcs: [
+ ":android.hardware.tests.extension.light@2.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/extension/light/2.0/types.h",
+ "android/hardware/tests/extension/light/2.0/IExtLight.h",
+ "android/hardware/tests/extension/light/2.0/IHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BnHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BpHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BsExtLight.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.tests.extension.light@2.0",
+ generated_sources: ["android.hardware.tests.extension.light@2.0_genc++"],
+ generated_headers: ["android.hardware.tests.extension.light@2.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.tests.extension.light@2.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.light@2.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.light@2.0",
+ ],
+}
diff --git a/example/extension/light/2.0/Android.mk b/tests/extension/light/2.0/Android.mk
similarity index 76%
rename from example/extension/light/2.0/Android.mk
rename to tests/extension/light/2.0/Android.mk
index deb7a2a..16424a3 100644
--- a/example/extension/light/2.0/Android.mk
+++ b/tests/extension/light/2.0/Android.mk
@@ -5,10 +5,10 @@
################################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-java
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -20,7 +20,7 @@
#
# Build types.hal (Default)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/Default.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/Default.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -30,7 +30,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.Default
+ android.hardware.tests.extension.light@2.0::types.Default
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -39,7 +39,7 @@
#
# Build types.hal (ExtBrightness)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtBrightness.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtBrightness.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -49,7 +49,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtBrightness
+ android.hardware.tests.extension.light@2.0::types.ExtBrightness
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -58,7 +58,7 @@
#
# Build types.hal (ExtLightState)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtLightState.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtLightState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -68,7 +68,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtLightState
+ android.hardware.tests.extension.light@2.0::types.ExtLightState
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -77,7 +77,7 @@
#
# Build IExtLight.hal
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/IExtLight.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/IExtLight.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExtLight.hal
@@ -89,7 +89,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::IExtLight
+ android.hardware.tests.extension.light@2.0::IExtLight
$(GEN): $(LOCAL_PATH)/IExtLight.hal
$(transform-generated-source)
@@ -100,10 +100,10 @@
################################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-java-static
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -115,7 +115,7 @@
#
# Build types.hal (Default)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/Default.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/Default.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -125,7 +125,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.Default
+ android.hardware.tests.extension.light@2.0::types.Default
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -134,7 +134,7 @@
#
# Build types.hal (ExtBrightness)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtBrightness.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtBrightness.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -144,7 +144,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtBrightness
+ android.hardware.tests.extension.light@2.0::types.ExtBrightness
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -153,7 +153,7 @@
#
# Build types.hal (ExtLightState)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtLightState.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtLightState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -163,7 +163,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtLightState
+ android.hardware.tests.extension.light@2.0::types.ExtLightState
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -172,7 +172,7 @@
#
# Build IExtLight.hal
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/IExtLight.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/IExtLight.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExtLight.hal
@@ -184,7 +184,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::IExtLight
+ android.hardware.tests.extension.light@2.0::IExtLight
$(GEN): $(LOCAL_PATH)/IExtLight.hal
$(transform-generated-source)
diff --git a/example/extension/light/2.0/IExtLight.hal b/tests/extension/light/2.0/IExtLight.hal
similarity index 95%
rename from example/extension/light/2.0/IExtLight.hal
rename to tests/extension/light/2.0/IExtLight.hal
index f12a272..1515b86 100644
--- a/example/extension/light/2.0/IExtLight.hal
+++ b/tests/extension/light/2.0/IExtLight.hal
@@ -17,7 +17,7 @@
// Would normally be 'vendor.example.extension.light@2.0' however, this is
// a google extension example. A vendor extension should also live in the
// vendor partition.
-package android.hardware.example.extension.light@2.0;
+package android.hardware.tests.extension.light@2.0;
import android.hardware.light@2.0;
diff --git a/tests/extension/light/2.0/default/Android.mk b/tests/extension/light/2.0/default/Android.mk
new file mode 100644
index 0000000..4dee3ee
--- /dev/null
+++ b/tests/extension/light/2.0/default/Android.mk
@@ -0,0 +1,20 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-service
+LOCAL_INIT_RC := android.hardware.tests.extension.light@2.0-service.rc
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+ Light.cpp \
+ service.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ libutils \
+ android.hardware.light@2.0 \
+ android.hardware.tests.extension.light@2.0 \
+
+include $(BUILD_EXECUTABLE)
diff --git a/example/extension/light/2.0/default/Light.cpp b/tests/extension/light/2.0/default/Light.cpp
similarity index 97%
rename from example/extension/light/2.0/default/Light.cpp
rename to tests/extension/light/2.0/default/Light.cpp
index 2e56319..d941e73 100644
--- a/example/extension/light/2.0/default/Light.cpp
+++ b/tests/extension/light/2.0/default/Light.cpp
@@ -17,7 +17,7 @@
namespace android {
namespace hardware {
-namespace example {
+namespace tests {
namespace extension {
namespace light {
namespace V2_0 {
@@ -66,6 +66,6 @@
} // namespace V2_0
} // namespace light
} // namespace extension
-} // namespace example
+} // namespace tests
} // namespace hardware
} // namespace android
diff --git a/example/extension/light/2.0/default/Light.h b/tests/extension/light/2.0/default/Light.h
similarity index 79%
rename from example/extension/light/2.0/default/Light.h
rename to tests/extension/light/2.0/default/Light.h
index e3b60df..dc2c5dd 100644
--- a/example/extension/light/2.0/default/Light.h
+++ b/tests/extension/light/2.0/default/Light.h
@@ -13,23 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
-#define ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
+#ifndef ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
+#define ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
-#include <android/hardware/example/extension/light/2.0/IExtLight.h>
+#include <android/hardware/tests/extension/light/2.0/IExtLight.h>
#include <hidl/Status.h>
#include <hidl/MQDescriptor.h>
namespace android {
namespace hardware {
-namespace example {
+namespace tests {
namespace extension {
namespace light {
namespace V2_0 {
namespace implementation {
-using ::android::hardware::example::extension::light::V2_0::ExtLightState;
-using ::android::hardware::example::extension::light::V2_0::IExtLight;
+using ::android::hardware::tests::extension::light::V2_0::ExtLightState;
+using ::android::hardware::tests::extension::light::V2_0::IExtLight;
using ::android::hardware::light::V2_0::ILight;
using ::android::hardware::light::V2_0::LightState;
using ::android::hardware::light::V2_0::Status;
@@ -54,8 +54,8 @@
} // namespace V2_0
} // namespace light
} // namespace extension
-} // namespace example
+} // namespace tests
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
+#endif // ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
diff --git a/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc b/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc
new file mode 100644
index 0000000..8f379ee
--- /dev/null
+++ b/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc
@@ -0,0 +1,4 @@
+service light-ext-2-0 /vendor/bin/hw/android.hardware.tests.extension.light@2.0-service
+ class hal
+ user system
+ group system
\ No newline at end of file
diff --git a/example/extension/light/2.0/default/service.cpp b/tests/extension/light/2.0/default/service.cpp
similarity index 84%
rename from example/extension/light/2.0/default/service.cpp
rename to tests/extension/light/2.0/default/service.cpp
index d3fb4de..4d839b2 100644
--- a/example/extension/light/2.0/default/service.cpp
+++ b/tests/extension/light/2.0/default/service.cpp
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#define LOG_TAG "android.hardware.light@2.0-service"
+#define LOG_TAG "android.hardware.tests.extension.light@2.0-service"
#include <android/log.h>
#include <hidl/HidlTransportSupport.h>
@@ -24,14 +24,12 @@
using android::hardware::joinRpcThreadpool;
using android::sp;
-// Generated HIDL files
using android::hardware::light::V2_0::ILight;
+using android::hardware::tests::extension::light::V2_0::implementation::Light;
int main() {
- const char instance[] = "light";
-
android::sp<ILight> service = new Light();
configureRpcThreadpool(1, true /*callerWillJoin*/);
- service->registerAsService(instance);
+ service->registerAsService();
joinRpcThreadpool();
}
diff --git a/example/extension/light/2.0/types.hal b/tests/extension/light/2.0/types.hal
similarity index 97%
rename from example/extension/light/2.0/types.hal
rename to tests/extension/light/2.0/types.hal
index 5be41bb..1b09479 100644
--- a/example/extension/light/2.0/types.hal
+++ b/tests/extension/light/2.0/types.hal
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.hardware.example.extension.light@2.0;
+package android.hardware.tests.extension.light@2.0;
import android.hardware.light@2.0;
diff --git a/tests/foo/1.0/Android.bp b/tests/foo/1.0/Android.bp
index c65d3cf..9572855 100644
--- a/tests/foo/1.0/Android.bp
+++ b/tests/foo/1.0/Android.bp
@@ -17,12 +17,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
srcs: [
- "types.hal",
- "IFoo.hal",
- "IFooCallback.hal",
- "IMyTypes.hal",
- "ISimple.hal",
- "ITheirTypes.hal",
+ ":android.hardware.tests.foo@1.0_hal",
],
out: [
"android/hardware/tests/foo/1.0/types.cpp",
@@ -39,12 +34,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
srcs: [
- "types.hal",
- "IFoo.hal",
- "IFooCallback.hal",
- "IMyTypes.hal",
- "ISimple.hal",
- "ITheirTypes.hal",
+ ":android.hardware.tests.foo@1.0_hal",
],
out: [
"android/hardware/tests/foo/1.0/types.h",
diff --git a/tests/foo/1.0/default/Android.bp b/tests/foo/1.0/default/Android.bp
index 952f25d..f4a80d5 100644
--- a/tests/foo/1.0/default/Android.bp
+++ b/tests/foo/1.0/default/Android.bp
@@ -3,6 +3,7 @@
cc_library_shared {
name: "android.hardware.tests.foo@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: [
"Foo.cpp",
],
diff --git a/tests/inheritance/1.0/Android.bp b/tests/inheritance/1.0/Android.bp
index 433e9ac..f50aee4 100644
--- a/tests/inheritance/1.0/Android.bp
+++ b/tests/inheritance/1.0/Android.bp
@@ -15,10 +15,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
srcs: [
- "IChild.hal",
- "IFetcher.hal",
- "IGrandparent.hal",
- "IParent.hal",
+ ":android.hardware.tests.inheritance@1.0_hal",
],
out: [
"android/hardware/tests/inheritance/1.0/ChildAll.cpp",
@@ -33,10 +30,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
srcs: [
- "IChild.hal",
- "IFetcher.hal",
- "IGrandparent.hal",
- "IParent.hal",
+ ":android.hardware.tests.inheritance@1.0_hal",
],
out: [
"android/hardware/tests/inheritance/1.0/IChild.h",
diff --git a/tests/inheritance/1.0/Android.mk b/tests/inheritance/1.0/Android.mk
index 8c1b1c8..21aac00 100644
--- a/tests/inheritance/1.0/Android.mk
+++ b/tests/inheritance/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.inheritance@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -110,7 +110,7 @@
LOCAL_MODULE := android.hardware.tests.inheritance@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/inheritance/1.0/default/Android.bp b/tests/inheritance/1.0/default/Android.bp
index 638d3a4..090c36e 100644
--- a/tests/inheritance/1.0/default/Android.bp
+++ b/tests/inheritance/1.0/default/Android.bp
@@ -3,6 +3,7 @@
cc_library_shared {
name: "android.hardware.tests.inheritance@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: [
"Fetcher.cpp",
"Parent.cpp",
diff --git a/tests/libhwbinder/1.0/Android.bp b/tests/libhwbinder/1.0/Android.bp
index 1d0b4b5..580e961 100644
--- a/tests/libhwbinder/1.0/Android.bp
+++ b/tests/libhwbinder/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
srcs: [
- "IBenchmark.hal",
+ ":android.hardware.tests.libhwbinder@1.0_hal",
],
out: [
"android/hardware/tests/libhwbinder/1.0/BenchmarkAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
srcs: [
- "IBenchmark.hal",
+ ":android.hardware.tests.libhwbinder@1.0_hal",
],
out: [
"android/hardware/tests/libhwbinder/1.0/IBenchmark.h",
diff --git a/tests/libhwbinder/1.0/Android.mk b/tests/libhwbinder/1.0/Android.mk
index ae873af..2ee26d6 100644
--- a/tests/libhwbinder/1.0/Android.mk
+++ b/tests/libhwbinder/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.libhwbinder@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -43,7 +43,7 @@
LOCAL_MODULE := android.hardware.tests.libhwbinder@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/libhwbinder/1.0/default/Android.bp b/tests/libhwbinder/1.0/default/Android.bp
index 73dcc61..0edabfc 100644
--- a/tests/libhwbinder/1.0/default/Android.bp
+++ b/tests/libhwbinder/1.0/default/Android.bp
@@ -1,6 +1,7 @@
cc_library_shared {
name: "android.hardware.tests.libhwbinder@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: [
"Benchmark.cpp",
],
diff --git a/tests/memory/1.0/Android.bp b/tests/memory/1.0/Android.bp
index 3f27810..49faf41 100644
--- a/tests/memory/1.0/Android.bp
+++ b/tests/memory/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
srcs: [
- "IMemoryTest.hal",
+ ":android.hardware.tests.memory@1.0_hal",
],
out: [
"android/hardware/tests/memory/1.0/MemoryTestAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
srcs: [
- "IMemoryTest.hal",
+ ":android.hardware.tests.memory@1.0_hal",
],
out: [
"android/hardware/tests/memory/1.0/IMemoryTest.h",
diff --git a/tests/memory/1.0/default/Android.bp b/tests/memory/1.0/default/Android.bp
index bde7c03..14dc08d 100644
--- a/tests/memory/1.0/default/Android.bp
+++ b/tests/memory/1.0/default/Android.bp
@@ -14,6 +14,7 @@
cc_library_shared {
name: "android.hardware.tests.memory@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: [
"MemoryTest.cpp",
diff --git a/tests/msgq/1.0/Android.bp b/tests/msgq/1.0/Android.bp
index 39fef89..d17efe4 100644
--- a/tests/msgq/1.0/Android.bp
+++ b/tests/msgq/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
srcs: [
- "ITestMsgQ.hal",
+ ":android.hardware.tests.msgq@1.0_hal",
],
out: [
"android/hardware/tests/msgq/1.0/TestMsgQAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
srcs: [
- "ITestMsgQ.hal",
+ ":android.hardware.tests.msgq@1.0_hal",
],
out: [
"android/hardware/tests/msgq/1.0/ITestMsgQ.h",
diff --git a/tests/msgq/1.0/ITestMsgQ.hal b/tests/msgq/1.0/ITestMsgQ.hal
index 3ed1b37..dfb9be4 100644
--- a/tests/msgq/1.0/ITestMsgQ.hal
+++ b/tests/msgq/1.0/ITestMsgQ.hal
@@ -34,15 +34,19 @@
generates(bool ret, fmq_sync<uint16_t> mqDesc);
/*
- * This method requests the service to set up an unsynchronized write
- * wait-free FMQ with the client as reader.
+ * This method requests the service to return an MQDescriptor to
+ * an unsynchronized FMQ set up by the server. If 'configureFmq' is
+ * true, then the server sets up a new unsynchronized FMQ. This
+ * method is to be used to test multiple reader processes.
*
- * @return ret True if the setup is successful.
- * @return mqDesc This structure describes the FMQ that was
+ * @param configureFmq The server sets up a new unsynchronized FMQ if
+ * this parameter is true.
+ *
+ * @return ret True if successful.
+ * @return mqDesc This structure describes the unsynchronized FMQ that was
* set up by the service. Client can use it to set up the FMQ at its end.
*/
- configureFmqUnsyncWrite()
- generates(bool ret, fmq_unsync<uint16_t> mqDesc);
+ getFmqUnsyncWrite(bool configureFmq) generates(bool ret, fmq_unsync<uint16_t> mqDesc);
/*
* This method request the service to write into the synchronized read/write
diff --git a/tests/pointer/1.0/Android.bp b/tests/pointer/1.0/Android.bp
index e40003d..7f66e2a 100644
--- a/tests/pointer/1.0/Android.bp
+++ b/tests/pointer/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
srcs: [
- "IGraph.hal",
- "IPointer.hal",
+ ":android.hardware.tests.pointer@1.0_hal",
],
out: [
"android/hardware/tests/pointer/1.0/GraphAll.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
srcs: [
- "IGraph.hal",
- "IPointer.hal",
+ ":android.hardware.tests.pointer@1.0_hal",
],
out: [
"android/hardware/tests/pointer/1.0/IGraph.h",
diff --git a/tests/pointer/1.0/default/Android.bp b/tests/pointer/1.0/default/Android.bp
index f7180f1..ab7f8fa 100644
--- a/tests/pointer/1.0/default/Android.bp
+++ b/tests/pointer/1.0/default/Android.bp
@@ -3,6 +3,7 @@
cc_library_shared {
name: "android.hardware.tests.pointer@1.0-impl",
relative_install_path: "hw",
+ proprietary: true,
srcs: [
"Graph.cpp",
"Pointer.cpp",
diff --git a/tests/versioning/1.0/Android.bp b/tests/versioning/1.0/Android.bp
new file mode 100644
index 0000000..fbabc10
--- /dev/null
+++ b/tests/versioning/1.0/Android.bp
@@ -0,0 +1,59 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.tests.versioning@1.0_hal",
+ srcs: [
+ "IFoo.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@1.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@1.0",
+ srcs: [
+ ":android.hardware.tests.versioning@1.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/1.0/FooAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@1.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@1.0",
+ srcs: [
+ ":android.hardware.tests.versioning@1.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/1.0/IFoo.h",
+ "android/hardware/tests/versioning/1.0/IHwFoo.h",
+ "android/hardware/tests/versioning/1.0/BnHwFoo.h",
+ "android/hardware/tests/versioning/1.0/BpHwFoo.h",
+ "android/hardware/tests/versioning/1.0/BsFoo.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.tests.versioning@1.0",
+ generated_sources: ["android.hardware.tests.versioning@1.0_genc++"],
+ generated_headers: ["android.hardware.tests.versioning@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.tests.versioning@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/tests/versioning/1.0/Android.mk b/tests/versioning/1.0/Android.mk
new file mode 100644
index 0000000..ba18384
--- /dev/null
+++ b/tests/versioning/1.0/Android.mk
@@ -0,0 +1,76 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@1.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@1.0-java \
+
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V1_0/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@1.0::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@1.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@1.0-java-static \
+
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V1_0/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@1.0::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/versioning/1.0/IFoo.hal b/tests/versioning/1.0/IFoo.hal
new file mode 100644
index 0000000..0571eff
--- /dev/null
+++ b/tests/versioning/1.0/IFoo.hal
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@1.0;
+
+interface IFoo {
+};
diff --git a/tests/versioning/2.2/Android.bp b/tests/versioning/2.2/Android.bp
new file mode 100644
index 0000000..953b6df
--- /dev/null
+++ b/tests/versioning/2.2/Android.bp
@@ -0,0 +1,66 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.tests.versioning@2.2_hal",
+ srcs: [
+ "IBar.hal",
+ "IFoo.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@2.2_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.2",
+ srcs: [
+ ":android.hardware.tests.versioning@2.2_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/2.2/BarAll.cpp",
+ "android/hardware/tests/versioning/2.2/FooAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@2.2_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.2",
+ srcs: [
+ ":android.hardware.tests.versioning@2.2_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/2.2/IBar.h",
+ "android/hardware/tests/versioning/2.2/IHwBar.h",
+ "android/hardware/tests/versioning/2.2/BnHwBar.h",
+ "android/hardware/tests/versioning/2.2/BpHwBar.h",
+ "android/hardware/tests/versioning/2.2/BsBar.h",
+ "android/hardware/tests/versioning/2.2/IFoo.h",
+ "android/hardware/tests/versioning/2.2/IHwFoo.h",
+ "android/hardware/tests/versioning/2.2/BnHwFoo.h",
+ "android/hardware/tests/versioning/2.2/BpHwFoo.h",
+ "android/hardware/tests/versioning/2.2/BsFoo.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.tests.versioning@2.2",
+ generated_sources: ["android.hardware.tests.versioning@2.2_genc++"],
+ generated_headers: ["android.hardware.tests.versioning@2.2_genc++_headers"],
+ export_generated_headers: ["android.hardware.tests.versioning@2.2_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/tests/versioning/2.2/Android.mk b/tests/versioning/2.2/Android.mk
new file mode 100644
index 0000000..e2a2ff7
--- /dev/null
+++ b/tests/versioning/2.2/Android.mk
@@ -0,0 +1,114 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@2.2-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@1.0-java \
+
+
+#
+# Build IBar.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_2/IBar.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBar.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.2::IBar
+
+$(GEN): $(LOCAL_PATH)/IBar.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_2/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.2::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@2.2-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@1.0-java-static \
+
+
+#
+# Build IBar.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_2/IBar.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBar.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.2::IBar
+
+$(GEN): $(LOCAL_PATH)/IBar.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_2/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.2::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/versioning/2.2/IBar.hal b/tests/versioning/2.2/IBar.hal
new file mode 100644
index 0000000..e28ce19
--- /dev/null
+++ b/tests/versioning/2.2/IBar.hal
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@2.2;
+
+interface IBar {
+
+};
diff --git a/tests/versioning/2.2/IFoo.hal b/tests/versioning/2.2/IFoo.hal
new file mode 100644
index 0000000..d6b8782
--- /dev/null
+++ b/tests/versioning/2.2/IFoo.hal
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@2.2;
+
+interface IFoo {
+
+};
diff --git a/tests/versioning/2.3/Android.bp b/tests/versioning/2.3/Android.bp
new file mode 100644
index 0000000..3cc2076
--- /dev/null
+++ b/tests/versioning/2.3/Android.bp
@@ -0,0 +1,77 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.tests.versioning@2.3_hal",
+ srcs: [
+ "IBar.hal",
+ "IBaz.hal",
+ "IFoo.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@2.3_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.3",
+ srcs: [
+ ":android.hardware.tests.versioning@2.3_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/2.3/BarAll.cpp",
+ "android/hardware/tests/versioning/2.3/BazAll.cpp",
+ "android/hardware/tests/versioning/2.3/FooAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.versioning@2.3_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.3",
+ srcs: [
+ ":android.hardware.tests.versioning@2.3_hal",
+ ],
+ out: [
+ "android/hardware/tests/versioning/2.3/IBar.h",
+ "android/hardware/tests/versioning/2.3/IHwBar.h",
+ "android/hardware/tests/versioning/2.3/BnHwBar.h",
+ "android/hardware/tests/versioning/2.3/BpHwBar.h",
+ "android/hardware/tests/versioning/2.3/BsBar.h",
+ "android/hardware/tests/versioning/2.3/IBaz.h",
+ "android/hardware/tests/versioning/2.3/IHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BnHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BpHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BsBaz.h",
+ "android/hardware/tests/versioning/2.3/IFoo.h",
+ "android/hardware/tests/versioning/2.3/IHwFoo.h",
+ "android/hardware/tests/versioning/2.3/BnHwFoo.h",
+ "android/hardware/tests/versioning/2.3/BpHwFoo.h",
+ "android/hardware/tests/versioning/2.3/BsFoo.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.tests.versioning@2.3",
+ generated_sources: ["android.hardware.tests.versioning@2.3_genc++"],
+ generated_headers: ["android.hardware.tests.versioning@2.3_genc++_headers"],
+ export_generated_headers: ["android.hardware.tests.versioning@2.3_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.tests.versioning@1.0",
+ "android.hardware.tests.versioning@2.2",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.tests.versioning@1.0",
+ "android.hardware.tests.versioning@2.2",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/tests/versioning/2.3/Android.mk b/tests/versioning/2.3/Android.mk
new file mode 100644
index 0000000..68e6be4
--- /dev/null
+++ b/tests/versioning/2.3/Android.mk
@@ -0,0 +1,156 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@2.3-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.hardware.tests.versioning@1.0-java \
+ android.hardware.tests.versioning@2.2-java \
+ android.hidl.base@1.0-java \
+
+
+#
+# Build IBar.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBar.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBar.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBar
+
+$(GEN): $(LOCAL_PATH)/IBar.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IBaz.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBaz.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBaz.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBaz
+
+$(GEN): $(LOCAL_PATH)/IBaz.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.versioning@2.3-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.hardware.tests.versioning@1.0-java-static \
+ android.hardware.tests.versioning@2.2-java-static \
+ android.hidl.base@1.0-java-static \
+
+
+#
+# Build IBar.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBar.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBar.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBar
+
+$(GEN): $(LOCAL_PATH)/IBar.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IBaz.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBaz.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBaz.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBaz
+
+$(GEN): $(LOCAL_PATH)/IBaz.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IFoo.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IFoo.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IFoo.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IFoo
+
+$(GEN): $(LOCAL_PATH)/IFoo.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/versioning/2.3/IBar.hal b/tests/versioning/2.3/IBar.hal
new file mode 100644
index 0000000..fe38e76
--- /dev/null
+++ b/tests/versioning/2.3/IBar.hal
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@2.3;
+
+import @2.2::IBar;
+
+// Must extend @2.2::IBar.
+interface IBar extends @2.2::IBar {
+
+};
diff --git a/tests/versioning/2.3/IBaz.hal b/tests/versioning/2.3/IBaz.hal
new file mode 100644
index 0000000..e28792c
--- /dev/null
+++ b/tests/versioning/2.3/IBaz.hal
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@2.3;
+
+import @1.0::IFoo;
+
+interface IBaz extends @1.0::IFoo {
+
+};
diff --git a/tests/versioning/2.3/IFoo.hal b/tests/versioning/2.3/IFoo.hal
new file mode 100644
index 0000000..2c76500
--- /dev/null
+++ b/tests/versioning/2.3/IFoo.hal
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.tests.versioning@2.3;
+
+import @2.2::IFoo;
+
+// Must extend @2.2::IFoo.
+interface IFoo extends @2.2::IFoo {
+
+};
diff --git a/thermal/1.0/Android.bp b/thermal/1.0/Android.bp
index c4b6d39..fab5533 100644
--- a/thermal/1.0/Android.bp
+++ b/thermal/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0",
srcs: [
- "types.hal",
- "IThermal.hal",
+ ":android.hardware.thermal@1.0_hal",
],
out: [
"android/hardware/thermal/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0",
srcs: [
- "types.hal",
- "IThermal.hal",
+ ":android.hardware.thermal@1.0_hal",
],
out: [
"android/hardware/thermal/1.0/types.h",
diff --git a/thermal/1.0/Android.mk b/thermal/1.0/Android.mk
index b88bb81..7748b9e 100644
--- a/thermal/1.0/Android.mk
+++ b/thermal/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.thermal@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -178,7 +178,7 @@
LOCAL_MODULE := android.hardware.thermal@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -348,7 +348,7 @@
LOCAL_MODULE := android.hardware.thermal@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/thermal/1.0/default/Android.bp b/thermal/1.0/default/Android.bp
index 819f0b1..96f69cc 100644
--- a/thermal/1.0/default/Android.bp
+++ b/thermal/1.0/default/Android.bp
@@ -1,5 +1,6 @@
cc_library_shared {
name: "android.hardware.thermal@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Thermal.cpp"],
shared_libs: [
diff --git a/thermal/1.0/default/Android.mk b/thermal/1.0/default/Android.mk
index 9039e9f..72c46af 100644
--- a/thermal/1.0/default/Android.mk
+++ b/thermal/1.0/default/Android.mk
@@ -17,6 +17,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.thermal@1.0-service
LOCAL_INIT_RC := android.hardware.thermal@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/thermal/1.0/default/android.hardware.thermal@1.0-service.rc b/thermal/1.0/default/android.hardware.thermal@1.0-service.rc
index cc7ba6a..f8da101 100644
--- a/thermal/1.0/default/android.hardware.thermal@1.0-service.rc
+++ b/thermal/1.0/default/android.hardware.thermal@1.0-service.rc
@@ -1,4 +1,4 @@
-service thermal-hal-1-0 /system/bin/hw/android.hardware.thermal@1.0-service
+service thermal-hal-1-0 /vendor/bin/hw/android.hardware.thermal@1.0-service
class hal
user system
group system readproc
diff --git a/thermal/1.0/vts/Thermal.vts b/thermal/1.0/vts/Thermal.vts
index e76d943..4611924 100644
--- a/thermal/1.0/vts/Thermal.vts
+++ b/thermal/1.0/vts/Thermal.vts
@@ -5,6 +5,7 @@
package: "android.hardware.thermal"
import: "android.hardware.thermal@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/thermal/1.0/vts/functional/Android.bp b/thermal/1.0/vts/functional/Android.bp
index bef7bc2..fedb760 100644
--- a/thermal/1.0/vts/functional/Android.bp
+++ b/thermal/1.0/vts/functional/Android.bp
@@ -31,12 +31,8 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage"
- ]
}
diff --git a/thermal/1.0/vts/types.vts b/thermal/1.0/vts/types.vts
index 1e60f48..f004bd8 100644
--- a/thermal/1.0/vts/types.vts
+++ b/thermal/1.0/vts/types.vts
@@ -9,27 +9,27 @@
name: "::android::hardware::thermal::V1_0::TemperatureType"
type: TYPE_ENUM
enum_value: {
- scalar_type: "uint32_t"
+ scalar_type: "int32_t"
enumerator: "UNKNOWN"
scalar_value: {
- uint32_t: 1000
+ int32_t: -1
}
enumerator: "CPU"
scalar_value: {
- uint32_t: 0
+ int32_t: 0
}
enumerator: "GPU"
scalar_value: {
- uint32_t: 1
+ int32_t: 1
}
enumerator: "BATTERY"
scalar_value: {
- uint32_t: 2
+ int32_t: 2
}
enumerator: "SKIN"
scalar_value: {
- uint32_t: 3
+ int32_t: 3
}
}
}
diff --git a/tv/cec/1.0/Android.bp b/tv/cec/1.0/Android.bp
index d2eee14..5c6919d 100644
--- a/tv/cec/1.0/Android.bp
+++ b/tv/cec/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0",
srcs: [
- "types.hal",
- "IHdmiCec.hal",
- "IHdmiCecCallback.hal",
+ ":android.hardware.tv.cec@1.0_hal",
],
out: [
"android/hardware/tv/cec/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0",
srcs: [
- "types.hal",
- "IHdmiCec.hal",
- "IHdmiCecCallback.hal",
+ ":android.hardware.tv.cec@1.0_hal",
],
out: [
"android/hardware/tv/cec/1.0/types.h",
diff --git a/tv/cec/1.0/Android.mk b/tv/cec/1.0/Android.mk
index efa71a1..b08099e 100644
--- a/tv/cec/1.0/Android.mk
+++ b/tv/cec/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tv.cec@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -296,7 +296,7 @@
LOCAL_MODULE := android.hardware.tv.cec@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tv/cec/1.0/default/Android.mk b/tv/cec/1.0/default/Android.mk
index 492fc8c..3f986e6 100644
--- a/tv/cec/1.0/default/Android.mk
+++ b/tv/cec/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.tv.cec@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
HdmiCec.cpp
@@ -21,6 +22,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.tv.cec@1.0-service
LOCAL_INIT_RC := android.hardware.tv.cec@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/tv/cec/1.0/default/android.hardware.tv.cec@1.0-service.rc b/tv/cec/1.0/default/android.hardware.tv.cec@1.0-service.rc
index 1af32cb..9c80094 100644
--- a/tv/cec/1.0/default/android.hardware.tv.cec@1.0-service.rc
+++ b/tv/cec/1.0/default/android.hardware.tv.cec@1.0-service.rc
@@ -1,4 +1,4 @@
-service cec-hal-1-0 /system/bin/hw/android.hardware.tv.cec@1.0-service
+service cec-hal-1-0 /vendor/bin/hw/android.hardware.tv.cec@1.0-service
class hal
user system
group system
diff --git a/tv/cec/1.0/vts/HdmiCec.vts b/tv/cec/1.0/vts/HdmiCec.vts
index d7d09de..6e71d24 100644
--- a/tv/cec/1.0/vts/HdmiCec.vts
+++ b/tv/cec/1.0/vts/HdmiCec.vts
@@ -6,6 +6,7 @@
import: "android.hardware.tv.cec@1.0::IHdmiCecCallback"
import: "android.hardware.tv.cec@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -67,8 +68,7 @@
name: "setCallback"
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IHdmiCecCallback"
- is_callback: true
+ predefined_type: "::android::hardware::tv::cec::V1_0::IHdmiCecCallback"
}
callflow: {
next: "addLogicalAddress"
diff --git a/tv/cec/1.0/vts/HdmiCecCallback.vts b/tv/cec/1.0/vts/HdmiCecCallback.vts
index 864e6f5..a98db06 100644
--- a/tv/cec/1.0/vts/HdmiCecCallback.vts
+++ b/tv/cec/1.0/vts/HdmiCecCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.tv.cec"
import: "android.hardware.tv.cec@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/tv/input/1.0/Android.bp b/tv/input/1.0/Android.bp
index 3666b85..ae5e3de 100644
--- a/tv/input/1.0/Android.bp
+++ b/tv/input/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0",
srcs: [
- "types.hal",
- "ITvInput.hal",
- "ITvInputCallback.hal",
+ ":android.hardware.tv.input@1.0_hal",
],
out: [
"android/hardware/tv/input/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0",
srcs: [
- "types.hal",
- "ITvInput.hal",
- "ITvInputCallback.hal",
+ ":android.hardware.tv.input@1.0_hal",
],
out: [
"android/hardware/tv/input/1.0/types.h",
diff --git a/tv/input/1.0/default/Android.mk b/tv/input/1.0/default/Android.mk
index 9728015..be1775d 100644
--- a/tv/input/1.0/default/Android.mk
+++ b/tv/input/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.tv.input@1.0-impl
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
TvInput.cpp \
@@ -21,6 +22,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.tv.input@1.0-service
LOCAL_INIT_RC := android.hardware.tv.input@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/tv/input/1.0/default/android.hardware.tv.input@1.0-service.rc b/tv/input/1.0/default/android.hardware.tv.input@1.0-service.rc
index c5bc0b7..9edeba6 100644
--- a/tv/input/1.0/default/android.hardware.tv.input@1.0-service.rc
+++ b/tv/input/1.0/default/android.hardware.tv.input@1.0-service.rc
@@ -1,4 +1,4 @@
-service tv-input-1-0 /system/bin/hw/android.hardware.tv.input@1.0-service
+service tv-input-1-0 /vendor/bin/hw/android.hardware.tv.input@1.0-service
class hal
user system
group system readproc
diff --git a/tv/input/1.0/vts/TvInput.vts b/tv/input/1.0/vts/TvInput.vts
index 73b322a..f049fc1 100644
--- a/tv/input/1.0/vts/TvInput.vts
+++ b/tv/input/1.0/vts/TvInput.vts
@@ -4,16 +4,17 @@
package: "android.hardware.tv.input"
+import: "android.hardware.audio.common@2.0::types"
import: "android.hardware.tv.input@1.0::ITvInputCallback"
import: "android.hardware.tv.input@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
name: "setCallback"
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ITvInputCallback"
- is_callback: true
+ predefined_type: "::android::hardware::tv::input::V1_0::ITvInputCallback"
}
callflow: {
entry: true
diff --git a/tv/input/1.0/vts/TvInputCallback.vts b/tv/input/1.0/vts/TvInputCallback.vts
index b1738a8..8082b9f 100644
--- a/tv/input/1.0/vts/TvInputCallback.vts
+++ b/tv/input/1.0/vts/TvInputCallback.vts
@@ -4,7 +4,9 @@
package: "android.hardware.tv.input"
+import: "android.hardware.audio.common@2.0::types"
import: "android.hardware.tv.input@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/tv/input/1.0/vts/functional/Android.bp b/tv/input/1.0/vts/functional/Android.bp
index 979eb99..c327733 100644
--- a/tv/input/1.0/vts/functional/Android.bp
+++ b/tv/input/1.0/vts/functional/Android.bp
@@ -31,13 +31,8 @@
],
static_libs: ["libgtest"],
cflags: [
-// TODO: add --coverage when the segfault issue is fixed.
-// "--coverage",
"-O0",
"-g",
- ],
-// ldflags: [
-// "--coverage"
-// ]
+ ]
}
diff --git a/tv/input/1.0/vts/types.vts b/tv/input/1.0/vts/types.vts
index d03e065..cb1d472 100644
--- a/tv/input/1.0/vts/types.vts
+++ b/tv/input/1.0/vts/types.vts
@@ -7,1926 +7,6 @@
import: "android.hardware.audio.common@2.0::types"
attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioHandleConsts"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "AUDIO_IO_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_MODULE_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_PORT_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_PATCH_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::Uuid"
- type: TYPE_STRUCT
- struct_value: {
- name: "timeLow"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "timeMid"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "versionAndTimeHigh"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "variantAndClockSeqHigh"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "node"
- type: TYPE_ARRAY
- vector_value: {
- vector_size: 6
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioStreamType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "MIN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "VOICE_CALL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SYSTEM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RING"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "MUSIC"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ALARM"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NOTIFICATION"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "BLUETOOTH_SCO"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "ENFORCED_AUDIBLE"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "DTMF"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "TTS"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "ACCESSIBILITY"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "REROUTING"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "PATCH"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "PUBLIC_CNT"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "FOR_POLICY_CNT"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 13
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioSource"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MIC"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VOICE_UPLINK"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VOICE_DOWNLINK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "VOICE_CALL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CAMCORDER"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "VOICE_RECOGNITION"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "VOICE_COMMUNICATION"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "REMOTE_SUBMIX"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "UNPROCESSED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "FM_TUNER"
- scalar_value: {
- int32_t: 1998
- }
- enumerator: "HOTWORD"
- scalar_value: {
- int32_t: 1999
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioSessionConsts"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OUTPUT_STAGE"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "OUTPUT_MIX"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ALLOCATE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioFormat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- uint32_t: 4294967295
- }
- enumerator: "DEFAULT"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PCM"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "MP3"
- scalar_value: {
- uint32_t: 16777216
- }
- enumerator: "AMR_NB"
- scalar_value: {
- uint32_t: 33554432
- }
- enumerator: "AMR_WB"
- scalar_value: {
- uint32_t: 50331648
- }
- enumerator: "AAC"
- scalar_value: {
- uint32_t: 67108864
- }
- enumerator: "HE_AAC_V1"
- scalar_value: {
- uint32_t: 83886080
- }
- enumerator: "HE_AAC_V2"
- scalar_value: {
- uint32_t: 100663296
- }
- enumerator: "VORBIS"
- scalar_value: {
- uint32_t: 117440512
- }
- enumerator: "OPUS"
- scalar_value: {
- uint32_t: 134217728
- }
- enumerator: "AC3"
- scalar_value: {
- uint32_t: 150994944
- }
- enumerator: "E_AC3"
- scalar_value: {
- uint32_t: 167772160
- }
- enumerator: "DTS"
- scalar_value: {
- uint32_t: 184549376
- }
- enumerator: "DTS_HD"
- scalar_value: {
- uint32_t: 201326592
- }
- enumerator: "IEC61937"
- scalar_value: {
- uint32_t: 218103808
- }
- enumerator: "DOLBY_TRUEHD"
- scalar_value: {
- uint32_t: 234881024
- }
- enumerator: "EVRC"
- scalar_value: {
- uint32_t: 268435456
- }
- enumerator: "EVRCB"
- scalar_value: {
- uint32_t: 285212672
- }
- enumerator: "EVRCWB"
- scalar_value: {
- uint32_t: 301989888
- }
- enumerator: "EVRCNW"
- scalar_value: {
- uint32_t: 318767104
- }
- enumerator: "AAC_ADIF"
- scalar_value: {
- uint32_t: 335544320
- }
- enumerator: "WMA"
- scalar_value: {
- uint32_t: 352321536
- }
- enumerator: "WMA_PRO"
- scalar_value: {
- uint32_t: 369098752
- }
- enumerator: "AMR_WB_PLUS"
- scalar_value: {
- uint32_t: 385875968
- }
- enumerator: "MP2"
- scalar_value: {
- uint32_t: 402653184
- }
- enumerator: "QCELP"
- scalar_value: {
- uint32_t: 419430400
- }
- enumerator: "DSD"
- scalar_value: {
- uint32_t: 436207616
- }
- enumerator: "FLAC"
- scalar_value: {
- uint32_t: 452984832
- }
- enumerator: "ALAC"
- scalar_value: {
- uint32_t: 469762048
- }
- enumerator: "APE"
- scalar_value: {
- uint32_t: 486539264
- }
- enumerator: "AAC_ADTS"
- scalar_value: {
- uint32_t: 503316480
- }
- enumerator: "SBC"
- scalar_value: {
- uint32_t: 520093696
- }
- enumerator: "APTX"
- scalar_value: {
- uint32_t: 536870912
- }
- enumerator: "APTX_HD"
- scalar_value: {
- uint32_t: 553648128
- }
- enumerator: "LDAC"
- scalar_value: {
- uint32_t: 570425344
- }
- enumerator: "MAIN_MASK"
- scalar_value: {
- uint32_t: 4278190080
- }
- enumerator: "SUB_MASK"
- scalar_value: {
- uint32_t: 16777215
- }
- enumerator: "PCM_SUB_16_BIT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PCM_SUB_8_BIT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PCM_SUB_32_BIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "PCM_SUB_8_24_BIT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PCM_SUB_FLOAT"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "PCM_SUB_24_BIT_PACKED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "MP3_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AMR_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AAC_SUB_MAIN"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "AAC_SUB_LC"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "AAC_SUB_SSR"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "AAC_SUB_LTP"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "AAC_SUB_HE_V1"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "AAC_SUB_SCALABLE"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "AAC_SUB_ERLC"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "AAC_SUB_LD"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "AAC_SUB_HE_V2"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "AAC_SUB_ELD"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "VORBIS_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PCM_16_BIT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PCM_8_BIT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PCM_32_BIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "PCM_8_24_BIT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PCM_FLOAT"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "PCM_24_BIT_PACKED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "AAC_MAIN"
- scalar_value: {
- uint32_t: 67108865
- }
- enumerator: "AAC_LC"
- scalar_value: {
- uint32_t: 67108866
- }
- enumerator: "AAC_SSR"
- scalar_value: {
- uint32_t: 67108868
- }
- enumerator: "AAC_LTP"
- scalar_value: {
- uint32_t: 67108872
- }
- enumerator: "AAC_HE_V1"
- scalar_value: {
- uint32_t: 67108880
- }
- enumerator: "AAC_SCALABLE"
- scalar_value: {
- uint32_t: 67108896
- }
- enumerator: "AAC_ERLC"
- scalar_value: {
- uint32_t: 67108928
- }
- enumerator: "AAC_LD"
- scalar_value: {
- uint32_t: 67108992
- }
- enumerator: "AAC_HE_V2"
- scalar_value: {
- uint32_t: 67109120
- }
- enumerator: "AAC_ELD"
- scalar_value: {
- uint32_t: 67109376
- }
- enumerator: "AAC_ADTS_MAIN"
- scalar_value: {
- uint32_t: 503316481
- }
- enumerator: "AAC_ADTS_LC"
- scalar_value: {
- uint32_t: 503316482
- }
- enumerator: "AAC_ADTS_SSR"
- scalar_value: {
- uint32_t: 503316484
- }
- enumerator: "AAC_ADTS_LTP"
- scalar_value: {
- uint32_t: 503316488
- }
- enumerator: "AAC_ADTS_HE_V1"
- scalar_value: {
- uint32_t: 503316496
- }
- enumerator: "AAC_ADTS_SCALABLE"
- scalar_value: {
- uint32_t: 503316512
- }
- enumerator: "AAC_ADTS_ERLC"
- scalar_value: {
- uint32_t: 503316544
- }
- enumerator: "AAC_ADTS_LD"
- scalar_value: {
- uint32_t: 503316608
- }
- enumerator: "AAC_ADTS_HE_V2"
- scalar_value: {
- uint32_t: 503316736
- }
- enumerator: "AAC_ADTS_ELD"
- scalar_value: {
- uint32_t: 503316992
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::FixedChannelCount"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FCC_2"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FCC_8"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "REPRESENTATION_POSITION"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "REPRESENTATION_INDEX"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "INVALID"
- scalar_value: {
- uint32_t: 3221225472
- }
- enumerator: "OUT_FRONT_LEFT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_FRONT_RIGHT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "OUT_FRONT_CENTER"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "OUT_LOW_FREQUENCY"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "OUT_BACK_LEFT"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "OUT_BACK_RIGHT"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "OUT_FRONT_LEFT_OF_CENTER"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "OUT_FRONT_RIGHT_OF_CENTER"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "OUT_BACK_CENTER"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "OUT_SIDE_LEFT"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "OUT_SIDE_RIGHT"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_TOP_CENTER"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "OUT_TOP_FRONT_LEFT"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "OUT_TOP_FRONT_CENTER"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "OUT_TOP_FRONT_RIGHT"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "OUT_TOP_BACK_LEFT"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "OUT_TOP_BACK_CENTER"
- scalar_value: {
- uint32_t: 65536
- }
- enumerator: "OUT_TOP_BACK_RIGHT"
- scalar_value: {
- uint32_t: 131072
- }
- enumerator: "OUT_MONO"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_STEREO"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "OUT_2POINT1"
- scalar_value: {
- uint32_t: 11
- }
- enumerator: "OUT_QUAD"
- scalar_value: {
- uint32_t: 51
- }
- enumerator: "OUT_QUAD_BACK"
- scalar_value: {
- uint32_t: 51
- }
- enumerator: "OUT_QUAD_SIDE"
- scalar_value: {
- uint32_t: 1539
- }
- enumerator: "OUT_SURROUND"
- scalar_value: {
- uint32_t: 263
- }
- enumerator: "OUT_PENTA"
- scalar_value: {
- uint32_t: 55
- }
- enumerator: "OUT_5POINT1"
- scalar_value: {
- uint32_t: 63
- }
- enumerator: "OUT_5POINT1_BACK"
- scalar_value: {
- uint32_t: 63
- }
- enumerator: "OUT_5POINT1_SIDE"
- scalar_value: {
- uint32_t: 1551
- }
- enumerator: "OUT_6POINT1"
- scalar_value: {
- uint32_t: 319
- }
- enumerator: "OUT_7POINT1"
- scalar_value: {
- uint32_t: 1599
- }
- enumerator: "OUT_ALL"
- scalar_value: {
- uint32_t: 262143
- }
- enumerator: "IN_LEFT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "IN_RIGHT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "IN_FRONT"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "IN_BACK"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "IN_LEFT_PROCESSED"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "IN_RIGHT_PROCESSED"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "IN_FRONT_PROCESSED"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "IN_BACK_PROCESSED"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "IN_PRESSURE"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "IN_X_AXIS"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "IN_Y_AXIS"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "IN_Z_AXIS"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "IN_VOICE_UPLINK"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "IN_VOICE_DNLINK"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "IN_MONO"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "IN_STEREO"
- scalar_value: {
- uint32_t: 12
- }
- enumerator: "IN_FRONT_BACK"
- scalar_value: {
- uint32_t: 48
- }
- enumerator: "IN_VOICE_UPLINK_MONO"
- scalar_value: {
- uint32_t: 16400
- }
- enumerator: "IN_VOICE_DNLINK_MONO"
- scalar_value: {
- uint32_t: 32784
- }
- enumerator: "IN_VOICE_CALL_MONO"
- scalar_value: {
- uint32_t: 49168
- }
- enumerator: "IN_ALL"
- scalar_value: {
- uint32_t: 65532
- }
- enumerator: "COUNT_MAX"
- scalar_value: {
- uint32_t: 30
- }
- enumerator: "INDEX_HDR"
- scalar_value: {
- uint32_t: 2147483648
- }
- enumerator: "INDEX_MASK_1"
- scalar_value: {
- uint32_t: 2147483649
- }
- enumerator: "INDEX_MASK_2"
- scalar_value: {
- uint32_t: 2147483651
- }
- enumerator: "INDEX_MASK_3"
- scalar_value: {
- uint32_t: 2147483655
- }
- enumerator: "INDEX_MASK_4"
- scalar_value: {
- uint32_t: 2147483663
- }
- enumerator: "INDEX_MASK_5"
- scalar_value: {
- uint32_t: 2147483679
- }
- enumerator: "INDEX_MASK_6"
- scalar_value: {
- uint32_t: 2147483711
- }
- enumerator: "INDEX_MASK_7"
- scalar_value: {
- uint32_t: 2147483775
- }
- enumerator: "INDEX_MASK_8"
- scalar_value: {
- uint32_t: 2147483903
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioInterleave"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "LEFT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RIGHT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: -2
- }
- enumerator: "CURRENT"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RINGTONE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "IN_CALL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "IN_COMMUNICATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioDevice"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "BIT_IN"
- scalar_value: {
- uint32_t: 2147483648
- }
- enumerator: "BIT_DEFAULT"
- scalar_value: {
- uint32_t: 1073741824
- }
- enumerator: "OUT_EARPIECE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_SPEAKER"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "OUT_WIRED_HEADSET"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "OUT_WIRED_HEADPHONE"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "OUT_BLUETOOTH_SCO"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "OUT_BLUETOOTH_SCO_HEADSET"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "OUT_BLUETOOTH_SCO_CARKIT"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "OUT_BLUETOOTH_A2DP"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "OUT_BLUETOOTH_A2DP_HEADPHONES"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "OUT_BLUETOOTH_A2DP_SPEAKER"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "OUT_AUX_DIGITAL"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_HDMI"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_ANLG_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "OUT_DGTL_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "OUT_USB_ACCESSORY"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "OUT_USB_DEVICE"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "OUT_REMOTE_SUBMIX"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "OUT_TELEPHONY_TX"
- scalar_value: {
- uint32_t: 65536
- }
- enumerator: "OUT_LINE"
- scalar_value: {
- uint32_t: 131072
- }
- enumerator: "OUT_HDMI_ARC"
- scalar_value: {
- uint32_t: 262144
- }
- enumerator: "OUT_SPDIF"
- scalar_value: {
- uint32_t: 524288
- }
- enumerator: "OUT_FM"
- scalar_value: {
- uint32_t: 1048576
- }
- enumerator: "OUT_AUX_LINE"
- scalar_value: {
- uint32_t: 2097152
- }
- enumerator: "OUT_SPEAKER_SAFE"
- scalar_value: {
- uint32_t: 4194304
- }
- enumerator: "OUT_IP"
- scalar_value: {
- uint32_t: 8388608
- }
- enumerator: "OUT_BUS"
- scalar_value: {
- uint32_t: 16777216
- }
- enumerator: "OUT_PROXY"
- scalar_value: {
- uint32_t: 33554432
- }
- enumerator: "OUT_DEFAULT"
- scalar_value: {
- uint32_t: 1073741824
- }
- enumerator: "OUT_ALL"
- scalar_value: {
- uint32_t: 1140850687
- }
- enumerator: "OUT_ALL_A2DP"
- scalar_value: {
- uint32_t: 896
- }
- enumerator: "OUT_ALL_SCO"
- scalar_value: {
- uint32_t: 112
- }
- enumerator: "OUT_ALL_USB"
- scalar_value: {
- uint32_t: 24576
- }
- enumerator: "IN_COMMUNICATION"
- scalar_value: {
- uint32_t: 2147483649
- }
- enumerator: "IN_AMBIENT"
- scalar_value: {
- uint32_t: 2147483650
- }
- enumerator: "IN_BUILTIN_MIC"
- scalar_value: {
- uint32_t: 2147483652
- }
- enumerator: "IN_BLUETOOTH_SCO_HEADSET"
- scalar_value: {
- uint32_t: 2147483656
- }
- enumerator: "IN_WIRED_HEADSET"
- scalar_value: {
- uint32_t: 2147483664
- }
- enumerator: "IN_AUX_DIGITAL"
- scalar_value: {
- uint32_t: 2147483680
- }
- enumerator: "IN_HDMI"
- scalar_value: {
- uint32_t: 2147483680
- }
- enumerator: "IN_VOICE_CALL"
- scalar_value: {
- uint32_t: 2147483712
- }
- enumerator: "IN_TELEPHONY_RX"
- scalar_value: {
- uint32_t: 2147483712
- }
- enumerator: "IN_BACK_MIC"
- scalar_value: {
- uint32_t: 2147483776
- }
- enumerator: "IN_REMOTE_SUBMIX"
- scalar_value: {
- uint32_t: 2147483904
- }
- enumerator: "IN_ANLG_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2147484160
- }
- enumerator: "IN_DGTL_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2147484672
- }
- enumerator: "IN_USB_ACCESSORY"
- scalar_value: {
- uint32_t: 2147485696
- }
- enumerator: "IN_USB_DEVICE"
- scalar_value: {
- uint32_t: 2147487744
- }
- enumerator: "IN_FM_TUNER"
- scalar_value: {
- uint32_t: 2147491840
- }
- enumerator: "IN_TV_TUNER"
- scalar_value: {
- uint32_t: 2147500032
- }
- enumerator: "IN_LINE"
- scalar_value: {
- uint32_t: 2147516416
- }
- enumerator: "IN_SPDIF"
- scalar_value: {
- uint32_t: 2147549184
- }
- enumerator: "IN_BLUETOOTH_A2DP"
- scalar_value: {
- uint32_t: 2147614720
- }
- enumerator: "IN_LOOPBACK"
- scalar_value: {
- uint32_t: 2147745792
- }
- enumerator: "IN_IP"
- scalar_value: {
- uint32_t: 2148007936
- }
- enumerator: "IN_BUS"
- scalar_value: {
- uint32_t: 2148532224
- }
- enumerator: "IN_PROXY"
- scalar_value: {
- uint32_t: 2164260864
- }
- enumerator: "IN_DEFAULT"
- scalar_value: {
- uint32_t: 3221225472
- }
- enumerator: "IN_ALL"
- scalar_value: {
- uint32_t: 3240099839
- }
- enumerator: "IN_ALL_SCO"
- scalar_value: {
- uint32_t: 2147483656
- }
- enumerator: "IN_ALL_USB"
- scalar_value: {
- uint32_t: 2147489792
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioOutputFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DIRECT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "PRIMARY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FAST"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DEEP_BUFFER"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "COMPRESS_OFFLOAD"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "NON_BLOCKING"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "HW_AV_SYNC"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "TTS"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "RAW"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "SYNC"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "IEC958_NONAUDIO"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "DIRECT_PCM"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "MMAP_NOIRQ"
- scalar_value: {
- int32_t: 16384
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioInputFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAST"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HW_HOTWORD"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RAW"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SYNC"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "MMAP_NOIRQ"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioUsage"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MEDIA"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VOICE_COMMUNICATION"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VOICE_COMMUNICATION_SIGNALLING"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ALARM"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NOTIFICATION"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "NOTIFICATION_TELEPHONY_RINGTONE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "NOTIFICATION_COMMUNICATION_REQUEST"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "NOTIFICATION_COMMUNICATION_INSTANT"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "NOTIFICATION_COMMUNICATION_DELAYED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "NOTIFICATION_EVENT"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "ASSISTANCE_ACCESSIBILITY"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "ASSISTANCE_NAVIGATION_GUIDANCE"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "ASSISTANCE_SONIFICATION"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "GAME"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "VIRTUAL_SOURCE"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "streamType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
- }
- struct_value: {
- name: "bitRatePerSecond"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "durationMicroseconds"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "hasVideo"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "isStreaming"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "bitWidth"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "bufferSize"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "usage"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioUsage"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "offloadInfo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
- }
- struct_value: {
- name: "frameCount"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGainMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "JOINT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "CHANNELS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "RAMP"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGain"
- type: TYPE_STRUCT
- struct_value: {
- name: "mode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "minValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "defaultValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "stepValue"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "minRampMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxRampMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGainConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "index"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "mode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "values"
- type: TYPE_ARRAY
- vector_value: {
- vector_size: 32
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- struct_value: {
- name: "rampDurationMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortRole"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SOURCE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SINK"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DEVICE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MIX"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SESSION"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
- }
- struct_value: {
- name: "address"
- type: TYPE_ARRAY
- vector_value: {
- vector_size: 32
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "session"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SAMPLE_RATE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "CHANNEL_MASK"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FORMAT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "GAIN"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "ALL"
- scalar_value: {
- uint32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
- type: TYPE_UNION
- sub_union: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
- type: TYPE_UNION
- union_value: {
- name: "stream"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
- }
- union_value: {
- name: "source"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioSource"
- }
- }
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ioHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "useCase"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
- }
- }
- union_value: {
- name: "device"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
- }
- union_value: {
- name: "mix"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
- }
- union_value: {
- name: "session"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
- }
- }
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "configMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
- }
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "gain"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainConfig"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
- }
- struct_value: {
- name: "role"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
- }
- struct_value: {
- name: "ext"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
- }
- struct_value: {
- name: "address"
- type: TYPE_ARRAY
- vector_value: {
- vector_size: 32
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "LOW"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ioHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "latencyClass"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "session"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPort"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
- type: TYPE_UNION
- union_value: {
- name: "device"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
- }
- union_value: {
- name: "mix"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
- }
- union_value: {
- name: "session"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
- }
- }
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "role"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "sampleRates"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "channelMasks"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- }
- struct_value: {
- name: "formats"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- }
- struct_value: {
- name: "gains"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGain"
- }
- }
- struct_value: {
- name: "activeConfig"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
- }
- struct_value: {
- name: "ext"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
- }
-}
-
-attribute: {
name: "::android::hardware::tv::input::V1_0::Result"
type: TYPE_ENUM
enum_value: {
@@ -2030,8 +110,8 @@
struct_value: {
name: "audioAddress"
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/usb/1.0/Android.bp b/usb/1.0/Android.bp
index 3505ded..0b641f1 100644
--- a/usb/1.0/Android.bp
+++ b/usb/1.0/Android.bp
@@ -14,9 +14,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0",
srcs: [
- "types.hal",
- "IUsb.hal",
- "IUsbCallback.hal",
+ ":android.hardware.usb@1.0_hal",
],
out: [
"android/hardware/usb/1.0/types.cpp",
@@ -30,9 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0",
srcs: [
- "types.hal",
- "IUsb.hal",
- "IUsbCallback.hal",
+ ":android.hardware.usb@1.0_hal",
],
out: [
"android/hardware/usb/1.0/types.h",
diff --git a/usb/1.0/Android.mk b/usb/1.0/Android.mk
index 0eded5b..7be7147 100644
--- a/usb/1.0/Android.mk
+++ b/usb/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.usb@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -201,7 +201,7 @@
LOCAL_MODULE := android.hardware.usb@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -394,7 +394,7 @@
LOCAL_MODULE := android.hardware.usb@1.0-java-constants
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
#
diff --git a/usb/1.0/default/Android.mk b/usb/1.0/default/Android.mk
index 09d7ce7..489293c 100644
--- a/usb/1.0/default/Android.mk
+++ b/usb/1.0/default/Android.mk
@@ -2,6 +2,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.usb@1.0-service
LOCAL_INIT_RC := android.hardware.usb@1.0-service.rc
LOCAL_SRC_FILES := \
diff --git a/usb/1.0/default/android.hardware.usb@1.0-service.rc b/usb/1.0/default/android.hardware.usb@1.0-service.rc
index 77dfc93..6ea0720 100644
--- a/usb/1.0/default/android.hardware.usb@1.0-service.rc
+++ b/usb/1.0/default/android.hardware.usb@1.0-service.rc
@@ -1,4 +1,4 @@
-service usb-hal-1-0 /system/bin/hw/android.hardware.usb@1.0-service
+service usb-hal-1-0 /vendor/bin/hw/android.hardware.usb@1.0-service
class hal
user system
group system
diff --git a/vibrator/1.0/Android.bp b/vibrator/1.0/Android.bp
index aeefb5d..d6813ea 100644
--- a/vibrator/1.0/Android.bp
+++ b/vibrator/1.0/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0",
srcs: [
- "types.hal",
- "IVibrator.hal",
+ ":android.hardware.vibrator@1.0_hal",
],
out: [
"android/hardware/vibrator/1.0/types.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0",
srcs: [
- "types.hal",
- "IVibrator.hal",
+ ":android.hardware.vibrator@1.0_hal",
],
out: [
"android/hardware/vibrator/1.0/types.h",
diff --git a/vibrator/1.0/Android.mk b/vibrator/1.0/Android.mk
index 1437d44..4e1ba6a 100644
--- a/vibrator/1.0/Android.mk
+++ b/vibrator/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.vibrator@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -64,7 +64,7 @@
LOCAL_MODULE := android.hardware.vibrator@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/vibrator/1.0/default/Android.bp b/vibrator/1.0/default/Android.bp
index 5e488e6..6cb9802 100644
--- a/vibrator/1.0/default/Android.bp
+++ b/vibrator/1.0/default/Android.bp
@@ -12,8 +12,10 @@
// 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.
+
cc_library_shared {
name: "android.hardware.vibrator@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Vibrator.cpp"],
shared_libs: [
diff --git a/vibrator/1.0/default/Android.mk b/vibrator/1.0/default/Android.mk
index 5ba334b..091d615 100644
--- a/vibrator/1.0/default/Android.mk
+++ b/vibrator/1.0/default/Android.mk
@@ -19,6 +19,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.vibrator@1.0-service
LOCAL_INIT_RC := android.hardware.vibrator@1.0-service.rc
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
service.cpp \
diff --git a/vibrator/1.0/default/android.hardware.vibrator@1.0-service.rc b/vibrator/1.0/default/android.hardware.vibrator@1.0-service.rc
index a7836b3..4153c44 100644
--- a/vibrator/1.0/default/android.hardware.vibrator@1.0-service.rc
+++ b/vibrator/1.0/default/android.hardware.vibrator@1.0-service.rc
@@ -1,4 +1,4 @@
-service vibrator-1-0 /system/bin/hw/android.hardware.vibrator@1.0-service
+service vibrator-1-0 /vendor/bin/hw/android.hardware.vibrator@1.0-service
class hal
user system
group system readproc
diff --git a/vibrator/1.0/vts/Vibrator.vts b/vibrator/1.0/vts/Vibrator.vts
index e0de3fb..07ec30e 100644
--- a/vibrator/1.0/vts/Vibrator.vts
+++ b/vibrator/1.0/vts/Vibrator.vts
@@ -5,6 +5,7 @@
package: "android.hardware.vibrator"
import: "android.hardware.vibrator@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/vr/1.0/Android.bp b/vr/1.0/Android.bp
index ab318f0..b48d010 100644
--- a/vr/1.0/Android.bp
+++ b/vr/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0",
srcs: [
- "IVr.hal",
+ ":android.hardware.vr@1.0_hal",
],
out: [
"android/hardware/vr/1.0/VrAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0",
srcs: [
- "IVr.hal",
+ ":android.hardware.vr@1.0_hal",
],
out: [
"android/hardware/vr/1.0/IVr.h",
diff --git a/vr/1.0/Android.mk b/vr/1.0/Android.mk
index 1b8e8c7..0fbdaf7 100644
--- a/vr/1.0/Android.mk
+++ b/vr/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.vr@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -43,7 +43,7 @@
LOCAL_MODULE := android.hardware.vr@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/vr/1.0/default/Android.bp b/vr/1.0/default/Android.bp
index da8a754..0d374d3 100644
--- a/vr/1.0/default/Android.bp
+++ b/vr/1.0/default/Android.bp
@@ -1,5 +1,6 @@
cc_library_shared {
name: "android.hardware.vr@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: ["Vr.cpp"],
shared_libs: [
@@ -18,6 +19,7 @@
cc_binary {
relative_install_path: "hw",
+ proprietary: true,
name: "android.hardware.vr@1.0-service",
init_rc: ["android.hardware.vr@1.0-service.rc"],
srcs: ["service.cpp"],
diff --git a/vr/1.0/default/android.hardware.vr@1.0-service.rc b/vr/1.0/default/android.hardware.vr@1.0-service.rc
index 6177089..ba43302 100644
--- a/vr/1.0/default/android.hardware.vr@1.0-service.rc
+++ b/vr/1.0/default/android.hardware.vr@1.0-service.rc
@@ -1,4 +1,4 @@
-service vr-1-0 /system/bin/hw/android.hardware.vr@1.0-service
+service vr-1-0 /vendor/bin/hw/android.hardware.vr@1.0-service
class hal
user system
group system readproc
diff --git a/vr/1.0/vts/Vr.vts b/vr/1.0/vts/Vr.vts
index 36ec11f..fdc4a5c 100644
--- a/vr/1.0/vts/Vr.vts
+++ b/vr/1.0/vts/Vr.vts
@@ -4,6 +4,7 @@
package: "android.hardware.vr"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/vr/1.0/vts/functional/Android.bp b/vr/1.0/vts/functional/Android.bp
index 551f27c..529f92d 100644
--- a/vr/1.0/vts/functional/Android.bp
+++ b/vr/1.0/vts/functional/Android.bp
@@ -26,11 +26,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/wifi/.clang-format b/wifi/.clang-format
new file mode 100644
index 0000000..25ed932
--- /dev/null
+++ b/wifi/.clang-format
@@ -0,0 +1,2 @@
+BasedOnStyle: Google
+IndentWidth: 4
\ No newline at end of file
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index 59326d0..2319999 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -25,20 +25,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
srcs: [
- "types.hal",
- "IWifi.hal",
- "IWifiApIface.hal",
- "IWifiChip.hal",
- "IWifiChipEventCallback.hal",
- "IWifiEventCallback.hal",
- "IWifiIface.hal",
- "IWifiNanIface.hal",
- "IWifiNanIfaceEventCallback.hal",
- "IWifiP2pIface.hal",
- "IWifiRttController.hal",
- "IWifiRttControllerEventCallback.hal",
- "IWifiStaIface.hal",
- "IWifiStaIfaceEventCallback.hal",
+ ":android.hardware.wifi@1.0_hal",
],
out: [
"android/hardware/wifi/1.0/types.cpp",
@@ -63,20 +50,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
srcs: [
- "types.hal",
- "IWifi.hal",
- "IWifiApIface.hal",
- "IWifiChip.hal",
- "IWifiChipEventCallback.hal",
- "IWifiEventCallback.hal",
- "IWifiIface.hal",
- "IWifiNanIface.hal",
- "IWifiNanIfaceEventCallback.hal",
- "IWifiP2pIface.hal",
- "IWifiRttController.hal",
- "IWifiRttControllerEventCallback.hal",
- "IWifiStaIface.hal",
- "IWifiStaIfaceEventCallback.hal",
+ ":android.hardware.wifi@1.0_hal",
],
out: [
"android/hardware/wifi/1.0/types.h",
diff --git a/wifi/1.0/Android.mk b/wifi/1.0/Android.mk
index 708c14c..4476b14 100644
--- a/wifi/1.0/Android.mk
+++ b/wifi/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.wifi@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -74,44 +74,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (NanBeaconSdfPayloadInd)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (NanBeaconSdfPayloadRequest)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (NanCapabilities)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanCapabilities.java
@@ -587,25 +549,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (NanVsaRxFrameMask)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanVsaRxFrameMask
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (RttBw)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/RttBw.java
@@ -1868,7 +1811,7 @@
LOCAL_MODULE := android.hardware.wifi@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -1934,44 +1877,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (NanBeaconSdfPayloadInd)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadInd.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanBeaconSdfPayloadInd
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (NanBeaconSdfPayloadRequest)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanBeaconSdfPayloadRequest.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanBeaconSdfPayloadRequest
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (NanCapabilities)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/NanCapabilities.java
@@ -2447,25 +2352,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (NanVsaRxFrameMask)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/NanVsaRxFrameMask.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.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.NanVsaRxFrameMask
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (RttBw)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/RttBw.java
diff --git a/wifi/1.0/IWifiNanIface.hal b/wifi/1.0/IWifiNanIface.hal
index 3362339..d1d4ca5 100644
--- a/wifi/1.0/IWifiNanIface.hal
+++ b/wifi/1.0/IWifiNanIface.hal
@@ -21,6 +21,9 @@
/**
* Interface used to represent a single NAN(Neighbour Aware Network) iface.
+ *
+ * References to "NAN Spec" are to the Wi-Fi Alliance "Wi-Fi Neighbor Awareness
+ * Networking (NAN) Technical Specification".
*/
interface IWifiNanIface extends IWifiIface {
/**
@@ -39,7 +42,8 @@
generates (WifiStatus status);
/**
- * Get NAN capabilities.
+ * Get NAN capabilities. Asynchronous response is with
+ * |IWifiNanIfaceEventCallback.notifyCapabilitiesResponse|.
*
* @param cmdId command Id to use for this invocation.
* @return status WifiStatus of the operation.
@@ -53,8 +57,9 @@
/**
* Enable NAN: configures and activates NAN clustering (does not start
* a discovery session or set up data-interfaces or data-paths). Use the
- * |configureRequest| method to change the configuration of an already enabled
+ * |IWifiNanIface.configureRequest| method to change the configuration of an already enabled
* NAN interface.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyEnableResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanEnableRequest|.
@@ -70,7 +75,8 @@
/**
* Configure NAN: configures an existing NAN functionality (i.e. assumes
- * |enableRequest| already submitted and succeeded).
+ * |IWifiNanIface.enableRequest| already submitted and succeeded).
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyConfigResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanConfigRequest|.
@@ -86,6 +92,7 @@
/**
* Disable NAN functionality.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyDisableResponse|.
*
* @param cmdId command Id to use for this invocation.
* @return status WifiStatus of the operation.
@@ -98,6 +105,7 @@
/**
* Publish request to start advertising a discovery service.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStartPublishResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanPublishRequest|.
@@ -113,6 +121,7 @@
/**
* Stop publishing a discovery service.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStopPublishResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param sessionId ID of the publish discovery session to be stopped.
@@ -122,11 +131,12 @@
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
* |WifiStatusCode.ERROR_UNKNOWN|
*/
- stopPublishRequest(CommandIdShort cmdId, uint16_t sessionId)
+ stopPublishRequest(CommandIdShort cmdId, uint8_t sessionId)
generates (WifiStatus status);
/**
* Subscribe request to start searching for a discovery service.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStartSubscribeResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanSubscribeRequest|.
@@ -142,6 +152,7 @@
/**
* Stop subscribing to a discovery service.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStopSubscribeResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param sessionId ID of the subscribe discovery session to be stopped.
@@ -151,11 +162,12 @@
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
* |WifiStatusCode.ERROR_UNKNOWN|
*/
- stopSubscribeRequest(CommandIdShort cmdId, uint16_t sessionId)
+ stopSubscribeRequest(CommandIdShort cmdId, uint8_t sessionId)
generates (WifiStatus status);
/**
* NAN transmit follow up message request.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyTransmitFollowupResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanTransmitFollowupRequest|.
@@ -171,6 +183,7 @@
/**
* Create a NAN Data Interface.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyCreateDataInterfaceResponse|.
*
* @param cmdId command Id to use for this invocation.
* @return status WifiStatus of the operation.
@@ -184,6 +197,7 @@
/**
* Delete a NAN Data Interface.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyDeleteDataInterfaceResponse|.
*
* @param cmdId command Id to use for this invocation.
* @return status WifiStatus of the operation.
@@ -197,6 +211,7 @@
/**
* Initiate a data-path (NDP) setup operation: Initiator.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyInitiateDataPathResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanInitiateDataPathRequest|.
@@ -213,6 +228,8 @@
/**
* Respond to a received data indication as part of a data-path (NDP) setup operation. An
* indication is received by the Responder from the Initiator.
+ * Asynchronous response is with
+ * |IWifiNanIfaceEventCallback.notifyRespondToDataPathIndicationResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param msg Instance of |NanRespondToDataPathIndicationRequest|.
@@ -229,6 +246,7 @@
/**
* Data-path (NDP) termination request: executed by either Initiator or Responder.
+ * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyTerminateDataPathResponse|.
*
* @param cmdId command Id to use for this invocation.
* @param ndpInstanceId Data-path instance ID to be terminated.
@@ -240,19 +258,4 @@
*/
terminateDataPathRequest(CommandIdShort cmdId, uint32_t ndpInstanceId)
generates (WifiStatus status);
-
- /**
- * Configure NAN Beacon or SDF payload to include vendor-specific payload.
- *
- * @param cmdId command Id to use for this invocation.
- * @param msg Instance of |NanBeaconSdfPayloadRequest|.
- * @return status WifiStatus of the operation.
- * Possible status codes:
- * |WifiStatusCode.SUCCESS|,
- * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
- * |WifiStatusCode.ERROR_INVALID_ARGS|,
- * |WifiStatusCode.ERROR_UNKNOWN|
- */
- beaconSdfPayloadRequest(CommandIdShort cmdId, NanBeaconSdfPayloadRequest msg)
- generates (WifiStatus status);
};
diff --git a/wifi/1.0/IWifiNanIfaceEventCallback.hal b/wifi/1.0/IWifiNanIfaceEventCallback.hal
index cb4b043..dd956d6 100644
--- a/wifi/1.0/IWifiNanIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiNanIfaceEventCallback.hal
@@ -18,10 +18,19 @@
/**
* NAN Response and Asynchronous Event Callbacks.
+ *
+ * References to "NAN Spec" are to the Wi-Fi Alliance "Wi-Fi Neighbor Awareness
+ * Networking (NAN) Technical Specification".
*/
interface IWifiNanIfaceEventCallback {
/**
- * Callback invoked in response to a capability request |getCapabilitiesRequest|.
+ * Notify callbacks are asynchronous callbacks - but in response to |IWifiNanIface| method calls.
+ * Each method will receive a notify callback to return results (on success) or failure status.
+ */
+
+ /**
+ * Asynchronous callback invoked in response to a capability request
+ * |IWifiNanIface.getCapabilitiesRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -32,7 +41,7 @@
NanCapabilities capabilities);
/**
- * Callback invoked in response to an enable request |enableRequest|.
+ * Asynchronous callback invoked in response to an enable request |IWifiNanIface.enableRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -46,7 +55,7 @@
oneway notifyEnableResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a config request |configRequest|.
+ * Asynchronous callback invoked in response to a config request |IWifiNanIface.configRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -58,7 +67,7 @@
oneway notifyConfigResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a disable request |disableRequest|.
+ * Asynchronous callback invoked in response to a disable request |IWifiNanIface.disableRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -68,7 +77,8 @@
oneway notifyDisableResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked to notify the status of the start publish request |startPublishRequest|.
+ * Asynchronous callback invoked to notify the status of the start publish request
+ * |IWifiNanIface.startPublishRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -79,10 +89,11 @@
* |NanStatusType.INVALID_SESSION_ID|
* @param sessionId ID of the new publish session (if successfully created).
*/
- oneway notifyStartPublishResponse(CommandIdShort id, WifiNanStatus status, uint16_t sessionId);
+ oneway notifyStartPublishResponse(CommandIdShort id, WifiNanStatus status, uint8_t sessionId);
/**
- * Callback invoked in response to a stop publish request |stopPublishRequest|.
+ * Asynchronous callback invoked in response to a stop publish request
+ * |IWifiNanIface.stopPublishRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -93,7 +104,8 @@
oneway notifyStopPublishResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked to notify the status of the start subscribe request |startSubscribeRequest|.
+ * Asynchronous callback invoked to notify the status of the start subscribe request
+ * |IWifiNanIface.startSubscribeRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -104,10 +116,11 @@
* |NanStatusType.INVALID_SESSION_ID|
* @param sessionId ID of the new subscribe session (if successfully created).
*/
- oneway notifyStartSubscribeResponse(CommandIdShort id, WifiNanStatus status, uint16_t sessionId);
+ oneway notifyStartSubscribeResponse(CommandIdShort id, WifiNanStatus status, uint8_t sessionId);
/**
- * Callback invoked in response to a stop subscribe request |stopSubscribeRequest|.
+ * Asynchronous callback invoked in response to a stop subscribe request
+ * |IWifiNanIface.stopSubscribeRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -118,7 +131,8 @@
oneway notifyStopSubscribeResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a transmit followup request |transmitFollowupRequest|.
+ * Asynchronous callback invoked in response to a transmit followup request
+ * |IWifiNanIface.transmitFollowupRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -127,11 +141,13 @@
* |NanStatusType.INTERNAL_FAILURE|
* |NanStatusType.INVALID_SESSION_ID|
* |NanStatusType.INVALID_PEER_ID|
+ * |NanStatusType.FOLLOWUP_TX_QUEUE_FULL|
*/
oneway notifyTransmitFollowupResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a create data interface request |createDataInterfaceRequest|.
+ * Asynchronous callback invoked in response to a create data interface request
+ * |IWifiNanIface.createDataInterfaceRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -142,7 +158,8 @@
oneway notifyCreateDataInterfaceResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a delete data interface request |deleteDataInterfaceRequest|.
+ * Asynchronous callback invoked in response to a delete data interface request
+ * |IWifiNanIface.deleteDataInterfaceRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -153,7 +170,8 @@
oneway notifyDeleteDataInterfaceResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to an initiate data path request |initiateDataPathRequest|.
+ * Asynchronous callback invoked in response to an initiate data path request
+ * |IWifiNanIface.initiateDataPathRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -168,8 +186,8 @@
uint32_t ndpInstanceId );
/**
- * Callback invoked in response to a respond to data path indication request
- * |respondToDataPathIndicationRequest|.
+ * Asynchronous callback invoked in response to a respond to data path indication request
+ * |IWifiNanIface.respondToDataPathIndicationRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -182,7 +200,8 @@
oneway notifyRespondToDataPathIndicationResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a terminate data path request |terminateDataPathRequest|.
+ * Asynchronous callback invoked in response to a terminate data path request
+ * |IWifiNanIface.terminateDataPathRequest|.
*
* @param cmdId command Id corresponding to the original request.
* @param status WifiNanStatus of the operation. Possible status codes are:
@@ -195,18 +214,6 @@
oneway notifyTerminateDataPathResponse(CommandIdShort id, WifiNanStatus status);
/**
- * Callback invoked in response to a request to include vendor-specific payload in beacon or SDF
- * frames |beaconSdfPayloadRequest|.
- *
- * @param cmdId command Id corresponding to the original request.
- * @param status WifiNanStatus of the operation. Possible status codes are:
- * |NanStatusType.SUCCESS|
- * |NanStatusType.INVALID_ARGS|
- * |NanStatusType.INTERNAL_FAILURE|
- */
- oneway notifyBeaconSdfPayloadResponse(CommandIdShort id, WifiNanStatus status);
-
- /**
* Callbacks for the various asynchornous NAN Events.
*/
@@ -235,7 +242,7 @@
* Possible status codes are:
* |NanStatusType.SUCCESS|
*/
- oneway eventPublishTerminated(uint16_t sessionId, WifiNanStatus status);
+ oneway eventPublishTerminated(uint8_t sessionId, WifiNanStatus status);
/**
* Asynchronous callback indicating that an active subscribe session has terminated.
@@ -245,7 +252,7 @@
* Possible status codes are:
* |NanStatusType.SUCCESS|
*/
- oneway eventSubscribeTerminated(uint16_t sessionId, WifiNanStatus status);
+ oneway eventSubscribeTerminated(uint8_t sessionId, WifiNanStatus status);
/**
* Asynchronous callback indicating that a match has occurred: i.e. a service has been
@@ -261,7 +268,7 @@
* @param discoverySessionId: The discovery session ID of the expired match.
* @param peerId: The peer ID of the expired match.
*/
- oneway eventMatchExpired(uint16_t discoverySessionId, uint32_t peerId);
+ oneway eventMatchExpired(uint8_t discoverySessionId, uint32_t peerId);
/**
* Asynchronous callback indicating that a followup message has been received from a peer.
@@ -275,8 +282,9 @@
*
* @param cmdId command Id corresponding to the original |transmitFollowupRequest| request.
* @param status WifiNanStatus of the operation. Possible status codes are:
+ * |NanStatusType.SUCCESS|
* |NanStatusType.NO_OTA_ACK|
- * |NanStatusType.FOLLOWUP_TX_QUEUE_FULL|
+ * |NanStatusType.PROTOCOL_FAILURE|
*/
oneway eventTransmitFollowup(CommandIdShort id, WifiNanStatus status);
@@ -303,11 +311,4 @@
* @param ndpInstanceId: data-path ID of the terminated data-path.
*/
oneway eventDataPathTerminated(uint32_t ndpInstanceId);
-
- /**
- * Asynchronous callback indicating vendor-specific payload received in NAN beacon or SDF frame.
- *
- * @param event: NanBeaconSdfPayloadInd containing event details.
- */
- oneway eventBeaconSdfPayload(NanBeaconSdfPayloadInd event);
};
diff --git a/wifi/1.0/default/Android.mk b/wifi/1.0/default/Android.mk
index 144c067..2d2d898 100644
--- a/wifi/1.0/default/Android.mk
+++ b/wifi/1.0/default/Android.mk
@@ -16,9 +16,11 @@
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.wifi@1.0-service
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_CPPFLAGS := -Wall -Werror -Wextra
LOCAL_SRC_FILES := \
hidl_struct_util.cpp \
+ hidl_sync_util.cpp \
service.cpp \
wifi.cpp \
wifi_ap_iface.cpp \
diff --git a/wifi/1.0/default/THREADING.README b/wifi/1.0/default/THREADING.README
new file mode 100644
index 0000000..8366ca0
--- /dev/null
+++ b/wifi/1.0/default/THREADING.README
@@ -0,0 +1,35 @@
+Vendor HAL Threading Model
+==========================
+The vendor HAL service has two threads:
+1. HIDL thread: This is the main thread which processes all the incoming HIDL
+RPC's.
+2. Legacy HAL event loop thread: This is the thread forked off for processing
+the legacy HAL event loop (wifi_event_loop()). This thread is used to process
+any asynchronous netlink events posted by the driver. Any asynchronous
+callbacks passed to the legacy HAL API's are invoked on this thread.
+
+Synchronization Concerns
+========================
+wifi_legacy_hal.cpp has a bunch of global "C" style functions to handle the
+legacy callbacks. Each of these "C" style function invokes a corresponding
+"std::function" version of the callback which does the actual processing.
+The variables holding these "std::function" callbacks are reset from the HIDL
+thread when they are no longer used. For example: stopGscan() will reset the
+corresponding "on_gscan_*" callback variables which were set when startGscan()
+was invoked. This is not thread safe since these callback variables are
+accesed from the legacy hal event loop thread as well.
+
+Synchronization Solution
+========================
+Adding a global lock seems to be the most trivial solution to the problem.
+a) All of the asynchronous "C" style callbacks will acquire the global lock
+before invoking the corresponding "std::function" callback variables.
+b) All of the HIDL methods will also acquire the global lock before processing
+(in hidl_return_util::validateAndCall()).
+
+Note: It's important that we only acquire the global lock for asynchronous
+callbacks, because there is no guarantee (or documentation to clarify) that the
+synchronous callbacks are invoked on the same invocation thread. If that is not
+the case in some implementation, we will end up deadlocking the system since the
+HIDL thread would have acquired the global lock which is needed by the
+synchronous callback executed on the legacy hal event loop thread.
diff --git a/wifi/1.0/default/android.hardware.wifi@1.0-service.rc b/wifi/1.0/default/android.hardware.wifi@1.0-service.rc
index 9d09347..c0ae4d4 100644
--- a/wifi/1.0/default/android.hardware.wifi@1.0-service.rc
+++ b/wifi/1.0/default/android.hardware.wifi@1.0-service.rc
@@ -1,4 +1,4 @@
-service wifi_hal_legacy /system/bin/hw/android.hardware.wifi@1.0-service
+service wifi_hal_legacy /vendor/bin/hw/android.hardware.wifi@1.0-service
class hal
user wifi
group wifi
diff --git a/wifi/1.0/default/hidl_callback_util.h b/wifi/1.0/default/hidl_callback_util.h
new file mode 100644
index 0000000..a1c6819
--- /dev/null
+++ b/wifi/1.0/default/hidl_callback_util.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef HIDL_CALLBACK_UTIL_H_
+#define HIDL_CALLBACK_UTIL_H_
+
+#include <set>
+
+#include <hidl/HidlSupport.h>
+
+namespace {
+// Type of callback invoked by the death handler.
+using on_death_cb_function = std::function<void(uint64_t)>;
+
+// Private class used to keep track of death of individual
+// callbacks stored in HidlCallbackHandler.
+template <typename CallbackType>
+class HidlDeathHandler : public android::hardware::hidl_death_recipient {
+ public:
+ HidlDeathHandler(const on_death_cb_function& user_cb_function)
+ : cb_function_(user_cb_function) {}
+ ~HidlDeathHandler() = default;
+
+ // Death notification for callbacks.
+ void serviceDied(
+ uint64_t cookie,
+ const android::wp<android::hidl::base::V1_0::IBase>& /* who */) override {
+ cb_function_(cookie);
+ }
+
+ private:
+ on_death_cb_function cb_function_;
+
+ DISALLOW_COPY_AND_ASSIGN(HidlDeathHandler);
+};
+} // namespace
+
+namespace android {
+namespace hardware {
+namespace wifi {
+namespace V1_0 {
+namespace implementation {
+namespace hidl_callback_util {
+template <typename CallbackType>
+// Provides a class to manage callbacks for the various HIDL interfaces and
+// handle the death of the process hosting each callback.
+class HidlCallbackHandler {
+ public:
+ HidlCallbackHandler()
+ : death_handler_(new HidlDeathHandler<CallbackType>(
+ std::bind(&HidlCallbackHandler::onObjectDeath,
+ this,
+ std::placeholders::_1))) {}
+ ~HidlCallbackHandler() = default;
+
+ bool addCallback(const sp<CallbackType>& cb) {
+ // TODO(b/33818800): Can't compare proxies yet. So, use the cookie
+ // (callback proxy's raw pointer) to track the death of individual clients.
+ uint64_t cookie = reinterpret_cast<uint64_t>(cb.get());
+ if (cb_set_.find(cb) != cb_set_.end()) {
+ LOG(WARNING) << "Duplicate death notification registration";
+ return true;
+ }
+ if (!cb->linkToDeath(death_handler_, cookie)) {
+ LOG(ERROR) << "Failed to register death notification";
+ return false;
+ }
+ cb_set_.insert(cb);
+ return true;
+ }
+
+ const std::set<android::sp<CallbackType>> getCallbacks() {
+ return cb_set_;
+ }
+
+ // Death notification for callbacks.
+ void onObjectDeath(uint64_t cookie) {
+ CallbackType *cb = reinterpret_cast<CallbackType*>(cookie);
+ const auto& iter = cb_set_.find(cb);
+ if (iter == cb_set_.end()) {
+ LOG(ERROR) << "Unknown callback death notification received";
+ return;
+ }
+ cb_set_.erase(iter);
+ LOG(DEBUG) << "Dead callback removed from list";
+ }
+
+ void invalidate() {
+ for (const sp<CallbackType>& cb : cb_set_) {
+ if (!cb->unlinkToDeath(death_handler_)) {
+ LOG(ERROR) << "Failed to deregister death notification";
+ }
+ }
+ cb_set_.clear();
+ }
+
+ private:
+ std::set<sp<CallbackType>> cb_set_;
+ sp<HidlDeathHandler<CallbackType>> death_handler_;
+
+ DISALLOW_COPY_AND_ASSIGN(HidlCallbackHandler);
+};
+
+} // namespace hidl_callback_util
+} // namespace implementation
+} // namespace V1_0
+} // namespace wifi
+} // namespace hardware
+} // namespace android
+#endif // HIDL_CALLBACK_UTIL_H_
diff --git a/wifi/1.0/default/hidl_return_util.h b/wifi/1.0/default/hidl_return_util.h
index 2986165..3f6364b 100644
--- a/wifi/1.0/default/hidl_return_util.h
+++ b/wifi/1.0/default/hidl_return_util.h
@@ -17,6 +17,7 @@
#ifndef HIDL_RETURN_UTIL_H_
#define HIDL_RETURN_UTIL_H_
+#include "hidl_sync_util.h"
#include "wifi_status_util.h"
namespace android {
@@ -44,6 +45,7 @@
WorkFuncT&& work,
const std::function<void(const WifiStatus&)>& hidl_cb,
Args&&... args) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (obj->isValid()) {
hidl_cb((obj->*work)(std::forward<Args>(args)...));
} else {
@@ -61,6 +63,7 @@
WorkFuncT&& work,
const std::function<void(const WifiStatus&, ReturnT)>& hidl_cb,
Args&&... args) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (obj->isValid()) {
const auto& ret_pair = (obj->*work)(std::forward<Args>(args)...);
const WifiStatus& status = std::get<0>(ret_pair);
@@ -86,6 +89,7 @@
WorkFuncT&& work,
const std::function<void(const WifiStatus&, ReturnT1, ReturnT2)>& hidl_cb,
Args&&... args) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (obj->isValid()) {
const auto& ret_tuple = (obj->*work)(std::forward<Args>(args)...);
const WifiStatus& status = std::get<0>(ret_tuple);
diff --git a/wifi/1.0/default/hidl_struct_util.cpp b/wifi/1.0/default/hidl_struct_util.cpp
index 7464b81..0bf0d32 100644
--- a/wifi/1.0/default/hidl_struct_util.cpp
+++ b/wifi/1.0/default/hidl_struct_util.cpp
@@ -134,6 +134,7 @@
return false;
}
hidl_status->ringName = reinterpret_cast<const char*>(legacy_status.name);
+ hidl_status->flags = 0;
for (const auto flag : {WIFI_RING_BUFFER_FLAG_HAS_BINARY_ENTRIES,
WIFI_RING_BUFFER_FLAG_HAS_ASCII_ENTRIES}) {
if (flag & legacy_status.flags) {
@@ -457,6 +458,7 @@
if (!hidl_scan_data) {
return false;
}
+ hidl_scan_data->flags = 0;
for (const auto flag : {legacy_hal::WIFI_SCAN_FLAG_INTERRUPTED}) {
if (legacy_cached_scan_result.flags & flag) {
hidl_scan_data->flags |=
@@ -780,20 +782,19 @@
legacy_request->discovery_indication_cfg |=
hidl_request.configParams.disableJoinedClusterIndication ? 0x4 : 0x0;
legacy_request->config_sid_beacon = 1;
- if (hidl_request.configParams.numberOfServiceIdsInBeacon > 127) {
- LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: numberOfServiceIdsInBeacon > 127";
+ if (hidl_request.configParams.numberOfPublishServiceIdsInBeacon > 127) {
+ LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: numberOfPublishServiceIdsInBeacon > 127";
return false;
}
- legacy_request->sid_beacon_val = (hidl_request.configParams.includeServiceIdsInBeacon ? 0x1 : 0x0)
- | (hidl_request.configParams.numberOfServiceIdsInBeacon << 1);
+ legacy_request->sid_beacon_val =
+ (hidl_request.configParams.includePublishServiceIdsInBeacon ? 0x1 : 0x0)
+ | (hidl_request.configParams.numberOfPublishServiceIdsInBeacon << 1);
+ // TODO: b/35195516 connect SubscribeServiceIds to legacy HAL once implemented
legacy_request->config_rssi_window_size = 1;
legacy_request->rssi_window_size_val = hidl_request.configParams.rssiWindowSize;
legacy_request->config_disc_mac_addr_randomization = 1;
legacy_request->disc_mac_addr_rand_interval_sec =
hidl_request.configParams.macAddressRandomizationIntervalSec;
- legacy_request->config_responder_auto_response = 1;
- legacy_request->ranging_auto_response_cfg = hidl_request.configParams.acceptRangingRequests ?
- legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
legacy_request->config_2dot4g_rssi_close = 1;
if (hidl_request.configParams.bandSpecificConfig.size() != 2) {
LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: bandSpecificConfig.size() != 2";
@@ -809,7 +810,7 @@
legacy_request->config_2dot4g_rssi_proximity = 1;
legacy_request->rssi_proximity_2dot4g_val =
hidl_request.configParams.bandSpecificConfig[
- (size_t) NanBandIndex::NAN_BAND_24GHZ].rssiProximity;
+ (size_t) NanBandIndex::NAN_BAND_24GHZ].rssiCloseProximity;
legacy_request->config_scan_params = 1;
legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] =
hidl_request.configParams.bandSpecificConfig[
@@ -832,7 +833,7 @@
legacy_request->config_5g_rssi_close_proximity = 1;
legacy_request->rssi_close_proximity_5g_val =
hidl_request.configParams.bandSpecificConfig[
- (size_t) NanBandIndex::NAN_BAND_5GHZ].rssiProximity;
+ (size_t) NanBandIndex::NAN_BAND_5GHZ].rssiCloseProximity;
legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] =
hidl_request.configParams.bandSpecificConfig[
(size_t) NanBandIndex::NAN_BAND_5GHZ].dwellTimeMs;
@@ -850,8 +851,8 @@
legacy_request->config_dw.dw_5g_interval_val = hidl_request.configParams
.bandSpecificConfig[(size_t) NanBandIndex::NAN_BAND_5GHZ].discoveryWindowIntervalVal;
if (hidl_request.debugConfigs.validClusterIdVals) {
- legacy_request->cluster_low = hidl_request.debugConfigs.clusterIdLowVal;
- legacy_request->cluster_high = hidl_request.debugConfigs.clusterIdHighVal;
+ legacy_request->cluster_low = hidl_request.debugConfigs.clusterIdBottomRangeVal;
+ legacy_request->cluster_high = hidl_request.debugConfigs.clusterIdTopRangeVal;
} else { // need 'else' since not configurable in legacy HAL
legacy_request->cluster_low = 0x0000;
legacy_request->cluster_high = 0xFFFF;
@@ -916,6 +917,7 @@
memcpy(legacy_request->service_specific_info,
hidl_request.baseConfigs.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
+ // TODO: b/35193423 add support for extended service specific info
legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size();
if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) {
LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: rx_match_filter_len too large";
@@ -958,6 +960,9 @@
hidl_request.baseConfigs.configRangingIndications;
legacy_request->ranging_cfg.distance_ingress_cm = hidl_request.baseConfigs.distanceIngressCm;
legacy_request->ranging_cfg.distance_egress_cm = hidl_request.baseConfigs.distanceEgressCm;
+ legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired ?
+ legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
+ legacy_request->range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT;
legacy_request->publish_type = (legacy_hal::NanPublishType) hidl_request.publishType;
legacy_request->tx_type = (legacy_hal::NanTxType) hidl_request.txType;
@@ -994,6 +999,7 @@
memcpy(legacy_request->service_specific_info,
hidl_request.baseConfigs.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
+ // TODO: b/35193423 add support for extended service specific info
legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size();
if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) {
LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: rx_match_filter_len too large";
@@ -1036,6 +1042,9 @@
hidl_request.baseConfigs.configRangingIndications;
legacy_request->ranging_cfg.distance_ingress_cm = hidl_request.baseConfigs.distanceIngressCm;
legacy_request->ranging_cfg.distance_egress_cm = hidl_request.baseConfigs.distanceEgressCm;
+ legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired ?
+ legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
+ legacy_request->range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT;
legacy_request->subscribe_type = (legacy_hal::NanSubscribeType) hidl_request.subscribeType;
legacy_request->serviceResponseFilter = (legacy_hal::NanSRFType) hidl_request.srfType;
legacy_request->serviceResponseInclude = hidl_request.srfRespondIfInAddressSet ?
@@ -1072,14 +1081,15 @@
legacy_hal::NAN_TX_PRIORITY_HIGH : legacy_hal::NAN_TX_PRIORITY_NORMAL;
legacy_request->dw_or_faw = hidl_request.shouldUseDiscoveryWindow ?
legacy_hal::NAN_TRANSMIT_IN_DW : legacy_hal::NAN_TRANSMIT_IN_FAW;
- legacy_request->service_specific_info_len = hidl_request.message.size();
+ legacy_request->service_specific_info_len = hidl_request.serviceSpecificInfo.size();
if (legacy_request->service_specific_info_len > NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) {
LOG(ERROR) << "convertHidlNanTransmitFollowupRequestToLegacy: service_specific_info_len too large";
return false;
}
memcpy(legacy_request->service_specific_info,
- hidl_request.message.data(),
+ hidl_request.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
+ // TODO: b/35193423 add support for extended service specific info
legacy_request->recv_indication_cfg = hidl_request.disableFollowupResultIndication ? 0x1 : 0x0;
return true;
@@ -1104,20 +1114,18 @@
legacy_request->discovery_indication_cfg |=
hidl_request.disableJoinedClusterIndication ? 0x4 : 0x0;
legacy_request->config_sid_beacon = 1;
- if (hidl_request.numberOfServiceIdsInBeacon > 127) {
- LOG(ERROR) << "convertHidlNanConfigRequestToLegacy: numberOfServiceIdsInBeacon > 127";
+ if (hidl_request.numberOfPublishServiceIdsInBeacon > 127) {
+ LOG(ERROR) << "convertHidlNanConfigRequestToLegacy: numberOfPublishServiceIdsInBeacon > 127";
return false;
}
- legacy_request->sid_beacon = (hidl_request.includeServiceIdsInBeacon ? 0x1 : 0x0)
- | (hidl_request.numberOfServiceIdsInBeacon << 1);
+ legacy_request->sid_beacon = (hidl_request.includePublishServiceIdsInBeacon ? 0x1 : 0x0)
+ | (hidl_request.numberOfPublishServiceIdsInBeacon << 1);
+ // TODO: b/35195516 connect SubscribeServiceIds to legacy HAL once implemented
legacy_request->config_rssi_window_size = 1;
legacy_request->rssi_window_size_val = hidl_request.rssiWindowSize;
legacy_request->config_disc_mac_addr_randomization = 1;
legacy_request->disc_mac_addr_rand_interval_sec =
hidl_request.macAddressRandomizationIntervalSec;
- legacy_request->config_responder_auto_response = 1;
- legacy_request->ranging_auto_response_cfg = hidl_request.acceptRangingRequests ?
- legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
/* TODO : missing
legacy_request->config_2dot4g_rssi_close = 1;
legacy_request->rssi_close_2dot4g_val =
@@ -1130,7 +1138,7 @@
legacy_request->config_2dot4g_rssi_proximity = 1;
legacy_request->rssi_proximity_2dot4g_val =
hidl_request.bandSpecificConfig[
- (size_t) NanBandIndex::NAN_BAND_24GHZ].rssiProximity;
+ (size_t) NanBandIndex::NAN_BAND_24GHZ].rssiCloseProximity;
*/
legacy_request->config_scan_params = 1;
legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_24G_BAND] =
@@ -1156,7 +1164,7 @@
legacy_request->config_5g_rssi_close_proximity = 1;
legacy_request->rssi_close_proximity_5g_val =
hidl_request.bandSpecificConfig[
- (size_t) NanBandIndex::NAN_BAND_5GHZ].rssiProximity;
+ (size_t) NanBandIndex::NAN_BAND_5GHZ].rssiCloseProximity;
legacy_request->scan_params_val.dwell_time[legacy_hal::NAN_CHANNEL_5G_BAND_LOW] =
hidl_request.bandSpecificConfig[
(size_t) NanBandIndex::NAN_BAND_5GHZ].dwellTimeMs;
@@ -1177,30 +1185,6 @@
return true;
}
-bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
- const NanBeaconSdfPayloadRequest& hidl_request,
- legacy_hal::NanBeaconSdfPayloadRequest* legacy_request) {
- if (!legacy_request) {
- LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: legacy_request is null";
- return false;
- }
- memset(legacy_request, 0, sizeof(legacy_hal::NanBeaconSdfPayloadRequest));
-
- legacy_request->vsa.payload_transmit_flag = hidl_request.transmitInNext16dws ? 1 : 0;
- legacy_request->vsa.tx_in_discovery_beacon = hidl_request.transmitInDiscoveryBeacon;
- legacy_request->vsa.tx_in_sync_beacon = hidl_request.transmitInSyncBeacon;
- legacy_request->vsa.tx_in_service_discovery = hidl_request.transmitInServiceDiscoveryFrame;
- legacy_request->vsa.vendor_oui = hidl_request.vendorOui;
- legacy_request->vsa.vsa_len = hidl_request.vsa.size();
- if (legacy_request->vsa.vsa_len > NAN_MAX_VSA_DATA_LEN) {
- LOG(ERROR) << "convertHidlNanBeaconSdfPayloadRequestToLegacy: vsa_len too long";
- return false;
- }
- memcpy(legacy_request->vsa.vsa, hidl_request.vsa.data(), legacy_request->vsa.vsa_len);
-
- return true;
-}
-
bool convertHidlNanDataPathInitiatorRequestToLegacy(
const NanInitiateDataPathRequest& hidl_request,
legacy_hal::NanDataPathInitiatorRequest* legacy_request) {
@@ -1295,13 +1279,13 @@
hidl_response->maxMatchFilterLen = legacy_response.max_match_filter_len;
hidl_response->maxTotalMatchFilterLen = legacy_response.max_total_match_filter_len;
hidl_response->maxServiceSpecificInfoLen = legacy_response.max_service_specific_info_len;
- hidl_response->maxVsaDataLen = legacy_response.max_vsa_data_len;
+ // TODO: b/35193423 add support for extended service specific info
+ hidl_response->maxExtendedServiceSpecificInfoLen = 0;
hidl_response->maxNdiInterfaces = legacy_response.max_ndi_interfaces;
hidl_response->maxNdpSessions = legacy_response.max_ndp_sessions;
hidl_response->maxAppInfoLen = legacy_response.max_app_info_len;
hidl_response->maxQueuedTransmitFollowupMsgs = legacy_response.max_queued_transmit_followup_msgs;
- // TODO: b/34059183 to add to underlying HAL
- hidl_response->maxSubscribeInterfaceAddresses = NAN_MAX_SUBSCRIBE_MAX_ADDRESS;
+ hidl_response->maxSubscribeInterfaceAddresses = legacy_response.max_subscribe_address;
hidl_response->supportedCipherSuites = legacy_response.cipher_suites_supported;
return true;
@@ -1319,6 +1303,7 @@
hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
hidl_ind->serviceSpecificInfo = std::vector<uint8_t>(legacy_ind.service_specific_info,
legacy_ind.service_specific_info + legacy_ind.service_specific_info_len);
+ // TODO: b/35193423 add support for extended service specific info
hidl_ind->matchFilter = std::vector<uint8_t>(legacy_ind.sdf_match_filter,
legacy_ind.sdf_match_filter + legacy_ind.sdf_match_filter_len);
hidl_ind->matchOccuredInBeaconFlag = legacy_ind.match_occured_flag == 1;
@@ -1329,8 +1314,8 @@
legacy_ind.peer_sdea_params.security_cfg == legacy_hal::NAN_DP_CONFIG_SECURITY;
hidl_ind->peerRequiresRanging =
legacy_ind.peer_sdea_params.ranging_state == legacy_hal::NAN_RANGING_ENABLE;
- hidl_ind->rangingMeasurementInCm = legacy_ind.range_result.range_measurement_cm;
- hidl_ind->rangingIndicationType = legacy_ind.range_result.ranging_event_type;
+ hidl_ind->rangingMeasurementInCm = legacy_ind.range_info.range_measurement_cm;
+ hidl_ind->rangingIndicationType = legacy_ind.range_info.ranging_event_type;
return true;
}
@@ -1346,32 +1331,12 @@
hidl_ind->peerId = legacy_ind.requestor_instance_id;
hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
hidl_ind->receivedInFaw = legacy_ind.dw_or_faw == 1;
- hidl_ind->message = std::vector<uint8_t>(legacy_ind.service_specific_info,
+ hidl_ind->serviceSpecificInfo = std::vector<uint8_t>(legacy_ind.service_specific_info,
legacy_ind.service_specific_info + legacy_ind.service_specific_info_len);
return true;
}
-bool convertLegacyNanBeaconSdfPayloadIndToHidl(
- const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
- NanBeaconSdfPayloadInd* hidl_ind) {
- if (!hidl_ind) {
- LOG(ERROR) << "convertLegacyNanBeaconSdfPayloadIndToHidl: hidl_ind is null";
- return false;
- }
- hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
- hidl_ind->isVsaReceived = legacy_ind.is_vsa_received == 1;
- hidl_ind->vsaReceivedOnFrames = legacy_ind.vsa.vsa_received_on;
- hidl_ind->vsaVendorOui = legacy_ind.vsa.vendor_oui;
- hidl_ind->vsa = std::vector<uint8_t>(legacy_ind.vsa.vsa,
- legacy_ind.vsa.vsa + legacy_ind.vsa.attr_len);
- hidl_ind->isBeaconSdfPayloadReceived = legacy_ind.is_beacon_sdf_payload_received == 1;
- hidl_ind->beaconSdfPayloadData = std::vector<uint8_t>(legacy_ind.data.frame_data,
- legacy_ind.data.frame_data + legacy_ind.data.frame_len);
-
- return true;
-}
-
bool convertLegacyNanDataPathRequestIndToHidl(
const legacy_hal::NanDataPathRequestInd& legacy_ind,
NanDataPathRequestInd* hidl_ind) {
@@ -1785,6 +1750,7 @@
hidl_capabilities->lcrSupported = legacy_capabilities.lcr_support;
hidl_capabilities->responderSupported =
legacy_capabilities.responder_supported;
+ hidl_capabilities->preambleSupport = 0;
for (const auto flag : {legacy_hal::WIFI_RTT_PREAMBLE_LEGACY,
legacy_hal::WIFI_RTT_PREAMBLE_HT,
legacy_hal::WIFI_RTT_PREAMBLE_VHT}) {
@@ -1794,6 +1760,7 @@
convertLegacyRttPreambleToHidl(flag));
}
}
+ hidl_capabilities->bwSupport = 0;
for (const auto flag : {legacy_hal::WIFI_RTT_BW_5,
legacy_hal::WIFI_RTT_BW_10,
legacy_hal::WIFI_RTT_BW_20,
diff --git a/wifi/1.0/default/hidl_struct_util.h b/wifi/1.0/default/hidl_struct_util.h
index 14bc77d..490dcae 100644
--- a/wifi/1.0/default/hidl_struct_util.h
+++ b/wifi/1.0/default/hidl_struct_util.h
@@ -110,9 +110,6 @@
bool convertHidlNanTransmitFollowupRequestToLegacy(
const NanTransmitFollowupRequest& hidl_request,
legacy_hal::NanTransmitFollowupRequest* legacy_request);
-bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
- const NanBeaconSdfPayloadRequest& hidl_request,
- legacy_hal::NanBeaconSdfPayloadRequest* legacy_request);
bool convertHidlNanDataPathInitiatorRequestToLegacy(
const NanInitiateDataPathRequest& hidl_request,
legacy_hal::NanDataPathInitiatorRequest* legacy_request);
@@ -135,9 +132,6 @@
bool convertLegacyNanDataPathConfirmIndToHidl(
const legacy_hal::NanDataPathConfirmInd& legacy_ind,
NanDataPathConfirmInd* hidl_ind);
-bool convertLegacyNanBeaconSdfPayloadIndToHidl(
- const legacy_hal::NanBeaconSdfPayloadInd& legacy_ind,
- NanBeaconSdfPayloadInd* hidl_ind);
// RTT controller conversion methods.
bool convertHidlVectorOfRttConfigToLegacy(
diff --git a/wifi/1.0/default/hidl_sync_util.cpp b/wifi/1.0/default/hidl_sync_util.cpp
new file mode 100644
index 0000000..7d47f2f
--- /dev/null
+++ b/wifi/1.0/default/hidl_sync_util.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "hidl_sync_util.h"
+
+namespace {
+std::recursive_mutex g_mutex;
+} // namespace
+
+namespace android {
+namespace hardware {
+namespace wifi {
+namespace V1_0 {
+namespace implementation {
+namespace hidl_sync_util {
+
+std::unique_lock<std::recursive_mutex> acquireGlobalLock() {
+ return std::unique_lock<std::recursive_mutex>{g_mutex};
+}
+
+} // namespace hidl_sync_util
+} // namespace implementation
+} // namespace V1_0
+} // namespace wifi
+} // namespace hardware
+} // namespace android
diff --git a/wifi/1.0/default/hidl_sync_util.h b/wifi/1.0/default/hidl_sync_util.h
new file mode 100644
index 0000000..6631e55
--- /dev/null
+++ b/wifi/1.0/default/hidl_sync_util.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef HIDL_SYNC_UTIL_H_
+#define HIDL_SYNC_UTIL_H_
+
+#include <mutex>
+
+// Utility that provides a global lock to synchronize access between
+// the HIDL thread and the legacy HAL's event loop.
+namespace android {
+namespace hardware {
+namespace wifi {
+namespace V1_0 {
+namespace implementation {
+namespace hidl_sync_util {
+std::unique_lock<std::recursive_mutex> acquireGlobalLock();
+} // namespace hidl_sync_util
+} // namespace implementation
+} // namespace V1_0
+} // namespace wifi
+} // namespace hardware
+} // namespace android
+#endif // HIDL_SYNC_UTIL_H_
diff --git a/wifi/1.0/default/service.cpp b/wifi/1.0/default/service.cpp
index 96d5c6f..059304e 100644
--- a/wifi/1.0/default/service.cpp
+++ b/wifi/1.0/default/service.cpp
@@ -27,7 +27,7 @@
int main(int /*argc*/, char** argv) {
android::base::InitLogging(argv,
android::base::LogdLogger(android::base::SYSTEM));
- LOG(INFO) << "wifi_hal_legacy is starting up...";
+ LOG(INFO) << "Wifi Hal is starting up...";
configureRpcThreadpool(1, true /* callerWillJoin */);
@@ -39,6 +39,6 @@
joinRpcThreadpool();
- LOG(INFO) << "wifi_hal_legacy is terminating...";
+ LOG(INFO) << "Wifi Hal is terminating...";
return 0;
}
diff --git a/wifi/1.0/default/wifi.cpp b/wifi/1.0/default/wifi.cpp
index 8feb836..3d482b4 100644
--- a/wifi/1.0/default/wifi.cpp
+++ b/wifi/1.0/default/wifi.cpp
@@ -85,8 +85,9 @@
WifiStatus Wifi::registerEventCallbackInternal(
const sp<IWifiEventCallback>& event_callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(event_callback);
+ if (!event_cb_handler_.addCallback(event_callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -102,13 +103,13 @@
// Create the chip instance once the HAL is started.
chip_ = new WifiChip(kChipId, legacy_hal_, mode_controller_);
run_state_ = RunState::STARTED;
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onStart().isOk()) {
LOG(ERROR) << "Failed to invoke onStart callback";
};
}
} else {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
@@ -126,13 +127,13 @@
}
WifiStatus wifi_status = stopLegacyHalAndDeinitializeModeController();
if (wifi_status.code == WifiStatusCode::SUCCESS) {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onStop().isOk()) {
LOG(ERROR) << "Failed to invoke onStop callback";
};
}
} else {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
diff --git a/wifi/1.0/default/wifi.h b/wifi/1.0/default/wifi.h
index 40d3552..c6fa84c 100644
--- a/wifi/1.0/default/wifi.h
+++ b/wifi/1.0/default/wifi.h
@@ -23,6 +23,7 @@
#include <android/hardware/wifi/1.0/IWifi.h>
#include <utils/Looper.h>
+#include "hidl_callback_util.h"
#include "wifi_chip.h"
#include "wifi_legacy_hal.h"
#include "wifi_mode_controller.h"
@@ -71,8 +72,8 @@
std::shared_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
std::shared_ptr<mode_controller::WifiModeController> mode_controller_;
RunState run_state_;
- std::vector<sp<IWifiEventCallback>> event_callbacks_;
sp<WifiChip> chip_;
+ hidl_callback_util::HidlCallbackHandler<IWifiEventCallback> event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(Wifi);
};
diff --git a/wifi/1.0/default/wifi_chip.cpp b/wifi/1.0/default/wifi_chip.cpp
index e15178d..6aeedf8 100644
--- a/wifi/1.0/default/wifi_chip.cpp
+++ b/wifi/1.0/default/wifi_chip.cpp
@@ -63,7 +63,7 @@
void WifiChip::invalidate() {
invalidateAndRemoveAllIfaces();
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -71,8 +71,8 @@
return is_valid_;
}
-std::vector<sp<IWifiChipEventCallback>> WifiChip::getEventCallbacks() {
- return event_callbacks_;
+std::set<sp<IWifiChipEventCallback>> WifiChip::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
}
Return<void> WifiChip::getId(getId_cb hidl_status_cb) {
@@ -353,8 +353,9 @@
WifiStatus WifiChip::registerEventCallbackInternal(
const sp<IWifiChipEventCallback>& event_callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(event_callback);
+ if (!event_cb_handler_.addCallback(event_callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -414,13 +415,17 @@
}
WifiStatus status = handleChipConfiguration(mode_id);
if (status.code != WifiStatusCode::SUCCESS) {
- for (const auto& callback : event_callbacks_) {
- callback->onChipReconfigureFailure(status);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onChipReconfigureFailure(status).isOk()) {
+ LOG(ERROR) << "Failed to invoke onChipReconfigureFailure callback";
+ }
}
return status;
}
- for (const auto& callback : event_callbacks_) {
- callback->onChipReconfigured(mode_id);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onChipReconfigured(mode_id).isOk()) {
+ LOG(ERROR) << "Failed to invoke onChipReconfigured callback";
+ }
}
current_mode_id_ = mode_id;
return status;
@@ -499,8 +504,10 @@
}
std::string ifname = legacy_hal_.lock()->getApIfaceName();
ap_iface_ = new WifiApIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceAdded(IfaceType::AP, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceAdded(IfaceType::AP, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
+ }
}
return {createWifiStatus(WifiStatusCode::SUCCESS), ap_iface_};
}
@@ -527,8 +534,10 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(ap_iface_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceRemoved(IfaceType::AP, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceRemoved(IfaceType::AP, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
+ }
}
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -541,8 +550,10 @@
}
std::string ifname = legacy_hal_.lock()->getNanIfaceName();
nan_iface_ = new WifiNanIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceAdded(IfaceType::NAN, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceAdded(IfaceType::NAN, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
+ }
}
return {createWifiStatus(WifiStatusCode::SUCCESS), nan_iface_};
}
@@ -569,8 +580,10 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(nan_iface_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceRemoved(IfaceType::NAN, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceRemoved(IfaceType::NAN, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
+ }
}
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -583,8 +596,10 @@
}
std::string ifname = legacy_hal_.lock()->getP2pIfaceName();
p2p_iface_ = new WifiP2pIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceAdded(IfaceType::P2P, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceAdded(IfaceType::P2P, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
+ }
}
return {createWifiStatus(WifiStatusCode::SUCCESS), p2p_iface_};
}
@@ -611,8 +626,10 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(p2p_iface_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceRemoved(IfaceType::P2P, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceRemoved(IfaceType::P2P, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
+ }
}
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -623,8 +640,10 @@
}
std::string ifname = legacy_hal_.lock()->getStaIfaceName();
sta_iface_ = new WifiStaIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceAdded(IfaceType::STA, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceAdded(IfaceType::STA, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
+ }
}
return {createWifiStatus(WifiStatusCode::SUCCESS), sta_iface_};
}
@@ -651,8 +670,10 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(sta_iface_);
- for (const auto& callback : event_callbacks_) {
- callback->onIfaceRemoved(IfaceType::STA, ifname);
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
+ if (!callback->onIfaceRemoved(IfaceType::STA, ifname).isOk()) {
+ LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
+ }
}
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -743,7 +764,9 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onDebugErrorAlert(error_code, debug_data);
+ if (!callback->onDebugErrorAlert(error_code, debug_data).isOk()) {
+ LOG(ERROR) << "Failed to invoke onDebugErrorAlert callback";
+ }
}
};
legacy_status = legacy_hal_.lock()->registerErrorAlertCallbackHandler(
@@ -806,7 +829,10 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onDebugRingBufferDataAvailable(hidl_status, data);
+ if (!callback->onDebugRingBufferDataAvailable(hidl_status, data).isOk()) {
+ LOG(ERROR) << "Failed to invoke onDebugRingBufferDataAvailable"
+ << " callback";
+ }
}
};
legacy_hal::wifi_error legacy_status =
diff --git a/wifi/1.0/default/wifi_chip.h b/wifi/1.0/default/wifi_chip.h
index 938b180..e1c2344 100644
--- a/wifi/1.0/default/wifi_chip.h
+++ b/wifi/1.0/default/wifi_chip.h
@@ -22,6 +22,7 @@
#include <android-base/macros.h>
#include <android/hardware/wifi/1.0/IWifiChip.h>
+#include "hidl_callback_util.h"
#include "wifi_ap_iface.h"
#include "wifi_legacy_hal.h"
#include "wifi_mode_controller.h"
@@ -62,7 +63,7 @@
// valid before processing them.
void invalidate();
bool isValid();
- std::vector<sp<IWifiChipEventCallback>> getEventCallbacks();
+ std::set<sp<IWifiChipEventCallback>> getEventCallbacks();
// HIDL methods exposed.
Return<void> getId(getId_cb hidl_status_cb) override;
@@ -179,7 +180,6 @@
ChipId chip_id_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
std::weak_ptr<mode_controller::WifiModeController> mode_controller_;
- std::vector<sp<IWifiChipEventCallback>> event_callbacks_;
sp<WifiApIface> ap_iface_;
sp<WifiNanIface> nan_iface_;
sp<WifiP2pIface> p2p_iface_;
@@ -191,6 +191,8 @@
// registration mechanism. Use this to check if we have already
// registered a callback.
bool debug_ring_buffer_cb_registered_;
+ hidl_callback_util::HidlCallbackHandler<IWifiChipEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiChip);
};
diff --git a/wifi/1.0/default/wifi_legacy_hal.cpp b/wifi/1.0/default/wifi_legacy_hal.cpp
index b0b0f96..7d58254 100644
--- a/wifi/1.0/default/wifi_legacy_hal.cpp
+++ b/wifi/1.0/default/wifi_legacy_hal.cpp
@@ -19,6 +19,7 @@
#include <android-base/logging.h>
#include <cutils/properties.h>
+#include "hidl_sync_util.h"
#include "wifi_legacy_hal.h"
#include "wifi_legacy_hal_stubs.h"
@@ -54,7 +55,8 @@
// std::function methods to be invoked.
// Callback to be invoked once |stop| is complete.
std::function<void(wifi_handle handle)> on_stop_complete_internal_callback;
-void onStopComplete(wifi_handle handle) {
+void onAsyncStopComplete(wifi_handle handle) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_stop_complete_internal_callback) {
on_stop_complete_internal_callback(handle);
}
@@ -62,7 +64,7 @@
// Callback to be invoked for driver dump.
std::function<void(char*, int)> on_driver_memory_dump_internal_callback;
-void onDriverMemoryDump(char* buffer, int buffer_size) {
+void onSyncDriverMemoryDump(char* buffer, int buffer_size) {
if (on_driver_memory_dump_internal_callback) {
on_driver_memory_dump_internal_callback(buffer, buffer_size);
}
@@ -70,7 +72,7 @@
// Callback to be invoked for firmware dump.
std::function<void(char*, int)> on_firmware_memory_dump_internal_callback;
-void onFirmwareMemoryDump(char* buffer, int buffer_size) {
+void onSyncFirmwareMemoryDump(char* buffer, int buffer_size) {
if (on_firmware_memory_dump_internal_callback) {
on_firmware_memory_dump_internal_callback(buffer, buffer_size);
}
@@ -79,7 +81,8 @@
// Callback to be invoked for Gscan events.
std::function<void(wifi_request_id, wifi_scan_event)>
on_gscan_event_internal_callback;
-void onGscanEvent(wifi_request_id id, wifi_scan_event event) {
+void onAsyncGscanEvent(wifi_request_id id, wifi_scan_event event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_gscan_event_internal_callback) {
on_gscan_event_internal_callback(id, event);
}
@@ -88,9 +91,10 @@
// Callback to be invoked for Gscan full results.
std::function<void(wifi_request_id, wifi_scan_result*, uint32_t)>
on_gscan_full_result_internal_callback;
-void onGscanFullResult(wifi_request_id id,
- wifi_scan_result* result,
- uint32_t buckets_scanned) {
+void onAsyncGscanFullResult(wifi_request_id id,
+ wifi_scan_result* result,
+ uint32_t buckets_scanned) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_gscan_full_result_internal_callback) {
on_gscan_full_result_internal_callback(id, result, buckets_scanned);
}
@@ -99,10 +103,10 @@
// Callback to be invoked for link layer stats results.
std::function<void((wifi_request_id, wifi_iface_stat*, int, wifi_radio_stat*))>
on_link_layer_stats_result_internal_callback;
-void onLinkLayerStatsResult(wifi_request_id id,
- wifi_iface_stat* iface_stat,
- int num_radios,
- wifi_radio_stat* radio_stat) {
+void onSyncLinkLayerStatsResult(wifi_request_id id,
+ wifi_iface_stat* iface_stat,
+ int num_radios,
+ wifi_radio_stat* radio_stat) {
if (on_link_layer_stats_result_internal_callback) {
on_link_layer_stats_result_internal_callback(
id, iface_stat, num_radios, radio_stat);
@@ -112,7 +116,10 @@
// Callback to be invoked for rssi threshold breach.
std::function<void((wifi_request_id, uint8_t*, int8_t))>
on_rssi_threshold_breached_internal_callback;
-void onRssiThresholdBreached(wifi_request_id id, uint8_t* bssid, int8_t rssi) {
+void onAsyncRssiThresholdBreached(wifi_request_id id,
+ uint8_t* bssid,
+ int8_t rssi) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_rssi_threshold_breached_internal_callback) {
on_rssi_threshold_breached_internal_callback(id, bssid, rssi);
}
@@ -121,10 +128,11 @@
// Callback to be invoked for ring buffer data indication.
std::function<void(char*, char*, int, wifi_ring_buffer_status*)>
on_ring_buffer_data_internal_callback;
-void onRingBufferData(char* ring_name,
- char* buffer,
- int buffer_size,
- wifi_ring_buffer_status* status) {
+void onAsyncRingBufferData(char* ring_name,
+ char* buffer,
+ int buffer_size,
+ wifi_ring_buffer_status* status) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_ring_buffer_data_internal_callback) {
on_ring_buffer_data_internal_callback(
ring_name, buffer, buffer_size, status);
@@ -134,10 +142,11 @@
// Callback to be invoked for error alert indication.
std::function<void(wifi_request_id, char*, int, int)>
on_error_alert_internal_callback;
-void onErrorAlert(wifi_request_id id,
- char* buffer,
- int buffer_size,
- int err_code) {
+void onAsyncErrorAlert(wifi_request_id id,
+ char* buffer,
+ int buffer_size,
+ int err_code) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_error_alert_internal_callback) {
on_error_alert_internal_callback(id, buffer, buffer_size, err_code);
}
@@ -147,9 +156,10 @@
std::function<void(
wifi_request_id, unsigned num_results, wifi_rtt_result* rtt_results[])>
on_rtt_results_internal_callback;
-void onRttResults(wifi_request_id id,
- unsigned num_results,
- wifi_rtt_result* rtt_results[]) {
+void onAsyncRttResults(wifi_request_id id,
+ unsigned num_results,
+ wifi_rtt_result* rtt_results[]) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_rtt_results_internal_callback) {
on_rtt_results_internal_callback(id, num_results, rtt_results);
}
@@ -161,7 +171,8 @@
// So, handle all of them here directly to avoid adding an unnecessary layer.
std::function<void(transaction_id, const NanResponseMsg&)>
on_nan_notify_response_user_callback;
-void onNanNotifyResponse(transaction_id id, NanResponseMsg* msg) {
+void onAysncNanNotifyResponse(transaction_id id, NanResponseMsg* msg) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_notify_response_user_callback && msg) {
on_nan_notify_response_user_callback(id, *msg);
}
@@ -169,14 +180,16 @@
std::function<void(const NanPublishTerminatedInd&)>
on_nan_event_publish_terminated_user_callback;
-void onNanEventPublishTerminated(NanPublishTerminatedInd* event) {
+void onAysncNanEventPublishTerminated(NanPublishTerminatedInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_publish_terminated_user_callback && event) {
on_nan_event_publish_terminated_user_callback(*event);
}
}
std::function<void(const NanMatchInd&)> on_nan_event_match_user_callback;
-void onNanEventMatch(NanMatchInd* event) {
+void onAysncNanEventMatch(NanMatchInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_match_user_callback && event) {
on_nan_event_match_user_callback(*event);
}
@@ -184,7 +197,8 @@
std::function<void(const NanMatchExpiredInd&)>
on_nan_event_match_expired_user_callback;
-void onNanEventMatchExpired(NanMatchExpiredInd* event) {
+void onAysncNanEventMatchExpired(NanMatchExpiredInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_match_expired_user_callback && event) {
on_nan_event_match_expired_user_callback(*event);
}
@@ -192,14 +206,16 @@
std::function<void(const NanSubscribeTerminatedInd&)>
on_nan_event_subscribe_terminated_user_callback;
-void onNanEventSubscribeTerminated(NanSubscribeTerminatedInd* event) {
+void onAysncNanEventSubscribeTerminated(NanSubscribeTerminatedInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_subscribe_terminated_user_callback && event) {
on_nan_event_subscribe_terminated_user_callback(*event);
}
}
std::function<void(const NanFollowupInd&)> on_nan_event_followup_user_callback;
-void onNanEventFollowup(NanFollowupInd* event) {
+void onAysncNanEventFollowup(NanFollowupInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_followup_user_callback && event) {
on_nan_event_followup_user_callback(*event);
}
@@ -207,21 +223,24 @@
std::function<void(const NanDiscEngEventInd&)>
on_nan_event_disc_eng_event_user_callback;
-void onNanEventDiscEngEvent(NanDiscEngEventInd* event) {
+void onAysncNanEventDiscEngEvent(NanDiscEngEventInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_disc_eng_event_user_callback && event) {
on_nan_event_disc_eng_event_user_callback(*event);
}
}
std::function<void(const NanDisabledInd&)> on_nan_event_disabled_user_callback;
-void onNanEventDisabled(NanDisabledInd* event) {
+void onAysncNanEventDisabled(NanDisabledInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_disabled_user_callback && event) {
on_nan_event_disabled_user_callback(*event);
}
}
std::function<void(const NanTCAInd&)> on_nan_event_tca_user_callback;
-void onNanEventTca(NanTCAInd* event) {
+void onAysncNanEventTca(NanTCAInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_tca_user_callback && event) {
on_nan_event_tca_user_callback(*event);
}
@@ -229,7 +248,8 @@
std::function<void(const NanBeaconSdfPayloadInd&)>
on_nan_event_beacon_sdf_payload_user_callback;
-void onNanEventBeaconSdfPayload(NanBeaconSdfPayloadInd* event) {
+void onAysncNanEventBeaconSdfPayload(NanBeaconSdfPayloadInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_beacon_sdf_payload_user_callback && event) {
on_nan_event_beacon_sdf_payload_user_callback(*event);
}
@@ -237,14 +257,16 @@
std::function<void(const NanDataPathRequestInd&)>
on_nan_event_data_path_request_user_callback;
-void onNanEventDataPathRequest(NanDataPathRequestInd* event) {
+void onAysncNanEventDataPathRequest(NanDataPathRequestInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_data_path_request_user_callback && event) {
on_nan_event_data_path_request_user_callback(*event);
}
}
std::function<void(const NanDataPathConfirmInd&)>
on_nan_event_data_path_confirm_user_callback;
-void onNanEventDataPathConfirm(NanDataPathConfirmInd* event) {
+void onAysncNanEventDataPathConfirm(NanDataPathConfirmInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_data_path_confirm_user_callback && event) {
on_nan_event_data_path_confirm_user_callback(*event);
}
@@ -252,7 +274,8 @@
std::function<void(const NanDataPathEndInd&)>
on_nan_event_data_path_end_user_callback;
-void onNanEventDataPathEnd(NanDataPathEndInd* event) {
+void onAysncNanEventDataPathEnd(NanDataPathEndInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_data_path_end_user_callback && event) {
on_nan_event_data_path_end_user_callback(*event);
}
@@ -260,11 +283,30 @@
std::function<void(const NanTransmitFollowupInd&)>
on_nan_event_transmit_follow_up_user_callback;
-void onNanEventTransmitFollowUp(NanTransmitFollowupInd* event) {
+void onAysncNanEventTransmitFollowUp(NanTransmitFollowupInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
if (on_nan_event_transmit_follow_up_user_callback && event) {
on_nan_event_transmit_follow_up_user_callback(*event);
}
}
+
+std::function<void(const NanRangeRequestInd&)>
+ on_nan_event_range_request_user_callback;
+void onAysncNanEventRangeRequest(NanRangeRequestInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
+ if (on_nan_event_range_request_user_callback && event) {
+ on_nan_event_range_request_user_callback(*event);
+ }
+}
+
+std::function<void(const NanRangeReportInd&)>
+ on_nan_event_range_report_user_callback;
+void onAysncNanEventRangeReport(NanRangeReportInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
+ if (on_nan_event_range_report_user_callback && event) {
+ on_nan_event_range_report_user_callback(*event);
+ }
+}
// End of the free-standing "C" style callbacks.
WifiLegacyHal::WifiLegacyHal()
@@ -326,7 +368,8 @@
return WIFI_SUCCESS;
}
LOG(DEBUG) << "Stopping legacy HAL";
- on_stop_complete_internal_callback = [&](wifi_handle handle) {
+ on_stop_complete_internal_callback = [on_stop_complete_user_callback,
+ this](wifi_handle handle) {
CHECK_EQ(global_handle_, handle) << "Handle mismatch";
// Invalidate all the internal pointers now that the HAL is
// stopped.
@@ -335,7 +378,7 @@
on_stop_complete_user_callback();
};
awaiting_event_loop_termination_ = true;
- global_func_table_.wifi_cleanup(global_handle_, onStopComplete);
+ global_func_table_.wifi_cleanup(global_handle_, onAsyncStopComplete);
LOG(DEBUG) << "Legacy HAL stop complete";
is_started_ = false;
return WIFI_SUCCESS;
@@ -391,7 +434,7 @@
reinterpret_cast<uint8_t*>(buffer) + buffer_size);
};
wifi_error status = global_func_table_.wifi_get_driver_memory_dump(
- wlan_interface_handle_, {onDriverMemoryDump});
+ wlan_interface_handle_, {onSyncDriverMemoryDump});
on_driver_memory_dump_internal_callback = nullptr;
return {status, std::move(driver_dump)};
}
@@ -406,7 +449,7 @@
reinterpret_cast<uint8_t*>(buffer) + buffer_size);
};
wifi_error status = global_func_table_.wifi_get_firmware_memory_dump(
- wlan_interface_handle_, {onFirmwareMemoryDump});
+ wlan_interface_handle_, {onSyncFirmwareMemoryDump});
on_firmware_memory_dump_internal_callback = nullptr;
return {status, std::move(firmware_dump)};
}
@@ -488,7 +531,8 @@
}
};
- wifi_scan_result_handler handler = {onGscanFullResult, onGscanEvent};
+ wifi_scan_result_handler handler = {onAsyncGscanFullResult,
+ onAsyncGscanEvent};
wifi_error status = global_func_table_.wifi_start_gscan(
id, wlan_interface_handle_, params, handler);
if (status != WIFI_SUCCESS) {
@@ -584,7 +628,7 @@
};
wifi_error status = global_func_table_.wifi_get_link_stats(
- 0, wlan_interface_handle_, {onLinkLayerStatsResult});
+ 0, wlan_interface_handle_, {onSyncLinkLayerStatsResult});
on_link_layer_stats_result_internal_callback = nullptr;
return {status, link_stats};
}
@@ -609,12 +653,12 @@
std::copy(bssid_ptr, bssid_ptr + 6, std::begin(bssid_arr));
on_threshold_breached_user_callback(id, bssid_arr, rssi);
};
- wifi_error status =
- global_func_table_.wifi_start_rssi_monitoring(id,
- wlan_interface_handle_,
- max_rssi,
- min_rssi,
- {onRssiThresholdBreached});
+ wifi_error status = global_func_table_.wifi_start_rssi_monitoring(
+ id,
+ wlan_interface_handle_,
+ max_rssi,
+ min_rssi,
+ {onAsyncRssiThresholdBreached});
if (status != WIFI_SUCCESS) {
on_rssi_threshold_breached_internal_callback = nullptr;
}
@@ -789,7 +833,7 @@
}
};
wifi_error status = global_func_table_.wifi_set_log_handler(
- 0, wlan_interface_handle_, {onRingBufferData});
+ 0, wlan_interface_handle_, {onAsyncRingBufferData});
if (status != WIFI_SUCCESS) {
on_ring_buffer_data_internal_callback = nullptr;
}
@@ -850,7 +894,7 @@
}
};
wifi_error status = global_func_table_.wifi_set_alert_handler(
- 0, wlan_interface_handle_, {onErrorAlert});
+ 0, wlan_interface_handle_, {onAsyncErrorAlert});
if (status != WIFI_SUCCESS) {
on_error_alert_internal_callback = nullptr;
}
@@ -896,7 +940,7 @@
wlan_interface_handle_,
rtt_configs.size(),
rtt_configs_internal.data(),
- {onRttResults});
+ {onAsyncRttResults});
if (status != WIFI_SUCCESS) {
on_rtt_results_internal_callback = nullptr;
}
@@ -997,23 +1041,29 @@
user_callbacks.on_event_data_path_end;
on_nan_event_transmit_follow_up_user_callback =
user_callbacks.on_event_transmit_follow_up;
+ on_nan_event_range_request_user_callback =
+ user_callbacks.on_event_range_request;
+ on_nan_event_range_report_user_callback =
+ user_callbacks.on_event_range_report;
return global_func_table_.wifi_nan_register_handler(
wlan_interface_handle_,
- {onNanNotifyResponse,
- onNanEventPublishTerminated,
- onNanEventMatch,
- onNanEventMatchExpired,
- onNanEventSubscribeTerminated,
- onNanEventFollowup,
- onNanEventDiscEngEvent,
- onNanEventDisabled,
- onNanEventTca,
- onNanEventBeaconSdfPayload,
- onNanEventDataPathRequest,
- onNanEventDataPathConfirm,
- onNanEventDataPathEnd,
- onNanEventTransmitFollowUp});
+ {onAysncNanNotifyResponse,
+ onAysncNanEventPublishTerminated,
+ onAysncNanEventMatch,
+ onAysncNanEventMatchExpired,
+ onAysncNanEventSubscribeTerminated,
+ onAysncNanEventFollowup,
+ onAysncNanEventDiscEngEvent,
+ onAysncNanEventDisabled,
+ onAysncNanEventTca,
+ onAysncNanEventBeaconSdfPayload,
+ onAysncNanEventDataPathRequest,
+ onAysncNanEventDataPathConfirm,
+ onAysncNanEventDataPathEnd,
+ onAysncNanEventTransmitFollowUp,
+ onAysncNanEventRangeRequest,
+ onAysncNanEventRangeReport});
}
wifi_error WifiLegacyHal::nanEnableRequest(transaction_id id,
@@ -1235,6 +1285,8 @@
on_nan_event_data_path_confirm_user_callback = nullptr;
on_nan_event_data_path_end_user_callback = nullptr;
on_nan_event_transmit_follow_up_user_callback = nullptr;
+ on_nan_event_range_request_user_callback = nullptr;
+ on_nan_event_range_report_user_callback = nullptr;
}
} // namespace legacy_hal
diff --git a/wifi/1.0/default/wifi_legacy_hal.h b/wifi/1.0/default/wifi_legacy_hal.h
index dce4ed4..ed020b0 100644
--- a/wifi/1.0/default/wifi_legacy_hal.h
+++ b/wifi/1.0/default/wifi_legacy_hal.h
@@ -89,6 +89,10 @@
std::function<void(const NanDataPathEndInd&)> on_event_data_path_end;
std::function<void(const NanTransmitFollowupInd&)>
on_event_transmit_follow_up;
+ std::function<void(const NanRangeRequestInd&)>
+ on_event_range_request;
+ std::function<void(const NanRangeReportInd&)>
+ on_event_range_report;
};
// Full scan results contain IE info and are hence passed by reference, to
@@ -124,6 +128,9 @@
/**
* Class that encapsulates all legacy HAL interactions.
* This class manages the lifetime of the event loop thread used by legacy HAL.
+ *
+ * Note: aThere will only be a single instance of this class created in the Wifi
+ * object and will be valid for the lifetime of the process.
*/
class WifiLegacyHal {
public:
diff --git a/wifi/1.0/default/wifi_nan_iface.cpp b/wifi/1.0/default/wifi_nan_iface.cpp
index 333fac7..68be2a7 100644
--- a/wifi/1.0/default/wifi_nan_iface.cpp
+++ b/wifi/1.0/default/wifi_nan_iface.cpp
@@ -55,7 +55,7 @@
switch (msg.response_type) {
case legacy_hal::NAN_RESPONSE_ENABLED: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyEnableResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -63,7 +63,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_DISABLED: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyDisableResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -71,7 +71,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_PUBLISH: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStartPublishResponse(id, wifiNanStatus,
msg.body.publish_response.publish_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -80,7 +80,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_PUBLISH_CANCEL: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStopPublishResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -88,7 +88,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_TRANSMIT_FOLLOWUP: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyTransmitFollowupResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -96,7 +96,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_SUBSCRIBE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStartSubscribeResponse(id, wifiNanStatus,
msg.body.subscribe_response.subscribe_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -105,7 +105,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_SUBSCRIBE_CANCEL: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStopSubscribeResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -113,21 +113,13 @@
break;
}
case legacy_hal::NAN_RESPONSE_CONFIG: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyConfigResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
break;
}
- case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
- if (!callback->notifyBeaconSdfPayloadResponse(id, wifiNanStatus).isOk()) {
- LOG(ERROR) << "Failed to invoke the callback";
- }
- }
- break;
- }
case legacy_hal::NAN_GET_CAPABILITIES: {
NanCapabilities hidl_struct;
if (!hidl_struct_util::convertLegacyNanCapabilitiesResponseToHidl(
@@ -135,7 +127,7 @@
LOG(ERROR) << "Failed to convert nan capabilities response";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyCapabilitiesResponse(id, wifiNanStatus,
hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -144,7 +136,7 @@
break;
}
case legacy_hal::NAN_DP_INTERFACE_CREATE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyCreateDataInterfaceResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -152,7 +144,7 @@
break;
}
case legacy_hal::NAN_DP_INTERFACE_DELETE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyDeleteDataInterfaceResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -160,7 +152,7 @@
break;
}
case legacy_hal::NAN_DP_INITIATOR_RESPONSE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyInitiateDataPathResponse(id, wifiNanStatus,
msg.body.data_request_response.ndp_instance_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -169,20 +161,22 @@
break;
}
case legacy_hal::NAN_DP_RESPONDER_RESPONSE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyRespondToDataPathIndicationResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
}
case legacy_hal::NAN_DP_END: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyTerminateDataPathResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
break;
}
+ case legacy_hal::NAN_RESPONSE_BEACON_SDF_PAYLOAD:
+ /* fall through */
case legacy_hal::NAN_RESPONSE_TCA:
/* fall through */
case legacy_hal::NAN_RESPONSE_STATS:
@@ -207,7 +201,7 @@
hidl_struct.eventType = (NanClusterEventType) msg.event_type;
hidl_struct.addr = msg.data.mac_addr.addr;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventClusterEvent(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -225,7 +219,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDisabled(status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -243,7 +237,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventPublishTerminated(msg.publish_id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -261,7 +255,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventSubscribeTerminated(msg.subscribe_id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -282,7 +276,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventMatch(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -296,7 +290,7 @@
LOG(ERROR) << "Callback invoked on an invalid object";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventMatchExpired(msg.publish_subscribe_id,
msg.requestor_instance_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -318,7 +312,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventFollowupReceived(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -336,7 +330,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventTransmitFollowup(msg.id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -357,7 +351,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDataPathRequest(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -378,7 +372,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDataPathConfirm(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -392,7 +386,7 @@
LOG(ERROR) << "Callback invoked on an invalid object";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
for (int i = 0; i < msg.num_ndp_instances; ++i) {
if (!callback->eventDataPathTerminated(msg.ndp_instance_id[i]).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -402,24 +396,18 @@
};
callback_handlers.on_event_beacon_sdf_payload = [weak_ptr_this](
- const legacy_hal::NanBeaconSdfPayloadInd& msg) {
- const auto shared_ptr_this = weak_ptr_this.promote();
- if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
- LOG(ERROR) << "Callback invoked on an invalid object";
- return;
- }
- NanBeaconSdfPayloadInd hidl_struct;
- if (!hidl_struct_util::convertLegacyNanBeaconSdfPayloadIndToHidl(
- msg, &hidl_struct)) {
- LOG(ERROR) << "Failed to convert nan capabilities response";
- return;
- }
+ const legacy_hal::NanBeaconSdfPayloadInd& /* msg */) {
+ LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called";
+ };
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
- if (!callback->eventBeaconSdfPayload(hidl_struct).isOk()) {
- LOG(ERROR) << "Failed to invoke the callback";
- }
- }
+ callback_handlers.on_event_range_request = [weak_ptr_this](
+ const legacy_hal::NanRangeRequestInd& /* msg */) {
+ LOG(ERROR) << "on_event_range_request - should not be called";
+ };
+
+ callback_handlers.on_event_range_report = [weak_ptr_this](
+ const legacy_hal::NanRangeReportInd& /* msg */) {
+ LOG(ERROR) << "on_event_range_report - should not be called";
};
legacy_hal::wifi_error legacy_status =
@@ -432,7 +420,7 @@
void WifiNanIface::invalidate() {
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -440,6 +428,10 @@
return is_valid_;
}
+std::set<sp<IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
+}
+
Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -517,7 +509,7 @@
Return<void> WifiNanIface::stopPublishRequest(
uint16_t cmd_id,
- uint16_t sessionId,
+ uint8_t sessionId,
stopPublishRequest_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -541,7 +533,7 @@
Return<void> WifiNanIface::stopSubscribeRequest(
uint16_t cmd_id,
- uint16_t sessionId,
+ uint8_t sessionId,
stopSubscribeRequest_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -621,18 +613,6 @@
ndpInstanceId);
}
-Return<void> WifiNanIface::beaconSdfPayloadRequest(
- uint16_t cmd_id,
- const NanBeaconSdfPayloadRequest& msg,
- beaconSdfPayloadRequest_cb hidl_status_cb) {
- return validateAndCall(this,
- WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
- &WifiNanIface::beaconSdfPayloadRequestInternal,
- hidl_status_cb,
- cmd_id,
- msg);
-}
-
std::pair<WifiStatus, std::string> WifiNanIface::getNameInternal() {
return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
}
@@ -643,11 +623,9 @@
WifiStatus WifiNanIface::registerEventCallbackInternal(
const sp<IWifiNanIfaceEventCallback>& callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed and/or
- // make sure that the same callback is only registered once (i.e. detect duplicates)
- // OR: consider having a single listener - not clear why multiple listeners (managers) are
- // necessary, nor how they would coordinate (at least command IDs).
- event_callbacks_.emplace_back(callback);
+ if (!event_cb_handler_.addCallback(callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -699,7 +677,7 @@
}
WifiStatus WifiNanIface::stopPublishRequestInternal(
- uint16_t cmd_id, uint16_t sessionId) {
+ uint16_t cmd_id, uint8_t sessionId) {
legacy_hal::NanPublishCancelRequest legacy_msg;
legacy_msg.publish_id = sessionId;
legacy_hal::wifi_error legacy_status =
@@ -720,7 +698,7 @@
}
WifiStatus WifiNanIface::stopSubscribeRequestInternal(
- uint16_t cmd_id, uint16_t sessionId) {
+ uint16_t cmd_id, uint8_t sessionId) {
legacy_hal::NanSubscribeCancelRequest legacy_msg;
legacy_msg.subscribe_id = sessionId;
legacy_hal::wifi_error legacy_status =
@@ -783,16 +761,6 @@
free(legacy_msg);
return createWifiStatusFromLegacyError(legacy_status);
}
-WifiStatus WifiNanIface::beaconSdfPayloadRequestInternal(
- uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg) {
- legacy_hal::NanBeaconSdfPayloadRequest legacy_msg;
- if (!hidl_struct_util::convertHidlNanBeaconSdfPayloadRequestToLegacy(msg, &legacy_msg)) {
- return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
- }
- legacy_hal::wifi_error legacy_status =
- legacy_hal_.lock()->nanBeaconSdfPayloadRequest(cmd_id, legacy_msg);
- return createWifiStatusFromLegacyError(legacy_status);
-}
} // namespace implementation
} // namespace V1_0
diff --git a/wifi/1.0/default/wifi_nan_iface.h b/wifi/1.0/default/wifi_nan_iface.h
index 4fae3df..e1edd29 100644
--- a/wifi/1.0/default/wifi_nan_iface.h
+++ b/wifi/1.0/default/wifi_nan_iface.h
@@ -21,6 +21,7 @@
#include <android/hardware/wifi/1.0/IWifiNanIface.h>
#include <android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.h>
+#include "hidl_callback_util.h"
#include "wifi_legacy_hal.h"
namespace android {
@@ -60,13 +61,13 @@
const NanPublishRequest& msg,
startPublishRequest_cb hidl_status_cb) override;
Return<void> stopPublishRequest(uint16_t cmd_id,
- uint16_t sessionId,
+ uint8_t sessionId,
stopPublishRequest_cb hidl_status_cb) override;
Return<void> startSubscribeRequest(uint16_t cmd_id,
const NanSubscribeRequest& msg,
startSubscribeRequest_cb hidl_status_cb) override;
Return<void> stopSubscribeRequest(uint16_t cmd_id,
- uint16_t sessionId,
+ uint8_t sessionId,
stopSubscribeRequest_cb hidl_status_cb) override;
Return<void> transmitFollowupRequest(uint16_t cmd_id,
const NanTransmitFollowupRequest& msg,
@@ -87,9 +88,6 @@
Return<void> terminateDataPathRequest(uint16_t cmd_id,
uint32_t ndpInstanceId,
terminateDataPathRequest_cb hidl_status_cb) override;
- Return<void> beaconSdfPayloadRequest(uint16_t cmd_id,
- const NanBeaconSdfPayloadRequest& msg,
- beaconSdfPayloadRequest_cb hidl_status_cb) override;
private:
// Corresponding worker functions for the HIDL methods.
@@ -105,10 +103,10 @@
WifiStatus disableRequestInternal(uint16_t cmd_id);
WifiStatus startPublishRequestInternal(uint16_t cmd_id,
const NanPublishRequest& msg);
- WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint16_t sessionId);
+ WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId);
WifiStatus startSubscribeRequestInternal(uint16_t cmd_id,
const NanSubscribeRequest& msg);
- WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint16_t sessionId);
+ WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId);
WifiStatus transmitFollowupRequestInternal(
uint16_t cmd_id, const NanTransmitFollowupRequest& msg);
WifiStatus createDataInterfaceRequestInternal(uint16_t cmd_id,
@@ -121,13 +119,14 @@
uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg);
WifiStatus terminateDataPathRequestInternal(
uint16_t cmd_id, uint32_t ndpInstanceId);
- WifiStatus beaconSdfPayloadRequestInternal(
- uint16_t cmd_id, const NanBeaconSdfPayloadRequest& msg);
+
+ std::set<sp<IWifiNanIfaceEventCallback>> getEventCallbacks();
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
- std::vector<sp<IWifiNanIfaceEventCallback>> event_callbacks_;
bool is_valid_;
+ hidl_callback_util::HidlCallbackHandler<IWifiNanIfaceEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiNanIface);
};
diff --git a/wifi/1.0/default/wifi_sta_iface.cpp b/wifi/1.0/default/wifi_sta_iface.cpp
index 6cc41db..55c9cf7 100644
--- a/wifi/1.0/default/wifi_sta_iface.cpp
+++ b/wifi/1.0/default/wifi_sta_iface.cpp
@@ -35,7 +35,7 @@
void WifiStaIface::invalidate() {
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -43,8 +43,8 @@
return is_valid_;
}
-std::vector<sp<IWifiStaIfaceEventCallback>> WifiStaIface::getEventCallbacks() {
- return event_callbacks_;
+std::set<sp<IWifiStaIfaceEventCallback>> WifiStaIface::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
}
Return<void> WifiStaIface::getName(getName_cb hidl_status_cb) {
@@ -293,8 +293,9 @@
WifiStatus WifiStaIface::registerEventCallbackInternal(
const sp<IWifiStaIfaceEventCallback>& callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(callback);
+ if (!event_cb_handler_.addCallback(callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -389,7 +390,9 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onBackgroundScanFailure(id);
+ if (!callback->onBackgroundScanFailure(id).isOk()) {
+ LOG(ERROR) << "Failed to invoke onBackgroundScanFailure callback";
+ }
}
};
const auto& on_results_callback = [weak_ptr_this](
@@ -407,7 +410,9 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onBackgroundScanResults(id, hidl_scan_datas);
+ if (!callback->onBackgroundScanResults(id, hidl_scan_datas).isOk()) {
+ LOG(ERROR) << "Failed to invoke onBackgroundScanResults callback";
+ }
}
};
const auto& on_full_result_callback = [weak_ptr_this](
@@ -426,7 +431,9 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onBackgroundFullScanResult(id, hidl_scan_result);
+ if (!callback->onBackgroundFullScanResult(id, hidl_scan_result).isOk()) {
+ LOG(ERROR) << "Failed to invoke onBackgroundFullScanResult callback";
+ }
}
};
legacy_hal::wifi_error legacy_status =
@@ -486,7 +493,9 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- callback->onRssiThresholdBreached(id, bssid, rssi);
+ if (!callback->onRssiThresholdBreached(id, bssid, rssi).isOk()) {
+ LOG(ERROR) << "Failed to invoke onRssiThresholdBreached callback";
+ }
}
};
legacy_hal::wifi_error legacy_status =
@@ -562,7 +571,8 @@
return createWifiStatusFromLegacyError(legacy_status);
}
-WifiStatus WifiStaIface::setScanningMacOuiInternal(const std::array<uint8_t, 3>& oui) {
+WifiStatus WifiStaIface::setScanningMacOuiInternal(
+ const std::array<uint8_t, 3>& oui) {
legacy_hal::wifi_error legacy_status =
legacy_hal_.lock()->setScanningMacOui(oui);
return createWifiStatusFromLegacyError(legacy_status);
diff --git a/wifi/1.0/default/wifi_sta_iface.h b/wifi/1.0/default/wifi_sta_iface.h
index bc2d75f..5f0ffe9 100644
--- a/wifi/1.0/default/wifi_sta_iface.h
+++ b/wifi/1.0/default/wifi_sta_iface.h
@@ -21,6 +21,7 @@
#include <android/hardware/wifi/1.0/IWifiStaIface.h>
#include <android/hardware/wifi/1.0/IWifiStaIfaceEventCallback.h>
+#include "hidl_callback_util.h"
#include "wifi_legacy_hal.h"
namespace android {
@@ -39,7 +40,7 @@
// Refer to |WifiChip::invalidate()|.
void invalidate();
bool isValid();
- std::vector<sp<IWifiStaIfaceEventCallback>> getEventCallbacks();
+ std::set<sp<IWifiStaIfaceEventCallback>> getEventCallbacks();
// HIDL methods exposed.
Return<void> getName(getName_cb hidl_status_cb) override;
@@ -151,8 +152,9 @@
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
- std::vector<sp<IWifiStaIfaceEventCallback>> event_callbacks_;
bool is_valid_;
+ hidl_callback_util::HidlCallbackHandler<IWifiStaIfaceEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiStaIface);
};
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index 1ec1357..30e8943 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -211,7 +211,7 @@
/**
* STA specific types.
- * TODO(b/32159498): Move to a separate nan_types.hal.
+ * TODO(b/32159498): Move to a separate sta_types.hal.
*/
/**
* Parameters to specify the APF capabilities of this iface.
@@ -562,6 +562,9 @@
/**
* NAN specific types.
* TODO(b/32159498): Move to a separate nan_types.hal.
+ *
+ * References to "NAN Spec" are to the Wi-Fi Alliance "Wi-Fi Neighbor Awareness
+ * Networking (NAN) Technical Specification".
*/
/**
@@ -624,55 +627,59 @@
};
/**
- * NAN Match indication type.
+ * NAN Match indication type: control how often to trigger |IWifiNanIfaceEventCallback.eventMatch|
+ * for a single discovery session - i.e. continuously discovering the same publisher with no new
+ * data.
*/
enum NanMatchAlg : uint32_t {
- MATCH_ONCE = 0,
- MATCH_CONTINUOUS,
- MATCH_NEVER,
+ MATCH_ONCE = 0, // Only trigger |IWifiNanIfaceEventCallback.eventMatch| once
+ MATCH_CONTINUOUS, // Trigger |IWifiNanIfaceEventCallback.eventMatch| every time
+ MATCH_NEVER, // Never trigger |IWifiNanIfaceEventCallback.eventMatch|
};
/**
* NAN publish discovery session types.
*/
enum NanPublishType : uint32_t {
- UNSOLICITED = 0,
- SOLICITED,
- UNSOLICITED_SOLICITED,
+ UNSOLICITED = 0, // Publish session broadcasts discovery packets
+ SOLICITED, // Publish session silent, responds to active subscribes queries
+ UNSOLICITED_SOLICITED, // Both
};
/**
* NAN transmit type used in |NanPublishType.SOLICITED| or |NanPublishType.UNSOLICITED_SOLICITED|
- * publish discovery sessions.
+ * publish discovery sessions. Describes the addressing of the packet responding to an ACTIVE
+ * subscribe query.
*/
enum NanTxType : uint32_t {
- BROADCAST = 0,
- UNICAST,
+ BROADCAST = 0, // Respond with a broadcast packet
+ UNICAST, // Respond with a unicast packet
};
/**
- * NAN subscribe discovery session ypes.
+ * NAN subscribe discovery session types.
*/
enum NanSubscribeType : uint32_t {
- PASSIVE = 0,
- ACTIVE,
+ PASSIVE = 0, // Subscribe session scans for |NanPublishType.UNSOLICITED| publish sessions.
+ ACTIVE, // Subscribe session probes for |NanPublishType.SOLICITED| publish sessions.
};
/**
* NAN Service Response Filter Attribute Bit.
*/
enum NanSrfType : uint32_t {
- BLOOM_FILTER = 0,
- PARTIAL_MAC_ADDR,
+ BLOOM_FILTER = 0, // Use a Bloom filter.
+ PARTIAL_MAC_ADDR, // Use a list of MAC addresses.
};
/**
- * NAN DP channel config options.
+ * NAN DP (data-path) channel config options.
*/
enum NanDataPathChannelCfg : uint32_t {
- CHANNEL_NOT_REQUESTED = 0,
- REQUEST_CHANNEL_SETUP,
- FORCE_CHANNEL_SETUP,
+ CHANNEL_NOT_REQUESTED = 0, // No channel request is specified.
+ REQUEST_CHANNEL_SETUP, // Channel request is specified - but may be overridden by firmware.
+ FORCE_CHANNEL_SETUP, // Channel request is specified and must be respected. If the firmware
+ // cannot honor the request then the data-path request is rejected.
};
/**
@@ -680,86 +687,100 @@
*/
struct NanBandSpecificConfig {
/**
- * RSSI values controlling clustering behavior per spec.
+ * RSSI values controlling clustering behavior per spec. RSSI values are specified without a sign,
+ * e.g. a value of -65dBm would be specified as 65.
*/
- uint8_t rssiClose;
- uint8_t rssiMiddle;
+ uint8_t rssiClose; // NAN Spec: RSSI_close
+ uint8_t rssiMiddle; // NAN Spec: RSSI_middle
/**
- * RSSI value determining whether discovery is near (used if enabled in discovery).
+ * RSSI value determining whether discovery is near (used if enabled in discovery by
+ * |NanDiscoveryCommonConfig.useRssiThreshold|).
+ * RSSI values are specified without a sign, e.g. a value of -65dBm would be specified as 65.
+ * NAN Spec: RSSI_close_proximity
*/
- uint8_t rssiProximity;
+ uint8_t rssiCloseProximity;
/**
- * Dwell time of each discovery channel in milliseconds.
- * If time set to 0 then the FW default time must be used.
+ * Dwell time of each discovery channel in milliseconds. If set to 0 then the firmware determines
+ * the dwell time to use.
*/
uint8_t dwellTimeMs;
/**
- * Scan period of each discovery channel in seconds.
- * If time set to 0 then the FW default time must be used.
+ * Scan period of each discovery channel in seconds. If set to 0 then the firmware determines
+ * the scan period to use.
*/
uint16_t scanPeriodSec;
/**
- * Specifies the interval for Sync beacons and SDF's.
+ * Specifies the discovery window interval for Sync beacons and SDF's.
* Valid values of DW Interval are: 1, 2, 3, 4 and 5 corresponding to 1, 2, 4, 8, and 16 DWs.
* Value of 0:
* - reserved in 2.4GHz band
* - no wakeup at all in 5GHz band
- * The publish/subscribe period values don't override the device level configurations if
- * specified (if 'valid' is true).
+ * The publish/subscribe period values don't override this device level configurations if
+ * it is specified.
+ * Configuration is only used only if |validDiscoveryWindowIntervalVal| is set to true.
+ * NAN Spec: Device Capability Attribute / 2.4 GHz DW, Device Capability Attribute / 5 GHz DW
*/
bool validDiscoveryWindowIntervalVal;
uint8_t discoveryWindowIntervalVal;
};
/**
- * Configuration parameters
+ * Debug configuration parameters. Many of these allow non-standard-compliant operation and are
+ * not intended for normal operational mode.
*/
struct NanDebugConfig {
/**
- * The low and high values of the cluster ID: standard values are 0x0000 - 0xFFFF.
- * A clusterLow == clusterHigh indicates a request to join or create a cluster with that ID.
- * Used if 'valid' is true.
+ * Specification of the lower 2 bytes of the cluster ID. The cluster ID is 50-60-9a-01-00-00 to
+ * 50-60-9a-01-FF-FF. Configuration of the bottom and top values of the range (which defaults to
+ * 0x0000 and 0xFFFF respectively).
+ * Configuration is only used if |validClusterIdVals| is set to true.
*/
bool validClusterIdVals;
- uint16_t clusterIdLowVal;
- uint16_t clusterIdHighVal;
+ uint16_t clusterIdBottomRangeVal;
+ uint16_t clusterIdTopRangeVal;
/**
- * NAN management interface address, If specified ('valid' is true) then overrides any other
- * configuration (specifically the default randomization).
+ * NAN management interface address, if specified (|validIntfAddrVal| is true) then overrides any
+ * other configuration (specifically the default randomization configured by
+ * |NanConfigRequest.macAddressRandomizationIntervalSec|).
*/
bool validIntfAddrVal;
MacAddress intfAddrVal;
/**
- * The 24 bit Organizationally Unique ID + the 8 bit Network Id. Used if 'valid' is true.
+ * Combination of the 24 bit Organizationally Unique ID (OUI) and the 8 bit OUI Type.
+ * Used if |validOuiVal| is set to true.
*/
bool validOuiVal;
uint32_t ouiVal;
/**
- * Force the Random Factor to the specified value for all transmitted Sync/Discovery beacons
- * if the 'valid' flag is true.
+ * Force the Random Factor to the specified value for all transmitted Sync/Discovery beacons.
+ * Used if |validRandomFactorForceVal| is set to true.
+ * NAN Spec: Master Indication Attribute / Random Factor
*/
bool validRandomFactorForceVal;
uint8_t randomFactorForceVal;
/**
* Forces the hop-count for all transmitted Sync and Discovery Beacons NO matter the real
- * hop-count being received over the air. Used if the 'valid' flag is true.
+ * hop-count being received over the air. Used if the |validHopCountForceVal}| flag is set to
+ * true.
+ * NAN Spec: Cluster Attribute / Anchor Master Information / Hop Count to Anchor Master
*/
bool validHopCountForceVal;
uint8_t hopCountForceVal;
/**
* Frequency in MHz to of the discovery channel in the specified band. Indexed by |NanBandIndex|.
+ * Used if the |validDiscoveryChannelVal| is set to true.
*/
bool validDiscoveryChannelVal;
WifiChannelInMhz[2] discoveryChannelMhzVal;
/**
* Specifies whether sync/discovery beacons are transmitted in the specified band. Indexed by
- * |NanBandIndex|.
+ * |NanBandIndex|. Used if the |validUseBeaconsInBandVal| is set to true.
*/
bool validUseBeaconsInBandVal;
bool[2] useBeaconsInBandVal;
/**
- * Specified whether SDF (service discovery frames) are transmitted in the specified band. Indexed
- * by |NanBandIndex|.
+ * Specifies whether SDF (service discovery frames) are transmitted in the specified band. Indexed
+ * by |NanBandIndex|. Used if the |validUseSdfInBandVal| is set to true.
*/
bool validUseSdfInBandVal;
bool[2] useSdfInBandVal;
@@ -771,34 +792,48 @@
struct NanConfigRequest {
/**
* Master preference of this device.
+ * NAN Spec: Master Indication Attribute / Master Preference
*/
uint8_t masterPref;
/**
* Controls whether or not the |IWifiNanIfaceEventCallback.eventClusterEvent| will be delivered
- * for DISCOVERY_MAC_ADDRESS_CHANGED.
+ * for |NanClusterEventType.DISCOVERY_MAC_ADDRESS_CHANGED|.
*/
bool disableDiscoveryAddressChangeIndication;
/**
* Controls whether or not the |IWifiNanIfaceEventCallback.eventClusterEvent| will be delivered
- * for STARTED_CLUSTER.
+ * for |NanClusterEventType.STARTED_CLUSTER|.
*/
bool disableStartedClusterIndication;
/**
* Controls whether or not the |IWifiNanIfaceEventCallback.eventClusterEvent| will be delivered
- * for JOINED_CLUSTER.
+ * for |NanClusterEventType.JOINED_CLUSTER|.
*/
bool disableJoinedClusterIndication;
/**
- * Control whether service IDs are included in Sync/Discovery beacons.
+ * Control whether publish service IDs are included in Sync/Discovery beacons.
+ * NAN Spec: Service ID List Attribute
*/
- bool includeServiceIdsInBeacon;
+ bool includePublishServiceIdsInBeacon;
/**
- * If |includeServiceIdInBeacon| is true then specifies the number of service IDs to include
- * in the Sync/Discovery beacons:
+ * If |includePublishServiceIdsInBeacon| is true then specifies the number of publish service IDs
+ * to include in the Sync/Discovery beacons:
* Value = 0: include as many service IDs as will fit into the maximum allowed beacon frame size.
* Value must fit within 7 bits - i.e. <= 127.
*/
- uint8_t numberOfServiceIdsInBeacon;
+ uint8_t numberOfPublishServiceIdsInBeacon;
+ /**
+ * Control whether subscribe service IDs are included in Sync/Discovery beacons.
+ * Spec: Subscribe Service ID List Attribute
+ */
+ bool includeSubscribeServiceIdsInBeacon;
+ /**
+ * If |includeSubscribeServiceIdsInBeacon| is true then specifies the number of subscribe service
+ * IDs to include in the Sync/Discovery beacons:
+ * Value = 0: include as many service IDs as will fit into the maximum allowed beacon frame size.
+ * Value must fit within 7 bits - i.e. <= 127.
+ */
+ uint8_t numberOfSubscribeServiceIdsInBeacon;
/**
* Number of samples used to calculate RSSI.
*/
@@ -809,18 +844,13 @@
*/
uint32_t macAddressRandomizationIntervalSec;
/**
- * Accept (if true) or not (if false) ranging requests from peers - whether in the context of
- * discovery or otherwise.
- */
- bool acceptRangingRequests;
- /**
* Additional configuration provided per band: indexed by |NanBandIndex|.
*/
NanBandSpecificConfig[2] bandSpecificConfig;
};
/**
- * Enable requests for NAN: start-up configuration.
+ * Enable requests for NAN: start-up configuration |IWifiNanIface.enableRequest|.
*/
struct NanEnableRequest {
/**
@@ -833,30 +863,31 @@
uint8_t hopCountMax;
/**
* Configurations of NAN cluster operation. Can also be modified at run-time using
- * |configRequest|.
+ * |IWifiNanIface.configRequest|.
*/
NanConfigRequest configParams;
/**
- * Non-standard configurations of NAN cluster operation - useful for debugging opeations.
+ * Non-standard configurations of NAN cluster operation - useful for debugging operations.
*/
NanDebugConfig debugConfigs;
};
/**
- * Cipher suite flags - to be used as a bitmask.
+ * Cipher suite flags.
*/
enum NanCipherSuiteType : uint32_t {
- SHARED_KEY_128_MASK = 1 << 0,
- SHARED_KEY_256_MASK = 1 << 1
+ SHARED_KEY_128_MASK = 1 << 0, // NCS-SK-128
+ SHARED_KEY_256_MASK = 1 << 1 // NCS-SK-256
};
/**
- * Ranging in the context of discovery sessions indication controls - to be used as a bitmask.
+ * Ranging in the context of discovery sessions indication controls. Controls the frequency of
+ * ranging-driven |IWifiNanIfaceEventCallback.eventMatch|.
*/
enum NanRangingIndication : uint32_t {
- CONTINUOUS_INDICATION_MASK = 1 << 0,
- INGRESS_MET_MASK = 1 << 1,
- EGRESS_MET_MASK = 1 << 2
+ CONTINUOUS_INDICATION_MASK = 1 << 0, // trigger event on every RTT measurement
+ INGRESS_MET_MASK = 1 << 1, // trigger event only when ingress conditions met
+ EGRESS_MET_MASK = 1 << 2 // trigger event only when egress conditions met
};
/**
@@ -865,58 +896,82 @@
struct NanDiscoveryCommonConfig {
/**
* The ID of the discovery session being configured. A value of 0 specifies a request to create
- * a new discovery session.
+ * a new discovery session. The new discovery session ID is returned with
+ * |IWifiNanIfaceEventCallback.notifyStartPublishResponse| or
+ * |IWifiNanIfaceEventCallback.notifyStartSubscribeResponse|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Instance ID
*/
- uint16_t sessionId;
+ uint8_t sessionId;
/**
* The lifetime of the discovery session in seconds. A value of 0 means run forever or until
- * canceled.
+ * canceled using |IWifiIface.stopPublishRequest| or |IWifiIface.stopSubscribeRequest|.
*/
uint16_t ttlSec;
/**
* Indicates the interval between two Discovery Windows in which the device supporting the
- * service is awake to transmit or receive the Service Discovery frames.
- * Valid values of Awake DW Interval are: 1, 2, 4, 8 and 16. A value of 0 will default to 1.
+ * service is awake to transmit or receive the Service Discovery frames. Valid values of Awake
+ * DW Interval are: 1, 2, 4, 8 and 16. A value of 0 will default to 1. Does not override
+ * |NanBandSpecificConfig.discoveryWindowIntervalVal| configurations if those are specified.
*/
uint16_t discoveryWindowPeriod;
/**
- * Number of other-air-air operations (i.e. active transmissions), 0 means forever or until
- * canceled.
+ * The lifetime of the discovery session in number of transmitted SDF discovery packets. A value
+ * of 0 means forever or until canceled using |IWifiIface.stopPublishRequest| or
+ * |IWifiIface.stopSubscribeRequest|.
*/
uint8_t discoveryCount;
/**
* UTF-8 encoded string identifying the service.
* Max length: |NanCapabilities.maxServiceNameLen|.
+ * NAN Spec: The only acceptable single-byte UTF-8 symbols for a Service Name are alphanumeric
+ * values (A-Z, a-z, 0-9), the hyphen ('-'), and the period ('.'). All valid multi-byte UTF-8
+ * characters are acceptable in a Service Name.
*/
vec<uint8_t> serviceName;
/**
- * Specifies the matching indication to host: once, continuous, or never.
+ * Specifies how often to trigger |IWifiNanIfaceEventCallback.eventMatch| when continuously
+ * discovering the same discovery session (with no changes).
*/
NanMatchAlg discoveryMatchIndicator;
/**
- * Arbitrary information communicated as part of discovery.
+ * Arbitrary information communicated in discovery packets - there is no semantic meaning to these
+ * bytes. They are passed-through from publisher to subscriber as-is with no parsing.
* Max length: |NanCapabilities.maxServiceSpecificInfoLen|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Info
*/
vec<uint8_t> serviceSpecificInfo;
/**
- * Ordered sequence of <length, value> pairs (length uses 1 byte) which specify further match
- * criteria (beyond the service name).
+ * Arbitrary information communicated in discovery packets - there is no semantic meaning to these
+ * bytes. They are passed-through from publisher to subscriber as-is with no parsing.
+ * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|.
+ * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info
+ */
+ vec<uint8_t> extendedServiceSpecificInfo;
+ /**
+ * Ordered sequence of <length, value> pairs (|length| uses 1 byte and contains the number of
+ * bytes in the |value| field) which specify further match criteria (beyond the service name).
+ * The match behavior is specified in details in the NAN spec.
* Publisher: used in SOLICITED or SOLICITED_UNSOLICITED sessions.
* Subscriber: used in ACTIVE or PASSIVE sessions.
* Max length: |NanCapabilities.maxMatchFilterLen|.
+ * NAN Spec: matching_filter_rx
*/
vec<uint8_t> rxMatchFilter;
/**
- * Ordered sequence of <length, value> pairs (length uses 1 byte) which specify further match
- * criteria (beyond the service name).
+ * Ordered sequence of <length, value> pairs (|length| uses 1 byte and contains the number of
+ * bytes in the |value| field) which specify further match criteria (beyond the service name).
+ * The match behavior is specified in details in the NAN spec.
* Publisher: used if provided.
- * Subscriber: used in ACTIVE sessions.
+ * Subscriber: used (if provided) only in ACTIVE sessions.
* Max length: |NanCapabilities.maxMatchFilterLen|.
+ * NAN Spec: matching_filter_tx and Service Descriptor Attribute (SDA) / Matching Filter
*/
vec<uint8_t> txMatchFilter;
/**
- * Specifies whether or not the discovery session uses the |rssiProximity| value (configured
- * in enable/configure requests) to filter out matched discovered peers.
+ * Specifies whether or not the discovery session uses the
+ * |NanBandSpecificConfig.rssiCloseProximity| value (configured in enable/configure requests) to
+ * filter out matched discovered peers.
+ * NAN Spec: Service Descriptor Attribute / Service Control / Discovery Range Limited.
*/
bool useRssiThreshold;
/**
@@ -935,45 +990,64 @@
*/
bool disableFollowupReceivedIndication;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session. The
- * |NanCipherSuiteType| bit fields are used to set this value.
+ * Cipher types supported in data-paths constructed in the context of this discovery session.
*/
bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
- * Optional PMK for data-paths constructed in the context of this discovery session. A PMK could
- * also be provided during the actual construction of the data-path (which allows unique PMKs for
- * each data-path).
+ * Optional Pairwise Master Key (PMK) for data-paths constructed in the context of this discovery
+ * session. A PMK can also be provided during the actual construction of the data-path (which
+ * allows for unique PMKs for each data-path).
* Max length: 32
+ * Ref: IEEE 802.11i
*/
vec<uint8_t> pmk;
/**
* Specifies whether or not security is enabled in any data-path (NDP) constructed in the context
* of this discovery session.
+ * NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Security Required
*/
bool securityEnabledInNdp;
/**
* Specifies whether or not there is a ranging requirement in this discovery session.
- * Note that ranging is only performed if all other match criteria with the peer are met.
+ * Ranging is only performed if all other match criteria with the peer are met.
+ * Note: specifying that ranging is required also implies that this device must automatically
+ * accept ranging requests from peers.
+ * Solicited Publisher + Passive Subscriber:
+ * Publisher/Subscriber:
+ * true/true: ranging performed.
+ * true/false: subscriber doesn't require ranging (match if all other criteria met). I.e.
+ * publisher requiring range doesn't gate subscriber matching.
+ * false/true: subscriber tries ranging but publisher refuses (no match).
+ * false/false: ranging isn't attempted and doesn't impact match.
+ * Unsolicited Publisher + Active Subscriber:
+ * Publisher/Subscriber:
+ * true/true: ranging performed.
+ * true/false: publisher attempts ranging but subscriber doesn't allow - no match.
+ * false/true: publisher doesn't attempt ranging, should not impact match.
+ * false/false: ranging isn't attempted and doesn't impact match.
+ * NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Ranging Require.
*/
bool rangingRequired;
/**
- * Interval in msec between two ranging measurements.
- * If the Awake DW interval in Enable/Config is larger than the ranging interval - priority is
- * given to Awake DW interval.
+ * Interval in msec between two ranging measurements. Only relevant if |rangingRequired| is true.
+ * If the Awake DW interval specified either in |discoveryWindowPeriod| or in
+ * |NanBandSpecificConfig.discoveryWindowIntervalVal| is larger than the ranging interval then
+ * priority is given to Awake DW interval.
*/
uint32_t rangingIntervalMsec;
/**
- * The type of ranging indication feedback to be provided by discovery session matches. Use
- * bit-fields from |NanRangingIndication|.
+ * The type of ranging feedback to be provided by discovery session matches
+ * |IWifiNanIfaceEventCallback.eventMatch|. Only relevant if |rangingRequired| is true.
*/
bitfield<NanRangingIndication> configRangingIndications;
/**
- * The ingress and egress distance in cm. If ranging is eanbled (|rangingEnabled| is true) then
- * \configRangingIndications\ is used to determine whether ingress and/or egress (or neither)
+ * The ingress and egress distance in cm. If ranging is enabled (|rangingEnabled| is true) then
+ * |configRangingIndications| is used to determine whether ingress and/or egress (or neither)
* are used to determine whether a match has occurred.
+ * NAN Spec: Service Discovery Extension Attribute (SDEA) / Ingress & Egress Range Limit
*/
- uint32_t distanceIngressCm;
- uint32_t distanceEgressCm;
+ uint16_t distanceIngressCm;
+ uint16_t distanceEgressCm;
};
/**
@@ -1009,27 +1083,35 @@
*/
NanSubscribeType subscribeType;
/**
- * For Active subscribe discovery sessions specify how the Service Response Filter (SRF)
- * attribute is populated.
+ * For |NanSubscribeType.ACTIVE| subscribe discovery sessions specify how the Service Response
+ * Filter (SRF) attribute is populated. Relevant only if |shouldUseSrf| is set to true.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Response Filter / SRF Control / SRF Type
*/
NanSrfType srfType;
/**
- * Configure the requested response of the Service Response Filter (SRF).
+ * Configure whether inclusion of an address in |intfAddr| indicates that those devices should
+ * respond or the reverse. Relevant only if |shouldUseSrf| is set to true and |srfType| is set to
+ * |NanSrfType.PARTIAL_MAC_ADDR|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Response Filter / SRF Control / Include
*/
bool srfRespondIfInAddressSet;
/**
- * Control whether the Service Response Filter (SRF) is transmitted OTA.
+ * Control whether the Service Response Filter (SRF) is used.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Control /
+ * Service Response Filter Present
*/
bool shouldUseSrf;
/**
- * Control whether the Service Specific Info (SSI) is needed in the Publish message to trigger
- * service discovery (a match).
+ * Control whether the presence of |NanDiscoveryCommonConfig.serviceSpecificInfo| data is needed
+ * in the publisher in order to trigger service discovery, i.e. a
+ * |IWifiNanIfaceEventCallback.eventMatch|. The test is for presence of data - not for the
+ * specific contents of the data.
*/
bool isSsiRequiredForMatch;
/**
- * NAN Interface Address, conforming to the format as described in
- * 8.2.4.3.2 of IEEE Std. 802.11-2012.
- * Max length: |NanCapabilities.maxSubscribeInterfaceAddresses|.
+ * NAN Interface Addresses constituting the Service Response Filter (SRF).
+ * Max length (number of addresses): |NanCapabilities.maxSubscribeInterfaceAddresses|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Response Filter / Address Set
*/
vec<MacAddress> intfAddr;
};
@@ -1041,15 +1123,17 @@
/**
* ID of an active publish or subscribe discovery session. Follow-up message is transmitted in the
* context of the discovery session.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Instance ID
*/
- uint16_t discoverySessionId;
+ uint8_t discoverySessionId;
/**
- * ID of the peer. Obtained as part of an earlier |eventMatch| or |eventFollowupReceived|.
+ * ID of the peer. Obtained as part of an earlier |IWifiNanIfaceEventCallback.eventMatch| or
+ * |IWifiNanIfaceEventCallback.eventFollowupReceived|.
*/
uint32_t peerId;
/**
- * MAC address of the peer. Obtained as part of an earlier |eventMatch| or
- * |eventFollowupReceived|.
+ * MAC address of the peer. Obtained as part of an earlier |IWifiNanIfaceEventCallback.eventMatch|
+ * or |IWifiNanIfaceEventCallback.eventFollowupReceived|.
*/
MacAddress addr;
/**
@@ -1062,13 +1146,22 @@
*/
bool shouldUseDiscoveryWindow;
/**
- * Message as a byte sequence.
+ * Arbitrary information communicated to the peer - there is no semantic meaning to these
+ * bytes. They are passed-through from sender to receiver as-is with no parsing.
* Max length: |NanCapabilities.maxServiceSpecificInfoLen|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Info
*/
- vec<uint8_t> message;
+ vec<uint8_t> serviceSpecificInfo;
/**
- * Disable |eventTransmitFollowup| - i.e. do not get indication on whether the follow-up
- * was transmitted and received successfully.
+ * Arbitrary information communicated in discovery packets - there is no semantic meaning to these
+ * bytes. They are passed-through from publisher to subscriber as-is with no parsing.
+ * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|.
+ * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info
+ */
+ vec<uint8_t> extendedServiceSpecificInfo;
+ /**
+ * Disable |IWifiNanIfaceEventCallback.eventTransmitFollowup| - i.e. do not get indication on
+ * whether the follow-up was transmitted and received successfully.
*/
bool disableFollowupResultIndication;
};
@@ -1078,11 +1171,13 @@
*/
struct NanInitiateDataPathRequest {
/**
- * ID of the peer. Obtained as part of an earlier |eventMatch| or |eventFollowupReceived|.
+ * ID of the peer. Obtained as part of an earlier |IWifiNanIfaceEventCallback.eventMatch| or
+ * |IWifiNanIfaceEventCallback.eventFollowupReceived|.
*/
uint32_t peerId;
/**
- * NAN management interface MAC address of the peer.
+ * NAN management interface MAC address of the peer. Obtained as part of an earlier
+ * |IWifiNanIfaceEventCallback.eventMatch| or |IWifiNanIfaceEventCallback.eventFollowupReceived|.
*/
MacAddress peerDiscMacAddr;
/**
@@ -1090,31 +1185,36 @@
*/
NanDataPathChannelCfg channelRequestType;
/**
- * Channel frequency in MHz to start data-path.
+ * Channel frequency in MHz to start data-path. Not relevant if |channelRequestType| is
+ * |NanDataPathChannelCfg.CHANNEL_NOT_REQUESTED|.
*/
WifiChannelInMhz channel;
/**
- * NAN data interface name on which this data-path session is to be started.
- * This must be an interface created using |createDataInterfaceRequest|.
+ * NAN data interface name on which this data-path session is to be initiated.
+ * This must be an interface created using |IWifiNanIface.createDataInterfaceRequest|.
*/
string ifaceName;
/**
* Specifies whether or not security is required for the data-path being created.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Control / Security Present
*/
bool securityRequired;
/**
- * Arbitrary token transmitted as part of the data-path negotiation (not encrypted).
+ * Arbitrary information communicated to the peer as part of the data-path setup process - there
+ * is no semantic meaning to these bytes. They are passed-through from sender to receiver as-is
+ * with no parsing.
* Max length: |NanCapabilities.maxAppInfoLen|.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Specific Info
*/
vec<uint8_t> appInfo;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session. The
- * |NanCipherSuiteType| bit fields are used to set this value.
+ * Cipher types supported in data-paths constructed in the context of this discovery session.
*/
bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
- * PMK of the data-path being requested (if |securityRequired| is true).
+ * Pairwise Master Key (PMK) for the data-path being requested (if |securityRequired| is true).
* Max length: 32
+ * Ref: IEEE 802.11i
*/
vec<uint8_t> pmk;
};
@@ -1125,65 +1225,44 @@
struct NanRespondToDataPathIndicationRequest {
/**
* Accept (true) or reject (false) the request.
+ * NAN Spec: Data Path Attributes / NDP Attribute / Type and Status
*/
bool acceptRequest;
/**
* ID of the data-path (NDP) for which we're responding - obtained as part of the request in
- * |NanDataPathRequestInd|.
+ * |IWifiNanIfaceEventCallback.eventDataPathRequest|.
*/
uint32_t ndpInstanceId;
/**
* NAN data interface name on which this data-path session is to be started.
- * This must be an interface created using |createDataInterfaceRequest|.
+ * This must be an interface created using |IWifiNanIface.createDataInterfaceRequest|.
*/
string ifaceName;
/**
* Specifies whether or not security is required for the data-path being created.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Control / Security Present
*/
bool securityRequired;
/**
- * Arbitrary token transmitted as part of the data-path negotiation (not encrypted).
+ * Arbitrary information communicated to the peer as part of the data-path setup process - there
+ * is no semantic meaning to these bytes. They are passed-through from sender to receiver as-is
+ * with no parsing.
* Max length: |NanCapabilities.maxAppInfoLen|.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Specific Info
*/
vec<uint8_t> appInfo;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session. The
- * |NanCipherSuiteType| bit fields are used to set this value.
+ * Cipher types supported in data-paths constructed in the context of this discovery session.
*/
bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
- * PMK of the data-path being requested (if |securityRequired| is true).
+ * Pairwise Master Key (PMK) for the data-path being negotiated (if |securityRequired| is true).
* Max length: 32
*/
vec<uint8_t> pmk;
};
/**
- * Specifies vendor-specific information fields to be included in NAN management frames.
- */
-struct NanBeaconSdfPayloadRequest {
- /**
- * If true information is transmitted in next 16 DWs, else only in the next (1) DW.
- */
- bool transmitInNext16dws;
- /**
- * Specify the management frames in which the vendor-specific information is included.
- */
- bool transmitInDiscoveryBeacon;
- bool transmitInSyncBeacon;
- bool transmitInServiceDiscoveryFrame;
- /**
- * Organizationally Unique Identifier (OUI).
- */
- uint32_t vendorOui;
- /**
- * Vendor specific attribute to be transmitted.
- * Max length: |NanCapabilities.maxVsaDataLen|.
- */
- vec<uint8_t> vsa;
-};
-
-/**
* NDP Capabilities response.
*/
struct NanCapabilities {
@@ -1208,24 +1287,24 @@
*/
uint32_t maxMatchFilterLen;
/**
- * Maximum length (in bytes) of aggregate match filters.
+ * Maximum length (in bytes) of aggregate match filters across all active sessions.
*/
uint32_t maxTotalMatchFilterLen;
/**
- * Maximum length (in bytes) of the service specific info length or message length in follow-ups.
+ * Maximum length (in bytes) of the service specific info field.
*/
uint32_t maxServiceSpecificInfoLen;
/**
- * Maximum length (in bytes) of vendor-specific (VSA) data.
+ * Maximum length (in bytes) of the extended service specific info field.
*/
- uint32_t maxVsaDataLen;
+ uint32_t maxExtendedServiceSpecificInfoLen;
/**
- * Maximum number of data interfaces which can be created concurrently on the device.
+ * Maximum number of data interfaces (NDI) which can be created concurrently on the device.
*/
uint32_t maxNdiInterfaces;
/**
- * Maximum number of data paths which can be created concurrently on each individual
- * data interface.
+ * Maximum number of data paths (NDP) which can be created concurrently on each individual
+ * data interface (NDI).
*/
uint32_t maxNdpSessions;
/**
@@ -1239,7 +1318,7 @@
/**
* Maximum number MAC interface addresses which can be specified to a subscribe discovery session.
*/
- uint32_t maxSubscribeInterfaceAddresses; // TODO: (hard-code to 42) get from HAL
+ uint32_t maxSubscribeInterfaceAddresses;
/**
* The set of supported Cipher suites. The |NanCipherSuiteType| bit fields are used.
*/
@@ -1252,10 +1331,12 @@
struct NanMatchInd {
/**
* Publish or subscribe discovery session ID of an existing discovery session.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Instance ID
*/
- uint16_t discoverySessionId;
+ uint8_t discoverySessionId;
/**
- * A unique ID of the peer. Can be subsequently used in |transmitFollowupRequest|.
+ * A unique ID of the peer. Can be subsequently used in |IWifiNanIface.transmitFollowupRequest| or
+ * to set up a data-path.
*/
uint32_t peerId;
/**
@@ -1263,47 +1344,60 @@
*/
MacAddress addr;
/**
- * The arbitrary information contained in the |serviceSpecificInfo| of the peer's discovery
- * session.
+ * The arbitrary information contained in the |NanDiscoveryCommonConfig.serviceSpecificInfo| of
+ * the peer's discovery session configuration.
* Max length: |NanCapabilities.maxServiceSpecificInfoLen|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Info
*/
vec<uint8_t> serviceSpecificInfo;
/**
- * Ordered sequence of <length, value> pairs (length uses 1 byte) of the peer's discovery session
- * match filter.
+ * Arbitrary information communicated in discovery packets - there is no semantic meaning to these
+ * bytes. They are passed-through from publisher to subscriber as-is with no parsing.
+ * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|.
+ * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info
+ */
+ vec<uint8_t> extendedServiceSpecificInfo;
+ /**
+ * The match filter from the discovery packet (publish or subscribe) which caused service
+ * discovery. Matches the peer's |NanDiscoveryCommonConfig.txMatchFilter|.
* Max length: |NanCapabilities.maxMatchFilterLen|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Matching Filter
*/
vec<uint8_t> matchFilter;
/**
- * Indicates the type of discovery: Beacon if true, Service Discovery Frames (SDF) if false.
+ * Indicates the type of discovery: true if match occurred on a Beacon frame, false if the match
+ * occurred on a Service Discovery Frames (SDF).
*/
bool matchOccuredInBeaconFlag;
/**
- * Flag to indicate FW is out of resource and that it can no longer
- * track this Service Name.
+ * Flag to indicate firmware is out of resource and that it can no longer track this Service Name.
+ * Indicates that while |IWifiNanIfaceEventCallback.eventMatch| will be received, the
+ * |NanDiscoveryCommonConfig.discoveryMatchIndicator| configuration will not be honored.
*/
bool outOfResourceFlag;
/**
- * If RSSI filtering was configured in discovery session setup then this
- * field must contain the received RSSI value. It will contain 0 if RSSI filtering was not
- * configured.
+ * If RSSI filtering was enabled using |NanDiscoveryCommonConfig.useRssiThreshold| in discovery
+ * session setup then this field contains the received RSSI value. It will contain 0 if RSSI
+ * filtering was not enabled.
* RSSI values are returned without sign, e.g. -70dBm will be returned as 70.
*/
uint8_t rssiValue;
/**
* Cipher types supported by the peer for data-paths constructed in the context of this discovery
- * session. The |NanCipherSuiteType| bit fields are used to set this value.
+ * session.
*/
bitfield<NanCipherSuiteType> peerSupportedCipherTypes;
/**
* Indicates whether or not the peer requires security enabled in any data-path (NDP) constructed
* in the context of this discovery session.
+ * NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Security Required
*/
bool peerRequiresSecurityEnabledInNdp;
/**
- * Indicates whether or not the peer requires (and hence allows) ranging in this discovery
- * session.
+ * Indicates whether or not the peer requires (and hence allows) ranging in the context of this
+ * discovery session.
* Note that ranging is only performed if all other match criteria with the peer are met.
+ * NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Ranging Require.
*/
bool peerRequiresRanging;
/**
@@ -1324,8 +1418,8 @@
*/
uint32_t rangingMeasurementInCm;
/**
- * The ranging event(s) which triggered the ranging. Uses bit-fields from |NanRangingIndication|.
- * E.g. can indicate that continuous ranging is required, or else that an ingress event occurred.
+ * The ranging event(s) which triggered the ranging. E.g. can indicate that continuous ranging was
+ * requested, or else that an ingress event occurred.
*/
bitfield<NanRangingIndication> rangingIndicationType;
};
@@ -1337,10 +1431,12 @@
/**
* Discovery session (publish or subscribe) ID of a previously created discovery session. The
* message is received in the context of this discovery session.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Instance ID
*/
- uint16_t discoverySessionId;
+ uint8_t discoverySessionId;
/**
- * A unique ID of the peer. Can be subsequently used in |transmitFollowupRequest|.
+ * A unique ID of the peer. Can be subsequently used in |IWifiNanIface.transmitFollowupRequest| or
+ * to set up a data-path.
*/
uint32_t peerId;
/**
@@ -1353,10 +1449,19 @@
*/
bool receivedInFaw;
/**
- * Received message as a byte sequence.
+ * Received message from the peer - there is no semantic meaning to these bytes. They are
+ * passed-through from sender to receiver as-is with no parsing.
* Max length: |NanCapabilities.maxServiceSpecificInfoLen|.
+ * NAN Spec: Service Descriptor Attribute (SDA) / Service Info
*/
- vec<uint8_t> message;
+ vec<uint8_t> serviceSpecificInfo;
+ /**
+ * Arbitrary information communicated in discovery packets - there is no semantic meaning to these
+ * bytes. They are passed-through from publisher to subscriber as-is with no parsing.
+ * Max length: |NanCapabilities.maxExtendedServiceSpecificInfoLen|.
+ * Spec: Service Descriptor Extension Attribute (SDEA) / Service Info
+ */
+ vec<uint8_t> extendedServiceSpecificInfo;
};
/**
@@ -1394,54 +1499,6 @@
};
/**
- * Mask to determine on which frames the vendor-specific attribute (VSA) was received on.
- */
-enum NanVsaRxFrameMask: uint32_t {
- DISCOVERY_BEACON_MASK = 1 << 0,
- SYNC_BEACON_MASK = 1 << 1,
- SERVICE_DISCOVERY_MASK = 1 << 2
-};
-
-/**
- * NAN Beacon or SDF Payload Indication Message structure.
- * The BeaconSdfPayloadInd message indicates to the upper layers that information
- * elements were received either in a Beacon or SDF which needs to be delivered
- * outside of a Publish/Subscribe Handle.
- */
-struct NanBeaconSdfPayloadInd {
- /**
- * The MAC address of the peer which sent the attributes.
- */
- MacAddress addr;
- /**
- * A flag indicating whether a vendor-specific attribute (VSA) has been received.
- */
- bool isVsaReceived;
- /**
- * Frames on which this vendor specific attribute was received.
- * Mask |NanVsaRxFrameMask| defined above.
- */
- bitfield<NanVsaRxFrameMask> vsaReceivedOnFrames;
- /**
- * Organizationally Unique Identifier (OUI) of the vendor-specific attribute.
- */
- uint32_t vsaVendorOui;
- /**
- * Contents of the vendor specific attribute.
- * Max length: |NanCapabilities.maxVsaDataLen|.
- */
- vec<uint8_t> vsa;
- /**
- * A flag indicating whether a NAN beacon or SDF payload has been received.
- */
- bool isBeaconSdfPayloadReceived;
- /**
- * The contents of the NAN beacon or SDF payload.
- */
- vec<uint8_t> beaconSdfPayloadData;
-};
-
-/**
* NAN Data path request Indication Message structure.
* Event indication received by an intended Responder when a Nan Data request initiated by an
* Initiator.
@@ -1450,8 +1507,9 @@
/**
* ID of an active publish or subscribe discovery session - the data-path request is in the
* context of this discovery session.
+ * NAN Spec: Data Path Attributes / NDP Attribute / Publish ID
*/
- uint16_t discoverySessionId;
+ uint8_t discoverySessionId;
/**
* MAC address of the Initiator peer. This is the MAC address of the peer's management/discovery
* NAN interface.
@@ -1463,11 +1521,15 @@
uint32_t ndpInstanceId;
/**
* Specifies whether or not security is required by the peer for the data-path being created.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Control / Security Present
*/
bool securityRequired;
/**
- * Arbitrary token transmitted by the peer as part of the data-path negotiation (not encrypted).
+ * Arbitrary information communicated from the peer as part of the data-path setup process - there
+ * is no semantic meaning to these bytes. They are passed-through from sender to receiver as-is
+ * with no parsing.
* Max length: |NanCapabilities.maxAppInfoLen|.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Specific Info
*/
vec<uint8_t> appInfo;
};
@@ -1491,8 +1553,11 @@
*/
MacAddress peerNdiMacAddr;
/**
- * Arbitrary token transmitted by the peer as part of the data-path negotiation (not encrypted).
+ * Arbitrary information communicated from the peer as part of the data-path setup process - there
+ * is no semantic meaning to these bytes. They are passed-through from sender to receiver as-is
+ * with no parsing.
* Max length: |NanCapabilities.maxAppInfoLen|.
+ * NAN Spec: Data Path Attributes / NDP Attribute / NDP Specific Info
*/
vec<uint8_t> appInfo;
/**
diff --git a/wifi/1.0/vts/Wifi.vts b/wifi/1.0/vts/Wifi.vts
index 608e012..3f567a4 100644
--- a/wifi/1.0/vts/Wifi.vts
+++ b/wifi/1.0/vts/Wifi.vts
@@ -4,9 +4,20 @@
package: "android.hardware.wifi"
+import: "android.hardware.wifi@1.0::IWifiApIface"
import: "android.hardware.wifi@1.0::IWifiChip"
+import: "android.hardware.wifi@1.0::IWifiChipEventCallback"
import: "android.hardware.wifi@1.0::IWifiEventCallback"
+import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::IWifiNanIface"
+import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
+import: "android.hardware.wifi@1.0::IWifiP2pIface"
+import: "android.hardware.wifi@1.0::IWifiRttController"
+import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
+import: "android.hardware.wifi@1.0::IWifiStaIface"
+import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -17,8 +28,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IWifiEventCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiEventCallback"
}
callflow: {
entry: true
@@ -95,8 +105,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiChip"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip"
}
arg: {
type: TYPE_SCALAR
diff --git a/wifi/1.0/vts/WifiApIface.vts b/wifi/1.0/vts/WifiApIface.vts
index c4f3640..6b58058 100644
--- a/wifi/1.0/vts/WifiApIface.vts
+++ b/wifi/1.0/vts/WifiApIface.vts
@@ -5,6 +5,8 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -30,4 +32,20 @@
}
}
+ api: {
+ name: "setCountryCode"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 2
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "int8_t"
+ }
+ }
+ }
+
}
diff --git a/wifi/1.0/vts/WifiChip.vts b/wifi/1.0/vts/WifiChip.vts
index 4b278c1..1208202 100644
--- a/wifi/1.0/vts/WifiChip.vts
+++ b/wifi/1.0/vts/WifiChip.vts
@@ -8,10 +8,14 @@
import: "android.hardware.wifi@1.0::IWifiChipEventCallback"
import: "android.hardware.wifi@1.0::IWifiIface"
import: "android.hardware.wifi@1.0::IWifiNanIface"
+import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
import: "android.hardware.wifi@1.0::IWifiP2pIface"
import: "android.hardware.wifi@1.0::IWifiRttController"
+import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
import: "android.hardware.wifi@1.0::IWifiStaIface"
+import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -137,8 +141,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IWifiChipEventCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChipEventCallback"
}
}
@@ -150,6 +153,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipCapabilityMask"
}
}
@@ -243,8 +247,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiApIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiApIface"
}
}
@@ -270,8 +273,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiApIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiApIface"
}
arg: {
type: TYPE_STRING
@@ -297,8 +299,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiNanIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIface"
}
}
@@ -324,8 +325,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiNanIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIface"
}
arg: {
type: TYPE_STRING
@@ -351,8 +351,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiP2pIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiP2pIface"
}
}
@@ -378,8 +377,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiP2pIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiP2pIface"
}
arg: {
type: TYPE_STRING
@@ -405,8 +403,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiStaIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface"
}
}
@@ -432,8 +429,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiStaIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface"
}
arg: {
type: TYPE_STRING
@@ -459,13 +455,11 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiRttController"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiRttController"
}
arg: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiIface"
}
}
diff --git a/wifi/1.0/vts/WifiChipEventCallback.vts b/wifi/1.0/vts/WifiChipEventCallback.vts
index c755162..2246f82 100644
--- a/wifi/1.0/vts/WifiChipEventCallback.vts
+++ b/wifi/1.0/vts/WifiChipEventCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/1.0/vts/WifiEventCallback.vts b/wifi/1.0/vts/WifiEventCallback.vts
index a0cf667..60ec87c 100644
--- a/wifi/1.0/vts/WifiEventCallback.vts
+++ b/wifi/1.0/vts/WifiEventCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/1.0/vts/WifiIface.vts b/wifi/1.0/vts/WifiIface.vts
index 1434a3e..0de0f8d 100644
--- a/wifi/1.0/vts/WifiIface.vts
+++ b/wifi/1.0/vts/WifiIface.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/1.0/vts/WifiNanIface.vts b/wifi/1.0/vts/WifiNanIface.vts
index 663b526..66c8755 100644
--- a/wifi/1.0/vts/WifiNanIface.vts
+++ b/wifi/1.0/vts/WifiNanIface.vts
@@ -7,6 +7,7 @@
import: "android.hardware.wifi@1.0::IWifiIface"
import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -40,8 +41,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IWifiNanIfaceEventCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIfaceEventCallback"
}
}
@@ -129,7 +129,7 @@
}
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
}
@@ -161,7 +161,7 @@
}
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
}
@@ -259,20 +259,4 @@
}
}
- api: {
- name: "beaconSdfPayloadRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
- }
- }
-
}
diff --git a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
index 30ca88a..e3e82f7 100644
--- a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
+++ b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -71,7 +72,7 @@
}
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
}
@@ -99,7 +100,7 @@
}
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
}
@@ -161,6 +162,10 @@
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
}
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
}
api: {
@@ -173,10 +178,6 @@
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
}
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
}
api: {
@@ -192,18 +193,6 @@
}
api: {
- name: "notifyBeaconSdfPayloadResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
name: "eventClusterEvent"
arg: {
type: TYPE_STRUCT
@@ -223,7 +212,7 @@
name: "eventPublishTerminated"
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
arg: {
type: TYPE_STRUCT
@@ -235,7 +224,7 @@
name: "eventSubscribeTerminated"
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
arg: {
type: TYPE_STRUCT
@@ -255,7 +244,7 @@
name: "eventMatchExpired"
arg: {
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
arg: {
type: TYPE_SCALAR
@@ -307,12 +296,4 @@
}
}
- api: {
- name: "eventBeaconSdfPayload"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
- }
- }
-
}
diff --git a/wifi/1.0/vts/WifiP2pIface.vts b/wifi/1.0/vts/WifiP2pIface.vts
index b40c81e..220f332 100644
--- a/wifi/1.0/vts/WifiP2pIface.vts
+++ b/wifi/1.0/vts/WifiP2pIface.vts
@@ -5,6 +5,8 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/1.0/vts/WifiRttController.vts b/wifi/1.0/vts/WifiRttController.vts
index 0fd3626..45fb309 100644
--- a/wifi/1.0/vts/WifiRttController.vts
+++ b/wifi/1.0/vts/WifiRttController.vts
@@ -7,6 +7,7 @@
import: "android.hardware.wifi@1.0::IWifiIface"
import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -17,8 +18,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "IWifiIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiIface"
}
}
@@ -30,8 +30,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IWifiRttControllerEventCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiRttControllerEventCallback"
}
}
@@ -68,8 +67,8 @@
type: TYPE_VECTOR
vector_value: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/1.0/vts/WifiRttControllerEventCallback.vts b/wifi/1.0/vts/WifiRttControllerEventCallback.vts
index 028fd03..e3c2651 100644
--- a/wifi/1.0/vts/WifiRttControllerEventCallback.vts
+++ b/wifi/1.0/vts/WifiRttControllerEventCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/1.0/vts/WifiStaIface.vts b/wifi/1.0/vts/WifiStaIface.vts
index 0cff792..1edf4db 100644
--- a/wifi/1.0/vts/WifiStaIface.vts
+++ b/wifi/1.0/vts/WifiStaIface.vts
@@ -7,6 +7,7 @@
import: "android.hardware.wifi@1.0::IWifiIface"
import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -109,8 +110,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "IWifiStaIfaceEventCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIfaceEventCallback"
}
}
@@ -122,6 +122,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface::StaIfaceCapabilityMask"
}
}
@@ -351,16 +352,16 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -384,15 +385,23 @@
}
api: {
- name: "startDebugPacketFateMonitoring"
+ name: "setScanningMacOui"
return_type_hidl: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
}
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 3
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
}
api: {
- name: "stopDebugPacketFateMonitoring"
+ name: "startDebugPacketFateMonitoring"
return_type_hidl: {
type: TYPE_STRUCT
predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
diff --git a/wifi/1.0/vts/WifiStaIfaceEventCallback.vts b/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
index b04ad26..99bf03f 100644
--- a/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
+++ b/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi"
import: "android.hardware.wifi@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -50,8 +51,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/1.0/vts/functional/Android.bp b/wifi/1.0/vts/functional/Android.bp
index 422eec5..01eeef5 100644
--- a/wifi/1.0/vts/functional/Android.bp
+++ b/wifi/1.0/vts/functional/Android.bp
@@ -15,12 +15,13 @@
//
cc_test {
- name: "wifi_hidl_test",
+ name: "VtsHalWifiV1_0TargetTest",
gtest: true,
srcs: [
- "main.cpp",
+ "VtsHalWifiV1_0TargetTest.cpp",
"wifi_ap_iface_hidl_test.cpp",
"wifi_chip_hidl_test.cpp",
+ "wifi_hidl_call_util_selftest.cpp",
"wifi_hidl_test.cpp",
"wifi_hidl_test_utils.cpp",
"wifi_nan_iface_hidl_test.cpp",
@@ -40,11 +41,7 @@
],
static_libs: ["libgtest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage"
- ]
}
diff --git a/wifi/1.0/vts/functional/main.cpp b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
similarity index 100%
rename from wifi/1.0/vts/functional/main.cpp
rename to wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util.h b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
new file mode 100644
index 0000000..03200a0
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 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 <functional>
+#include <tuple>
+#include <type_traits>
+#include <utility>
+
+#include <gtest/gtest.h>
+
+namespace {
+namespace detail {
+template <typename>
+struct functionArgSaver;
+
+// Provides a std::function that takes one argument, and a buffer
+// wherein the function will store its argument. The buffer has
+// the same type as the argument, but with const and reference
+// modifiers removed.
+template <typename ArgT>
+struct functionArgSaver<std::function<void(ArgT)>> final {
+ using StorageT = typename std::remove_const<
+ typename std::remove_reference<ArgT>::type>::type;
+
+ std::function<void(ArgT)> saveArgs = [this](ArgT arg) {
+ this->saved_values = arg;
+ };
+
+ StorageT saved_values;
+};
+
+// Provides a std::function that takes two arguments, and a buffer
+// wherein the function will store its arguments. The buffer is a
+// std::pair, whose elements have the same types as the arguments
+// (but with const and reference modifiers removed).
+template <typename Arg1T, typename Arg2T>
+struct functionArgSaver<std::function<void(Arg1T, Arg2T)>> final {
+ using StorageT =
+ std::pair<typename std::remove_const<
+ typename std::remove_reference<Arg1T>::type>::type,
+ typename std::remove_const<
+ typename std::remove_reference<Arg2T>::type>::type>;
+
+ std::function<void(Arg1T, Arg2T)> saveArgs = [this](Arg1T arg1,
+ Arg2T arg2) {
+ this->saved_values = {arg1, arg2};
+ };
+
+ StorageT saved_values;
+};
+
+// Provides a std::function that takes three or more arguments, and a
+// buffer wherein the function will store its arguments. The buffer is a
+// std::tuple whose elements have the same types as the arguments (but
+// with const and reference modifiers removed).
+template <typename... ArgT>
+struct functionArgSaver<std::function<void(ArgT...)>> final {
+ using StorageT = std::tuple<typename std::remove_const<
+ typename std::remove_reference<ArgT>::type>::type...>;
+
+ std::function<void(ArgT...)> saveArgs = [this](ArgT... arg) {
+ this->saved_values = {arg...};
+ };
+
+ StorageT saved_values;
+};
+
+// Invokes |method| on |object|, providing |method| a CallbackT as the
+// final argument. Returns a copy of the parameters that |method| provided
+// to CallbackT. (The parameters are returned by value.)
+template <typename CallbackT, typename MethodT, typename ObjectT,
+ typename... ArgT>
+typename functionArgSaver<CallbackT>::StorageT invokeMethod(
+ MethodT method, ObjectT object, ArgT&&... methodArg) {
+ functionArgSaver<CallbackT> result_buffer;
+ const auto& res = ((*object).*method)(std::forward<ArgT>(methodArg)...,
+ result_buffer.saveArgs);
+ EXPECT_TRUE(res.isOk());
+ return result_buffer.saved_values;
+}
+} // namespace detail
+} // namespace
+
+// Invokes |method| on |strong_pointer|, passing provided arguments through to
+// |method|.
+//
+// Returns either:
+// - A copy of the result callback parameter (for callbacks with a single
+// parameter), OR
+// - A pair containing a copy of the result callback parameters (for callbacks
+// with two parameters), OR
+// - A tuple containing a copy of the result callback paramters (for callbacks
+// with three or more parameters).
+//
+// Example usage:
+// EXPECT_EQ(WifiStatusCode::SUCCESS,
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatus).code);
+// EXPECT_EQ(WifiStatusCode::SUCCESS,
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndOneMore)
+// .first.code);
+// EXPECT_EQ(WifiStatusCode::SUCCESS, std::get<0>(
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndTwoMore))
+// .code);
+#define HIDL_INVOKE(strong_pointer, method, ...) \
+ (detail::invokeMethod< \
+ std::remove_reference<decltype(*strong_pointer)>::type::method##_cb>( \
+ &std::remove_reference<decltype(*strong_pointer)>::type::method, \
+ strong_pointer, ##__VA_ARGS__))
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
new file mode 100644
index 0000000..129bdb2
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 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 <functional>
+#include <type_traits>
+
+#include <hidl/Status.h>
+#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
+
+#include "wifi_hidl_call_util.h"
+
+namespace {
+/*
+ * Example of a user-defined data-type.
+ *
+ * Used to verify that, within the internals of HIDL_INVOKE,
+ * reference parameters are stored by copy.
+ */
+class Dummy {};
+
+/*
+ * Example of what a HIDL-generated proxy might look like.
+ */
+class IExample : public ::android::RefBase {
+ public:
+ // The callback type, for a method called startWithCallbackCopy, which
+ // has a callback that takes an |int|. Both the name, and the value,
+ // must match what would appear in HIDL-generated code.
+ using startWithCallbackCopy_cb = std::function<void(int)>;
+
+ // The callback type, for a method called startWithCallbackReference, which
+ // has a callback that takes an |int|. Both the name, and the value,
+ // must match what would appear in HIDL-generated code.
+ using startWithCallbackReference_cb = std::function<void(int)>;
+
+ // Constants which allow tests to verify that the proxy methods can
+ // correctly return a value. We use different values for by-copy and
+ // by-reference, to double-check that a call was dispatched properly.
+ static constexpr int kByCopyResult = 42;
+ static constexpr int kByReferenceResult = 420;
+
+ // Example of what a no-arg method would look like, if the callback
+ // is passed by-value.
+ ::android::hardware::Return<void> startWithCallbackCopy(
+ startWithCallbackCopy_cb _hidl_cb) {
+ _hidl_cb(kByCopyResult);
+ return ::android::hardware::Void();
+ }
+ // Example of what a no-arg method would look like, if the callback
+ // is passed by const-reference.
+ ::android::hardware::Return<void> startWithCallbackReference(
+ const startWithCallbackReference_cb& _hidl_cb) {
+ _hidl_cb(kByReferenceResult);
+ return ::android::hardware::Void();
+ }
+};
+
+constexpr int IExample::kByCopyResult;
+constexpr int IExample::kByReferenceResult;
+} // namespace
+
+static_assert(std::is_same<int, detail::functionArgSaver<
+ std::function<void(int)>>::StorageT>::value,
+ "Single-arg result should be stored directly.");
+
+static_assert(
+ std::is_same<std::pair<int, long>, detail::functionArgSaver<std::function<
+ void(int, long)>>::StorageT>::value,
+ "Two-arg result should be stored as a pair.");
+
+static_assert(
+ std::is_same<std::tuple<char, int, long>,
+ detail::functionArgSaver<
+ std::function<void(char, int, long)>>::StorageT>::value,
+ "Three-arg result should be stored as a tuple.");
+
+static_assert(std::is_same<Dummy, detail::functionArgSaver<std::function<
+ void(const Dummy&)>>::StorageT>::value,
+ "Reference should be stored by copy.");
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a by-value parameter. (This reflects the current implementation
+ * of HIDL-generated code.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByValue) {
+ ::android::sp<IExample> sp = new IExample();
+ EXPECT_EQ(IExample::kByCopyResult, HIDL_INVOKE(sp, startWithCallbackCopy));
+}
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a const-reference parameter. (This ensures that HIDL_INVOKE will
+ * continue to work, if the HIDL-generated code switches to const-ref.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByConstReference) {
+ ::android::sp<IExample> sp = new IExample();
+ EXPECT_EQ(IExample::kByReferenceResult,
+ HIDL_INVOKE(sp, startWithCallbackReference));
+}
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
index 050bba3..8f34a88 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -16,6 +16,7 @@
#include <gtest/gtest.h>
+#include "wifi_hidl_call_util.h"
#include "wifi_hidl_test_utils.h"
using ::android::hardware::wifi::V1_0::IWifi;
@@ -52,41 +53,23 @@
return nullptr;
}
- bool operation_failed = false;
- wifi->start([&](WifiStatus status) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- });
- if (operation_failed) {
+ if (HIDL_INVOKE(wifi, start).code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- std::vector<ChipId> wifi_chip_ids;
- wifi->getChipIds(
- [&](const WifiStatus& status, const hidl_vec<ChipId>& chip_ids) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_chip_ids = chip_ids;
- });
- // We don't expect more than 1 chip currently.
- if (operation_failed || wifi_chip_ids.size() != 1) {
+ const auto& status_and_chip_ids = HIDL_INVOKE(wifi, getChipIds);
+ const auto& chip_ids = status_and_chip_ids.second;
+ if (status_and_chip_ids.first.code != WifiStatusCode::SUCCESS ||
+ chip_ids.size() != 1) {
return nullptr;
}
- sp<IWifiChip> wifi_chip;
- wifi->getChip(wifi_chip_ids[0],
- [&](const WifiStatus& status, const sp<IWifiChip>& chip) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_chip = chip;
- });
- if (operation_failed) {
+ const auto& status_and_chip = HIDL_INVOKE(wifi, getChip, chip_ids[0]);
+ if (status_and_chip.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_chip;
+
+ return status_and_chip.second;
}
// Since we currently only support one iface of each type. Just iterate thru the
@@ -116,30 +99,18 @@
bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip,
IfaceType type) {
- bool operation_failed = false;
- std::vector<IWifiChip::ChipMode> chip_modes;
- wifi_chip->getAvailableModes(
- [&](WifiStatus status, const hidl_vec<IWifiChip::ChipMode>& modes) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- chip_modes = modes;
- });
- if (operation_failed) {
+ const auto& status_and_modes = HIDL_INVOKE(wifi_chip, getAvailableModes);
+ if (status_and_modes.first.code != WifiStatusCode::SUCCESS) {
return false;
}
ChipModeId mode_id;
- if (!findModeToSupportIfaceType(type, chip_modes, &mode_id)) {
+ if (!findModeToSupportIfaceType(type, status_and_modes.second, &mode_id)) {
return false;
}
- wifi_chip->configureChip(mode_id, [&](WifiStatus status) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- });
- if (operation_failed) {
+ if (HIDL_INVOKE(wifi_chip, configureChip, mode_id).code !=
+ WifiStatusCode::SUCCESS) {
return false;
}
return true;
@@ -154,19 +125,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiApIface> wifi_ap_iface;
- wifi_chip->createApIface(
- [&](const WifiStatus& status, const sp<IWifiApIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_ap_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createApIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_ap_iface;
+ return status_and_iface.second;
}
sp<IWifiNanIface> getWifiNanIface() {
@@ -178,19 +141,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiNanIface> wifi_nan_iface;
- wifi_chip->createNanIface(
- [&](const WifiStatus& status, const sp<IWifiNanIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_nan_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createNanIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_nan_iface;
+ return status_and_iface.second;
}
sp<IWifiP2pIface> getWifiP2pIface() {
@@ -202,19 +157,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiP2pIface> wifi_p2p_iface;
- wifi_chip->createP2pIface(
- [&](const WifiStatus& status, const sp<IWifiP2pIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_p2p_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createP2pIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_p2p_iface;
+ return status_and_iface.second;
}
sp<IWifiStaIface> getWifiStaIface() {
@@ -226,19 +173,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiStaIface> wifi_sta_iface;
- wifi_chip->createStaIface(
- [&](const WifiStatus& status, const sp<IWifiStaIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_sta_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createStaIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_sta_iface;
+ return status_and_iface.second;
}
sp<IWifiRttController> getWifiRttController() {
@@ -251,26 +190,16 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiRttController> wifi_rtt_controller;
- wifi_chip->createRttController(
- wifi_sta_iface, [&](const WifiStatus& status,
- const sp<IWifiRttController>& controller) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_rtt_controller = controller;
- });
- if (operation_failed) {
+ const auto& status_and_controller =
+ HIDL_INVOKE(wifi_chip, createRttController, wifi_sta_iface);
+ if (status_and_controller.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_rtt_controller;
+ return status_and_controller.second;
}
void stopWifi() {
sp<IWifi> wifi = getWifi();
ASSERT_NE(wifi, nullptr);
- wifi->stop([](const WifiStatus& status) {
- ASSERT_EQ(status.code, WifiStatusCode::SUCCESS);
- });
+ ASSERT_EQ(HIDL_INVOKE(wifi, stop).code, WifiStatusCode::SUCCESS);
}
diff --git a/wifi/1.0/vts/types.vts b/wifi/1.0/vts/types.vts
index fd60d4e..388dbc3 100644
--- a/wifi/1.0/vts/types.vts
+++ b/wifi/1.0/vts/types.vts
@@ -383,6 +383,7 @@
struct_value: {
name: "eventReportScheme"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketEventReportSchemeMask"
}
struct_value: {
@@ -567,8 +568,8 @@
struct_value: {
name: "bssid"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -622,6 +623,7 @@
struct_value: {
name: "flags"
type: TYPE_MASK
+ scalar_type: "int32_t"
predefined_type: "::android::hardware::wifi::V1_0::StaScanDataFlagMask"
}
struct_value: {
@@ -662,8 +664,8 @@
type: TYPE_VECTOR
vector_value: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -674,8 +676,8 @@
type: TYPE_VECTOR
vector_value: {
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -689,11 +691,11 @@
enum_value: {
scalar_type: "uint8_t"
- enumerator: "ENABLED"
+ enumerator: "DISABLED"
scalar_value: {
uint8_t: 0
}
- enumerator: "DISABLED"
+ enumerator: "ENABLED"
scalar_value: {
uint8_t: 1
}
@@ -920,7 +922,7 @@
scalar_type: "uint8_t"
}
struct_value: {
- name: "rssiProximity"
+ name: "rssiCloseProximity"
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -955,12 +957,12 @@
scalar_type: "bool_t"
}
struct_value: {
- name: "clusterIdLowVal"
+ name: "clusterIdBottomRangeVal"
type: TYPE_SCALAR
scalar_type: "uint16_t"
}
struct_value: {
- name: "clusterIdHighVal"
+ name: "clusterIdTopRangeVal"
type: TYPE_SCALAR
scalar_type: "uint16_t"
}
@@ -972,8 +974,8 @@
struct_value: {
name: "intfAddrVal"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1015,7 +1017,8 @@
}
struct_value: {
name: "discoveryChannelMhzVal"
- type: TYPE_VECTOR
+ type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
type: TYPE_SCALAR
scalar_type: "uint32_t"
@@ -1028,7 +1031,8 @@
}
struct_value: {
name: "useBeaconsInBandVal"
- type: TYPE_VECTOR
+ type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
type: TYPE_SCALAR
scalar_type: "bool_t"
@@ -1041,7 +1045,8 @@
}
struct_value: {
name: "useSdfInBandVal"
- type: TYPE_VECTOR
+ type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
type: TYPE_SCALAR
scalar_type: "bool_t"
@@ -1073,12 +1078,22 @@
scalar_type: "bool_t"
}
struct_value: {
- name: "includeServiceIdsInBeacon"
+ name: "includePublishServiceIdsInBeacon"
type: TYPE_SCALAR
scalar_type: "bool_t"
}
struct_value: {
- name: "numberOfServiceIdsInBeacon"
+ name: "numberOfPublishServiceIdsInBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "includeSubscribeServiceIdsInBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "numberOfSubscribeServiceIdsInBeacon"
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1099,10 +1114,46 @@
}
struct_value: {
name: "bandSpecificConfig"
- type: TYPE_VECTOR
+ type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
+ name: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
+ struct_value: {
+ name: "rssiClose"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "rssiMiddle"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "rssiCloseProximity"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "dwellTimeMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "scanPeriodSec"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "validDiscoveryWindowIntervalVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "discoveryWindowIntervalVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
}
}
}
@@ -1112,7 +1163,8 @@
type: TYPE_STRUCT
struct_value: {
name: "operateInBand"
- type: TYPE_VECTOR
+ type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
type: TYPE_SCALAR
scalar_type: "bool_t"
@@ -1179,7 +1231,7 @@
struct_value: {
name: "sessionId"
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
struct_value: {
name: "ttlSec"
@@ -1198,7 +1250,11 @@
}
struct_value: {
name: "serviceName"
- type: TYPE_STRING
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
}
struct_value: {
name: "discoveryMatchIndicator"
@@ -1214,6 +1270,14 @@
}
}
struct_value: {
+ name: "extendedServiceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
name: "rxMatchFilter"
type: TYPE_VECTOR
vector_value: {
@@ -1252,6 +1316,7 @@
struct_value: {
name: "supportedCipherTypes"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
}
struct_value: {
@@ -1280,17 +1345,18 @@
struct_value: {
name: "configRangingIndications"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
}
struct_value: {
name: "distanceIngressCm"
type: TYPE_SCALAR
- scalar_type: "uint32_t"
+ scalar_type: "uint16_t"
}
struct_value: {
name: "distanceEgressCm"
type: TYPE_SCALAR
- scalar_type: "uint32_t"
+ scalar_type: "uint16_t"
}
}
@@ -1352,8 +1418,8 @@
type: TYPE_VECTOR
vector_value: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1367,7 +1433,7 @@
struct_value: {
name: "discoverySessionId"
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
struct_value: {
name: "peerId"
@@ -1377,8 +1443,8 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1394,7 +1460,15 @@
scalar_type: "bool_t"
}
struct_value: {
- name: "message"
+ name: "serviceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "extendedServiceSpecificInfo"
type: TYPE_VECTOR
vector_value: {
type: TYPE_SCALAR
@@ -1419,8 +1493,8 @@
struct_value: {
name: "peerDiscMacAddr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1455,6 +1529,7 @@
struct_value: {
name: "supportedCipherTypes"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
}
struct_value: {
@@ -1500,6 +1575,7 @@
struct_value: {
name: "supportedCipherTypes"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
}
struct_value: {
@@ -1513,44 +1589,6 @@
}
attribute: {
- name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "transmitInNext16dws"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "transmitInDiscoveryBeacon"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "transmitInSyncBeacon"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "transmitInServiceDiscoveryFrame"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "vendorOui"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "vsa"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
name: "::android::hardware::wifi::V1_0::NanCapabilities"
type: TYPE_STRUCT
struct_value: {
@@ -1589,7 +1627,7 @@
scalar_type: "uint32_t"
}
struct_value: {
- name: "maxVsaDataLen"
+ name: "maxExtendedServiceSpecificInfoLen"
type: TYPE_SCALAR
scalar_type: "uint32_t"
}
@@ -1621,6 +1659,7 @@
struct_value: {
name: "supportedCipherSuites"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
}
}
@@ -1631,7 +1670,7 @@
struct_value: {
name: "discoverySessionId"
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
struct_value: {
name: "peerId"
@@ -1641,8 +1680,8 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1656,6 +1695,14 @@
}
}
struct_value: {
+ name: "extendedServiceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
name: "matchFilter"
type: TYPE_VECTOR
vector_value: {
@@ -1681,6 +1728,7 @@
struct_value: {
name: "peerSupportedCipherTypes"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
}
struct_value: {
@@ -1701,6 +1749,7 @@
struct_value: {
name: "rangingIndicationType"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
}
}
@@ -1711,7 +1760,7 @@
struct_value: {
name: "discoverySessionId"
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
struct_value: {
name: "peerId"
@@ -1721,8 +1770,8 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1733,7 +1782,15 @@
scalar_type: "bool_t"
}
struct_value: {
- name: "message"
+ name: "serviceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "extendedServiceSpecificInfo"
type: TYPE_VECTOR
vector_value: {
type: TYPE_SCALAR
@@ -1774,78 +1831,7 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
- vector_value: {
- vector_size: 6
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "DISCOVERY_BEACON_MASK"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "SYNC_BEACON_MASK"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "SERVICE_DISCOVERY_MASK"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_value: {
- vector_size: 6
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "isVsaReceived"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "vsaReceivedOnFrames"
- type: TYPE_MASK
- predefined_type: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
- }
- struct_value: {
- name: "vsaVendorOui"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "vsa"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "isBeaconSdfPayloadReceived"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "beaconSdfPayloadData"
- type: TYPE_VECTOR
+ vector_size: 6
vector_value: {
type: TYPE_SCALAR
scalar_type: "uint8_t"
@@ -1859,13 +1845,13 @@
struct_value: {
name: "discoverySessionId"
type: TYPE_SCALAR
- scalar_type: "uint16_t"
+ scalar_type: "uint8_t"
}
struct_value: {
name: "peerDiscMacAddr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -1906,8 +1892,8 @@
struct_value: {
name: "peerNdiMacAddr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -2106,8 +2092,8 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -2185,8 +2171,8 @@
struct_value: {
name: "addr"
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -2334,11 +2320,13 @@
struct_value: {
name: "preambleSupport"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
}
struct_value: {
name: "bwSupport"
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::V1_0::RttBw"
}
struct_value: {
@@ -2430,8 +2418,8 @@
struct_value: {
name: "countryCode"
type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
- vector_size: 2
type: TYPE_SCALAR
scalar_type: "int8_t"
}
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index b985a93..a6c2758 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -24,19 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
srcs: [
- "types.hal",
- "ISupplicant.hal",
- "ISupplicantCallback.hal",
- "ISupplicantIface.hal",
- "ISupplicantNetwork.hal",
- "ISupplicantP2pIface.hal",
- "ISupplicantP2pIfaceCallback.hal",
- "ISupplicantP2pNetwork.hal",
- "ISupplicantP2pNetworkCallback.hal",
- "ISupplicantStaIface.hal",
- "ISupplicantStaIfaceCallback.hal",
- "ISupplicantStaNetwork.hal",
- "ISupplicantStaNetworkCallback.hal",
+ ":android.hardware.wifi.supplicant@1.0_hal",
],
out: [
"android/hardware/wifi/supplicant/1.0/types.cpp",
@@ -60,19 +48,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
srcs: [
- "types.hal",
- "ISupplicant.hal",
- "ISupplicantCallback.hal",
- "ISupplicantIface.hal",
- "ISupplicantNetwork.hal",
- "ISupplicantP2pIface.hal",
- "ISupplicantP2pIfaceCallback.hal",
- "ISupplicantP2pNetwork.hal",
- "ISupplicantP2pNetworkCallback.hal",
- "ISupplicantStaIface.hal",
- "ISupplicantStaIfaceCallback.hal",
- "ISupplicantStaNetwork.hal",
- "ISupplicantStaNetworkCallback.hal",
+ ":android.hardware.wifi.supplicant@1.0_hal",
],
out: [
"android/hardware/wifi/supplicant/1.0/types.h",
diff --git a/wifi/supplicant/1.0/Android.mk b/wifi/supplicant/1.0/Android.mk
index ad49b0a..dd210d0 100644
--- a/wifi/supplicant/1.0/Android.mk
+++ b/wifi/supplicant/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.wifi.supplicant@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -387,7 +387,7 @@
LOCAL_MODULE := android.hardware.wifi.supplicant@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/wifi/supplicant/1.0/ISupplicantP2pIface.hal b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
index 45e90f3..dc1388a 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pIface.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
@@ -612,4 +612,64 @@
* |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setWfdDeviceInfo(uint8_t[8] info) generates (SupplicantStatus status);
+
+ /**
+ * Creates a NFC handover request message.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ * @return request Bytes representing the handover request as specified in
+ * section 3.1.1 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ */
+ createNfcHandoverRequestMessage()
+ generates (SupplicantStatus status, vec<uint8_t> request);
+
+ /**
+ * Creates a NFC handover select message.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ * @return select Bytes representing the handover select as specified in
+ * section 3.1.2 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ */
+ createNfcHandoverSelectMessage()
+ generates (SupplicantStatus status, vec<uint8_t> select);
+
+ /**
+ * Report the response of the NFC handover request.
+ *
+ * @param request Bytes representing the handover request as specified in
+ * section 3.1.1 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ reportNfcHandoverResponse(vec<uint8_t> request)
+ generates (SupplicantStatus status);
+
+ /**
+ * Report the initiation of the NFC handover select.
+ *
+ * @param select Bytes representing the handover select as specified in
+ * section 3.1.2 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ reportNfcHandoverInitiation(vec<uint8_t> select)
+ generates (SupplicantStatus status);
};
diff --git a/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
index ad4290b..b6ee57f 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
@@ -195,43 +195,6 @@
oneway onInvitationResult(Bssid bssid, P2pStatusCode status);
/**
- * Used to indicate a push-button request generated during provision discovery.
- *
- * @param p2pDeviceAddress P2P device address.
- */
- oneway onProvisionDiscoveryPbcRequest(MacAddress p2pDeviceAddress);
-
- /**
- * Used to indicate a push-button response generated during provision discovery.
- *
- * @param p2pDeviceAddress P2P device address.
- */
- oneway onProvisionDiscoveryPbcResponse(MacAddress p2pDeviceAddress);
-
- /**
- * Used to indicate the pin generated during provision discovery.
- *
- * @param p2pDeviceAddress P2P device address.
- * @param generatedPin 8 digit pin generated.
- */
- oneway onProvisionDiscoveryShowPin(
- MacAddress p2pDeviceAddress, string generatedPin);
-
- /**
- * Used to indicate that a pin needs to be entered during provision discovery.
- *
- * @param p2pDeviceAddress P2P device address.
- */
- oneway onProvisionDiscoveryEnterPin(MacAddress p2pDeviceAddress);
-
- /**
- * Used to indicate a provision discovery failure.
- *
- * @param p2pDeviceAddress P2P device address.
- */
- oneway onProvisionDiscoveryFailure(MacAddress p2pDeviceAddress);
-
- /**
* Used to indicate the completion of a P2P provision discovery request.
*
* @param p2pDeviceAddress P2P device address.
diff --git a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
index c3ec060..dd1d1c4 100644
--- a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
@@ -214,56 +214,50 @@
* Used to indicate the result of ANQP (either for IEEE 802.11u Interworking
* or Hotspot 2.0) query.
*
- * @param macAddress MAC address of the access point.
+ * @param bssid BSSID of the access point.
* @param data ANQP data fetched from the access point.
* All the fields in this struct must be empty if the query failed.
* @param hs20Data ANQP data fetched from the Hotspot 2.0 access point.
* All the fields in this struct must be empty if the query failed.
*/
- oneway onAnqpQueryDone(MacAddress macAddress,
- AnqpData data,
- Hs20AnqpData hs20Data);
+ oneway onAnqpQueryDone(Bssid bssid, AnqpData data, Hs20AnqpData hs20Data);
/**
* Used to indicate the result of Hotspot 2.0 Icon query.
*
- * @param macAddress MAC address of the access point.
+ * @param bssid BSSID of the access point.
* @param fileName Name of the file that was requested.
* @param data Icon data fetched from the access point.
* Must be empty if the query failed.
*/
- oneway onHs20IconQueryDone(MacAddress macAddress,
- string fileName,
- vec<uint8_t> data);
+ oneway onHs20IconQueryDone(Bssid bssid, string fileName, vec<uint8_t> data);
/**
* Used to indicate a Hotspot 2.0 subscription remediation event.
*
+ * @param bssid BSSID of the access point.
* @param osuMethod OSU method.
* @param url URL of the server.
*/
- oneway onHs20SubscriptionRemediation(OsuMethod osuMethod, string url);
+ oneway onHs20SubscriptionRemediation(Bssid bssid,
+ OsuMethod osuMethod,
+ string url);
/**
* Used to indicate a Hotspot 2.0 imminent deauth notice.
*
+ * @param bssid BSSID of the access point.
* @param reasonCode Code to indicate the deauth reason.
* Refer to section 3.2.1.2 of the Hotspot 2.0 spec.
* @param reAuthDelayInSec Delay before reauthenticating.
* @param url URL of the server.
*/
- oneway onHs20DeauthImminentNotice(uint32_t reasonCode,
+ oneway onHs20DeauthImminentNotice(Bssid bssid,
+ uint32_t reasonCode,
uint32_t reAuthDelayInSec,
string url);
/**
- * Used to indicate the connection to a new network on this iface.
- *
- * @param bssid BSSID of the AP to which we connected.
- */
- oneway onConnected(Bssid bssid);
-
- /**
* Used to indicate the disconnection from the currently connected
* network on this iface.
*
@@ -277,13 +271,6 @@
Bssid bssid, bool locallyGenerated, uint32_t reasonCode);
/**
- * Used to indicate the completion of association to an AP.
- *
- * @param bssid BSSID of the corresponding AP.
- */
- oneway onAssociationCompleted(Bssid bssid);
-
- /**
* Used to indicate an association rejection recieved from the AP
* to which the connection is being attempted.
*
diff --git a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
index deaad5d..b16fb39 100644
--- a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
@@ -106,7 +106,10 @@
PAP = 1,
MSPAP = 2,
MSPAPV2 = 3,
- GTC = 4
+ GTC = 4,
+ SIM = 5,
+ AKA = 6,
+ AKA_PRIME = 7
};
/** Params of |sendNetworkEapSimGsmAuthResponse| request. (Refer RFC 4186) */
@@ -896,6 +899,22 @@
getIdStr() generates (SupplicantStatus status, string idStr);
/**
+ * Retrieves a WPS-NFC configuration token for this network.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return token Bytes representing WPS-NFC configuration token.
+ * This is a dump of all the WPS atrributes of the AP configuration
+ * as specified in the Wi-Fi Protected Setup Specification.
+ */
+ getWpsNfcConfigurationToken()
+ generates (SupplicantStatus status, vec<uint8_t> token);
+
+ /**
* Enable the network for connection purposes.
*
* This must trigger a connection to the network if:
diff --git a/wifi/supplicant/1.0/vts/Supplicant.vts b/wifi/supplicant/1.0/vts/Supplicant.vts
index 69fe209..534b1cf 100644
--- a/wifi/supplicant/1.0/vts/Supplicant.vts
+++ b/wifi/supplicant/1.0/vts/Supplicant.vts
@@ -6,7 +6,9 @@
import: "android.hardware.wifi.supplicant@1.0::ISupplicantCallback"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -64,8 +66,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantIface"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface"
}
arg: {
type: TYPE_STRUCT
@@ -96,8 +97,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISupplicantCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantCallback"
}
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantCallback.vts b/wifi/supplicant/1.0/vts/SupplicantCallback.vts
index e439bd6..2d9e991 100644
--- a/wifi/supplicant/1.0/vts/SupplicantCallback.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantCallback.vts
@@ -4,6 +4,7 @@
package: "android.hardware.wifi.supplicant"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/supplicant/1.0/vts/SupplicantIface.vts b/wifi/supplicant/1.0/vts/SupplicantIface.vts
index 41c77f8..c703ec0 100644
--- a/wifi/supplicant/1.0/vts/SupplicantIface.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantIface.vts
@@ -6,6 +6,7 @@
import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -68,8 +69,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
}
@@ -93,8 +93,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
arg: {
type: TYPE_SCALAR
@@ -129,6 +128,22 @@
}
api: {
+ name: "setWpsDeviceType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 8
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
name: "setWpsManufacturer"
return_type_hidl: {
type: TYPE_STRUCT
@@ -180,6 +195,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint16_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
}
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
index edcabce..c90f396 100644
--- a/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi.supplicant"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
index afa9a8c..2515b60 100644
--- a/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
@@ -5,40 +5,13 @@
package: "android.hardware.wifi.supplicant"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pIfaceCallback"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WPS_DEVICE_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MANUFACTURER_MAX_LEN"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "WPS_MODEL_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- }
- }
-
- attribute: {
name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
type: TYPE_ENUM
enum_value: {
@@ -126,8 +99,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
}
@@ -151,8 +123,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
arg: {
type: TYPE_SCALAR
@@ -187,6 +158,22 @@
}
api: {
+ name: "setWpsDeviceType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 8
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
name: "setWpsManufacturer"
return_type_hidl: {
type: TYPE_STRUCT
@@ -238,6 +225,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint16_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
}
}
@@ -250,8 +238,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISupplicantP2pIfaceCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback"
}
}
@@ -263,8 +250,8 @@
}
return_type_hidl: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -355,8 +342,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -398,8 +385,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -445,8 +432,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -464,16 +451,16 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -492,8 +479,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -562,8 +549,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -578,12 +565,13 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -677,8 +665,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -727,8 +715,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -763,8 +751,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -802,8 +790,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 8
vector_value: {
- vector_size: 8
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
index 09fd779..b3cf05b 100644
--- a/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi.supplicant"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -158,24 +159,24 @@
name: "onDeviceFound"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 8
vector_value: {
- vector_size: 8
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -185,6 +186,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint16_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
}
arg: {
@@ -193,12 +195,13 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
}
arg: {
type: TYPE_ARRAY
+ vector_size: 8
vector_value: {
- vector_size: 8
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -209,8 +212,8 @@
name: "onDeviceLost"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -225,8 +228,8 @@
name: "onGoNegotiationRequest"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -278,8 +281,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 32
vector_value: {
- vector_size: 32
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -289,8 +292,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -316,24 +319,24 @@
name: "onInvitationReceived"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -352,8 +355,8 @@
name: "onInvitationResult"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -368,8 +371,8 @@
name: "onProvisionDiscoveryPbcRequest"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -380,8 +383,8 @@
name: "onProvisionDiscoveryPbcResponse"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -392,8 +395,8 @@
name: "onProvisionDiscoveryShowPin"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -407,8 +410,8 @@
name: "onProvisionDiscoveryEnterPin"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -419,8 +422,8 @@
name: "onProvisionDiscoveryFailure"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -431,8 +434,8 @@
name: "onProvisionDiscoveryCompleted"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -447,6 +450,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint16_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
}
arg: {
@@ -458,8 +462,8 @@
name: "onServiceDiscoveryResponse"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -481,16 +485,16 @@
name: "onStaAuthorized"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -501,16 +505,16 @@
name: "onStaDeauthorized"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
index fddcca3..8d0b5a1 100644
--- a/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
@@ -7,6 +7,7 @@
import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pNetworkCallback"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
api: {
@@ -52,8 +53,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISupplicantP2pNetworkCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pNetworkCallback"
}
}
@@ -80,8 +80,8 @@
}
return_type_hidl: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
index 0e9ccde..9493c5e 100644
--- a/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
@@ -4,6 +4,7 @@
package: "android.hardware.wifi.supplicant"
+import: "android.hidl.base@1.0::types"
interface: {
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIface.vts b/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
index ceadb6c..cc52487 100644
--- a/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
@@ -5,40 +5,13 @@
package: "android.hardware.wifi.supplicant"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaIfaceCallback"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WPS_DEVICE_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MANUFACTURER_MAX_LEN"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "WPS_MODEL_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- }
- }
-
- attribute: {
name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::AnqpInfoId"
type: TYPE_ENUM
enum_value: {
@@ -134,6 +107,19 @@
}
}
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::ExtRadioWorkDefaults"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "TIMEOUT_IN_SECS"
+ scalar_value: {
+ uint32_t: 10
+ }
+ }
+ }
+
api: {
name: "getName"
return_type_hidl: {
@@ -165,8 +151,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
}
@@ -190,8 +175,7 @@
}
return_type_hidl: {
type: TYPE_HIDL_INTERFACE
- predefined_type: "ISupplicantNetwork"
- is_callback: false
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
}
arg: {
type: TYPE_SCALAR
@@ -226,6 +210,22 @@
}
api: {
+ name: "setWpsDeviceType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 8
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
name: "setWpsManufacturer"
return_type_hidl: {
type: TYPE_STRUCT
@@ -277,6 +277,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint16_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
}
}
@@ -289,8 +290,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISupplicantStaIfaceCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback"
}
}
@@ -338,8 +338,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -354,8 +354,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -370,8 +370,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -386,8 +386,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -416,8 +416,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -435,8 +435,8 @@
}
return_type_hidl: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -527,8 +527,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 2
vector_value: {
- vector_size: 2
type: TYPE_SCALAR
scalar_type: "int8_t"
}
@@ -543,8 +543,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -562,8 +562,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -592,8 +592,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -620,4 +620,39 @@
}
}
+ api: {
+ name: "addExtRadioWork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "removeExtRadioWork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
index 88b1c3b..0a35848 100644
--- a/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
@@ -5,6 +5,7 @@
package: "android.hardware.wifi.supplicant"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -305,8 +306,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -328,8 +329,8 @@
name: "onAnqpQueryDone"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -348,8 +349,8 @@
name: "onHs20IconQueryDone"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -396,8 +397,8 @@
name: "onConnected"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -408,8 +409,8 @@
name: "onDisconnected"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -428,8 +429,8 @@
name: "onAssociationCompleted"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -440,8 +441,8 @@
name: "onAssociationRejected"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -456,8 +457,8 @@
name: "onAuthenticationTimeout"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -476,8 +477,8 @@
name: "onWpsEventFail"
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -496,4 +497,20 @@
name: "onWpsEventPbcOverlap"
}
+ api: {
+ name: "onExtRadioWorkStart"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onExtRadioWorkTimeout"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
index f493b3e..8ad72f1 100644
--- a/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
@@ -7,6 +7,7 @@
import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaNetworkCallback"
import: "android.hardware.wifi.supplicant@1.0::types"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -247,8 +248,8 @@
struct_value: {
name: "kc"
type: TYPE_ARRAY
+ vector_size: 8
vector_value: {
- vector_size: 8
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -256,8 +257,8 @@
struct_value: {
name: "sres"
type: TYPE_ARRAY
+ vector_size: 4
vector_value: {
- vector_size: 4
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -278,8 +279,8 @@
struct_value: {
name: "ik"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -287,8 +288,8 @@
struct_value: {
name: "ck"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -338,8 +339,7 @@
}
arg: {
type: TYPE_HIDL_CALLBACK
- predefined_type: "ISupplicantStaNetworkCallback"
- is_callback: true
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback"
}
}
@@ -366,8 +366,8 @@
}
arg: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -394,6 +394,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
}
}
@@ -406,6 +407,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
}
}
@@ -418,6 +420,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
}
}
@@ -430,6 +433,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
}
}
@@ -442,6 +446,7 @@
}
arg: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
}
}
@@ -670,6 +675,18 @@
}
api: {
+ name: "setProactiveKeyCaching"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
name: "setIdStr"
return_type_hidl: {
type: TYPE_STRUCT
@@ -681,6 +698,18 @@
}
api: {
+ name: "setUpdateIdentifier"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
name: "getSsid"
return_type_hidl: {
type: TYPE_STRUCT
@@ -703,8 +732,8 @@
}
return_type_hidl: {
type: TYPE_ARRAY
+ vector_size: 6
vector_value: {
- vector_size: 6
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -731,6 +760,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
}
}
@@ -743,6 +773,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
}
}
@@ -755,6 +786,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
}
}
@@ -767,6 +799,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
}
}
@@ -779,6 +812,7 @@
}
return_type_hidl: {
type: TYPE_MASK
+ scalar_type: "uint32_t"
predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
}
}
@@ -1052,8 +1086,19 @@
predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
}
arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
+ }
+ }
+ }
+
+ api: {
+ name: "sendNetworkEapSimGsmAuthFailure"
+ return_type_hidl: {
type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
}
}
@@ -1070,6 +1115,30 @@
}
api: {
+ name: "sendNetworkEapSimUmtsAutsResponse"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_size: 14
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "sendNetworkEapSimUmtsAuthFailure"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
name: "sendNetworkEapIdentityResponse"
return_type_hidl: {
type: TYPE_STRUCT
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
index 3fe2da7..1c91d57 100644
--- a/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
+++ b/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
@@ -4,6 +4,7 @@
package: "android.hardware.wifi.supplicant"
+import: "android.hidl.base@1.0::types"
interface: {
attribute: {
@@ -14,8 +15,8 @@
type: TYPE_VECTOR
vector_value: {
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -29,8 +30,8 @@
struct_value: {
name: "rand"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
@@ -38,8 +39,8 @@
struct_value: {
name: "autn"
type: TYPE_ARRAY
+ vector_size: 16
vector_value: {
- vector_size: 16
type: TYPE_SCALAR
scalar_type: "uint8_t"
}
diff --git a/wifi/supplicant/1.0/vts/functional/Android.mk b/wifi/supplicant/1.0/vts/functional/Android.mk
index 8fa649f..52fecc2 100644
--- a/wifi/supplicant/1.0/vts/functional/Android.mk
+++ b/wifi/supplicant/1.0/vts/functional/Android.mk
@@ -16,10 +16,10 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE := supplicant_hidl_test
+LOCAL_MODULE := VtsHalWifiSupplicantV1_0TargetTest
LOCAL_CPPFLAGS := -Wall -Werror -Wextra
LOCAL_SRC_FILES := \
- main.cpp \
+ VtsHalWifiSupplicantV1_0TargetTest.cpp \
supplicant_hidl_test.cpp \
supplicant_hidl_test_utils.cpp \
supplicant_p2p_iface_hidl_test.cpp \
diff --git a/wifi/supplicant/1.0/vts/functional/main.cpp b/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp
similarity index 100%
rename from wifi/supplicant/1.0/vts/functional/main.cpp
rename to wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp